/* * 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-app"],{ /***/ "(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_base.js": /*!*****************************************************************************************************************!*\ !*** ./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_base.js ***! \*****************************************************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_base)\n/* harmony export */ });\nfunction _class_private_field_loose_base(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjE1L25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2UuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDZ0QiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS93ZWJzaXRlLWZyb250L2JhbnF1aXNlLXdlYnNpdGUvbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMTUvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2NsYXNzX3ByaXZhdGVfZmllbGRfbG9vc2VfYmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9iYXNlKHJlY2VpdmVyLCBwcml2YXRlS2V5KSB7XG4gICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmVjZWl2ZXIsIHByaXZhdGVLZXkpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gdXNlIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xuICAgIH1cblxuICAgIHJldHVybiByZWNlaXZlcjtcbn1cbmV4cG9ydCB7IF9jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2Jhc2UgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_key.js": /*!****************************************************************************************************************!*\ !*** ./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_key.js ***! \****************************************************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _class_private_field_loose_key)\n/* harmony export */ });\nvar id = 0;\n\nfunction _class_private_field_loose_key(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjE1L25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleS5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQytDIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvd2Vic2l0ZS1mcm9udC9iYW5xdWlzZS13ZWJzaXRlL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjE1L25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19jbGFzc19wcml2YXRlX2ZpZWxkX2xvb3NlX2tleS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgaWQgPSAwO1xuXG5mdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkobmFtZSkge1xuICAgIHJldHVybiBcIl9fcHJpdmF0ZV9cIiArIGlkKysgKyBcIl9cIiArIG5hbWU7XG59XG5leHBvcnQgeyBfY2xhc3NfcHJpdmF0ZV9maWVsZF9sb29zZV9rZXkgYXMgXyB9O1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js": /*!**********************************************************************************************************!*\ !*** ./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js ***! \**********************************************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_default)\n/* harmony export */ });\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjE1L25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5qcyIsIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSwyQ0FBMkM7QUFDM0M7QUFDeUMiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS93ZWJzaXRlLWZyb250L2JhbnF1aXNlLXdlYnNpdGUvbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMTUvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdChvYmopIHtcbiAgICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTtcbn1cbmV4cG9ydCB7IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCBhcyBfIH07XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js": /*!***********************************************************************************************************!*\ !*** ./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js ***! \***********************************************************************************************************/ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ _: () => (/* binding */ _interop_require_wildcard)\n/* harmony export */ });\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9Ac3djK2hlbHBlcnNAMC41LjE1L25vZGVfbW9kdWxlcy9Ac3djL2hlbHBlcnMvZXNtL19pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLHVGQUF1Rjs7QUFFdkY7O0FBRUE7O0FBRUEsbUJBQW1CO0FBQ25COztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDMEMiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS93ZWJzaXRlLWZyb250L2JhbnF1aXNlLXdlYnNpdGUvbm9kZV9tb2R1bGVzLy5wbnBtL0Bzd2MraGVscGVyc0AwLjUuMTUvbm9kZV9tb2R1bGVzL0Bzd2MvaGVscGVycy9lc20vX2ludGVyb3BfcmVxdWlyZV93aWxkY2FyZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUobm9kZUludGVyb3ApIHtcbiAgICBpZiAodHlwZW9mIFdlYWtNYXAgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIG51bGw7XG5cbiAgICB2YXIgY2FjaGVCYWJlbEludGVyb3AgPSBuZXcgV2Vha01hcCgpO1xuICAgIHZhciBjYWNoZU5vZGVJbnRlcm9wID0gbmV3IFdlYWtNYXAoKTtcblxuICAgIHJldHVybiAoX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlID0gZnVuY3Rpb24obm9kZUludGVyb3ApIHtcbiAgICAgICAgcmV0dXJuIG5vZGVJbnRlcm9wID8gY2FjaGVOb2RlSW50ZXJvcCA6IGNhY2hlQmFiZWxJbnRlcm9wO1xuICAgIH0pKG5vZGVJbnRlcm9wKTtcbn1cbmZ1bmN0aW9uIF9pbnRlcm9wX3JlcXVpcmVfd2lsZGNhcmQob2JqLCBub2RlSW50ZXJvcCkge1xuICAgIGlmICghbm9kZUludGVyb3AgJiYgb2JqICYmIG9iai5fX2VzTW9kdWxlKSByZXR1cm4gb2JqO1xuICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2Ygb2JqICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiB7IGRlZmF1bHQ6IG9iaiB9O1xuXG4gICAgdmFyIGNhY2hlID0gX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlKG5vZGVJbnRlcm9wKTtcblxuICAgIGlmIChjYWNoZSAmJiBjYWNoZS5oYXMob2JqKSkgcmV0dXJuIGNhY2hlLmdldChvYmopO1xuXG4gICAgdmFyIG5ld09iaiA9IHsgX19wcm90b19fOiBudWxsIH07XG4gICAgdmFyIGhhc1Byb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoa2V5ICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgICB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDtcbiAgICAgICAgICAgIGlmIChkZXNjICYmIChkZXNjLmdldCB8fCBkZXNjLnNldCkpIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXdPYmosIGtleSwgZGVzYyk7XG4gICAgICAgICAgICBlbHNlIG5ld09ialtrZXldID0gb2JqW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXdPYmouZGVmYXVsdCA9IG9iajtcblxuICAgIGlmIChjYWNoZSkgY2FjaGUuc2V0KG9iaiwgbmV3T2JqKTtcblxuICAgIHJldHVybiBuZXdPYmo7XG59XG5leHBvcnQgeyBfaW50ZXJvcF9yZXF1aXJlX3dpbGRjYXJkIGFzIF8gfTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/deployment-id.js": /*!**********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/deployment-id.js ***! \**********************************************************************************************************************************/ /***/ ((__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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvZGVwbG95bWVudC1pZC5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiLDhDQUE2QztBQUM3QztBQUNBLENBQUMsRUFBQztBQUNGLHFFQUFvRTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsRUFBQztBQUNGO0FBQ0EsUUFBUSxLQUE4QixFQUFFLEVBRW5DO0FBQ0w7QUFDQTs7QUFFQSIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3dlYnNpdGUtZnJvbnQvYmFucXVpc2Utd2Vic2l0ZS9ub2RlX21vZHVsZXMvLnBucG0vbmV4dEAxNS41LjNfcmVhY3QtZG9tQDE5LjEuMV9yZWFjdEAxOS4xLjFfX3JlYWN0QDE5LjEuMS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL2RlcGxveW1lbnQtaWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmdcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZztcbiAgICB9XG59KTtcbmZ1bmN0aW9uIGdldERlcGxveW1lbnRJZFF1ZXJ5T3JFbXB0eVN0cmluZygpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gICAgICAgIHJldHVybiBgP2RwbD0ke3Byb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRH1gO1xuICAgIH1cbiAgICByZXR1cm4gJyc7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGxveW1lbnQtaWQuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/deployment-id.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/polyfill-module.js": /*!**********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/polyfill-module.js ***! \**********************************************************************************************************************************************/ /***/ ((__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]}),Object.hasOwn||(Object.hasOwn=function(t,r){if(null==t)throw new TypeError(\"Cannot convert undefined or null to object\");return Object.prototype.hasOwnProperty.call(Object(t),r)}),\"canParse\"in URL||(URL.canParse=function(t,r){try{return!!new URL(t,r)}catch(t){return!1}});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZS5qcyIsIm1hcHBpbmdzIjoiQUFBQSxtUUFBbVEsK0JBQStCLHVDQUF1QyxzQkFBc0IsNERBQTRELDZFQUE2RSx1Q0FBdUMsNEJBQTRCLG9FQUFvRSw4Q0FBOEMsZ0NBQWdDLDZCQUE2QixzQ0FBc0MsU0FBUyxFQUFFLGFBQWEsc0NBQXNDLFFBQVEsRUFBRSxFQUFFLHNEQUFzRCwwQ0FBMEMsc0JBQXNCLEdBQUcsRUFBRSxzREFBc0QsdUJBQXVCLCtEQUErRCw4Q0FBOEMsNkVBQTZFLHlEQUF5RCxnREFBZ0QsSUFBSSxxQkFBcUIsU0FBUyxVQUFVIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvd2Vic2l0ZS1mcm9udC9iYW5xdWlzZS13ZWJzaXRlL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInRyaW1TdGFydFwiaW4gU3RyaW5nLnByb3RvdHlwZXx8KFN0cmluZy5wcm90b3R5cGUudHJpbVN0YXJ0PVN0cmluZy5wcm90b3R5cGUudHJpbUxlZnQpLFwidHJpbUVuZFwiaW4gU3RyaW5nLnByb3RvdHlwZXx8KFN0cmluZy5wcm90b3R5cGUudHJpbUVuZD1TdHJpbmcucHJvdG90eXBlLnRyaW1SaWdodCksXCJkZXNjcmlwdGlvblwiaW4gU3ltYm9sLnByb3RvdHlwZXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KFN5bWJvbC5wcm90b3R5cGUsXCJkZXNjcmlwdGlvblwiLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9L1xcKCguKilcXCkvLmV4ZWModGhpcy50b1N0cmluZygpKTtyZXR1cm4gdD90WzFdOnZvaWQgMH19KSxBcnJheS5wcm90b3R5cGUuZmxhdHx8KEFycmF5LnByb3RvdHlwZS5mbGF0PWZ1bmN0aW9uKHQscil7cmV0dXJuIHI9dGhpcy5jb25jYXQuYXBwbHkoW10sdGhpcyksdD4xJiZyLnNvbWUoQXJyYXkuaXNBcnJheSk/ci5mbGF0KHQtMSk6cn0sQXJyYXkucHJvdG90eXBlLmZsYXRNYXA9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5tYXAodCxyKS5mbGF0KCl9KSxQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5fHwoUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbih0KXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXJldHVybiB0aGlzLnRoZW4odCx0KTt2YXIgcj10aGlzLmNvbnN0cnVjdG9yfHxQcm9taXNlO3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24obil7cmV0dXJuIHIucmVzb2x2ZSh0KCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gbn0pfSxmdW5jdGlvbihuKXtyZXR1cm4gci5yZXNvbHZlKHQoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IG59KX0pfSksT2JqZWN0LmZyb21FbnRyaWVzfHwoT2JqZWN0LmZyb21FbnRyaWVzPWZ1bmN0aW9uKHQpe3JldHVybiBBcnJheS5mcm9tKHQpLnJlZHVjZShmdW5jdGlvbih0LHIpe3JldHVybiB0W3JbMF1dPXJbMV0sdH0se30pfSksQXJyYXkucHJvdG90eXBlLmF0fHwoQXJyYXkucHJvdG90eXBlLmF0PWZ1bmN0aW9uKHQpe3ZhciByPU1hdGgudHJ1bmModCl8fDA7aWYocjwwJiYocis9dGhpcy5sZW5ndGgpLCEocjwwfHxyPj10aGlzLmxlbmd0aCkpcmV0dXJuIHRoaXNbcl19KSxPYmplY3QuaGFzT3dufHwoT2JqZWN0Lmhhc093bj1mdW5jdGlvbih0LHIpe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdFwiKTtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKE9iamVjdCh0KSxyKX0pLFwiY2FuUGFyc2VcImluIFVSTHx8KFVSTC5jYW5QYXJzZT1mdW5jdGlvbih0LHIpe3RyeXtyZXR1cm4hIW5ldyBVUkwodCxyKX1jYXRjaCh0KXtyZXR1cm4hMX19KTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/polyfill-module.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/process.js": /*!**************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/process.js ***! \**************************************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nvar _global_process, _global_process1;\nmodule.exports = ((_global_process = __webpack_require__.g.process) == null ? void 0 : _global_process.env) && typeof ((_global_process1 = __webpack_require__.g.process) == null ? void 0 : _global_process1.env) === 'object' ? __webpack_require__.g.process : __webpack_require__(/*! next/dist/compiled/process */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/process/browser.js\");\n\n//# sourceMappingURL=process.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvcG9seWZpbGxzL3Byb2Nlc3MuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLHFDQUFxQyxxQkFBTSxpRkFBaUYscUJBQU0sa0VBQWtFLHFCQUFNLFdBQVcsbUJBQU8sQ0FBQyx1TEFBNEI7O0FBRXpQIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvd2Vic2l0ZS1mcm9udC9iYW5xdWlzZS13ZWJzaXRlL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvcG9seWZpbGxzL3Byb2Nlc3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX2dsb2JhbF9wcm9jZXNzLCBfZ2xvYmFsX3Byb2Nlc3MxO1xubW9kdWxlLmV4cG9ydHMgPSAoKF9nbG9iYWxfcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzKSA9PSBudWxsID8gdm9pZCAwIDogX2dsb2JhbF9wcm9jZXNzLmVudikgJiYgdHlwZW9mICgoX2dsb2JhbF9wcm9jZXNzMSA9IGdsb2JhbC5wcm9jZXNzKSA9PSBudWxsID8gdm9pZCAwIDogX2dsb2JhbF9wcm9jZXNzMS5lbnYpID09PSAnb2JqZWN0JyA/IGdsb2JhbC5wcm9jZXNzIDogcmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL3Byb2Nlc3MnKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cHJvY2Vzcy5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/process.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/add-base-path.js": /*!***********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/add-base-path.js ***! \***********************************************************************************************************************************/ /***/ ((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 */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js\");\nconst _normalizetrailingslash = __webpack_require__(/*! ./normalize-trailing-slash */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FkZC1iYXNlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OzsrQ0FLZ0JBOzs7ZUFBQUE7OzsyQ0FMYztvREFDYTtBQUUzQyxNQUFNQyxXQUFZQyxNQUFrQyxJQUFlO0FBRTVELFNBQVNGLFlBQVlLLElBQVksRUFBRUMsUUFBa0I7SUFDMUQsT0FBT0MsQ0FBQUEsR0FBQUEsd0JBQUFBLDBCQUFBQSxFQUNMTCxNQUF1REksR0FDbkRELENBQUlBLEdBQ0pJLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNKLE1BQU1KO0FBRTVCIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvc3JjL2NsaWVudC9hZGQtYmFzZS1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFkZFBhdGhQcmVmaXggfSBmcm9tICcuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9hZGQtcGF0aC1wcmVmaXgnXG5pbXBvcnQgeyBub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCB9IGZyb20gJy4vbm9ybWFsaXplLXRyYWlsaW5nLXNsYXNoJ1xuXG5jb25zdCBiYXNlUGF0aCA9IChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIGFzIHN0cmluZykgfHwgJydcblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEJhc2VQYXRoKHBhdGg6IHN0cmluZywgcmVxdWlyZWQ/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5vcm1hbGl6ZVBhdGhUcmFpbGluZ1NsYXNoKFxuICAgIHByb2Nlc3MuZW52Ll9fTkVYVF9NQU5VQUxfQ0xJRU5UX0JBU0VfUEFUSCAmJiAhcmVxdWlyZWRcbiAgICAgID8gcGF0aFxuICAgICAgOiBhZGRQYXRoUHJlZml4KHBhdGgsIGJhc2VQYXRoKVxuICApXG59XG4iXSwibmFtZXMiOlsiYWRkQmFzZVBhdGgiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInJlcXVpcmVkIiwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJhZGRQYXRoUHJlZml4Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/add-base-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-bootstrap.js": /*!***********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-bootstrap.js ***! \***********************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * Before starting the Next.js runtime and requiring any module, we need to make\n * sure the following scripts are executed in the correct order:\n * - Polyfills\n * - next/script with `beforeInteractive` strategy\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"appBootstrap\", ({\n enumerable: true,\n get: function() {\n return appBootstrap;\n }\n}));\nconst _setattributesfromprops = __webpack_require__(/*! ./set-attributes-from-props */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/set-attributes-from-props.js\");\nconst version = \"15.5.3\";\nwindow.next = {\n version,\n appDir: true\n};\nfunction loadScriptsInSequence(scripts, hydrate) {\n if (!scripts || !scripts.length) {\n return hydrate();\n }\n return scripts.reduce((promise, param)=>{\n let [src, props] = param;\n return promise.then(()=>{\n return new Promise((resolve, reject)=>{\n const el = document.createElement('script');\n if (props) {\n (0, _setattributesfromprops.setAttributesFromProps)(el, props);\n }\n if (src) {\n el.src = src;\n el.onload = ()=>resolve();\n el.onerror = reject;\n } else if (props) {\n el.innerHTML = props.children;\n setTimeout(resolve);\n }\n document.head.appendChild(el);\n });\n });\n }, Promise.resolve()).catch((err)=>{\n console.error(err);\n // Still try to hydrate even if there's an error.\n }).then(()=>{\n hydrate();\n });\n}\nfunction appBootstrap(hydrate) {\n loadScriptsInSequence(self.__next_s, ()=>{\n // If the static shell is being debugged, skip hydration if the\n // `__nextppronly` query is present. This is only enabled when the\n // environment variable `__NEXT_EXPERIMENTAL_STATIC_SHELL_DEBUGGING` is\n // set to `1`. Otherwise the following is optimized out.\n if (false) {}\n hydrate();\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=app-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1ib290c3RyYXAuanMiLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0NBS0M7Ozs7Z0RBbURlQTs7O2VBQUFBOzs7b0RBakR1QjtBQUV2QyxNQUFNQyxVQUFVQyxRQUFRQztBQUV4QkUsT0FBT0MsSUFBSSxHQUFHO0lBQ1pMO0lBQ0FNLFFBQVE7QUFDVjtBQUVBLFNBQVNDLHNCQUNQQyxPQUF3RCxFQUN4REMsT0FBbUI7SUFFbkIsSUFBSSxDQUFDRCxXQUFXLENBQUNBLFFBQVFFLE1BQU0sRUFBRTtRQUMvQixPQUFPRDtJQUNUO0lBRUEsT0FBT0QsUUFDSkcsTUFBTSxDQUFDLENBQUNDLFNBQUFBO1lBQVMsQ0FBQ0MsS0FBS0MsTUFBTTtRQUM1QixPQUFPRixRQUFRRyxJQUFJLENBQUM7WUFDbEIsT0FBTyxJQUFJQyxRQUFjLENBQUNDLFNBQVNDO2dCQUNqQyxNQUFNQyxLQUFLQyxTQUFTQyxhQUFhLENBQUM7Z0JBRWxDLElBQUlQLE9BQU87b0JBQ1RRLENBQUFBLEdBQUFBLHdCQUFBQSxzQkFBQUEsRUFBdUJILElBQUlMO2dCQUM3QjtnQkFFQSxJQUFJRCxLQUFLO29CQUNQTSxHQUFHTixHQUFHLEdBQUdBO29CQUNUTSxHQUFHSSxNQUFNLEdBQUcsSUFBTU47b0JBQ2xCRSxHQUFHSyxPQUFPLEdBQUdOO2dCQUNmLE9BQU8sSUFBSUosT0FBTztvQkFDaEJLLEdBQUdNLFNBQVMsR0FBR1gsTUFBTVksUUFBUTtvQkFDN0JDLFdBQVdWO2dCQUNiO2dCQUVBRyxTQUFTUSxJQUFJLENBQUNDLFdBQVcsQ0FBQ1Y7WUFDNUI7UUFDRjtJQUNGLEdBQUdILFFBQVFDLE9BQU8sSUFDakJhLEtBQUssQ0FBQyxDQUFDQztRQUNOQyxRQUFRQyxLQUFLLENBQUNGO0lBQ2QsaURBQWlEO0lBQ25ELEdBQ0NoQixJQUFJLENBQUM7UUFDSk47SUFDRjtBQUNKO0FBRU8sU0FBU1YsYUFBYVUsT0FBbUI7SUFDOUNGLHNCQUF1QjJCLEtBQWFDLFFBQVEsRUFBRTtRQUM1QywrREFBK0Q7UUFDL0Qsa0VBQWtFO1FBQ2xFLHVFQUF1RTtRQUN2RSx3REFBd0Q7UUFDeEQsSUFBSWxDLEtBQThELEVBQUUsRUFXbkU7UUFFRFE7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvc3JjL2NsaWVudC9hcHAtYm9vdHN0cmFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQmVmb3JlIHN0YXJ0aW5nIHRoZSBOZXh0LmpzIHJ1bnRpbWUgYW5kIHJlcXVpcmluZyBhbnkgbW9kdWxlLCB3ZSBuZWVkIHRvIG1ha2VcbiAqIHN1cmUgdGhlIGZvbGxvd2luZyBzY3JpcHRzIGFyZSBleGVjdXRlZCBpbiB0aGUgY29ycmVjdCBvcmRlcjpcbiAqIC0gUG9seWZpbGxzXG4gKiAtIG5leHQvc2NyaXB0IHdpdGggYGJlZm9yZUludGVyYWN0aXZlYCBzdHJhdGVneVxuICovXG5cbmltcG9ydCB7IHNldEF0dHJpYnV0ZXNGcm9tUHJvcHMgfSBmcm9tICcuL3NldC1hdHRyaWJ1dGVzLWZyb20tcHJvcHMnXG5cbmNvbnN0IHZlcnNpb24gPSBwcm9jZXNzLmVudi5fX05FWFRfVkVSU0lPTlxuXG53aW5kb3cubmV4dCA9IHtcbiAgdmVyc2lvbixcbiAgYXBwRGlyOiB0cnVlLFxufVxuXG5mdW5jdGlvbiBsb2FkU2NyaXB0c0luU2VxdWVuY2UoXG4gIHNjcmlwdHM6IFtzcmM6IHN0cmluZywgcHJvcHM6IHsgW3Byb3A6IHN0cmluZ106IGFueSB9XVtdLFxuICBoeWRyYXRlOiAoKSA9PiB2b2lkXG4pIHtcbiAgaWYgKCFzY3JpcHRzIHx8ICFzY3JpcHRzLmxlbmd0aCkge1xuICAgIHJldHVybiBoeWRyYXRlKClcbiAgfVxuXG4gIHJldHVybiBzY3JpcHRzXG4gICAgLnJlZHVjZSgocHJvbWlzZSwgW3NyYywgcHJvcHNdKSA9PiB7XG4gICAgICByZXR1cm4gcHJvbWlzZS50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpXG5cbiAgICAgICAgICBpZiAocHJvcHMpIHtcbiAgICAgICAgICAgIHNldEF0dHJpYnV0ZXNGcm9tUHJvcHMoZWwsIHByb3BzKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgICAgIGVsLnNyYyA9IHNyY1xuICAgICAgICAgICAgZWwub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpXG4gICAgICAgICAgICBlbC5vbmVycm9yID0gcmVqZWN0XG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9wcykge1xuICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gcHJvcHMuY2hpbGRyZW5cbiAgICAgICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVsKVxuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSlcbiAgICAuY2F0Y2goKGVycjogRXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgICAgLy8gU3RpbGwgdHJ5IHRvIGh5ZHJhdGUgZXZlbiBpZiB0aGVyZSdzIGFuIGVycm9yLlxuICAgIH0pXG4gICAgLnRoZW4oKCkgPT4ge1xuICAgICAgaHlkcmF0ZSgpXG4gICAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcEJvb3RzdHJhcChoeWRyYXRlOiAoKSA9PiB2b2lkKSB7XG4gIGxvYWRTY3JpcHRzSW5TZXF1ZW5jZSgoc2VsZiBhcyBhbnkpLl9fbmV4dF9zLCAoKSA9PiB7XG4gICAgLy8gSWYgdGhlIHN0YXRpYyBzaGVsbCBpcyBiZWluZyBkZWJ1Z2dlZCwgc2tpcCBoeWRyYXRpb24gaWYgdGhlXG4gICAgLy8gYF9fbmV4dHBwcm9ubHlgIHF1ZXJ5IGlzIHByZXNlbnQuIFRoaXMgaXMgb25seSBlbmFibGVkIHdoZW4gdGhlXG4gICAgLy8gZW52aXJvbm1lbnQgdmFyaWFibGUgYF9fTkVYVF9FWFBFUklNRU5UQUxfU1RBVElDX1NIRUxMX0RFQlVHR0lOR2AgaXNcbiAgICAvLyBzZXQgdG8gYDFgLiBPdGhlcndpc2UgdGhlIGZvbGxvd2luZyBpcyBvcHRpbWl6ZWQgb3V0LlxuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX1NUQVRJQ19TSEVMTF9ERUJVR0dJTkcgPT09ICcxJykge1xuICAgICAgY29uc3Qgc2VhcmNoID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKVxuICAgICAgaWYgKFxuICAgICAgICBzZWFyY2guZ2V0KCdfX25leHRwcHJvbmx5JykgPT09ICdmYWxsYmFjaycgfHxcbiAgICAgICAgc2VhcmNoLmdldCgnX19uZXh0cHByb25seScpID09PSAnMSdcbiAgICAgICkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYFNraXBwaW5nIGh5ZHJhdGlvbiBkdWUgdG8gX19uZXh0cHByb25seT0ke3NlYXJjaC5nZXQoJ19fbmV4dHBwcm9ubHknKX1gXG4gICAgICAgIClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuXG4gICAgaHlkcmF0ZSgpXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiYXBwQm9vdHN0cmFwIiwidmVyc2lvbiIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfVkVSU0lPTiIsIndpbmRvdyIsIm5leHQiLCJhcHBEaXIiLCJsb2FkU2NyaXB0c0luU2VxdWVuY2UiLCJzY3JpcHRzIiwiaHlkcmF0ZSIsImxlbmd0aCIsInJlZHVjZSIsInByb21pc2UiLCJzcmMiLCJwcm9wcyIsInRoZW4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic2V0QXR0cmlidXRlc0Zyb21Qcm9wcyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJpbm5lckhUTUwiLCJjaGlsZHJlbiIsInNldFRpbWVvdXQiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJjYXRjaCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInNlbGYiLCJfX25leHRfcyIsIl9fTkVYVF9FWFBFUklNRU5UQUxfU1RBVElDX1NIRUxMX0RFQlVHR0lORyIsInNlYXJjaCIsIlVSTFNlYXJjaFBhcmFtcyIsImxvY2F0aW9uIiwiZ2V0Iiwid2FybiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-bootstrap.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-build-id.js": /*!**********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-build-id.js ***! \**********************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// This gets assigned as a side-effect during app initialization. Because it\n// represents the build used to create the JS bundle, it should never change\n// after being set, so we store it in a global variable.\n//\n// When performing RSC requests, if the incoming data has a different build ID,\n// we perform an MPA navigation/refresh to load the updated build and ensure\n// that the client and server in sync.\n// Starts as an empty string. In practice, because setAppBuildId is called\n// during initialization before hydration starts, this will always get\n// reassigned to the actual build ID before it's ever needed by a navigation.\n// If for some reasons it didn't, due to a bug or race condition, then on\n// navigation the build comparision would fail and trigger an MPA navigation.\n\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 getAppBuildId: function() {\n return getAppBuildId;\n },\n setAppBuildId: function() {\n return setAppBuildId;\n }\n});\nlet globalBuildId = '';\nfunction setAppBuildId(buildId) {\n globalBuildId = buildId;\n}\nfunction getAppBuildId() {\n return globalBuildId;\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=app-build-id.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1idWlsZC1pZC5qcyIsIm1hcHBpbmdzIjoiQUFBQSw0RUFBNEU7QUFDNUUsNEVBQTRFO0FBQzVFLHdEQUF3RDtBQUN4RCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLDRFQUE0RTtBQUM1RSxzQ0FBc0M7QUFFdEMsMEVBQTBFO0FBQzFFLHNFQUFzRTtBQUN0RSw2RUFBNkU7QUFDN0UseUVBQXlFO0FBQ3pFLDZFQUE2RTs7Ozs7Ozs7Ozs7OztJQU83REEsYUFBYTtlQUFiQTs7SUFKQUMsYUFBYTtlQUFiQTs7O0FBRmhCLElBQUlDLGdCQUF3QjtBQUVyQixTQUFTRCxjQUFjRSxPQUFlO0lBQzNDRCxnQkFBZ0JDO0FBQ2xCO0FBRU8sU0FBU0g7SUFDZCxPQUFPRTtBQUNUIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvc3JjL2NsaWVudC9hcHAtYnVpbGQtaWQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBnZXRzIGFzc2lnbmVkIGFzIGEgc2lkZS1lZmZlY3QgZHVyaW5nIGFwcCBpbml0aWFsaXphdGlvbi4gQmVjYXVzZSBpdFxuLy8gcmVwcmVzZW50cyB0aGUgYnVpbGQgdXNlZCB0byBjcmVhdGUgdGhlIEpTIGJ1bmRsZSwgaXQgc2hvdWxkIG5ldmVyIGNoYW5nZVxuLy8gYWZ0ZXIgYmVpbmcgc2V0LCBzbyB3ZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZS5cbi8vXG4vLyBXaGVuIHBlcmZvcm1pbmcgUlNDIHJlcXVlc3RzLCBpZiB0aGUgaW5jb21pbmcgZGF0YSBoYXMgYSBkaWZmZXJlbnQgYnVpbGQgSUQsXG4vLyB3ZSBwZXJmb3JtIGFuIE1QQSBuYXZpZ2F0aW9uL3JlZnJlc2ggdG8gbG9hZCB0aGUgdXBkYXRlZCBidWlsZCBhbmQgZW5zdXJlXG4vLyB0aGF0IHRoZSBjbGllbnQgYW5kIHNlcnZlciBpbiBzeW5jLlxuXG4vLyBTdGFydHMgYXMgYW4gZW1wdHkgc3RyaW5nLiBJbiBwcmFjdGljZSwgYmVjYXVzZSBzZXRBcHBCdWlsZElkIGlzIGNhbGxlZFxuLy8gZHVyaW5nIGluaXRpYWxpemF0aW9uIGJlZm9yZSBoeWRyYXRpb24gc3RhcnRzLCB0aGlzIHdpbGwgYWx3YXlzIGdldFxuLy8gcmVhc3NpZ25lZCB0byB0aGUgYWN0dWFsIGJ1aWxkIElEIGJlZm9yZSBpdCdzIGV2ZXIgbmVlZGVkIGJ5IGEgbmF2aWdhdGlvbi5cbi8vIElmIGZvciBzb21lIHJlYXNvbnMgaXQgZGlkbid0LCBkdWUgdG8gYSBidWcgb3IgcmFjZSBjb25kaXRpb24sIHRoZW4gb25cbi8vIG5hdmlnYXRpb24gdGhlIGJ1aWxkIGNvbXBhcmlzaW9uIHdvdWxkIGZhaWwgYW5kIHRyaWdnZXIgYW4gTVBBIG5hdmlnYXRpb24uXG5sZXQgZ2xvYmFsQnVpbGRJZDogc3RyaW5nID0gJydcblxuZXhwb3J0IGZ1bmN0aW9uIHNldEFwcEJ1aWxkSWQoYnVpbGRJZDogc3RyaW5nKSB7XG4gIGdsb2JhbEJ1aWxkSWQgPSBidWlsZElkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcHBCdWlsZElkKCk6IHN0cmluZyB7XG4gIHJldHVybiBnbG9iYWxCdWlsZElkXG59XG4iXSwibmFtZXMiOlsiZ2V0QXBwQnVpbGRJZCIsInNldEFwcEJ1aWxkSWQiLCJnbG9iYWxCdWlsZElkIiwiYnVpbGRJZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-build-id.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-call-server.js": /*!*************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-call-server.js ***! \*************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"callServer\", ({\n enumerable: true,\n get: function() {\n return callServer;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./components/router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _useactionqueue = __webpack_require__(/*! ./components/use-action-queue */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/use-action-queue.js\");\nasync function callServer(actionId, actionArgs) {\n return new Promise((resolve, reject)=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_SERVER_ACTION,\n actionId,\n actionArgs,\n resolve,\n reject\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=app-call-server.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1jYWxsLXNlcnZlci5qcyIsIm1hcHBpbmdzIjoiOzs7OzhDQUlzQkE7OztlQUFBQTs7O21DQUpVO2dEQUNLOzRDQUNHO0FBRWpDLGVBQWVBLFdBQVdDLFFBQWdCLEVBQUVDLFVBQWlCO0lBQ2xFLE9BQU8sSUFBSUMsUUFBUSxDQUFDQyxTQUFTQztRQUMzQkMsQ0FBQUEsR0FBQUEsT0FBQUEsZUFBQUEsRUFBZ0I7WUFDZEMsQ0FBQUEsR0FBQUEsZ0JBQUFBLHVCQUFBQSxFQUF3QjtnQkFDdEJDLE1BQU1DLG9CQUFBQSxvQkFBb0I7Z0JBQzFCUjtnQkFDQUM7Z0JBQ0FFO2dCQUNBQztZQUNGO1FBQ0Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvc3JjL2NsaWVudC9hcHAtY2FsbC1zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc3RhcnRUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBBQ1RJT05fU0VSVkVSX0FDVElPTiB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIH0gZnJvbSAnLi9jb21wb25lbnRzL3VzZS1hY3Rpb24tcXVldWUnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjYWxsU2VydmVyKGFjdGlvbklkOiBzdHJpbmcsIGFjdGlvbkFyZ3M6IGFueVtdKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKHtcbiAgICAgICAgdHlwZTogQUNUSU9OX1NFUlZFUl9BQ1RJT04sXG4gICAgICAgIGFjdGlvbklkLFxuICAgICAgICBhY3Rpb25BcmdzLFxuICAgICAgICByZXNvbHZlLFxuICAgICAgICByZWplY3QsXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY2FsbFNlcnZlciIsImFjdGlvbklkIiwiYWN0aW9uQXJncyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0Iiwic3RhcnRUcmFuc2l0aW9uIiwiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ0eXBlIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-call-server.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-find-source-map-url.js": /*!*********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-find-source-map-url.js ***! \*********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"findSourceMapURL\", ({\n enumerable: true,\n get: function() {\n return findSourceMapURL;\n }\n}));\nconst basePath = false || '';\nconst pathname = \"\" + basePath + \"/__nextjs_source-map\";\nconst findSourceMapURL = true ? function findSourceMapURL(filename) {\n if (filename === '') {\n return null;\n }\n if (filename.startsWith(document.location.origin) && filename.includes('/_next/static')) {\n // This is a request for a client chunk. This can only happen when\n // using Turbopack. In this case, since we control how those source\n // maps are generated, we can safely assume that the sourceMappingURL\n // is relative to the filename, with an added `.map` extension. The\n // browser can just request this file, and it gets served through the\n // normal dev server, without the need to route this through\n // the `/__nextjs_source-map` dev middleware.\n return \"\" + filename + \".map\";\n }\n const url = new URL(pathname, document.location.origin);\n url.searchParams.set('filename', filename);\n return url.href;\n} : 0;\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-find-source-map-url.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1maW5kLXNvdXJjZS1tYXAtdXJsLmpzIiwibWFwcGluZ3MiOiI7Ozs7b0RBR2FBOzs7ZUFBQUE7OztBQUhiLE1BQU1DLFdBQVdDLE1BQWtDLElBQUk7QUFDdkQsTUFBTUcsV0FBWSxLQUFFSixXQUFTO0FBRXRCLE1BQU1ELG1CQUNYRSxLQUFvQixHQUNoQixTQUFTRixpQkFBaUJPLFFBQWdCO0lBQ3hDLElBQUlBLGFBQWEsSUFBSTtRQUNuQixPQUFPO0lBQ1Q7SUFFQSxJQUNFQSxTQUFTQyxVQUFVLENBQUNDLFNBQVNDLFFBQVEsQ0FBQ0MsTUFBTSxLQUM1Q0osU0FBU0ssUUFBUSxDQUFDLGtCQUNsQjtRQUNBLGtFQUFrRTtRQUNsRSxtRUFBbUU7UUFDbkUscUVBQXFFO1FBQ3JFLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsNERBQTREO1FBQzVELDZDQUE2QztRQUM3QyxPQUFRLEtBQUVMLFdBQVM7SUFDckI7SUFFQSxNQUFNTSxNQUFNLElBQUlDLElBQUlULFVBQVVJLFNBQVNDLFFBQVEsQ0FBQ0MsTUFBTTtJQUN0REUsSUFBSUUsWUFBWSxDQUFDQyxHQUFHLENBQUMsWUFBWVQ7SUFFakMsT0FBT00sSUFBSUksSUFBSTtBQUNqQixJQUNBQyxDQUFTQSIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3NyYy9jbGllbnQvYXBwLWZpbmQtc291cmNlLW1hcC11cmwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIIHx8ICcnXG5jb25zdCBwYXRobmFtZSA9IGAke2Jhc2VQYXRofS9fX25leHRqc19zb3VyY2UtbWFwYFxuXG5leHBvcnQgY29uc3QgZmluZFNvdXJjZU1hcFVSTCA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnXG4gICAgPyBmdW5jdGlvbiBmaW5kU291cmNlTWFwVVJMKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lID09PSAnJykge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgZmlsZW5hbWUuc3RhcnRzV2l0aChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4pICYmXG4gICAgICAgICAgZmlsZW5hbWUuaW5jbHVkZXMoJy9fbmV4dC9zdGF0aWMnKVxuICAgICAgICApIHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVxdWVzdCBmb3IgYSBjbGllbnQgY2h1bmsuIFRoaXMgY2FuIG9ubHkgaGFwcGVuIHdoZW5cbiAgICAgICAgICAvLyB1c2luZyBUdXJib3BhY2suIEluIHRoaXMgY2FzZSwgc2luY2Ugd2UgY29udHJvbCBob3cgdGhvc2Ugc291cmNlXG4gICAgICAgICAgLy8gbWFwcyBhcmUgZ2VuZXJhdGVkLCB3ZSBjYW4gc2FmZWx5IGFzc3VtZSB0aGF0IHRoZSBzb3VyY2VNYXBwaW5nVVJMXG4gICAgICAgICAgLy8gaXMgcmVsYXRpdmUgdG8gdGhlIGZpbGVuYW1lLCB3aXRoIGFuIGFkZGVkIGAubWFwYCBleHRlbnNpb24uIFRoZVxuICAgICAgICAgIC8vIGJyb3dzZXIgY2FuIGp1c3QgcmVxdWVzdCB0aGlzIGZpbGUsIGFuZCBpdCBnZXRzIHNlcnZlZCB0aHJvdWdoIHRoZVxuICAgICAgICAgIC8vIG5vcm1hbCBkZXYgc2VydmVyLCB3aXRob3V0IHRoZSBuZWVkIHRvIHJvdXRlIHRoaXMgdGhyb3VnaFxuICAgICAgICAgIC8vIHRoZSBgL19fbmV4dGpzX3NvdXJjZS1tYXBgIGRldiBtaWRkbGV3YXJlLlxuICAgICAgICAgIHJldHVybiBgJHtmaWxlbmFtZX0ubWFwYFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJsID0gbmV3IFVSTChwYXRobmFtZSwgZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luKVxuICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZmlsZW5hbWUnLCBmaWxlbmFtZSlcblxuICAgICAgICByZXR1cm4gdXJsLmhyZWZcbiAgICAgIH1cbiAgICA6IHVuZGVmaW5lZFxuIl0sIm5hbWVzIjpbImZpbmRTb3VyY2VNYXBVUkwiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aG5hbWUiLCJOT0RFX0VOViIsImZpbGVuYW1lIiwic3RhcnRzV2l0aCIsImRvY3VtZW50IiwibG9jYXRpb24iLCJvcmlnaW4iLCJpbmNsdWRlcyIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsImhyZWYiLCJ1bmRlZmluZWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-find-source-map-url.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-globals.js": /*!*********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-globals.js ***! \*********************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// imports polyfill from `@next/polyfill-module` after build.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__webpack_require__(/*! ../build/polyfills/polyfill-module */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/polyfill-module.js\");\n// Only setup devtools in development\nif (true) {\n __webpack_require__(/*! ../next-devtools/userspace/app/app-dev-overlay-setup */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-setup.js\");\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=app-globals.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1nbG9iYWxzLmpzIiwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDs7Ozs7b0JBQ3REO0FBRVAscUNBQXFDO0FBQ3JDLElBQUlBLElBQW9CLEVBQW1CO0lBQ3pDRyxtQkFBT0EsQ0FBQywwT0FBc0Q7QUFDaEUiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS9zcmMvY2xpZW50L2FwcC1nbG9iYWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydHMgcG9seWZpbGwgZnJvbSBgQG5leHQvcG9seWZpbGwtbW9kdWxlYCBhZnRlciBidWlsZC5cbmltcG9ydCAnLi4vYnVpbGQvcG9seWZpbGxzL3BvbHlmaWxsLW1vZHVsZSdcblxuLy8gT25seSBzZXR1cCBkZXZ0b29scyBpbiBkZXZlbG9wbWVudFxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgcmVxdWlyZSgnLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2FwcC1kZXYtb3ZlcmxheS1zZXR1cCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktc2V0dXAnKVxufVxuIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInJlcXVpcmUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-globals.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-index.js": /*!*******************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-index.js ***! \*******************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hydrate\", ({\n enumerable: true,\n get: function() {\n return hydrate;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\n__webpack_require__(/*! ./app-globals */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-globals.js\");\nconst _client = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom/client */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-dom/client.js\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _client1 = __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js\");\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js\");\nconst _onrecoverableerror = __webpack_require__(/*! ./react-client-callbacks/on-recoverable-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js\");\nconst _errorboundarycallbacks = __webpack_require__(/*! ./react-client-callbacks/error-boundary-callbacks */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js\");\nconst _appcallserver = __webpack_require__(/*! ./app-call-server */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ./app-find-source-map-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _approuterinstance = __webpack_require__(/*! ./components/app-router-instance */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-instance.js\");\nconst _approuter = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./components/app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\"));\nconst _createinitialrouterstate = __webpack_require__(/*! ./components/router-reducer/create-initial-router-state */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _appbuildid = __webpack_require__(/*! ./app-build-id */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-build-id.js\");\n/// \nconst createFromReadableStream = _client1.createFromReadableStream;\nconst appElement = document;\nconst encoder = new TextEncoder();\nlet initialServerDataBuffer = undefined;\nlet initialServerDataWriter = undefined;\nlet initialServerDataLoaded = false;\nlet initialServerDataFlushed = false;\nlet initialFormStateData = null;\nfunction nextServerDataCallback(seg) {\n if (seg[0] === 0) {\n initialServerDataBuffer = [];\n } else if (seg[0] === 1) {\n if (!initialServerDataBuffer) throw Object.defineProperty(new Error('Unexpected server data: missing bootstrap script.'), \"__NEXT_ERROR_CODE\", {\n value: \"E18\",\n enumerable: false,\n configurable: true\n });\n if (initialServerDataWriter) {\n initialServerDataWriter.enqueue(encoder.encode(seg[1]));\n } else {\n initialServerDataBuffer.push(seg[1]);\n }\n } else if (seg[0] === 2) {\n initialFormStateData = seg[1];\n } else if (seg[0] === 3) {\n if (!initialServerDataBuffer) throw Object.defineProperty(new Error('Unexpected server data: missing bootstrap script.'), \"__NEXT_ERROR_CODE\", {\n value: \"E18\",\n enumerable: false,\n configurable: true\n });\n // Decode the base64 string back to binary data.\n const binaryString = atob(seg[1]);\n const decodedChunk = new Uint8Array(binaryString.length);\n for(var i = 0; i < binaryString.length; i++){\n decodedChunk[i] = binaryString.charCodeAt(i);\n }\n if (initialServerDataWriter) {\n initialServerDataWriter.enqueue(decodedChunk);\n } else {\n initialServerDataBuffer.push(decodedChunk);\n }\n }\n}\nfunction isStreamErrorOrUnfinished(ctr) {\n // If `desiredSize` is null, it means the stream is closed or errored. If it is lower than 0, the stream is still unfinished.\n return ctr.desiredSize === null || ctr.desiredSize < 0;\n}\n// There might be race conditions between `nextServerDataRegisterWriter` and\n// `DOMContentLoaded`. The former will be called when React starts to hydrate\n// the root, the latter will be called when the DOM is fully loaded.\n// For streaming, the former is called first due to partial hydration.\n// For non-streaming, the latter can be called first.\n// Hence, we use two variables `initialServerDataLoaded` and\n// `initialServerDataFlushed` to make sure the writer will be closed and\n// `initialServerDataBuffer` will be cleared in the right time.\nfunction nextServerDataRegisterWriter(ctr) {\n if (initialServerDataBuffer) {\n initialServerDataBuffer.forEach((val)=>{\n ctr.enqueue(typeof val === 'string' ? encoder.encode(val) : val);\n });\n if (initialServerDataLoaded && !initialServerDataFlushed) {\n if (isStreamErrorOrUnfinished(ctr)) {\n ctr.error(Object.defineProperty(new Error('The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection.'), \"__NEXT_ERROR_CODE\", {\n value: \"E117\",\n enumerable: false,\n configurable: true\n }));\n } else {\n ctr.close();\n }\n initialServerDataFlushed = true;\n initialServerDataBuffer = undefined;\n }\n }\n initialServerDataWriter = ctr;\n}\n// When `DOMContentLoaded`, we can close all pending writers to finish hydration.\nconst DOMContentLoaded = function() {\n if (initialServerDataWriter && !initialServerDataFlushed) {\n initialServerDataWriter.close();\n initialServerDataFlushed = true;\n initialServerDataBuffer = undefined;\n }\n initialServerDataLoaded = true;\n};\n_c = DOMContentLoaded;\n// It's possible that the DOM is already loaded.\nif (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', DOMContentLoaded, false);\n} else {\n // Delayed in marco task to ensure it's executed later than hydration\n setTimeout(DOMContentLoaded);\n}\nconst nextServerDataLoadingGlobal = self.__next_f = self.__next_f || [];\nnextServerDataLoadingGlobal.forEach(nextServerDataCallback);\nnextServerDataLoadingGlobal.push = nextServerDataCallback;\nconst readable = new ReadableStream({\n start (controller) {\n nextServerDataRegisterWriter(controller);\n }\n});\nconst initialServerResponse = createFromReadableStream(readable, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL\n});\nfunction ServerRoot(param) {\n let { pendingActionQueue } = param;\n const initialRSCPayload = (0, _react.use)(initialServerResponse);\n const actionQueue = (0, _react.use)(pendingActionQueue);\n const router = /*#__PURE__*/ (0, _jsxruntime.jsx)(_approuter.default, {\n actionQueue: actionQueue,\n globalErrorState: initialRSCPayload.G,\n assetPrefix: initialRSCPayload.p\n });\n if ( true && initialRSCPayload.m) {\n // We provide missing slot information in a context provider only during development\n // as we log some additional information about the missing slots in the console.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.MissingSlotContext, {\n value: initialRSCPayload.m,\n children: router\n });\n }\n return router;\n}\n_c1 = ServerRoot;\nconst StrictModeIfEnabled = true ? _react.default.StrictMode : 0;\nfunction Root(param) {\n let { children } = param;\n if (false) {}\n return children;\n}\n_c2 = Root;\nfunction onDefaultTransitionIndicator() {\n // TODO: Compose default with user-configureable (e.g. nprogress)\n // TODO: Use React's default once we figure out hanging indicators: https://codesandbox.io/p/sandbox/charming-moon-hktkp6?file=%2Fsrc%2Findex.js%3A106%2C30\n return ()=>{};\n}\nconst reactRootOptions = {\n onDefaultTransitionIndicator: onDefaultTransitionIndicator,\n onRecoverableError: _onrecoverableerror.onRecoverableError,\n onCaughtError: _errorboundarycallbacks.onCaughtError,\n onUncaughtError: _errorboundarycallbacks.onUncaughtError\n};\nfunction hydrate(instrumentationHooks) {\n // React overrides `.then` and doesn't return a new promise chain,\n // so we wrap the action queue in a promise to ensure that its value\n // is defined when the promise resolves.\n // https://github.com/facebook/react/blob/163365a07872337e04826c4f501565d43dbd2fd4/packages/react-client/src/ReactFlightClient.js#L189-L190\n const pendingActionQueue = new Promise((resolve, reject)=>{\n initialServerResponse.then((initialRSCPayload)=>{\n // setAppBuildId should be called only once, during JS initialization\n // and before any components have hydrated.\n (0, _appbuildid.setAppBuildId)(initialRSCPayload.b);\n const initialTimestamp = Date.now();\n resolve((0, _approuterinstance.createMutableActionQueue)((0, _createinitialrouterstate.createInitialRouterState)({\n navigatedAt: initialTimestamp,\n initialFlightData: initialRSCPayload.f,\n initialCanonicalUrlParts: initialRSCPayload.c,\n initialParallelRoutes: new Map(),\n location: window.location,\n couldBeIntercepted: initialRSCPayload.i,\n postponed: initialRSCPayload.s,\n prerendered: initialRSCPayload.S\n }), instrumentationHooks));\n }, (err)=>reject(err));\n });\n const reactEl = /*#__PURE__*/ (0, _jsxruntime.jsx)(StrictModeIfEnabled, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_headmanagercontextsharedruntime.HeadManagerContext.Provider, {\n value: {\n appDir: true\n },\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Root, {\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(ServerRoot, {\n pendingActionQueue: pendingActionQueue\n })\n })\n })\n });\n if (document.documentElement.id === '__next_error__') {\n let element = reactEl;\n // Server rendering failed, fall back to client-side rendering\n if (true) {\n const { RootLevelDevOverlayElement } = __webpack_require__(/*! ../next-devtools/userspace/app/client-entry */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/client-entry.js\");\n // Note this won't cause hydration mismatch because we are doing CSR w/o hydration\n element = /*#__PURE__*/ (0, _jsxruntime.jsx)(RootLevelDevOverlayElement, {\n children: element\n });\n }\n _client.default.createRoot(appElement, reactRootOptions).render(element);\n } else {\n _react.default.startTransition(()=>{\n _client.default.hydrateRoot(appElement, reactEl, {\n ...reactRootOptions,\n formState: initialFormStateData\n });\n });\n }\n // TODO-APP: Remove this logic when Float has GC built-in in development.\n if (true) {\n const { linkGc } = __webpack_require__(/*! ./app-link-gc */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-link-gc.js\");\n linkGc();\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=app-index.js.map\nvar _c, _c1, _c2;\n$RefreshReg$(_c, \"DOMContentLoaded\");\n$RefreshReg$(_c1, \"ServerRoot\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1pbmRleC5qcyIsIm1hcHBpbmdzIjoiOzs7OzJDQWtPZ0JBOzs7ZUFBQUE7Ozs7OztvQkFsT1Q7NkVBQ29COzZFQUNBO3FDQUdpRDs2REFDekM7Z0RBQ0E7b0RBSTVCOzJDQUNvQjtpREFDTTsrQ0FJMUI7Z0ZBQ2U7c0RBRW1COzJEQUNOO3dDQUNMO0FBRTlCLGdEQUFnRDtBQUVoRCxNQUFNQywyQkFDSkMsU0FBQUEsd0JBQStCO0FBRWpDLE1BQU1DLGFBQXFDQztBQUUzQyxNQUFNQyxVQUFVLElBQUlDO0FBRXBCLElBQUlDLDBCQUErREM7QUFDbkUsSUFBSUMsMEJBQ0ZEO0FBQ0YsSUFBSUUsMEJBQTBCO0FBQzlCLElBQUlDLDJCQUEyQjtBQUUvQixJQUFJQyx1QkFBbUM7QUFtQnZDLFNBQVNDLHVCQUF1QkMsR0FBa0I7SUFDaEQsSUFBSUEsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO1FBQ2hCUCwwQkFBMEIsRUFBRTtJQUM5QixPQUFPLElBQUlPLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRztRQUN2QixJQUFJLENBQUNQLHlCQUNILE1BQU0scUJBQThELENBQTlELElBQUlRLE1BQU0sc0RBQVY7bUJBQUE7d0JBQUE7MEJBQUE7UUFBNkQ7UUFFckUsSUFBSU4seUJBQXlCO1lBQzNCQSx3QkFBd0JPLE9BQU8sQ0FBQ1gsUUFBUVksTUFBTSxDQUFDSCxHQUFHLENBQUMsRUFBRTtRQUN2RCxPQUFPO1lBQ0xQLHdCQUF3QlcsSUFBSSxDQUFDSixHQUFHLENBQUMsRUFBRTtRQUNyQztJQUNGLE9BQU8sSUFBSUEsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHO1FBQ3ZCRix1QkFBdUJFLEdBQUcsQ0FBQyxFQUFFO0lBQy9CLE9BQU8sSUFB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O0FBQ0YiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS9zcmMvY2xpZW50L2FwcC1pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuL2FwcC1nbG9iYWxzJ1xuaW1wb3J0IFJlYWN0RE9NQ2xpZW50IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnXG5pbXBvcnQgUmVhY3QsIHsgdXNlIH0gZnJvbSAncmVhY3QnXG4vLyBUT0RPOiBFeHBsaWNpdGx5IGltcG9ydCBmcm9tIGNsaWVudC5icm93c2VyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0gYXMgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciB9IGZyb20gJ3JlYWN0LXNlcnZlci1kb20td2VicGFjay9jbGllbnQnXG5pbXBvcnQgeyBIZWFkTWFuYWdlckNvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvbGliL2hlYWQtbWFuYWdlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgb25SZWNvdmVyYWJsZUVycm9yIH0gZnJvbSAnLi9yZWFjdC1jbGllbnQtY2FsbGJhY2tzL29uLXJlY292ZXJhYmxlLWVycm9yJ1xuaW1wb3J0IHtcbiAgb25DYXVnaHRFcnJvcixcbiAgb25VbmNhdWdodEVycm9yLFxufSBmcm9tICcuL3JlYWN0LWNsaWVudC1jYWxsYmFja3MvZXJyb3ItYm91bmRhcnktY2FsbGJhY2tzJ1xuaW1wb3J0IHsgY2FsbFNlcnZlciB9IGZyb20gJy4vYXBwLWNhbGwtc2VydmVyJ1xuaW1wb3J0IHsgZmluZFNvdXJjZU1hcFVSTCB9IGZyb20gJy4vYXBwLWZpbmQtc291cmNlLW1hcC11cmwnXG5pbXBvcnQge1xuICB0eXBlIEFwcFJvdXRlckFjdGlvblF1ZXVlLFxuICBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUsXG59IGZyb20gJy4vY29tcG9uZW50cy9hcHAtcm91dGVyLWluc3RhbmNlJ1xuaW1wb3J0IEFwcFJvdXRlciBmcm9tICcuL2NvbXBvbmVudHMvYXBwLXJvdXRlcidcbmltcG9ydCB0eXBlIHsgSW5pdGlhbFJTQ1BheWxvYWQgfSBmcm9tICcuLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGNyZWF0ZUluaXRpYWxSb3V0ZXJTdGF0ZSB9IGZyb20gJy4vY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaW5pdGlhbC1yb3V0ZXItc3RhdGUnXG5pbXBvcnQgeyBNaXNzaW5nU2xvdENvbnRleHQgfSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IHNldEFwcEJ1aWxkSWQgfSBmcm9tICcuL2FwcC1idWlsZC1pZCdcblxuLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJyZWFjdC1kb20vZXhwZXJpbWVudGFsXCIgLz5cblxuY29uc3QgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtID1cbiAgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtQnJvd3NlciBhcyAodHlwZW9mIGltcG9ydCgncmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrL2NsaWVudC5icm93c2VyJykpWydjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0nXVxuXG5jb25zdCBhcHBFbGVtZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50ID0gZG9jdW1lbnRcblxuY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpXG5cbmxldCBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlcjogKHN0cmluZyB8IFVpbnQ4QXJyYXkpW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWRcbmxldCBpbml0aWFsU2VydmVyRGF0YVdyaXRlcjogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciB8IHVuZGVmaW5lZCA9XG4gIHVuZGVmaW5lZFxubGV0IGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkID0gZmFsc2VcbmxldCBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWQgPSBmYWxzZVxuXG5sZXQgaW5pdGlhbEZvcm1TdGF0ZURhdGE6IG51bGwgfCBhbnkgPSBudWxsXG5cbnR5cGUgRmxpZ2h0U2VnbWVudCA9XG4gIHwgW2lzQm9vdFN0cmFwOiAwXVxuICB8IFtpc05vdEJvb3RzdHJhcDogMSwgcmVzcG9uc2VQYXJ0aWFsOiBzdHJpbmddXG4gIHwgW2lzRm9ybVN0YXRlOiAyLCBmb3JtU3RhdGU6IGFueV1cbiAgfCBbaXNCaW5hcnk6IDMsIHJlc3BvbnNlQmFzZTY0UGFydGlhbDogc3RyaW5nXVxuXG50eXBlIE5leHRGbGlnaHQgPSBPbWl0PEFycmF5PEZsaWdodFNlZ21lbnQ+LCAncHVzaCc+ICYge1xuICBwdXNoOiAoc2VnOiBGbGlnaHRTZWdtZW50KSA9PiB2b2lkXG59XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgLy8gSWYgeW91J3JlIHdvcmtpbmcgaW4gYSBicm93c2VyIGVudmlyb25tZW50XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fbmV4dF9mOiBOZXh0RmxpZ2h0XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV4dFNlcnZlckRhdGFDYWxsYmFjayhzZWc6IEZsaWdodFNlZ21lbnQpOiB2b2lkIHtcbiAgaWYgKHNlZ1swXSA9PT0gMCkge1xuICAgIGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyID0gW11cbiAgfSBlbHNlIGlmIChzZWdbMF0gPT09IDEpIHtcbiAgICBpZiAoIWluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHNlcnZlciBkYXRhOiBtaXNzaW5nIGJvb3RzdHJhcCBzY3JpcHQuJylcblxuICAgIGlmIChpbml0aWFsU2VydmVyRGF0YVdyaXRlcikge1xuICAgICAgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIuZW5xdWV1ZShlbmNvZGVyLmVuY29kZShzZWdbMV0pKVxuICAgIH0gZWxzZSB7XG4gICAgICBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlci5wdXNoKHNlZ1sxXSlcbiAgICB9XG4gIH0gZWxzZSBpZiAoc2VnWzBdID09PSAyKSB7XG4gICAgaW5pdGlhbEZvcm1TdGF0ZURhdGEgPSBzZWdbMV1cbiAgfSBlbHNlIGlmIChzZWdbMF0gPT09IDMpIHtcbiAgICBpZiAoIWluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIHNlcnZlciBkYXRhOiBtaXNzaW5nIGJvb3RzdHJhcCBzY3JpcHQuJylcblxuICAgIC8vIERlY29kZSB0aGUgYmFzZTY0IHN0cmluZyBiYWNrIHRvIGJpbmFyeSBkYXRhLlxuICAgIGNvbnN0IGJpbmFyeVN0cmluZyA9IGF0b2Ioc2VnWzFdKVxuICAgIGNvbnN0IGRlY29kZWRDaHVuayA9IG5ldyBVaW50OEFycmF5KGJpbmFyeVN0cmluZy5sZW5ndGgpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaW5hcnlTdHJpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlY29kZWRDaHVua1tpXSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpXG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxTZXJ2ZXJEYXRhV3JpdGVyKSB7XG4gICAgICBpbml0aWFsU2VydmVyRGF0YVdyaXRlci5lbnF1ZXVlKGRlY29kZWRDaHVuaylcbiAgICB9IGVsc2Uge1xuICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIucHVzaChkZWNvZGVkQ2h1bmspXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzU3RyZWFtRXJyb3JPclVuZmluaXNoZWQoY3RyOiBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKSB7XG4gIC8vIElmIGBkZXNpcmVkU2l6ZWAgaXMgbnVsbCwgaXQgbWVhbnMgdGhlIHN0cmVhbSBpcyBjbG9zZWQgb3IgZXJyb3JlZC4gSWYgaXQgaXMgbG93ZXIgdGhhbiAwLCB0aGUgc3RyZWFtIGlzIHN0aWxsIHVuZmluaXNoZWQuXG4gIHJldHVybiBjdHIuZGVzaXJlZFNpemUgPT09IG51bGwgfHwgY3RyLmRlc2lyZWRTaXplIDwgMFxufVxuXG4vLyBUaGVyZSBtaWdodCBiZSByYWNlIGNvbmRpdGlvbnMgYmV0d2VlbiBgbmV4dFNlcnZlckRhdGFSZWdpc3RlcldyaXRlcmAgYW5kXG4vLyBgRE9NQ29udGVudExvYWRlZGAuIFRoZSBmb3JtZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiBSZWFjdCBzdGFydHMgdG8gaHlkcmF0ZVxuLy8gdGhlIHJvb3QsIHRoZSBsYXR0ZXIgd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgRE9NIGlzIGZ1bGx5IGxvYWRlZC5cbi8vIEZvciBzdHJlYW1pbmcsIHRoZSBmb3JtZXIgaXMgY2FsbGVkIGZpcnN0IGR1ZSB0byBwYXJ0aWFsIGh5ZHJhdGlvbi5cbi8vIEZvciBub24tc3RyZWFtaW5nLCB0aGUgbGF0dGVyIGNhbiBiZSBjYWxsZWQgZmlyc3QuXG4vLyBIZW5jZSwgd2UgdXNlIHR3byB2YXJpYWJsZXMgYGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkYCBhbmRcbi8vIGBpbml0aWFsU2VydmVyRGF0YUZsdXNoZWRgIHRvIG1ha2Ugc3VyZSB0aGUgd3JpdGVyIHdpbGwgYmUgY2xvc2VkIGFuZFxuLy8gYGluaXRpYWxTZXJ2ZXJEYXRhQnVmZmVyYCB3aWxsIGJlIGNsZWFyZWQgaW4gdGhlIHJpZ2h0IHRpbWUuXG5mdW5jdGlvbiBuZXh0U2VydmVyRGF0YVJlZ2lzdGVyV3JpdGVyKGN0cjogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcikge1xuICBpZiAoaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIpIHtcbiAgICBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlci5mb3JFYWNoKCh2YWwpID0+IHtcbiAgICAgIGN0ci5lbnF1ZXVlKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gZW5jb2Rlci5lbmNvZGUodmFsKSA6IHZhbClcbiAgICB9KVxuICAgIGlmIChpbml0aWFsU2VydmVyRGF0YUxvYWRlZCAmJiAhaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkKSB7XG4gICAgICBpZiAoaXNTdHJlYW1FcnJvck9yVW5maW5pc2hlZChjdHIpKSB7XG4gICAgICAgIGN0ci5lcnJvcihcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnVGhlIGNvbm5lY3Rpb24gdG8gdGhlIHBhZ2Ugd2FzIHVuZXhwZWN0ZWRseSBjbG9zZWQsIHBvc3NpYmx5IGR1ZSB0byB0aGUgc3RvcCBidXR0b24gYmVpbmcgY2xpY2tlZCwgbG9zcyBvZiBXaS1GaSwgb3IgYW4gdW5zdGFibGUgaW50ZXJuZXQgY29ubmVjdGlvbi4nXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHIuY2xvc2UoKVxuICAgICAgfVxuICAgICAgaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkID0gdHJ1ZVxuICAgICAgaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBpbml0aWFsU2VydmVyRGF0YVdyaXRlciA9IGN0clxufVxuXG4vLyBXaGVuIGBET01Db250ZW50TG9hZGVkYCwgd2UgY2FuIGNsb3NlIGFsbCBwZW5kaW5nIHdyaXRlcnMgdG8gZmluaXNoIGh5ZHJhdGlvbi5cbmNvbnN0IERPTUNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmIChpbml0aWFsU2VydmVyRGF0YVdyaXRlciAmJiAhaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkKSB7XG4gICAgaW5pdGlhbFNlcnZlckRhdGFXcml0ZXIuY2xvc2UoKVxuICAgIGluaXRpYWxTZXJ2ZXJEYXRhRmx1c2hlZCA9IHRydWVcbiAgICBpbml0aWFsU2VydmVyRGF0YUJ1ZmZlciA9IHVuZGVmaW5lZFxuICB9XG4gIGluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkID0gdHJ1ZVxufVxuXG4vLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIERPTSBpcyBhbHJlYWR5IGxvYWRlZC5cbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIHtcbiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIERPTUNvbnRlbnRMb2FkZWQsIGZhbHNlKVxufSBlbHNlIHtcbiAgLy8gRGVsYXllZCBpbiBtYXJjbyB0YXNrIHRvIGVuc3VyZSBpdCdzIGV4ZWN1dGVkIGxhdGVyIHRoYW4gaHlkcmF0aW9uXG4gIHNldFRpbWVvdXQoRE9NQ29udGVudExvYWRlZClcbn1cblxuY29uc3QgbmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsID0gKHNlbGYuX19uZXh0X2YgPSBzZWxmLl9fbmV4dF9mIHx8IFtdKVxubmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsLmZvckVhY2gobmV4dFNlcnZlckRhdGFDYWxsYmFjaylcbm5leHRTZXJ2ZXJEYXRhTG9hZGluZ0dsb2JhbC5wdXNoID0gbmV4dFNlcnZlckRhdGFDYWxsYmFja1xuXG5jb25zdCByZWFkYWJsZSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gIHN0YXJ0KGNvbnRyb2xsZXIpIHtcbiAgICBuZXh0U2VydmVyRGF0YVJlZ2lzdGVyV3JpdGVyKGNvbnRyb2xsZXIpXG4gIH0sXG59KVxuXG5jb25zdCBpbml0aWFsU2VydmVyUmVzcG9uc2UgPSBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW08SW5pdGlhbFJTQ1BheWxvYWQ+KFxuICByZWFkYWJsZSxcbiAgeyBjYWxsU2VydmVyLCBmaW5kU291cmNlTWFwVVJMIH1cbilcblxuZnVuY3Rpb24gU2VydmVyUm9vdCh7XG4gIHBlbmRpbmdBY3Rpb25RdWV1ZSxcbn06IHtcbiAgcGVuZGluZ0FjdGlvblF1ZXVlOiBQcm9taXNlPEFwcFJvdXRlckFjdGlvblF1ZXVlPlxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IGluaXRpYWxSU0NQYXlsb2FkID0gdXNlKGluaXRpYWxTZXJ2ZXJSZXNwb25zZSlcbiAgY29uc3QgYWN0aW9uUXVldWUgPSB1c2U8QXBwUm91dGVyQWN0aW9uUXVldWU+KHBlbmRpbmdBY3Rpb25RdWV1ZSlcblxuICBjb25zdCByb3V0ZXIgPSAoXG4gICAgPEFwcFJvdXRlclxuICAgICAgYWN0aW9uUXVldWU9e2FjdGlvblF1ZXVlfVxuICAgICAgZ2xvYmFsRXJyb3JTdGF0ZT17aW5pdGlhbFJTQ1BheWxvYWQuR31cbiAgICAgIGFzc2V0UHJlZml4PXtpbml0aWFsUlNDUGF5bG9hZC5wfVxuICAgIC8+XG4gIClcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgaW5pdGlhbFJTQ1BheWxvYWQubSkge1xuICAgIC8vIFdlIHByb3ZpZGUgbWlzc2luZyBzbG90IGluZm9ybWF0aW9uIGluIGEgY29udGV4dCBwcm92aWRlciBvbmx5IGR1cmluZyBkZXZlbG9wbWVudFxuICAgIC8vIGFzIHdlIGxvZyBzb21lIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1pc3Npbmcgc2xvdHMgaW4gdGhlIGNvbnNvbGUuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNaXNzaW5nU2xvdENvbnRleHQgdmFsdWU9e2luaXRpYWxSU0NQYXlsb2FkLm19PlxuICAgICAgICB7cm91dGVyfVxuICAgICAgPC9NaXNzaW5nU2xvdENvbnRleHQ+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHJvdXRlclxufVxuXG5jb25zdCBTdHJpY3RNb2RlSWZFbmFibGVkID0gcHJvY2Vzcy5lbnYuX19ORVhUX1NUUklDVF9NT0RFX0FQUFxuICA/IFJlYWN0LlN0cmljdE1vZGVcbiAgOiBSZWFjdC5GcmFnbWVudFxuXG5mdW5jdGlvbiBSb290KHsgY2hpbGRyZW4gfTogUmVhY3QuUHJvcHNXaXRoQ2hpbGRyZW48e30+KSB7XG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVEVTVF9NT0RFKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURUQgPSB0cnVlXG4gICAgICB3aW5kb3cuX19ORVhUX0hZRFJBVEVEX0FUID0gcGVyZm9ybWFuY2Uubm93KClcbiAgICAgIHdpbmRvdy5fX05FWFRfSFlEUkFURURfQ0I/LigpXG4gICAgfSwgW10pXG4gIH1cblxuICByZXR1cm4gY2hpbGRyZW5cbn1cblxuZnVuY3Rpb24gb25EZWZhdWx0VHJhbnNpdGlvbkluZGljYXRvcigpIHtcbiAgLy8gVE9ETzogQ29tcG9zZSBkZWZhdWx0IHdpdGggdXNlci1jb25maWd1cmVhYmxlIChlLmcuIG5wcm9ncmVzcylcbiAgLy8gVE9ETzogVXNlIFJlYWN0J3MgZGVmYXVsdCBvbmNlIHdlIGZpZ3VyZSBvdXQgaGFuZ2luZyBpbmRpY2F0b3JzOiBodHRwczovL2NvZGVzYW5kYm94LmlvL3Avc2FuZGJveC9jaGFybWluZy1tb29uLWhrdGtwNj9maWxlPSUyRnNyYyUyRmluZGV4LmpzJTNBMTA2JTJDMzBcbiAgcmV0dXJuICgpID0+IHt9XG59XG5cbmNvbnN0IHJlYWN0Um9vdE9wdGlvbnM6IFJlYWN0RE9NQ2xpZW50LlJvb3RPcHRpb25zID0ge1xuICBvbkRlZmF1bHRUcmFuc2l0aW9uSW5kaWNhdG9yOiBvbkRlZmF1bHRUcmFuc2l0aW9uSW5kaWNhdG9yLFxuICBvblJlY292ZXJhYmxlRXJyb3IsXG4gIG9uQ2F1Z2h0RXJyb3IsXG4gIG9uVW5jYXVnaHRFcnJvcixcbn1cblxuZXhwb3J0IHR5cGUgQ2xpZW50SW5zdHJ1bWVudGF0aW9uSG9va3MgPSB7XG4gIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0PzogKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG5hdmlnYXRpb25UeXBlOiAncHVzaCcgfCAncmVwbGFjZScgfCAndHJhdmVyc2UnXG4gICkgPT4gdm9pZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaHlkcmF0ZShcbiAgaW5zdHJ1bWVudGF0aW9uSG9va3M6IENsaWVudEluc3RydW1lbnRhdGlvbkhvb2tzIHwgbnVsbFxuKSB7XG4gIC8vIFJlYWN0IG92ZXJyaWRlcyBgLnRoZW5gIGFuZCBkb2Vzbid0IHJldHVybiBhIG5ldyBwcm9taXNlIGNoYWluLFxuICAvLyBzbyB3ZSB3cmFwIHRoZSBhY3Rpb24gcXVldWUgaW4gYSBwcm9taXNlIHRvIGVuc3VyZSB0aGF0IGl0cyB2YWx1ZVxuICAvLyBpcyBkZWZpbmVkIHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMuXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9ibG9iLzE2MzM2NWEwNzg3MjMzN2UwNDgyNmM0ZjUwMTU2NWQ0M2RiZDJmZDQvcGFja2FnZXMvcmVhY3QtY2xpZW50L3NyYy9SZWFjdEZsaWdodENsaWVudC5qcyNMMTg5LUwxOTBcbiAgY29uc3QgcGVuZGluZ0FjdGlvblF1ZXVlOiBQcm9taXNlPEFwcFJvdXRlckFjdGlvblF1ZXVlPiA9IG5ldyBQcm9taXNlKFxuICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGluaXRpYWxTZXJ2ZXJSZXNwb25zZS50aGVuKFxuICAgICAgICAoaW5pdGlhbFJTQ1BheWxvYWQpID0+IHtcbiAgICAgICAgICAvLyBzZXRBcHBCdWlsZElkIHNob3VsZCBiZSBjYWxsZWQgb25seSBvbmNlLCBkdXJpbmcgSlMgaW5pdGlhbGl6YXRpb25cbiAgICAgICAgICAvLyBhbmQgYmVmb3JlIGFueSBjb21wb25lbnRzIGhhdmUgaHlkcmF0ZWQuXG4gICAgICAgICAgc2V0QXBwQnVpbGRJZChpbml0aWFsUlNDUGF5bG9hZC5iKVxuXG4gICAgICAgICAgY29uc3QgaW5pdGlhbFRpbWVzdGFtcCA9IERhdGUubm93KClcblxuICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUoXG4gICAgICAgICAgICAgIGNyZWF0ZUluaXRpYWxSb3V0ZXJTdGF0ZSh7XG4gICAgICAgICAgICAgICAgbmF2aWdhdGVkQXQ6IGluaXRpYWxUaW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgaW5pdGlhbEZsaWdodERhdGE6IGluaXRpYWxSU0NQYXlsb2FkLmYsXG4gICAgICAgICAgICAgICAgaW5pdGlhbENhbm9uaWNhbFVybFBhcnRzOiBpbml0aWFsUlNDUGF5bG9hZC5jLFxuICAgICAgICAgICAgICAgIGluaXRpYWxQYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB3aW5kb3cubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgY291bGRCZUludGVyY2VwdGVkOiBpbml0aWFsUlNDUGF5bG9hZC5pLFxuICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogaW5pdGlhbFJTQ1BheWxvYWQucyxcbiAgICAgICAgICAgICAgICBwcmVyZW5kZXJlZDogaW5pdGlhbFJTQ1BheWxvYWQuUyxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIGluc3RydW1lbnRhdGlvbkhvb2tzXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9LFxuICAgICAgICAoZXJyOiBFcnJvcikgPT4gcmVqZWN0KGVycilcbiAgICAgIClcbiAgICB9XG4gIClcblxuICBjb25zdCByZWFjdEVsID0gKFxuICAgIDxTdHJpY3RNb2RlSWZFbmFibGVkPlxuICAgICAgPEhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17eyBhcHBEaXI6IHRydWUgfX0+XG4gICAgICAgIDxSb290PlxuICAgICAgICAgIDxTZXJ2ZXJSb290IHBlbmRpbmdBY3Rpb25RdWV1ZT17cGVuZGluZ0FjdGlvblF1ZXVlfSAvPlxuICAgICAgICA8L1Jvb3Q+XG4gICAgICA8L0hlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L1N0cmljdE1vZGVJZkVuYWJsZWQ+XG4gIClcblxuICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlkID09PSAnX19uZXh0X2Vycm9yX18nKSB7XG4gICAgbGV0IGVsZW1lbnQgPSByZWFjdEVsXG4gICAgLy8gU2VydmVyIHJlbmRlcmluZyBmYWlsZWQsIGZhbGwgYmFjayB0byBjbGllbnQtc2lkZSByZW5kZXJpbmdcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc3QgeyBSb290TGV2ZWxEZXZPdmVybGF5RWxlbWVudCB9ID1cbiAgICAgICAgcmVxdWlyZSgnLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2NsaWVudC1lbnRyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9jbGllbnQtZW50cnknKVxuXG4gICAgICAvLyBOb3RlIHRoaXMgd29uJ3QgY2F1c2UgaHlkcmF0aW9uIG1pc21hdGNoIGJlY2F1c2Ugd2UgYXJlIGRvaW5nIENTUiB3L28gaHlkcmF0aW9uXG4gICAgICBlbGVtZW50ID0gKFxuICAgICAgICA8Um9vdExldmVsRGV2T3ZlcmxheUVsZW1lbnQ+e2VsZW1lbnR9PC9Sb290TGV2ZWxEZXZPdmVybGF5RWxlbWVudD5cbiAgICAgIClcbiAgICB9XG5cbiAgICBSZWFjdERPTUNsaWVudC5jcmVhdGVSb290KGFwcEVsZW1lbnQsIHJlYWN0Um9vdE9wdGlvbnMpLnJlbmRlcihlbGVtZW50KVxuICB9IGVsc2Uge1xuICAgIFJlYWN0LnN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBSZWFjdERPTUNsaWVudC5oeWRyYXRlUm9vdChhcHBFbGVtZW50LCByZWFjdEVsLCB7XG4gICAgICAgIC4uLnJlYWN0Um9vdE9wdGlvbnMsXG4gICAgICAgIGZvcm1TdGF0ZTogaW5pdGlhbEZvcm1TdGF0ZURhdGEsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICAvLyBUT0RPLUFQUDogUmVtb3ZlIHRoaXMgbG9naWMgd2hlbiBGbG9hdCBoYXMgR0MgYnVpbHQtaW4gaW4gZGV2ZWxvcG1lbnQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgeyBsaW5rR2MgfSA9XG4gICAgICByZXF1aXJlKCcuL2FwcC1saW5rLWdjJykgYXMgdHlwZW9mIGltcG9ydCgnLi9hcHAtbGluay1nYycpXG4gICAgbGlua0djKClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImh5ZHJhdGUiLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0iLCJjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW1Ccm93c2VyIiwiYXBwRWxlbWVudCIsImRvY3VtZW50IiwiZW5jb2RlciIsIlRleHRFbmNvZGVyIiwiaW5pdGlhbFNlcnZlckRhdGFCdWZmZXIiLCJ1bmRlZmluZWQiLCJpbml0aWFsU2VydmVyRGF0YVdyaXRlciIsImluaXRpYWxTZXJ2ZXJEYXRhTG9hZGVkIiwiaW5pdGlhbFNlcnZlckRhdGFGbHVzaGVkIiwiaW5pdGlhbEZvcm1TdGF0ZURhdGEiLCJuZXh0U2VydmVyRGF0YUNhbGxiYWNrIiwic2VnIiwiRXJyb3IiLCJlbnF1ZXVlIiwiZW5jb2RlIiwicHVzaCIsImJpbmFyeVN0cmluZyIsImF0b2IiLCJkZWNvZGVkQ2h1bmsiLCJVaW50OEFycmF5IiwibGVuZ3RoIiwiaSIsImNoYXJDb2RlQXQiLCJpc1N0cmVhbUVycm9yT3JVbmZpbmlzaGVkIiwiY3RyIiwiZGVzaXJlZFNpemUiLCJuZXh0U2VydmVyRGF0YVJlZ2lzdGVyV3JpdGVyIiwiZm9yRWFjaCIsInZhbCIsImVycm9yIiwiY2xvc2UiLCJET01Db250ZW50TG9hZGVkIiwicmVhZHlTdGF0ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJzZXRUaW1lb3V0IiwibmV4dFNlcnZlckRhdGFMb2FkaW5nR2xvYmFsIiwic2VsZiIsIl9fbmV4dF9mIiwicmVhZGFibGUiLCJSZWFkYWJsZVN0cmVhbSIsInN0YXJ0IiwiY29udHJvbGxlciIsImluaXRpYWxTZXJ2ZXJSZXNwb25zZSIsImNhbGxTZXJ2ZXIiLCJmaW5kU291cmNlTWFwVVJMIiwiU2VydmVyUm9vdCIsInBlbmRpbmdBY3Rpb25RdWV1ZSIsImluaXRpYWxSU0NQYXlsb2FkIiwidXNlIiwiYWN0aW9uUXVldWUiLCJyb3V0ZXIiLCJBcHBSb3V0ZXIiLCJnbG9iYWxFcnJvclN0YXRlIiwiRyIsImFzc2V0UHJlZml4IiwicCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm0iLCJNaXNzaW5nU2xvdENvbnRleHQiLCJ2YWx1ZSIsIlN0cmljdE1vZGVJZkVuYWJsZWQiLCJfX05FWFRfU1RSSUNUX01PREVfQVBQIiwiUmVhY3QiLCJTdHJpY3RNb2RlIiwiRnJhZ21lbnQiLCJSb290IiwiY2hpbGRyZW4iLCJfX05FWFRfVEVTVF9NT0RFIiwidXNlRWZmZWN0Iiwid2luZG93IiwiX19ORVhUX0hZRFJBVEVEIiwiX19ORVhUX0hZRFJBVEVEX0FUIiwicGVyZm9ybWFuY2UiLCJub3ciLCJfX05FWFRfSFlEUkFURURfQ0IiLCJvbkRlZmF1bHRUcmFuc2l0aW9uSW5kaWNhdG9yIiwicmVhY3RSb290T3B0aW9ucyIsIm9uUmVjb3ZlcmFibGVFcnJvciIsIm9uQ2F1Z2h0RXJyb3IiLCJvblVuY2F1Z2h0RXJyb3IiLCJpbnN0cnVtZW50YXRpb25Ib29rcyIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInNldEFwcEJ1aWxkSWQiLCJiIiwiaW5pdGlhbFRpbWVzdGFtcCIsIkRhdGUiLCJjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUiLCJjcmVhdGVJbml0aWFsUm91dGVyU3RhdGUiLCJuYXZpZ2F0ZWRBdCIsImluaXRpYWxGbGlnaHREYXRhIiwiZiIsImluaXRpYWxDYW5vbmljYWxVcmxQYXJ0cyIsImMiLCJpbml0aWFsUGFyYWxsZWxSb3V0ZXMiLCJNYXAiLCJsb2NhdGlvbiIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInBvc3Rwb25lZCIsInMiLCJwcmVyZW5kZXJlZCIsIlMiLCJlcnIiLCJyZWFjdEVsIiwiSGVhZE1hbmFnZXJDb250ZXh0IiwiUHJvdmlkZXIiLCJhcHBEaXIiLCJkb2N1bWVudEVsZW1lbnQiLCJpZCIsImVsZW1lbnQiLCJSb290TGV2ZWxEZXZPdmVybGF5RWxlbWVudCIsInJlcXVpcmUiLCJSZWFjdERPTUNsaWVudCIsImNyZWF0ZVJvb3QiLCJyZW5kZXIiLCJzdGFydFRyYW5zaXRpb24iLCJoeWRyYXRlUm9vdCIsImZvcm1TdGF0ZSIsImxpbmtHYyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-index.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-link-gc.js": /*!*********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-link-gc.js ***! \*********************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"linkGc\", ({\n enumerable: true,\n get: function() {\n return linkGc;\n }\n}));\nfunction linkGc() {\n // TODO-APP: Remove this logic when Float has GC built-in in development.\n if (true) {\n const callback = (mutationList)=>{\n for (const mutation of mutationList){\n if (mutation.type === 'childList') {\n for (const node of mutation.addedNodes){\n if ('tagName' in node && node.tagName === 'LINK') {\n var _link_dataset_precedence;\n const link = node;\n if ((_link_dataset_precedence = link.dataset.precedence) == null ? void 0 : _link_dataset_precedence.startsWith('next')) {\n const href = link.getAttribute('href');\n if (href) {\n const [resource, version] = href.split('?v=', 2);\n if (version) {\n const currentOrigin = window.location.origin;\n const allLinks = [\n ...document.querySelectorAll('link[href^=\"' + resource + '\"]'),\n // It's possible that the resource is a full URL or only pathname,\n // so we need to remove the alternative href as well.\n ...document.querySelectorAll('link[href^=\"' + (resource.startsWith(currentOrigin) ? resource.slice(currentOrigin.length) : currentOrigin + resource) + '\"]')\n ];\n for (const otherLink of allLinks){\n var _otherLink_dataset_precedence;\n if ((_otherLink_dataset_precedence = otherLink.dataset.precedence) == null ? void 0 : _otherLink_dataset_precedence.startsWith('next')) {\n const otherHref = otherLink.getAttribute('href');\n if (otherHref) {\n const [, otherVersion] = otherHref.split('?v=', 2);\n if (!otherVersion || +otherVersion < +version) {\n // Delay the removal of the stylesheet to avoid FOUC\n // caused by `@font-face` rules, as they seem to be\n // a couple of ticks delayed between the old and new\n // styles being swapped even if the font is cached.\n setTimeout(()=>{\n otherLink.remove();\n }, 5);\n const preloadLink = document.querySelector('link[rel=\"preload\"][as=\"style\"][href=\"' + otherHref + '\"]');\n if (preloadLink) {\n preloadLink.remove();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n // Create an observer instance linked to the callback function\n const observer = new MutationObserver(callback);\n observer.observe(document.head, {\n childList: true\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=app-link-gc.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1saW5rLWdjLmpzIiwibWFwcGluZ3MiOiI7Ozs7MENBQWdCQTs7O2VBQUFBOzs7QUFBVCxTQUFTQTtJQUNkLHlFQUF5RTtJQUN6RSxJQUFJQyxJQUFvQixFQUFtQjtRQUN6QyxNQUFNRyxXQUFXLENBQUNDO1lBQ2hCLEtBQUssTUFBTUMsWUFBWUQsYUFBYztnQkFDbkMsSUFBSUMsU0FBU0MsSUFBSSxLQUFLLGFBQWE7b0JBQ2pDLEtBQUssTUFBTUMsUUFBUUYsU0FBU0csVUFBVSxDQUFFO3dCQUN0QyxJQUNFLGFBQWFELFFBQ1pBLEtBQXlCRSxPQUFPLEtBQUssUUFDdEM7Z0NBRUlDOzRCQURKLE1BQU1BLE9BQU9IOzRCQUNiLEtBQUlHLDJCQUFBQSxLQUFLQyxPQUFPLENBQUNDLFVBQUFBLEtBQVUsZ0JBQXZCRix5QkFBeUJHLFVBQVUsQ0FBQyxTQUFTO2dDQUMvQyxNQUFNQyxPQUFPSixLQUFLSyxZQUFZLENBQUM7Z0NBQy9CLElBQUlELE1BQU07b0NBQ1IsTUFBTSxDQUFDRSxVQUFVQyxRQUFRLEdBQUdILEtBQUtJLEtBQUssQ0FBQyxPQUFPO29DQUM5QyxJQUFJRCxTQUFTO3dDQUNYLE1BQU1FLGdCQUFnQkMsT0FBT0MsUUFBUSxDQUFDQyxNQUFNO3dDQUM1QyxNQUFNQyxXQUFXOytDQUNaQyxTQUFTQyxnQkFBZ0IsQ0FDMUIsaUJBQWlCVCxXQUFXOzRDQUU5QixrRUFBa0U7NENBQ2xFLHFEQUFxRDsrQ0FDbERRLFNBQVNDLGdCQUFnQixDQUMxQixpQkFDR1QsQ0FBQUEsU0FBU0gsVUFBVSxDQUFDTSxpQkFDakJILFNBQVNVLEtBQUssQ0FBQ1AsY0FBY1EsTUFBTSxJQUNuQ1IsZ0JBQWdCSCxRQUFBQSxDQUFPLEdBQzNCO3lDQUVMO3dDQUVELEtBQUssTUFBTVksYUFBYUwsU0FBVTtnREFDNUJLOzRDQUFKLEtBQUlBLGdDQUFBQSxVQUFVakIsT0FBTyxDQUFDQyxVQUFBQSxLQUFVLGdCQUE1QmdCLDhCQUE4QmYsVUFBVSxDQUFDLFNBQVM7Z0RBQ3BELE1BQU1nQixZQUFZRCxVQUFVYixZQUFZLENBQUM7Z0RBQ3pDLElBQUljLFdBQVc7b0RBQ2IsTUFBTSxHQUFHQyxhQUFhLEdBQUdELFVBQVVYLEtBQUssQ0FBQyxPQUFPO29EQUNoRCxJQUFJLENBQUNZLGdCQUFnQixDQUFDQSxlQUFlLENBQUNiLFNBQVM7d0RBQzdDLG9EQUFvRDt3REFDcEQsbURBQW1EO3dEQUNuRCxvREFBb0Q7d0RBQ3BELG1EQUFtRDt3REFDbkRjLFdBQVc7NERBQ1RILFVBQVVJLE1BQU07d0RBQ2xCLEdBQUc7d0RBQ0gsTUFBTUMsY0FBY1QsU0FBU1UsYUFBYSxDQUN2QywyQ0FBd0NMLFlBQVU7d0RBRXJELElBQUlJLGFBQWE7NERBQ2ZBLFlBQVlELE1BQU07d0RBQ3BCO29EQUNGO2dEQUNGOzRDQUNGO3dDQUNGO29DQUNGO2dDQUNGOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLDhEQUE4RDtRQUM5RCxNQUFNRyxXQUFXLElBQUlDLGlCQUFpQmpDO1FBQ3RDZ0MsU0FBU0UsT0FBTyxDQUFDYixTQUFTYyxJQUFJLEVBQUU7WUFDOUJDLFdBQVc7UUFDYjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS9zcmMvY2xpZW50L2FwcC1saW5rLWdjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBsaW5rR2MoKSB7XG4gIC8vIFRPRE8tQVBQOiBSZW1vdmUgdGhpcyBsb2dpYyB3aGVuIEZsb2F0IGhhcyBHQyBidWlsdC1pbiBpbiBkZXZlbG9wbWVudC5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCBjYWxsYmFjayA9IChtdXRhdGlvbkxpc3Q6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25MaXN0KSB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBtdXRhdGlvbi5hZGRlZE5vZGVzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICd0YWdOYW1lJyBpbiBub2RlICYmXG4gICAgICAgICAgICAgIChub2RlIGFzIEhUTUxMaW5rRWxlbWVudCkudGFnTmFtZSA9PT0gJ0xJTksnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29uc3QgbGluayA9IG5vZGUgYXMgSFRNTExpbmtFbGVtZW50XG4gICAgICAgICAgICAgIGlmIChsaW5rLmRhdGFzZXQucHJlY2VkZW5jZT8uc3RhcnRzV2l0aCgnbmV4dCcpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaHJlZiA9IGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJylcbiAgICAgICAgICAgICAgICBpZiAoaHJlZikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgW3Jlc291cmNlLCB2ZXJzaW9uXSA9IGhyZWYuc3BsaXQoJz92PScsIDIpXG4gICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50T3JpZ2luID0gd2luZG93LmxvY2F0aW9uLm9yaWdpblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhbGxMaW5rcyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmtbaHJlZl49XCInICsgcmVzb3VyY2UgKyAnXCJdJ1xuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSByZXNvdXJjZSBpcyBhIGZ1bGwgVVJMIG9yIG9ubHkgcGF0aG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byByZW1vdmUgdGhlIGFsdGVybmF0aXZlIGhyZWYgYXMgd2VsbC5cbiAgICAgICAgICAgICAgICAgICAgICAuLi5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmtbaHJlZl49XCInICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc291cmNlLnN0YXJ0c1dpdGgoY3VycmVudE9yaWdpbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHJlc291cmNlLnNsaWNlKGN1cnJlbnRPcmlnaW4ubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudE9yaWdpbiArIHJlc291cmNlKSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdcIl0nXG4gICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgXSBhcyBIVE1MTGlua0VsZW1lbnRbXVxuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgb3RoZXJMaW5rIG9mIGFsbExpbmtzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG90aGVyTGluay5kYXRhc2V0LnByZWNlZGVuY2U/LnN0YXJ0c1dpdGgoJ25leHQnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3RoZXJIcmVmID0gb3RoZXJMaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3RoZXJIcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFssIG90aGVyVmVyc2lvbl0gPSBvdGhlckhyZWYuc3BsaXQoJz92PScsIDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghb3RoZXJWZXJzaW9uIHx8ICtvdGhlclZlcnNpb24gPCArdmVyc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlbGF5IHRoZSByZW1vdmFsIG9mIHRoZSBzdHlsZXNoZWV0IHRvIGF2b2lkIEZPVUNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXVzZWQgYnkgYEBmb250LWZhY2VgIHJ1bGVzLCBhcyB0aGV5IHNlZW0gdG8gYmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGNvdXBsZSBvZiB0aWNrcyBkZWxheWVkIGJldHdlZW4gdGhlIG9sZCBhbmQgbmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3R5bGVzIGJlaW5nIHN3YXBwZWQgZXZlbiBpZiB0aGUgZm9udCBpcyBjYWNoZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlckxpbmsucmVtb3ZlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA1KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZWxvYWRMaW5rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBsaW5rW3JlbD1cInByZWxvYWRcIl1bYXM9XCJzdHlsZVwiXVtocmVmPVwiJHtvdGhlckhyZWZ9XCJdYFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlbG9hZExpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWxvYWRMaW5rLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGFuIG9ic2VydmVyIGluc3RhbmNlIGxpbmtlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKVxuICAgIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuaGVhZCwge1xuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgIH0pXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJsaW5rR2MiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjYWxsYmFjayIsIm11dGF0aW9uTGlzdCIsIm11dGF0aW9uIiwidHlwZSIsIm5vZGUiLCJhZGRlZE5vZGVzIiwidGFnTmFtZSIsImxpbmsiLCJkYXRhc2V0IiwicHJlY2VkZW5jZSIsInN0YXJ0c1dpdGgiLCJocmVmIiwiZ2V0QXR0cmlidXRlIiwicmVzb3VyY2UiLCJ2ZXJzaW9uIiwic3BsaXQiLCJjdXJyZW50T3JpZ2luIiwid2luZG93IiwibG9jYXRpb24iLCJvcmlnaW4iLCJhbGxMaW5rcyIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsInNsaWNlIiwibGVuZ3RoIiwib3RoZXJMaW5rIiwib3RoZXJIcmVmIiwib3RoZXJWZXJzaW9uIiwic2V0VGltZW91dCIsInJlbW92ZSIsInByZWxvYWRMaW5rIiwicXVlcnlTZWxlY3RvciIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJoZWFkIiwiY2hpbGRMaXN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-link-gc.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-next-dev.js": /*!**********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-next-dev.js ***! \**********************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// TODO-APP: hydration warning\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__webpack_require__(/*! ./app-webpack */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-webpack.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _appbootstrap = __webpack_require__(/*! ./app-bootstrap */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-bootstrap.js\");\nconst _stitchederror = __webpack_require__(/*! ../next-devtools/userspace/app/errors/stitched-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\nconst _onrecoverableerror = __webpack_require__(/*! ./react-client-callbacks/on-recoverable-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js\");\n// eslint-disable-next-line @next/internal/typechecked-require\nconst instrumentationHooks = __webpack_require__(/*! ../lib/require-instrumentation-client */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/lib/require-instrumentation-client.js\");\n(0, _appbootstrap.appBootstrap)(()=>{\n const { hydrate } = __webpack_require__(/*! ./app-index */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-index.js\");\n try {\n hydrate(instrumentationHooks);\n } finally{\n (0, _nextdevtools.renderAppDevOverlay)(_stitchederror.getOwnerStack, _onrecoverableerror.isRecoverableError);\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=app-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC1uZXh0LWRldi5qcyIsIm1hcHBpbmdzIjoiQUFBQSw4QkFBOEI7Ozs7O29CQUV2QjswQ0FFNkI7MENBQ1A7MkNBQ0M7Z0RBQ0s7QUFFbkMsOERBQThEO0FBQzlELE1BQU1BLHVCQUF1QkMsbUJBQU9BLENBQUMsNE1BQXVDO0FBRTVFQyxDQUFBQSxHQUFBQSxjQUFBQSxZQUFBQSxFQUFhO0lBQ1gsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0YsbUJBQU9BLENBQUMsZ0tBQWE7SUFDekMsSUFBSTtRQUNGRSxRQUFRSDtJQUNWLFNBQVU7UUFDUkksQ0FBQUEsR0FBQUEsY0FBQUEsbUJBQUFBLEVBQW9CQyxlQUFBQSxhQUFhLEVBQUVDLG9CQUFBQSxrQkFBa0I7SUFDdkQ7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3NyYy9jbGllbnQvYXBwLW5leHQtZGV2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRPRE8tQVBQOiBoeWRyYXRpb24gd2FybmluZ1xuXG5pbXBvcnQgJy4vYXBwLXdlYnBhY2snXG5cbmltcG9ydCB7IHJlbmRlckFwcERldk92ZXJsYXkgfSBmcm9tICduZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29scydcbmltcG9ydCB7IGFwcEJvb3RzdHJhcCB9IGZyb20gJy4vYXBwLWJvb3RzdHJhcCdcbmltcG9ydCB7IGdldE93bmVyU3RhY2sgfSBmcm9tICcuLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzL3N0aXRjaGVkLWVycm9yJ1xuaW1wb3J0IHsgaXNSZWNvdmVyYWJsZUVycm9yIH0gZnJvbSAnLi9yZWFjdC1jbGllbnQtY2FsbGJhY2tzL29uLXJlY292ZXJhYmxlLWVycm9yJ1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQG5leHQvaW50ZXJuYWwvdHlwZWNoZWNrZWQtcmVxdWlyZVxuY29uc3QgaW5zdHJ1bWVudGF0aW9uSG9va3MgPSByZXF1aXJlKCcuLi9saWIvcmVxdWlyZS1pbnN0cnVtZW50YXRpb24tY2xpZW50JylcblxuYXBwQm9vdHN0cmFwKCgpID0+IHtcbiAgY29uc3QgeyBoeWRyYXRlIH0gPSByZXF1aXJlKCcuL2FwcC1pbmRleCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4vYXBwLWluZGV4JylcbiAgdHJ5IHtcbiAgICBoeWRyYXRlKGluc3RydW1lbnRhdGlvbkhvb2tzKVxuICB9IGZpbmFsbHkge1xuICAgIHJlbmRlckFwcERldk92ZXJsYXkoZ2V0T3duZXJTdGFjaywgaXNSZWNvdmVyYWJsZUVycm9yKVxuICB9XG59KVxuIl0sIm5hbWVzIjpbImluc3RydW1lbnRhdGlvbkhvb2tzIiwicmVxdWlyZSIsImFwcEJvb3RzdHJhcCIsImh5ZHJhdGUiLCJyZW5kZXJBcHBEZXZPdmVybGF5IiwiZ2V0T3duZXJTdGFjayIsImlzUmVjb3ZlcmFibGVFcnJvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-next-dev.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-webpack.js": /*!*********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-webpack.js ***! \*********************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// Override chunk URL mapping in the webpack runtime\n// https://github.com/webpack/webpack/blob/2738eebc7880835d88c727d364ad37f3ec557593/lib/RuntimeGlobals.js#L204\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _deploymentid = __webpack_require__(/*! ../build/deployment-id */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/deployment-id.js\");\nconst _encodeuripath = __webpack_require__(/*! ../shared/lib/encode-uri-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/encode-uri-path.js\");\n// If we have a deployment ID, we need to append it to the webpack chunk names\n// I am keeping the process check explicit so this can be statically optimized\nif (false) {} else {\n // eslint-disable-next-line no-undef\n const getChunkScriptFilename = __webpack_require__.u;\n // eslint-disable-next-line no-undef\n __webpack_require__.u = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return(// filename path.\n (0, _encodeuripath.encodeURIPath)(getChunkScriptFilename(...args)));\n };\n// We don't need to override __webpack_require__.k because we don't modify\n// the css chunk name when not using deployment id suffixes\n// WE don't need to override __webpack_require__.miniCssF because we don't modify\n// the mini css chunk name when not using deployment id suffixes\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=app-webpack.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2FwcC13ZWJwYWNrLmpzIiwibWFwcGluZ3MiOiJBQUFBLG9EQUFvRDtBQUNwRCw4R0FBOEc7Ozs7OzBDQUU1RDsyQ0FDcEI7QUFJOUIsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSxJQUFJQSxLQUE4QixFQUFFLEVBcUJuQyxNQUFNO0lBQ0wsb0NBQW9DO0lBQ3BDLE1BQU1LLHlCQUF5QkMsbUJBQW1CQSxDQUFDQyxDQUFDO0lBQ3BELG9DQUFvQztJQUNwQ0QsbUJBQW1CQSxDQUFDQyxDQUFDLEdBQUc7eUNBQUlDLE9BQUFBLElBQUFBLE1BQUFBLE9BQUFBLE9BQUFBLEdBQUFBLE9BQUFBLE1BQUFBLE9BQUFBO1lBQUFBLElBQUFBLENBQUFBLEtBQUFBLEdBQUFBLFNBQUFBLENBQUFBLEtBQUFBOztlQUUxQixpQkFBaUI7UUFDakJDLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWNKLDBCQUEwQkc7O0FBRTFDLDBFQUEwRTtBQUMxRSwyREFBMkQ7QUFFM0QsaUZBQWlGO0FBQ2pGLGdFQUFnRTtBQUNsRSIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3NyYy9jbGllbnQvYXBwLXdlYnBhY2sudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gT3ZlcnJpZGUgY2h1bmsgVVJMIG1hcHBpbmcgaW4gdGhlIHdlYnBhY2sgcnVudGltZVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3dlYnBhY2svd2VicGFjay9ibG9iLzI3MzhlZWJjNzg4MDgzNWQ4OGM3MjdkMzY0YWQzN2YzZWM1NTc1OTMvbGliL1J1bnRpbWVHbG9iYWxzLmpzI0wyMDRcblxuaW1wb3J0IHsgZ2V0RGVwbG95bWVudElkUXVlcnlPckVtcHR5U3RyaW5nIH0gZnJvbSAnLi4vYnVpbGQvZGVwbG95bWVudC1pZCdcbmltcG9ydCB7IGVuY29kZVVSSVBhdGggfSBmcm9tICcuLi9zaGFyZWQvbGliL2VuY29kZS11cmktcGF0aCdcblxuZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfcmVxdWlyZV9fOiBhbnlcblxuLy8gSWYgd2UgaGF2ZSBhIGRlcGxveW1lbnQgSUQsIHdlIG5lZWQgdG8gYXBwZW5kIGl0IHRvIHRoZSB3ZWJwYWNrIGNodW5rIG5hbWVzXG4vLyBJIGFtIGtlZXBpbmcgdGhlIHByb2Nlc3MgY2hlY2sgZXhwbGljaXQgc28gdGhpcyBjYW4gYmUgc3RhdGljYWxseSBvcHRpbWl6ZWRcbmlmIChwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSUQpIHtcbiAgY29uc3Qgc3VmZml4ID0gZ2V0RGVwbG95bWVudElkUXVlcnlPckVtcHR5U3RyaW5nKClcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNvbnN0IGdldENodW5rU2NyaXB0RmlsZW5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLnVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIF9fd2VicGFja19yZXF1aXJlX18udSA9ICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICAvLyBXZSBlbmNvZGUgdGhlIGNodW5rIGZpbGVuYW1lIGJlY2F1c2Ugb3VyIHN0YXRpYyBzZXJ2ZXIgbWF0Y2hlcyBhZ2FpbnN0IGFuZCBlbmNvZGVkXG4gICAgLy8gZmlsZW5hbWUgcGF0aC5cbiAgICBlbmNvZGVVUklQYXRoKGdldENodW5rU2NyaXB0RmlsZW5hbWUoLi4uYXJncykpICsgc3VmZml4XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNvbnN0IGdldENodW5rQ3NzRmlsZW5hbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIF9fd2VicGFja19yZXF1aXJlX18uayA9ICguLi5hcmdzOiBhbnlbXSkgPT5cbiAgICBnZXRDaHVua0Nzc0ZpbGVuYW1lKC4uLmFyZ3MpICsgc3VmZml4XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNvbnN0IGdldE1pbmlDc3NGaWxlbmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18ubWluaUNzc0ZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIF9fd2VicGFja19yZXF1aXJlX18ubWluaUNzc0YgPSAoLi4uYXJnczogYW55W10pID0+XG4gICAgZ2V0TWluaUNzc0ZpbGVuYW1lKC4uLmFyZ3MpICsgc3VmZml4XG59IGVsc2Uge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgY29uc3QgZ2V0Q2h1bmtTY3JpcHRGaWxlbmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18udVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKC4uLmFyZ3M6IGFueVtdKSA9PlxuICAgIC8vIFdlIGVuY29kZSB0aGUgY2h1bmsgZmlsZW5hbWUgYmVjYXVzZSBvdXIgc3RhdGljIHNlcnZlciBtYXRjaGVzIGFnYWluc3QgYW5kIGVuY29kZWRcbiAgICAvLyBmaWxlbmFtZSBwYXRoLlxuICAgIGVuY29kZVVSSVBhdGgoZ2V0Q2h1bmtTY3JpcHRGaWxlbmFtZSguLi5hcmdzKSlcblxuICAvLyBXZSBkb24ndCBuZWVkIHRvIG92ZXJyaWRlIF9fd2VicGFja19yZXF1aXJlX18uayBiZWNhdXNlIHdlIGRvbid0IG1vZGlmeVxuICAvLyB0aGUgY3NzIGNodW5rIG5hbWUgd2hlbiBub3QgdXNpbmcgZGVwbG95bWVudCBpZCBzdWZmaXhlc1xuXG4gIC8vIFdFIGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgX193ZWJwYWNrX3JlcXVpcmVfXy5taW5pQ3NzRiBiZWNhdXNlIHdlIGRvbid0IG1vZGlmeVxuICAvLyB0aGUgbWluaSBjc3MgY2h1bmsgbmFtZSB3aGVuIG5vdCB1c2luZyBkZXBsb3ltZW50IGlkIHN1ZmZpeGVzXG59XG5cbmV4cG9ydCB7fVxuIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJlbnYiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJzdWZmaXgiLCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmciLCJnZXRDaHVua1NjcmlwdEZpbGVuYW1lIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsInUiLCJhcmdzIiwiZW5jb2RlVVJJUGF0aCIsImdldENodW5rQ3NzRmlsZW5hbWUiLCJrIiwiZ2V0TWluaUNzc0ZpbGVuYW1lIiwibWluaUNzc0YiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-webpack.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/assign-location.js": /*!*************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/assign-location.js ***! \*************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"assignLocation\", ({\n enumerable: true,\n get: function() {\n return assignLocation;\n }\n}));\nconst _addbasepath = __webpack_require__(/*! ./add-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/add-base-path.js\");\nfunction assignLocation(location, url) {\n if (location.startsWith('.')) {\n const urlBase = url.origin + url.pathname;\n return new URL(// new URL('./relative', 'https://example.com/subdir').href -> 'https://example.com/relative'\n // new URL('./relative', 'https://example.com/subdir/').href -> 'https://example.com/subdir/relative'\n (urlBase.endsWith('/') ? urlBase : urlBase + '/') + location);\n }\n return new URL((0, _addbasepath.addBasePath)(location), url.href);\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=assign-location.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Fzc2lnbi1sb2NhdGlvbi5qcyIsIm1hcHBpbmdzIjoiOzs7O2tEQVNnQkE7OztlQUFBQTs7O3lDQVRZO0FBU3JCLFNBQVNBLGVBQWVDLFFBQWdCLEVBQUVDLEdBQVE7SUFDdkQsSUFBSUQsU0FBU0UsVUFBVSxDQUFDLE1BQU07UUFDNUIsTUFBTUMsVUFBVUYsSUFBSUcsTUFBTSxHQUFHSCxJQUFJSSxRQUFRO1FBQ3pDLE9BQU8sSUFBSUMsSUFDVCw2RkFDNkY7UUFDN0YscUdBQXFHO1NBQ3BHSCxRQUFRSSxRQUFRLENBQUMsT0FBT0osVUFBVUEsVUFBVSxJQUFFLEdBQUtIO0lBRXhEO0lBRUEsT0FBTyxJQUFJTSxJQUFJRSxDQUFBQSxHQUFBQSxhQUFBQSxXQUFBQSxFQUFZUixXQUFXQyxJQUFJUSxJQUFJO0FBQ2hEIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvTGEgQmFucXVpc2Uvc3JjL2NsaWVudC9hc3NpZ24tbG9jYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkQmFzZVBhdGggfSBmcm9tICcuL2FkZC1iYXNlLXBhdGgnXG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY29ycmVjdGx5IGFzc2lnbiBsb2NhdGlvbiB0byBVUkxcbiAqXG4gKiBUaGUgbWV0aG9kIHdpbGwgYWRkIGJhc2VQYXRoLCBhbmQgd2lsbCBhbHNvIGNvcnJlY3RseSBhZGQgbG9jYXRpb24gKGluY2x1ZGluZyBpZiBpdCBpcyBhIHJlbGF0aXZlIHBhdGgpXG4gKiBAcGFyYW0gbG9jYXRpb24gTG9jYXRpb24gdGhhdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHVybFxuICogQHBhcmFtIHVybCBCYXNlIFVSTCB0byB3aGljaCB0aGUgbG9jYXRpb24gc2hvdWxkIGJlIGFzc2lnbmVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25Mb2NhdGlvbihsb2NhdGlvbjogc3RyaW5nLCB1cmw6IFVSTCk6IFVSTCB7XG4gIGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKCcuJykpIHtcbiAgICBjb25zdCB1cmxCYXNlID0gdXJsLm9yaWdpbiArIHVybC5wYXRobmFtZVxuICAgIHJldHVybiBuZXcgVVJMKFxuICAgICAgLy8gSW4gb3JkZXIgZm9yIGEgcmVsYXRpdmUgcGF0aCB0byBiZSBhZGRlZCB0byB0aGUgY3VycmVudCB1cmwgY29ycmVjdGx5LCB0aGUgY3VycmVudCB1cmwgbXVzdCBlbmQgd2l0aCBhIHNsYXNoXG4gICAgICAvLyBuZXcgVVJMKCcuL3JlbGF0aXZlJywgJ2h0dHBzOi8vZXhhbXBsZS5jb20vc3ViZGlyJykuaHJlZiAtPiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9yZWxhdGl2ZSdcbiAgICAgIC8vIG5ldyBVUkwoJy4vcmVsYXRpdmUnLCAnaHR0cHM6Ly9leGFtcGxlLmNvbS9zdWJkaXIvJykuaHJlZiAtPiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9zdWJkaXIvcmVsYXRpdmUnXG4gICAgICAodXJsQmFzZS5lbmRzV2l0aCgnLycpID8gdXJsQmFzZSA6IHVybEJhc2UgKyAnLycpICsgbG9jYXRpb25cbiAgICApXG4gIH1cblxuICByZXR1cm4gbmV3IFVSTChhZGRCYXNlUGF0aChsb2NhdGlvbiksIHVybC5ocmVmKVxufVxuIl0sIm5hbWVzIjpbImFzc2lnbkxvY2F0aW9uIiwibG9jYXRpb24iLCJ1cmwiLCJzdGFydHNXaXRoIiwidXJsQmFzZSIsIm9yaWdpbiIsInBhdGhuYW1lIiwiVVJMIiwiZW5kc1dpdGgiLCJhZGRCYXNlUGF0aCIsImhyZWYiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/assign-location.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-announcer.js": /*!*****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-announcer.js ***! \*****************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"AppRouterAnnouncer\", ({\n enumerable: true,\n get: function() {\n return AppRouterAnnouncer;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _reactdom = __webpack_require__(/*! react-dom */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-dom/index.js\");\nconst ANNOUNCER_TYPE = 'next-route-announcer';\nconst ANNOUNCER_ID = '__next-route-announcer__';\nfunction getAnnouncerNode() {\n var _existingAnnouncer_shadowRoot;\n const existingAnnouncer = document.getElementsByName(ANNOUNCER_TYPE)[0];\n if (existingAnnouncer == null ? void 0 : (_existingAnnouncer_shadowRoot = existingAnnouncer.shadowRoot) == null ? void 0 : _existingAnnouncer_shadowRoot.childNodes[0]) {\n return existingAnnouncer.shadowRoot.childNodes[0];\n } else {\n const container = document.createElement(ANNOUNCER_TYPE);\n container.style.cssText = 'position:absolute';\n const announcer = document.createElement('div');\n announcer.ariaLive = 'assertive';\n announcer.id = ANNOUNCER_ID;\n announcer.role = 'alert';\n announcer.style.cssText = 'position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal';\n // Use shadow DOM here to avoid any potential CSS bleed\n const shadow = container.attachShadow({\n mode: 'open'\n });\n shadow.appendChild(announcer);\n document.body.appendChild(container);\n return announcer;\n }\n}\nfunction AppRouterAnnouncer(param) {\n let { tree } = param;\n const [portalNode, setPortalNode] = (0, _react.useState)(null);\n (0, _react.useEffect)(()=>{\n const announcer = getAnnouncerNode();\n setPortalNode(announcer);\n return ()=>{\n const container = document.getElementsByTagName(ANNOUNCER_TYPE)[0];\n if (container == null ? void 0 : container.isConnected) {\n document.body.removeChild(container);\n }\n };\n }, []);\n const [routeAnnouncement, setRouteAnnouncement] = (0, _react.useState)('');\n const previousTitle = (0, _react.useRef)(undefined);\n (0, _react.useEffect)(()=>{\n let currentTitle = '';\n if (document.title) {\n currentTitle = document.title;\n } else {\n const pageHeader = document.querySelector('h1');\n if (pageHeader) {\n currentTitle = pageHeader.innerText || pageHeader.textContent || '';\n }\n }\n // Only announce the title change, but not for the first load because screen\n // readers do that automatically.\n if (previousTitle.current !== undefined && previousTitle.current !== currentTitle) {\n setRouteAnnouncement(currentTitle);\n }\n previousTitle.current = currentTitle;\n }, [\n tree\n ]);\n return portalNode ? /*#__PURE__*/ (0, _reactdom.createPortal)(routeAnnouncement, portalNode) : null;\n}\n_c = AppRouterAnnouncer;\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-announcer.js.map\nvar _c;\n$RefreshReg$(_c, \"AppRouterAnnouncer\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1hbm5vdW5jZXIuanMiLCJtYXBwaW5ncyI6Ijs7OztzREE2QmdCQTs7O2VBQUFBOzs7bUNBN0I0QjtzQ0FDZjtBQUc3QixNQUFNQyxpQkFBaUI7QUFDdkIsTUFBTUMsZUFBZTtBQUVyQixTQUFTQztRQUVIQztJQURKLE1BQU1BLG9CQUFvQkMsU0FBU0MsaUJBQWlCLENBQUNMLGVBQWUsQ0FBQyxFQUFFO0lBQ3ZFLElBQUlHLHFCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxDQUFBQSxnQ0FBQUEsa0JBQW1CRyxVQUFBQSxLQUFVLGdCQUE3QkgsOEJBQStCSSxVQUFVLENBQUMsRUFBRSxFQUFFO1FBQ2hELE9BQU9KLGtCQUFrQkcsVUFBVSxDQUFDQyxVQUFVLENBQUMsRUFBRTtJQUNuRCxPQUFPO1FBQ0wsTUFBTUMsWUFBWUosU0FBU0ssYUFBYSxDQUFDVDtRQUN6Q1EsVUFBVUUsS0FBSyxDQUFDQyxPQUFPLEdBQUc7UUFDMUIsTUFBTUMsWUFBWVIsU0FBU0ssYUFBYSxDQUFDO1FBQ3pDRyxVQUFVQyxRQUFRLEdBQUc7UUFDckJELFVBQVVFLEVBQUUsR0FBR2I7UUFDZlcsVUFBVUcsSUFBSSxHQUFHO1FBQ2pCSCxVQUFVRixLQUFLLENBQUNDLE9BQU8sR0FDckI7UUFFRix1REFBdUQ7UUFDdkQsTUFBTUssU0FBU1IsVUFBVVMsWUFBWSxDQUFDO1lBQUVDLE1BQU07UUFBTztRQUNyREYsT0FBT0csV0FBVyxDQUFDUDtRQUNuQlIsU0FBU2dCLElBQUksQ0FBQ0QsV0FBVyxDQUFDWDtRQUMxQixPQUFPSTtJQUNUO0FBQ0Y7QUFFTyw0QkFBNEIsS0FBcUM7SUFBckMsTUFBRVMsSUFBSSxFQUErQixHQUFyQztJQUNqQyxNQUFNLENBQUNDLFlBQVlDLGNBQWMsR0FBR0MsQ0FBQUEsR0FBQUEsT0FBQUEsUUFBQUEsRUFBNkI7SUFFakVDLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixNQUFNYixZQUFZVjtRQUNsQnFCLGNBQWNYO1FBQ2QsT0FBTztZQUNMLE1BQU1KLFlBQVlKLFNBQVNzQixvQkFBb0IsQ0FBQzFCLGVBQWUsQ0FBQyxFQUFFO1lBQ2xFLElBQUlRLGFBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFVBQVdtQixXQUFXLEVBQUU7Z0JBQzFCdkIsU0FBU2dCLElBQUksQ0FBQ1EsV0FBVyxDQUFDcEI7WUFDNUI7UUFDRjtJQUNGLEdBQUcsRUFBRTtJQUVMLE1BQU0sQ0FBQ3FCLG1CQUFtQkMscUJBQXFCLEdBQUdOLENBQUFBLEdBQUFBLE9BQUFBLFFBQUFBLEVBQVM7SUFDM0QsTUFBTU8sZ0JBQWdCQyxDQUFBQSxHQUFBQSxPQUFBQSxNQUFBQSxFQUEyQkM7SUFFakRSLENBQUFBLEdBQUFBLE9BQUFBLFNBQUFBLEVBQVU7UUFDUixJQUFJUyxlQUFlO1FBQ25CLElBQUk5QixTQUFTK0IsS0FBSyxFQUFFO1lBQ2xCRCxlQUFlOUIsU0FBUytCLEtBQUs7UUFDL0IsT0FBTztZQUNMLE1BQU1DLGFBQWFoQyxTQUFTaUMsYUFBYSxDQUFDO1lBQzFDLElBQUlELFlBQVk7Z0JBQ2RGLGVBQWVFLFdBQVdFLFNBQVMsSUFBSUYsV0FBV0csV0FBVyxJQUFJO1lBQ25FO1FBQ0Y7UUFFQSw0RUFBNEU7UUFDNUUsaUNBQWlDO1FBQ2pDLElBQ0VSLGNBQWNTLE9BQU8sS0FBS1AsYUFDMUJGLGNBQWNTLE9BQU8sS0FBS04sY0FDMUI7WUFDQUoscUJBQXFCSTtRQUN2QjtRQUNBSCxjQUFjUyxPQUFPLEdBQUdOO0lBQzFCLEdBQUc7UUFBQ2I7S0FBSztJQUVULE9BQU9DLGFBQUFBLFdBQUFBLEdBQWFtQixDQUFBQSxHQUFBQSxVQUFBQSxZQUFBQSxFQUFhWixtQkFBbUJQLGNBQWM7QUFDcEU7S0F4Q2dCdkIiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1hbm5vdW5jZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5jb25zdCBBTk5PVU5DRVJfVFlQRSA9ICduZXh0LXJvdXRlLWFubm91bmNlcidcbmNvbnN0IEFOTk9VTkNFUl9JRCA9ICdfX25leHQtcm91dGUtYW5ub3VuY2VyX18nXG5cbmZ1bmN0aW9uIGdldEFubm91bmNlck5vZGUoKSB7XG4gIGNvbnN0IGV4aXN0aW5nQW5ub3VuY2VyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoQU5OT1VOQ0VSX1RZUEUpWzBdXG4gIGlmIChleGlzdGluZ0Fubm91bmNlcj8uc2hhZG93Um9vdD8uY2hpbGROb2Rlc1swXSkge1xuICAgIHJldHVybiBleGlzdGluZ0Fubm91bmNlci5zaGFkb3dSb290LmNoaWxkTm9kZXNbMF0gYXMgSFRNTEVsZW1lbnRcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KEFOTk9VTkNFUl9UWVBFKVxuICAgIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlJ1xuICAgIGNvbnN0IGFubm91bmNlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgYW5ub3VuY2VyLmFyaWFMaXZlID0gJ2Fzc2VydGl2ZSdcbiAgICBhbm5vdW5jZXIuaWQgPSBBTk5PVU5DRVJfSURcbiAgICBhbm5vdW5jZXIucm9sZSA9ICdhbGVydCdcbiAgICBhbm5vdW5jZXIuc3R5bGUuY3NzVGV4dCA9XG4gICAgICAncG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7d2lkdGg6MXB4O2NsaXA6cmVjdCgwIDAgMCAwKTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3dvcmQtd3JhcDpub3JtYWwnXG5cbiAgICAvLyBVc2Ugc2hhZG93IERPTSBoZXJlIHRvIGF2b2lkIGFueSBwb3RlbnRpYWwgQ1NTIGJsZWVkXG4gICAgY29uc3Qgc2hhZG93ID0gY29udGFpbmVyLmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KVxuICAgIHNoYWRvdy5hcHBlbmRDaGlsZChhbm5vdW5jZXIpXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpXG4gICAgcmV0dXJuIGFubm91bmNlclxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBBcHBSb3V0ZXJBbm5vdW5jZXIoeyB0cmVlIH06IHsgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgfSkge1xuICBjb25zdCBbcG9ydGFsTm9kZSwgc2V0UG9ydGFsTm9kZV0gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBhbm5vdW5jZXIgPSBnZXRBbm5vdW5jZXJOb2RlKClcbiAgICBzZXRQb3J0YWxOb2RlKGFubm91bmNlcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoQU5OT1VOQ0VSX1RZUEUpWzBdXG4gICAgICBpZiAoY29udGFpbmVyPy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGNvbnRhaW5lcilcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtyb3V0ZUFubm91bmNlbWVudCwgc2V0Um91dGVBbm5vdW5jZW1lbnRdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IHByZXZpb3VzVGl0bGUgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgY3VycmVudFRpdGxlID0gJydcbiAgICBpZiAoZG9jdW1lbnQudGl0bGUpIHtcbiAgICAgIGN1cnJlbnRUaXRsZSA9IGRvY3VtZW50LnRpdGxlXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHBhZ2VIZWFkZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoMScpXG4gICAgICBpZiAocGFnZUhlYWRlcikge1xuICAgICAgICBjdXJyZW50VGl0bGUgPSBwYWdlSGVhZGVyLmlubmVyVGV4dCB8fCBwYWdlSGVhZGVyLnRleHRDb250ZW50IHx8ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT25seSBhbm5vdW5jZSB0aGUgdGl0bGUgY2hhbmdlLCBidXQgbm90IGZvciB0aGUgZmlyc3QgbG9hZCBiZWNhdXNlIHNjcmVlblxuICAgIC8vIHJlYWRlcnMgZG8gdGhhdCBhdXRvbWF0aWNhbGx5LlxuICAgIGlmIChcbiAgICAgIHByZXZpb3VzVGl0bGUuY3VycmVudCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcmV2aW91c1RpdGxlLmN1cnJlbnQgIT09IGN1cnJlbnRUaXRsZVxuICAgICkge1xuICAgICAgc2V0Um91dGVBbm5vdW5jZW1lbnQoY3VycmVudFRpdGxlKVxuICAgIH1cbiAgICBwcmV2aW91c1RpdGxlLmN1cnJlbnQgPSBjdXJyZW50VGl0bGVcbiAgfSwgW3RyZWVdKVxuXG4gIHJldHVybiBwb3J0YWxOb2RlID8gY3JlYXRlUG9ydGFsKHJvdXRlQW5ub3VuY2VtZW50LCBwb3J0YWxOb2RlKSA6IG51bGxcbn1cbiJdLCJuYW1lcyI6WyJBcHBSb3V0ZXJBbm5vdW5jZXIiLCJBTk5PVU5DRVJfVFlQRSIsIkFOTk9VTkNFUl9JRCIsImdldEFubm91bmNlck5vZGUiLCJleGlzdGluZ0Fubm91bmNlciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeU5hbWUiLCJzaGFkb3dSb290IiwiY2hpbGROb2RlcyIsImNvbnRhaW5lciIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsImNzc1RleHQiLCJhbm5vdW5jZXIiLCJhcmlhTGl2ZSIsImlkIiwicm9sZSIsInNoYWRvdyIsImF0dGFjaFNoYWRvdyIsIm1vZGUiLCJhcHBlbmRDaGlsZCIsImJvZHkiLCJ0cmVlIiwicG9ydGFsTm9kZSIsInNldFBvcnRhbE5vZGUiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiaXNDb25uZWN0ZWQiLCJyZW1vdmVDaGlsZCIsInJvdXRlQW5ub3VuY2VtZW50Iiwic2V0Um91dGVBbm5vdW5jZW1lbnQiLCJwcmV2aW91c1RpdGxlIiwidXNlUmVmIiwidW5kZWZpbmVkIiwiY3VycmVudFRpdGxlIiwidGl0bGUiLCJwYWdlSGVhZGVyIiwicXVlcnlTZWxlY3RvciIsImlubmVyVGV4dCIsInRleHRDb250ZW50IiwiY3VycmVudCIsImNyZWF0ZVBvcnRhbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-announcer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js": /*!***************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js ***! \***************************************************************************************************************************************************/ /***/ ((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 ACTION_HEADER: function() {\n return ACTION_HEADER;\n },\n FLIGHT_HEADERS: function() {\n return FLIGHT_HEADERS;\n },\n NEXT_ACTION_NOT_FOUND_HEADER: function() {\n return NEXT_ACTION_NOT_FOUND_HEADER;\n },\n NEXT_DID_POSTPONE_HEADER: function() {\n return NEXT_DID_POSTPONE_HEADER;\n },\n NEXT_HMR_REFRESH_HASH_COOKIE: function() {\n return NEXT_HMR_REFRESH_HASH_COOKIE;\n },\n NEXT_HMR_REFRESH_HEADER: function() {\n return NEXT_HMR_REFRESH_HEADER;\n },\n NEXT_IS_PRERENDER_HEADER: function() {\n return NEXT_IS_PRERENDER_HEADER;\n },\n NEXT_REWRITTEN_PATH_HEADER: function() {\n return NEXT_REWRITTEN_PATH_HEADER;\n },\n NEXT_REWRITTEN_QUERY_HEADER: function() {\n return NEXT_REWRITTEN_QUERY_HEADER;\n },\n NEXT_ROUTER_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_PREFETCH_HEADER;\n },\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER: function() {\n return NEXT_ROUTER_SEGMENT_PREFETCH_HEADER;\n },\n NEXT_ROUTER_STALE_TIME_HEADER: function() {\n return NEXT_ROUTER_STALE_TIME_HEADER;\n },\n NEXT_ROUTER_STATE_TREE_HEADER: function() {\n return NEXT_ROUTER_STATE_TREE_HEADER;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\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_HEADER: function() {\n return RSC_HEADER;\n }\n});\nconst RSC_HEADER = 'rsc';\nconst ACTION_HEADER = 'next-action';\nconst NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree';\nconst NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch';\nconst NEXT_ROUTER_SEGMENT_PREFETCH_HEADER = 'next-router-segment-prefetch';\nconst NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh';\nconst NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__';\nconst NEXT_URL = 'next-url';\nconst RSC_CONTENT_TYPE_HEADER = 'text/x-component';\nconst FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER\n];\nconst NEXT_RSC_UNION_QUERY = '_rsc';\nconst NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time';\nconst NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed';\nconst NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path';\nconst NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query';\nconst NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender';\nconst NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found';\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUNhQSxhQUFhO2VBQWJBOztJQWlCQUMsY0FBYztlQUFkQTs7SUFlQUMsNEJBQTRCO2VBQTVCQTs7SUFKQUMsd0JBQXdCO2VBQXhCQTs7SUFmQUMsNEJBQTRCO2VBQTVCQTs7SUFEQUMsdUJBQXVCO2VBQXZCQTs7SUFtQkFDLHdCQUF3QjtlQUF4QkE7O0lBRkFDLDBCQUEwQjtlQUExQkE7O0lBQ0FDLDJCQUEyQjtlQUEzQkE7O0lBekJBQywyQkFBMkI7ZUFBM0JBOztJQUtBQyxtQ0FBbUM7ZUFBbkNBOztJQWlCQUMsNkJBQTZCO2VBQTdCQTs7SUF2QkFDLDZCQUE2QjtlQUE3QkE7O0lBcUJBQyxvQkFBb0I7ZUFBcEJBOztJQVhBQyxRQUFRO2VBQVJBOztJQUNBQyx1QkFBdUI7ZUFBdkJBOztJQWhCQUMsVUFBVTtlQUFWQTs7O0FBQU4sTUFBTUEsYUFBYTtBQUNuQixNQUFNaEIsZ0JBQWdCO0FBSXRCLE1BQU1ZLGdDQUFnQztBQUN0QyxNQUFNSCw4QkFBOEI7QUFLcEMsTUFBTUMsc0NBQ1g7QUFDSyxNQUFNTCwwQkFBMEI7QUFDaEMsTUFBTUQsK0JBQStCO0FBQ3JDLE1BQU1VLFdBQVc7QUFDakIsTUFBTUMsMEJBQTBCO0FBRWhDLE1BQU1kLGlCQUFpQjtJQUM1QmU7SUFDQUo7SUFDQUg7SUFDQUo7SUFDQUs7Q0FDRDtBQUVNLE1BQU1HLHVCQUF1QjtBQUU3QixNQUFNRixnQ0FBZ0M7QUFDdEMsTUFBTVIsMkJBQTJCO0FBQ2pDLE1BQU1JLDZCQUE2QjtBQUNuQyxNQUFNQyw4QkFBOEI7QUFDcEMsTUFBTUYsMkJBQTJCO0FBQ2pDLE1BQU1KLCtCQUErQiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFJTQ19IRUFERVIgPSAncnNjJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IEFDVElPTl9IRUFERVIgPSAnbmV4dC1hY3Rpb24nIGFzIGNvbnN0XG4vLyBUT0RPOiBJbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIGZ1bGwgcm91dGVyIHN0YXRlLCB3ZSBvbmx5IG5lZWQgdG8gc2VuZCB0aGVcbi8vIHNlZ21lbnQgcGF0aC4gU2F2ZXMgYnl0ZXMuIFRoZW4gd2UgY291bGQgYWxzbyB1c2UgdGhpcyBmaWVsZCBmb3Igc2VnbWVudFxuLy8gcHJlZmV0Y2hlcywgd2hpY2ggYWxzbyBuZWVkIHRvIHNwZWNpZnkgYSBwYXJ0aWN1bGFyIHNlZ21lbnQuXG5leHBvcnQgY29uc3QgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIgPSAnbmV4dC1yb3V0ZXItc3RhdGUtdHJlZScgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVIgPSAnbmV4dC1yb3V0ZXItcHJlZmV0Y2gnIGFzIGNvbnN0XG4vLyBUaGlzIGNvbnRhaW5zIHRoZSBwYXRoIHRvIHRoZSBzZWdtZW50IGJlaW5nIHByZWZldGNoZWQuXG4vLyBUT0RPOiBJZiB3ZSBjaGFuZ2UgbmV4dC1yb3V0ZXItc3RhdGUtdHJlZSB0byBiZSBhIHNlZ21lbnQgcGF0aCwgd2UgY2FuIHVzZVxuLy8gdGhhdCBpbnN0ZWFkLiBUaGVuIG5leHQtcm91dGVyLXByZWZldGNoIGFuZCBuZXh0LXJvdXRlci1zZWdtZW50LXByZWZldGNoIGNhblxuLy8gYmUgbWVyZ2VkIGludG8gYSBzaW5nbGUgZW51bS5cbmV4cG9ydCBjb25zdCBORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUiA9XG4gICduZXh0LXJvdXRlci1zZWdtZW50LXByZWZldGNoJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfSE1SX1JFRlJFU0hfSEVBREVSID0gJ25leHQtaG1yLXJlZnJlc2gnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRSA9ICdfX25leHRfaG1yX3JlZnJlc2hfaGFzaF9fJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfVVJMID0gJ25leHQtdXJsJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IFJTQ19DT05URU5UX1RZUEVfSEVBREVSID0gJ3RleHQveC1jb21wb25lbnQnIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBGTElHSFRfSEVBREVSUyA9IFtcbiAgUlNDX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSLFxuXSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgTkVYVF9SU0NfVU5JT05fUVVFUlkgPSAnX3JzYycgYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IE5FWFRfUk9VVEVSX1NUQUxFX1RJTUVfSEVBREVSID0gJ3gtbmV4dGpzLXN0YWxlLXRpbWUnIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSID0gJ3gtbmV4dGpzLXBvc3Rwb25lZCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUiA9ICd4LW5leHRqcy1yZXdyaXR0ZW4tcGF0aCcgYXMgY29uc3RcbmV4cG9ydCBjb25zdCBORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIgPSAneC1uZXh0anMtcmV3cml0dGVuLXF1ZXJ5JyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUiA9ICd4LW5leHRqcy1wcmVyZW5kZXInIGFzIGNvbnN0XG5leHBvcnQgY29uc3QgTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUiA9ICd4LW5leHRqcy1hY3Rpb24tbm90LWZvdW5kJyBhcyBjb25zdFxuIl0sIm5hbWVzIjpbIkFDVElPTl9IRUFERVIiLCJGTElHSFRfSEVBREVSUyIsIk5FWFRfQUNUSU9OX05PVF9GT1VORF9IRUFERVIiLCJORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIiLCJORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFIiwiTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIiLCJORVhUX0lTX1BSRVJFTkRFUl9IRUFERVIiLCJORVhUX1JFV1JJVFRFTl9QQVRIX0hFQURFUiIsIk5FWFRfUkVXUklUVEVOX1FVRVJZX0hFQURFUiIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsIk5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiIsIk5FWFRfUlNDX1VOSU9OX1FVRVJZIiwiTkVYVF9VUkwiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIlJTQ19IRUFERVIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-instance.js": /*!****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-instance.js ***! \****************************************************************************************************************************************************/ /***/ ((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 createMutableActionQueue: function() {\n return createMutableActionQueue;\n },\n dispatchNavigateAction: function() {\n return dispatchNavigateAction;\n },\n dispatchTraverseAction: function() {\n return dispatchTraverseAction;\n },\n getCurrentAppRouterState: function() {\n return getCurrentAppRouterState;\n },\n publicAppRouterInstance: function() {\n return publicAppRouterInstance;\n }\n});\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _routerreducer = __webpack_require__(/*! ./router-reducer/router-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/is-thenable.js\");\nconst _segmentcache = __webpack_require__(/*! ./segment-cache */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js\");\nconst _useactionqueue = __webpack_require__(/*! ./use-action-queue */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/use-action-queue.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/add-base-path.js\");\nconst _approuter = __webpack_require__(/*! ./app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./router-reducer/reducers/prefetch-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst _links = __webpack_require__(/*! ./links */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/links.js\");\nfunction runRemainingActions(actionQueue, setState) {\n if (actionQueue.pending !== null) {\n actionQueue.pending = actionQueue.pending.next;\n if (actionQueue.pending !== null) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n runAction({\n actionQueue,\n action: actionQueue.pending,\n setState\n });\n } else {\n // No more actions are pending, check if a refresh is needed\n if (actionQueue.needsRefresh) {\n actionQueue.needsRefresh = false;\n actionQueue.dispatch({\n type: _routerreducertypes.ACTION_REFRESH,\n origin: window.location.origin\n }, setState);\n }\n }\n }\n}\nasync function runAction(param) {\n let { actionQueue, action, setState } = param;\n const prevState = actionQueue.state;\n actionQueue.pending = action;\n const payload = action.payload;\n const actionResult = actionQueue.action(prevState, payload);\n function handleResult(nextState) {\n // if we discarded this action, the state should also be discarded\n if (action.discarded) {\n return;\n }\n actionQueue.state = nextState;\n runRemainingActions(actionQueue, setState);\n action.resolve(nextState);\n }\n // if the action is a promise, set up a callback to resolve it\n if ((0, _isthenable.isThenable)(actionResult)) {\n actionResult.then(handleResult, (err)=>{\n runRemainingActions(actionQueue, setState);\n action.reject(err);\n });\n } else {\n handleResult(actionResult);\n }\n}\nfunction dispatchAction(actionQueue, payload, setState) {\n let resolvers = {\n resolve: setState,\n reject: ()=>{}\n };\n // most of the action types are async with the exception of restore\n // it's important that restore is handled quickly since it's fired on the popstate event\n // and we don't want to add any delay on a back/forward nav\n // this only creates a promise for the async actions\n if (payload.type !== _routerreducertypes.ACTION_RESTORE) {\n // Create the promise and assign the resolvers to the object.\n const deferredPromise = new Promise((resolve, reject)=>{\n resolvers = {\n resolve,\n reject\n };\n });\n (0, _react.startTransition)(()=>{\n // we immediately notify React of the pending promise -- the resolver is attached to the action node\n // and will be called when the associated action promise resolves\n setState(deferredPromise);\n });\n }\n const newAction = {\n payload,\n next: null,\n resolve: resolvers.resolve,\n reject: resolvers.reject\n };\n // Check if the queue is empty\n if (actionQueue.pending === null) {\n // The queue is empty, so add the action and start it immediately\n // Mark this action as the last in the queue\n actionQueue.last = newAction;\n runAction({\n actionQueue,\n action: newAction,\n setState\n });\n } else if (payload.type === _routerreducertypes.ACTION_NAVIGATE || payload.type === _routerreducertypes.ACTION_RESTORE) {\n // Navigations (including back/forward) take priority over any pending actions.\n // Mark the pending action as discarded (so the state is never applied) and start the navigation action immediately.\n actionQueue.pending.discarded = true;\n // The rest of the current queue should still execute after this navigation.\n // (Note that it can't contain any earlier navigations, because we always put those into `actionQueue.pending` by calling `runAction`)\n newAction.next = actionQueue.pending.next;\n // if the pending action was a server action, mark the queue as needing a refresh once events are processed\n if (actionQueue.pending.payload.type === _routerreducertypes.ACTION_SERVER_ACTION) {\n actionQueue.needsRefresh = true;\n }\n runAction({\n actionQueue,\n action: newAction,\n setState\n });\n } else {\n // The queue is not empty, so add the action to the end of the queue\n // It will be started by runRemainingActions after the previous action finishes\n if (actionQueue.last !== null) {\n actionQueue.last.next = newAction;\n }\n actionQueue.last = newAction;\n }\n}\nlet globalActionQueue = null;\nfunction createMutableActionQueue(initialState, instrumentationHooks) {\n const actionQueue = {\n state: initialState,\n dispatch: (payload, setState)=>dispatchAction(actionQueue, payload, setState),\n action: async (state, action)=>{\n const result = (0, _routerreducer.reducer)(state, action);\n return result;\n },\n pending: null,\n last: null,\n onRouterTransitionStart: instrumentationHooks !== null && typeof instrumentationHooks.onRouterTransitionStart === 'function' ? instrumentationHooks.onRouterTransitionStart : null\n };\n if (true) {\n // The action queue is lazily created on hydration, but after that point\n // it doesn't change. So we can store it in a global rather than pass\n // it around everywhere via props/context.\n if (globalActionQueue !== null) {\n throw Object.defineProperty(new Error('Internal Next.js Error: createMutableActionQueue was called more ' + 'than once'), \"__NEXT_ERROR_CODE\", {\n value: \"E624\",\n enumerable: false,\n configurable: true\n });\n }\n globalActionQueue = actionQueue;\n }\n return actionQueue;\n}\nfunction getCurrentAppRouterState() {\n return globalActionQueue !== null ? globalActionQueue.state : null;\n}\nfunction getAppRouterActionQueue() {\n if (globalActionQueue === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n return globalActionQueue;\n}\nfunction getProfilingHookForOnNavigationStart() {\n if (globalActionQueue !== null) {\n return globalActionQueue.onRouterTransitionStart;\n }\n return null;\n}\nfunction dispatchNavigateAction(href, navigateType, shouldScroll, linkInstanceRef) {\n // TODO: This stuff could just go into the reducer. Leaving as-is for now\n // since we're about to rewrite all the router reducer stuff anyway.\n const url = new URL((0, _addbasepath.addBasePath)(href), location.href);\n if (false) {}\n (0, _links.setLinkForCurrentNavigation)(linkInstanceRef);\n const onRouterTransitionStart = getProfilingHookForOnNavigationStart();\n if (onRouterTransitionStart !== null) {\n onRouterTransitionStart(href, navigateType);\n }\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_NAVIGATE,\n url,\n isExternalUrl: (0, _approuter.isExternalURL)(url),\n locationSearch: location.search,\n shouldScroll,\n navigateType,\n allowAliasing: true\n });\n}\nfunction dispatchTraverseAction(href, tree) {\n const onRouterTransitionStart = getProfilingHookForOnNavigationStart();\n if (onRouterTransitionStart !== null) {\n onRouterTransitionStart(href, 'traverse');\n }\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(href),\n tree\n });\n}\nconst publicAppRouterInstance = {\n back: ()=>window.history.back(),\n forward: ()=>window.history.forward(),\n prefetch: false ? // cache. So we don't need to dispatch an action.\n 0 : (href, options)=>{\n // Use the old prefetch implementation.\n const actionQueue = getAppRouterActionQueue();\n const url = (0, _approuter.createPrefetchURL)(href);\n if (url !== null) {\n var _options_kind;\n // The prefetch reducer doesn't actually update any state or\n // trigger a rerender. It just writes to a mutable cache. So we\n // shouldn't bother calling setState/dispatch; we can just re-run\n // the reducer directly using the current state.\n // TODO: Refactor this away from a \"reducer\" so it's\n // less confusing.\n (0, _prefetchreducer.prefetchReducer)(actionQueue.state, {\n type: _routerreducertypes.ACTION_PREFETCH,\n url,\n kind: (_options_kind = options == null ? void 0 : options.kind) != null ? _options_kind : _routerreducertypes.PrefetchKind.FULL\n });\n }\n },\n replace: (href, options)=>{\n (0, _react.startTransition)(()=>{\n var _options_scroll;\n dispatchNavigateAction(href, 'replace', (_options_scroll = options == null ? void 0 : options.scroll) != null ? _options_scroll : true, null);\n });\n },\n push: (href, options)=>{\n (0, _react.startTransition)(()=>{\n var _options_scroll;\n dispatchNavigateAction(href, 'push', (_options_scroll = options == null ? void 0 : options.scroll) != null ? _options_scroll : true, null);\n });\n },\n refresh: ()=>{\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_REFRESH,\n origin: window.location.origin\n });\n });\n },\n hmrRefresh: ()=>{\n if (false) {} else {\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_HMR_REFRESH,\n origin: window.location.origin\n });\n });\n }\n }\n};\n// Exists for debugging purposes. Don't use in application code.\nif ( true && window.next) {\n window.next.router = publicAppRouterInstance;\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=app-router-instance.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci1pbnN0YW5jZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFtTmdCQSx3QkFBd0I7ZUFBeEJBOztJQTBEQUMsc0JBQXNCO2VBQXRCQTs7SUErQkFDLHNCQUFzQjtlQUF0QkE7O0lBbkRBQyx3QkFBd0I7ZUFBeEJBOztJQXVFSEMsdUJBQXVCO2VBQXZCQTs7O2dEQXBUTjsyQ0FDaUI7bUNBQ1E7d0NBQ0w7MENBS3BCOzRDQUNpQzt5Q0FDWjt1Q0FDcUI7NkNBQ2pCO21DQU0rQjtBQWtDL0QsU0FBU0Msb0JBQ1BDLFdBQWlDLEVBQ2pDQyxRQUE4QjtJQUU5QixJQUFJRCxZQUFZRSxPQUFPLEtBQUssTUFBTTtRQUNoQ0YsWUFBWUUsT0FBTyxHQUFHRixZQUFZRSxPQUFPLENBQUNDLElBQUk7UUFDOUMsSUFBSUgsWUFBWUUsT0FBTyxLQUFLLE1BQU07WUFDaEMsbUVBQW1FO1lBQ25FRSxVQUFVO2dCQUNSSjtnQkFDQUssUUFBUUwsWUFBWUUsT0FBTztnQkFDM0JEO1lBQ0Y7UUFDRixPQUFPO1lBQ0wsNERBQTREO1lBQzVELElBQUlELFlBQVlNLFlBQVksRUFBRTtnQkFDNUJOLFlBQVlNLFlBQVksR0FBRztnQkFDM0JOLFlBQVlPLFFBQVEsQ0FDbEI7b0JBQ0VDLE1BQU1DLG9CQUFBQSxjQUFjO29CQUNwQkMsUUFBUUMsT0FBT0MsUUFBUSxDQUFDRixNQUFNO2dCQUNoQyxHQUNBVDtZQUVKO1FBQ0Y7SUFDRjtBQUNGO0FBRUEsZUFBZUcsVUFBVSxLQVF4QjtJQVJ3QixNQUN2QkosV0FBVyxFQUNYSyxNQUFNLEVBQ05KLFFBQVEsRUFLVCxHQVJ3QjtJQVN2QixNQUFNWSxZQUFZYixZQUFZYyxLQUFL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cyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaW5zdGFuY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBBcHBSb3V0ZXJTdGF0ZSxcbiAgdHlwZSBSZWR1Y2VyQWN0aW9ucyxcbiAgdHlwZSBSZWR1Y2VyU3RhdGUsXG4gIEFDVElPTl9SRUZSRVNILFxuICBBQ1RJT05fU0VSVkVSX0FDVElPTixcbiAgQUNUSU9OX05BVklHQVRFLFxuICBBQ1RJT05fUkVTVE9SRSxcbiAgdHlwZSBOYXZpZ2F0ZUFjdGlvbixcbiAgQUNUSU9OX0hNUl9SRUZSRVNILFxuICBQcmVmZXRjaEtpbmQsXG4gIEFDVElPTl9QUkVGRVRDSCxcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IHJlZHVjZXIgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL3JvdXRlci1yZWR1Y2VyJ1xuaW1wb3J0IHsgc3RhcnRUcmFuc2l0aW9uIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBpc1RoZW5hYmxlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9pcy10aGVuYWJsZSdcbmltcG9ydCB7XG4gIEZldGNoU3RyYXRlZ3ksXG4gIHByZWZldGNoIGFzIHByZWZldGNoV2l0aFNlZ21lbnRDYWNoZSxcbiAgdHlwZSBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5LFxufSBmcm9tICcuL3NlZ21lbnQtY2FjaGUnXG5pbXBvcnQgeyBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiB9IGZyb20gJy4vdXNlLWFjdGlvbi1xdWV1ZSdcbmltcG9ydCB7IGFkZEJhc2VQYXRoIH0gZnJvbSAnLi4vYWRkLWJhc2UtcGF0aCdcbmltcG9ydCB7IGNyZWF0ZVByZWZldGNoVVJMLCBpc0V4dGVybmFsVVJMIH0gZnJvbSAnLi9hcHAtcm91dGVyJ1xuaW1wb3J0IHsgcHJlZmV0Y2hSZWR1Y2VyIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9wcmVmZXRjaC1yZWR1Y2VyJ1xuaW1wb3J0IHR5cGUge1xuICBBcHBSb3V0ZXJJbnN0YW5jZSxcbiAgTmF2aWdhdGVPcHRpb25zLFxuICBQcmVmZXRjaE9wdGlvbnMsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgc2V0TGlua0ZvckN1cnJlbnROYXZpZ2F0aW9uLCB0eXBlIExpbmtJbnN0YW5jZSB9IGZyb20gJy4vbGlua3MnXG5pbXBvcnQgdHlwZSB7IEZsaWdodFJvdXRlclN0YXRlIH0gZnJvbSAnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENsaWVudEluc3RydW1lbnRhdGlvbkhvb2tzIH0gZnJvbSAnLi4vYXBwLWluZGV4J1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxFcnJvckNvbXBvbmVudCB9IGZyb20gJy4vYnVpbHRpbi9nbG9iYWwtZXJyb3InXG5cbmV4cG9ydCB0eXBlIERpc3BhdGNoU3RhdGVQcm9taXNlID0gUmVhY3QuRGlzcGF0Y2g8UmVkdWNlclN0YXRlPlxuXG5leHBvcnQgdHlwZSBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSA9IHtcbiAgc3RhdGU6IEFwcFJvdXRlclN0YXRlXG4gIGRpc3BhdGNoOiAocGF5bG9hZDogUmVkdWNlckFjdGlvbnMsIHNldFN0YXRlOiBEaXNwYXRjaFN0YXRlUHJvbWlzZSkgPT4gdm9pZFxuICBhY3Rpb246IChzdGF0ZTogQXBwUm91dGVyU3RhdGUsIGFjdGlvbjogUmVkdWNlckFjdGlvbnMpID0+IFJlZHVjZXJTdGF0ZVxuXG4gIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0OlxuICAgIHwgKCh1cmw6IHN0cmluZywgdHlwZTogJ3B1c2gnIHwgJ3JlcGxhY2UnIHwgJ3RyYXZlcnNlJykgPT4gdm9pZClcbiAgICB8IG51bGxcblxuICBwZW5kaW5nOiBBY3Rpb25RdWV1ZU5vZGUgfCBudWxsXG4gIG5lZWRzUmVmcmVzaD86IGJvb2xlYW5cbiAgbGFzdDogQWN0aW9uUXVldWVOb2RlIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBHbG9iYWxFcnJvclN0YXRlID0gW1xuICBHbG9iYWxFcnJvcjogR2xvYmFsRXJyb3JDb21wb25lbnQsXG4gIHN0eWxlczogUmVhY3QuUmVhY3ROb2RlLFxuXVxuXG5leHBvcnQgdHlwZSBBY3Rpb25RdWV1ZU5vZGUgPSB7XG4gIHBheWxvYWQ6IFJlZHVjZXJBY3Rpb25zXG4gIG5leHQ6IEFjdGlvblF1ZXVlTm9kZSB8IG51bGxcbiAgcmVzb2x2ZTogKHZhbHVlOiBSZWR1Y2VyU3RhdGUpID0+IHZvaWRcbiAgcmVqZWN0OiAoZXJyOiBFcnJvcikgPT4gdm9pZFxuICBkaXNjYXJkZWQ/OiBib29sZWFuXG59XG5cbmZ1bmN0aW9uIHJ1blJlbWFpbmluZ0FjdGlvbnMoXG4gIGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSxcbiAgc2V0U3RhdGU6IERpc3BhdGNoU3RhdGVQcm9taXNlXG4pIHtcbiAgaWYgKGFjdGlvblF1ZXVlLnBlbmRpbmcgIT09IG51bGwpIHtcbiAgICBhY3Rpb25RdWV1ZS5wZW5kaW5nID0gYWN0aW9uUXVldWUucGVuZGluZy5uZXh0XG4gICAgaWYgKGFjdGlvblF1ZXVlLnBlbmRpbmcgIT09IG51bGwpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJ1bkFjdGlvbih7XG4gICAgICAgIGFjdGlvblF1ZXVlLFxuICAgICAgICBhY3Rpb246IGFjdGlvblF1ZXVlLnBlbmRpbmcsXG4gICAgICAgIHNldFN0YXRlLFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTm8gbW9yZSBhY3Rpb25zIGFyZSBwZW5kaW5nLCBjaGVjayBpZiBhIHJlZnJlc2ggaXMgbmVlZGVkXG4gICAgICBpZiAoYWN0aW9uUXVldWUubmVlZHNSZWZyZXNoKSB7XG4gICAgICAgIGFjdGlvblF1ZXVlLm5lZWRzUmVmcmVzaCA9IGZhbHNlXG4gICAgICAgIGFjdGlvblF1ZXVlLmRpc3BhdGNoKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6IEFDVElPTl9SRUZSRVNILFxuICAgICAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0U3RhdGVcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW5BY3Rpb24oe1xuICBhY3Rpb25RdWV1ZSxcbiAgYWN0aW9uLFxuICBzZXRTdGF0ZSxcbn06IHtcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlXG4gIGFjdGlvbjogQWN0aW9uUXVldWVOb2RlXG4gIHNldFN0YXRlOiBEaXNwYXRjaFN0YXRlUHJvbWlzZVxufSkge1xuICBjb25zdCBwcmV2U3RhdGUgPSBhY3Rpb25RdWV1ZS5zdGF0ZVxuXG4gIGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBhY3Rpb25cblxuICBjb25zdCBwYXlsb2FkID0gYWN0aW9uLnBheWxvYWRcbiAgY29uc3QgYWN0aW9uUmVzdWx0ID0gYWN0aW9uUXVldWUuYWN0aW9uKHByZXZTdGF0ZSwgcGF5bG9hZClcblxuICBmdW5jdGlvbiBoYW5kbGVSZXN1bHQobmV4dFN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSkge1xuICAgIC8vIGlmIHdlIGRpc2NhcmRlZCB0aGlzIGFjdGlvbiwgdGhlIHN0YXRlIHNob3VsZCBhbHNvIGJlIGRpc2NhcmRlZFxuICAgIGlmIChhY3Rpb24uZGlzY2FyZGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBhY3Rpb25RdWV1ZS5zdGF0ZSA9IG5leHRTdGF0ZVxuXG4gICAgcnVuUmVtYWluaW5nQWN0aW9ucyhhY3Rpb25RdWV1ZSwgc2V0U3RhdGUpXG4gICAgYWN0aW9uLnJlc29sdmUobmV4dFN0YXRlKVxuICB9XG5cbiAgLy8gaWYgdGhlIGFjdGlvbiBpcyBhIHByb21pc2UsIHNldCB1cCBhIGNhbGxiYWNrIHRvIHJlc29sdmUgaXRcbiAgaWYgKGlzVGhlbmFibGUoYWN0aW9uUmVzdWx0KSkge1xuICAgIGFjdGlvblJlc3VsdC50aGVuKGhhbmRsZVJlc3VsdCwgKGVycikgPT4ge1xuICAgICAgcnVuUmVtYWluaW5nQWN0aW9ucyhhY3Rpb25RdWV1ZSwgc2V0U3RhdGUpXG4gICAgICBhY3Rpb24ucmVqZWN0KGVycilcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIGhhbmRsZVJlc3VsdChhY3Rpb25SZXN1bHQpXG4gIH1cbn1cblxuZnVuY3Rpb24gZGlzcGF0Y2hBY3Rpb24oXG4gIGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSxcbiAgcGF5bG9hZDogUmVkdWNlckFjdGlvbnMsXG4gIHNldFN0YXRlOiBEaXNwYXRjaFN0YXRlUHJvbWlzZVxuKSB7XG4gIGxldCByZXNvbHZlcnM6IHtcbiAgICByZXNvbHZlOiAodmFsdWU6IFJlZHVjZXJTdGF0ZSkgPT4gdm9pZFxuICAgIHJlamVjdDogKHJlYXNvbjogYW55KSA9PiB2b2lkXG4gIH0gPSB7IHJlc29sdmU6IHNldFN0YXRlLCByZWplY3Q6ICgpID0+IHt9IH1cblxuICAvLyBtb3N0IG9mIHRoZSBhY3Rpb24gdHlwZXMgYXJlIGFzeW5jIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiByZXN0b3JlXG4gIC8vIGl0J3MgaW1wb3J0YW50IHRoYXQgcmVzdG9yZSBpcyBoYW5kbGVkIHF1aWNrbHkgc2luY2UgaXQncyBmaXJlZCBvbiB0aGUgcG9wc3RhdGUgZXZlbnRcbiAgLy8gYW5kIHdlIGRvbid0IHdhbnQgdG8gYWRkIGFueSBkZWxheSBvbiBhIGJhY2svZm9yd2FyZCBuYXZcbiAgLy8gdGhpcyBvbmx5IGNyZWF0ZXMgYSBwcm9taXNlIGZvciB0aGUgYXN5bmMgYWN0aW9uc1xuICBpZiAocGF5bG9hZC50eXBlICE9PSBBQ1RJT05fUkVTVE9SRSkge1xuICAgIC8vIENyZWF0ZSB0aGUgcHJvbWlzZSBhbmQgYXNzaWduIHRoZSByZXNvbHZlcnMgdG8gdGhlIG9iamVjdC5cbiAgICBjb25zdCBkZWZlcnJlZFByb21pc2UgPSBuZXcgUHJvbWlzZTxBcHBSb3V0ZXJTdGF0ZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgcmVzb2x2ZXJzID0geyByZXNvbHZlLCByZWplY3QgfVxuICAgIH0pXG5cbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgLy8gd2UgaW1tZWRpYXRlbHkgbm90aWZ5IFJlYWN0IG9mIHRoZSBwZW5kaW5nIHByb21pc2UgLS0gdGhlIHJlc29sdmVyIGlzIGF0dGFjaGVkIHRvIHRoZSBhY3Rpb24gbm9kZVxuICAgICAgLy8gYW5kIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgYWN0aW9uIHByb21pc2UgcmVzb2x2ZXNcbiAgICAgIHNldFN0YXRlKGRlZmVycmVkUHJvbWlzZSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgbmV3QWN0aW9uOiBBY3Rpb25RdWV1ZU5vZGUgPSB7XG4gICAgcGF5bG9hZCxcbiAgICBuZXh0OiBudWxsLFxuICAgIHJlc29sdmU6IHJlc29sdmVycy5yZXNvbHZlLFxuICAgIHJlamVjdDogcmVzb2x2ZXJzLnJlamVjdCxcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eVxuICBpZiAoYWN0aW9uUXVldWUucGVuZGluZyA9PT0gbnVsbCkge1xuICAgIC8vIFRoZSBxdWV1ZSBpcyBlbXB0eSwgc28gYWRkIHRoZSBhY3Rpb24gYW5kIHN0YXJ0IGl0IGltbWVkaWF0ZWx5XG4gICAgLy8gTWFyayB0aGlzIGFjdGlvbiBhcyB0aGUgbGFzdCBpbiB0aGUgcXVldWVcbiAgICBhY3Rpb25RdWV1ZS5sYXN0ID0gbmV3QWN0aW9uXG5cbiAgICBydW5BY3Rpb24oe1xuICAgICAgYWN0aW9uUXVldWUsXG4gICAgICBhY3Rpb246IG5ld0FjdGlvbixcbiAgICAgIHNldFN0YXRlLFxuICAgIH0pXG4gIH0gZWxzZSBpZiAoXG4gICAgcGF5bG9hZC50eXBlID09PSBBQ1RJT05fTkFWSUdBVEUgfHxcbiAgICBwYXlsb2FkLnR5cGUgPT09IEFDVElPTl9SRVNUT1JFXG4gICkge1xuICAgIC8vIE5hdmlnYXRpb25zIChpbmNsdWRpbmcgYmFjay9mb3J3YXJkKSB0YWtlIHByaW9yaXR5IG92ZXIgYW55IHBlbmRpbmcgYWN0aW9ucy5cbiAgICAvLyBNYXJrIHRoZSBwZW5kaW5nIGFjdGlvbiBhcyBkaXNjYXJkZWQgKHNvIHRoZSBzdGF0ZSBpcyBuZXZlciBhcHBsaWVkKSBhbmQgc3RhcnQgdGhlIG5hdmlnYXRpb24gYWN0aW9uIGltbWVkaWF0ZWx5LlxuICAgIGFjdGlvblF1ZXVlLnBlbmRpbmcuZGlzY2FyZGVkID0gdHJ1ZVxuXG4gICAgLy8gVGhlIHJlc3Qgb2YgdGhlIGN1cnJlbnQgcXVldWUgc2hvdWxkIHN0aWxsIGV4ZWN1dGUgYWZ0ZXIgdGhpcyBuYXZpZ2F0aW9uLlxuICAgIC8vIChOb3RlIHRoYXQgaXQgY2FuJ3QgY29udGFpbiBhbnkgZWFybGllciBuYXZpZ2F0aW9ucywgYmVjYXVzZSB3ZSBhbHdheXMgcHV0IHRob3NlIGludG8gYGFjdGlvblF1ZXVlLnBlbmRpbmdgIGJ5IGNhbGxpbmcgYHJ1bkFjdGlvbmApXG4gICAgbmV3QWN0aW9uLm5leHQgPSBhY3Rpb25RdWV1ZS5wZW5kaW5nLm5leHRcblxuICAgIC8vIGlmIHRoZSBwZW5kaW5nIGFjdGlvbiB3YXMgYSBzZXJ2ZXIgYWN0aW9uLCBtYXJrIHRoZSBxdWV1ZSBhcyBuZWVkaW5nIGEgcmVmcmVzaCBvbmNlIGV2ZW50cyBhcmUgcHJvY2Vzc2VkXG4gICAgaWYgKGFjdGlvblF1ZXVlLnBlbmRpbmcucGF5bG9hZC50eXBlID09PSBBQ1RJT05fU0VSVkVSX0FDVElPTikge1xuICAgICAgYWN0aW9uUXVldWUubmVlZHNSZWZyZXNoID0gdHJ1ZVxuICAgIH1cblxuICAgIHJ1bkFjdGlvbih7XG4gICAgICBhY3Rpb25RdWV1ZSxcbiAgICAgIGFjdGlvbjogbmV3QWN0aW9uLFxuICAgICAgc2V0U3RhdGUsXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICAvLyBUaGUgcXVldWUgaXMgbm90IGVtcHR5LCBzbyBhZGQgdGhlIGFjdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZVxuICAgIC8vIEl0IHdpbGwgYmUgc3RhcnRlZCBieSBydW5SZW1haW5pbmdBY3Rpb25zIGFmdGVyIHRoZSBwcmV2aW91cyBhY3Rpb24gZmluaXNoZXNcbiAgICBpZiAoYWN0aW9uUXVldWUubGFzdCAhPT0gbnVsbCkge1xuICAgICAgYWN0aW9uUXVldWUubGFzdC5uZXh0ID0gbmV3QWN0aW9uXG4gICAgfVxuICAgIGFjdGlvblF1ZXVlLmxhc3QgPSBuZXdBY3Rpb25cbiAgfVxufVxuXG5sZXQgZ2xvYmFsQWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlIHwgbnVsbCA9IG51bGxcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU11dGFibGVBY3Rpb25RdWV1ZShcbiAgaW5pdGlhbFN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSxcbiAgaW5zdHJ1bWVudGF0aW9uSG9va3M6IENsaWVudEluc3RydW1lbnRhdGlvbkhvb2tzIHwgbnVsbFxuKTogQXBwUm91dGVyQWN0aW9uUXVldWUge1xuICBjb25zdCBhY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWUgPSB7XG4gICAgc3RhdGU6IGluaXRpYWxTdGF0ZSxcbiAgICBkaXNwYXRjaDogKHBheWxvYWQ6IFJlZHVjZXJBY3Rpb25zLCBzZXRTdGF0ZTogRGlzcGF0Y2hTdGF0ZVByb21pc2UpID0+XG4gICAgICBkaXNwYXRjaEFjdGlvbihhY3Rpb25RdWV1ZSwgcGF5bG9hZCwgc2V0U3RhdGUpLFxuICAgIGFjdGlvbjogYXN5bmMgKHN0YXRlOiBBcHBSb3V0ZXJTdGF0ZSwgYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gcmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgICAgcmV0dXJuIHJlc3VsdFxuICAgIH0sXG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBsYXN0OiBudWxsLFxuICAgIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0OlxuICAgICAgaW5zdHJ1bWVudGF0aW9uSG9va3MgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiBpbnN0cnVtZW50YXRpb25Ib29rcy5vblJvdXRlclRyYW5zaXRpb25TdGFydCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IC8vIFRoaXMgcHJvZmlsaW5nIGhvb2sgd2lsbCBiZSBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5IG5hdmlnYXRpb24uXG4gICAgICAgICAgaW5zdHJ1bWVudGF0aW9uSG9va3Mub25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnRcbiAgICAgICAgOiBudWxsLFxuICB9XG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gVGhlIGFjdGlvbiBxdWV1ZSBpcyBsYXppbHkgY3JlYXRlZCBvbiBoeWRyYXRpb24sIGJ1dCBhZnRlciB0aGF0IHBvaW50XG4gICAgLy8gaXQgZG9lc24ndCBjaGFuZ2UuIFNvIHdlIGNhbiBzdG9yZSBpdCBpbiBhIGdsb2JhbCByYXRoZXIgdGhhbiBwYXNzXG4gICAgLy8gaXQgYXJvdW5kIGV2ZXJ5d2hlcmUgdmlhIHByb3BzL2NvbnRleHQuXG4gICAgaWYgKGdsb2JhbEFjdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnRlcm5hbCBOZXh0LmpzIEVycm9yOiBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUgd2FzIGNhbGxlZCBtb3JlICcgK1xuICAgICAgICAgICd0aGFuIG9uY2UnXG4gICAgICApXG4gICAgfVxuICAgIGdsb2JhbEFjdGlvblF1ZXVlID0gYWN0aW9uUXVldWVcbiAgfVxuXG4gIHJldHVybiBhY3Rpb25RdWV1ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlKCk6IEFwcFJvdXRlclN0YXRlIHwgbnVsbCB7XG4gIHJldHVybiBnbG9iYWxBY3Rpb25RdWV1ZSAhPT0gbnVsbCA/IGdsb2JhbEFjdGlvblF1ZXVlLnN0YXRlIDogbnVsbFxufVxuXG5mdW5jdGlvbiBnZXRBcHBSb3V0ZXJBY3Rpb25RdWV1ZSgpOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSB7XG4gIGlmIChnbG9iYWxBY3Rpb25RdWV1ZSA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdJbnRlcm5hbCBOZXh0LmpzIGVycm9yOiBSb3V0ZXIgYWN0aW9uIGRpc3BhdGNoZWQgYmVmb3JlIGluaXRpYWxpemF0aW9uLidcbiAgICApXG4gIH1cbiAgcmV0dXJuIGdsb2JhbEFjdGlvblF1ZXVlXG59XG5cbmZ1bmN0aW9uIGdldFByb2ZpbGluZ0hvb2tGb3JPbk5hdmlnYXRpb25TdGFydCgpIHtcbiAgaWYgKGdsb2JhbEFjdGlvblF1ZXVlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGdsb2JhbEFjdGlvblF1ZXVlLm9uUm91dGVyVHJhbnNpdGlvblN0YXJ0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoTmF2aWdhdGVBY3Rpb24oXG4gIGhyZWY6IHN0cmluZyxcbiAgbmF2aWdhdGVUeXBlOiBOYXZpZ2F0ZUFjdGlvblsnbmF2aWdhdGVUeXBlJ10sXG4gIHNob3VsZFNjcm9sbDogYm9vbGVhbixcbiAgbGlua0luc3RhbmNlUmVmOiBMaW5rSW5zdGFuY2UgfCBudWxsXG4pOiB2b2lkIHtcbiAgLy8gVE9ETzogVGhpcyBzdHVmZiBjb3VsZCBqdXN0IGdvIGludG8gdGhlIHJlZHVjZXIuIExlYXZpbmcgYXMtaXMgZm9yIG5vd1xuICAvLyBzaW5jZSB3ZSdyZSBhYm91dCB0byByZXdyaXRlIGFsbCB0aGUgcm91dGVyIHJlZHVjZXIgc3R1ZmYgYW55d2F5LlxuICBjb25zdCB1cmwgPSBuZXcgVVJMKGFkZEJhc2VQYXRoKGhyZWYpLCBsb2NhdGlvbi5ocmVmKVxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORykge1xuICAgIHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybCA9IHVybFxuICB9XG5cbiAgc2V0TGlua0ZvckN1cnJlbnROYXZpZ2F0aW9uKGxpbmtJbnN0YW5jZVJlZilcblxuICBjb25zdCBvblJvdXRlclRyYW5zaXRpb25TdGFydCA9IGdldFByb2ZpbGluZ0hvb2tGb3JPbk5hdmlnYXRpb25TdGFydCgpXG4gIGlmIChvblJvdXRlclRyYW5zaXRpb25TdGFydCAhPT0gbnVsbCkge1xuICAgIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0KGhyZWYsIG5hdmlnYXRlVHlwZSlcbiAgfVxuXG4gIGRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKHtcbiAgICB0eXBlOiBBQ1RJT05fTkFWSUdBVEUsXG4gICAgdXJsLFxuICAgIGlzRXh0ZXJuYWxVcmw6IGlzRXh0ZXJuYWxVUkwodXJsKSxcbiAgICBsb2NhdGlvblNlYXJjaDogbG9jYXRpb24uc2VhcmNoLFxuICAgIHNob3VsZFNjcm9sbCxcbiAgICBuYXZpZ2F0ZVR5cGUsXG4gICAgYWxsb3dBbGlhc2luZzogdHJ1ZSxcbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoVHJhdmVyc2VBY3Rpb24oXG4gIGhyZWY6IHN0cmluZyxcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGUgfCB1bmRlZmluZWRcbikge1xuICBjb25zdCBvblJvdXRlclRyYW5zaXRpb25TdGFydCA9IGdldFByb2ZpbGluZ0hvb2tGb3JPbk5hdmlnYXRpb25TdGFydCgpXG4gIGlmIChvblJvdXRlclRyYW5zaXRpb25TdGFydCAhPT0gbnVsbCkge1xuICAgIG9uUm91dGVyVHJhbnNpdGlvblN0YXJ0KGhyZWYsICd0cmF2ZXJzZScpXG4gIH1cbiAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgIHR5cGU6IEFDVElPTl9SRVNUT1JFLFxuICAgIHVybDogbmV3IFVSTChocmVmKSxcbiAgICB0cmVlLFxuICB9KVxufVxuXG4vKipcbiAqIFRoZSBhcHAgcm91dGVyIHRoYXQgaXMgZXhwb3NlZCB0aHJvdWdoIGB1c2VSb3V0ZXJgLiBUaGVzZSBhcmUgcHVibGljIEFQSVxuICogbWV0aG9kcy4gSW50ZXJuYWwgTmV4dC5qcyBjb2RlIHNob3VsZCBjYWxsIHRoZSBsb3dlciBsZXZlbCBtZXRob2RzIGRpcmVjdGx5XG4gKiAoYWx0aG91Z2ggdGhlcmUncyBsb3RzIG9mIGV4aXN0aW5nIGNvZGUgdGhhdCBkb2Vzbid0IGRvIHRoYXQpLlxuICovXG5leHBvcnQgY29uc3QgcHVibGljQXBwUm91dGVySW5zdGFuY2U6IEFwcFJvdXRlckluc3RhbmNlID0ge1xuICBiYWNrOiAoKSA9PiB3aW5kb3cuaGlzdG9yeS5iYWNrKCksXG4gIGZvcndhcmQ6ICgpID0+IHdpbmRvdy5oaXN0b3J5LmZvcndhcmQoKSxcbiAgcHJlZmV0Y2g6IHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gLy8gVW5saWtlIHRoZSBvbGQgaW1wbGVtZW50YXRpb24sIHRoZSBTZWdtZW50IENhY2hlIGRvZXNuJ3Qgc3RvcmUgaXRzXG4gICAgICAvLyBkYXRhIGluIHRoZSByb3V0ZXIgcmVkdWNlciBzdGF0ZTsgaXQgd3JpdGVzIGludG8gYSBnbG9iYWwgbXV0YWJsZVxuICAgICAgLy8gY2FjaGUuIFNvIHdlIGRvbid0IG5lZWQgdG8gZGlzcGF0Y2ggYW4gYWN0aW9uLlxuICAgICAgKGhyZWY6IHN0cmluZywgb3B0aW9ucz86IFByZWZldGNoT3B0aW9ucykgPT4ge1xuICAgICAgICBjb25zdCBhY3Rpb25RdWV1ZSA9IGdldEFwcFJvdXRlckFjdGlvblF1ZXVlKClcbiAgICAgICAgY29uc3QgcHJlZmV0Y2hLaW5kID0gb3B0aW9ucz8ua2luZCA/PyBQcmVmZXRjaEtpbmQuQVVUT1xuXG4gICAgICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBvZmZlciBhIHdheSB0byBpc3N1ZSBhIHJ1bnRpbWUgcHJlZmV0Y2ggdmlhIGByb3V0ZXIucHJlZmV0Y2goKWAuXG4gICAgICAgIC8vIFRoaXMgd2lsbCBiZSBwb3NzaWJsZSB3aGVuIHdlIHVwZGF0ZSBpdHMgQVBJIHRvIG5vdCB0YWtlIGEgUHJlZmV0Y2hLaW5kLlxuICAgICAgICBsZXQgZmV0Y2hTdHJhdGVneTogUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneVxuICAgICAgICBzd2l0Y2ggKHByZWZldGNoS2luZCkge1xuICAgICAgICAgIGNhc2UgUHJlZmV0Y2hLaW5kLkFVVE86IHtcbiAgICAgICAgICAgIC8vIFdlIGRlZmF1bHQgdG8gUFBSLiBXZSdsbCBkaXNjb3ZlciB3aGV0aGVyIG9yIG5vdCB0aGUgcm91dGUgc3VwcG9ydHMgaXQgd2l0aCB0aGUgaW5pdGlhbCBwcmVmZXRjaC5cbiAgICAgICAgICAgIGZldGNoU3RyYXRlZ3kgPSBGZXRjaFN0cmF0ZWd5LlBQUlxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBQcmVmZXRjaEtpbmQuRlVMTDoge1xuICAgICAgICAgICAgZmV0Y2hTdHJhdGVneSA9IEZldGNoU3RyYXRlZ3kuRnVsbFxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBQcmVmZXRjaEtpbmQuVEVNUE9SQVJZOiB7XG4gICAgICAgICAgICAvLyBUaGlzIGNvbmNlcHQgZG9lc24ndCBleGlzdCBpbiB0aGUgc2VnbWVudCBjYWNoZSBpbXBsZW1lbnRhdGlvbi5cbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwcmVmZXRjaEtpbmQgc2F0aXNmaWVzIG5ldmVyXG4gICAgICAgICAgICAvLyBEZXNwaXRlIHR5cGVzY3JpcHQgdGhpbmtpbmcgdGhhdCB0aGlzIGNhbid0IGhhcHBlbixcbiAgICAgICAgICAgIC8vIHdlIG1pZ2h0IGdldCBhbiB1bmV4cGVjdGVkIHZhbHVlIGZyb20gdXNlciBjb2RlLlxuICAgICAgICAgICAgLy8gV2UgZG9uJ3Qga25vdyB3aGF0IHRoZXkgd2FudCwgYnV0IHdlIGtub3cgdGhleSB3YW50IGEgcHJlZmV0Y2gsXG4gICAgICAgICAgICAvLyBzbyB1c2UgdGhlIGRlZmF1bHQuXG4gICAgICAgICAgICBmZXRjaFN0cmF0ZWd5ID0gRmV0Y2hTdHJhdGVneS5QUFJcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwcmVmZXRjaFdpdGhTZWdtZW50Q2FjaGUoXG4gICAgICAgICAgaHJlZixcbiAgICAgICAgICBhY3Rpb25RdWV1ZS5zdGF0ZS5uZXh0VXJsLFxuICAgICAgICAgIGFjdGlvblF1ZXVlLnN0YXRlLnRyZWUsXG4gICAgICAgICAgZmV0Y2hTdHJhdGVneSxcbiAgICAgICAgICBvcHRpb25zPy5vbkludmFsaWRhdGUgPz8gbnVsbFxuICAgICAgICApXG4gICAgICB9XG4gICAgOiAoaHJlZjogc3RyaW5nLCBvcHRpb25zPzogUHJlZmV0Y2hPcHRpb25zKSA9PiB7XG4gICAgICAgIC8vIFVzZSB0aGUgb2xkIHByZWZldGNoIGltcGxlbWVudGF0aW9uLlxuICAgICAgICBjb25zdCBhY3Rpb25RdWV1ZSA9IGdldEFwcFJvdXRlckFjdGlvblF1ZXVlKClcbiAgICAgICAgY29uc3QgdXJsID0gY3JlYXRlUHJlZmV0Y2hVUkwoaHJlZilcbiAgICAgICAgaWYgKHVybCAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoZSBwcmVmZXRjaCByZWR1Y2VyIGRvZXNuJ3QgYWN0dWFsbHkgdXBkYXRlIGFueSBzdGF0ZSBvclxuICAgICAgICAgIC8vIHRyaWdnZXIgYSByZXJlbmRlci4gSXQganVzdCB3cml0ZXMgdG8gYSBtdXRhYmxlIGNhY2hlLiBTbyB3ZVxuICAgICAgICAgIC8vIHNob3VsZG4ndCBib3RoZXIgY2FsbGluZyBzZXRTdGF0ZS9kaXNwYXRjaDsgd2UgY2FuIGp1c3QgcmUtcnVuXG4gICAgICAgICAgLy8gdGhlIHJlZHVjZXIgZGlyZWN0bHkgdXNpbmcgdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAgICAgICAgLy8gVE9ETzogUmVmYWN0b3IgdGhpcyBhd2F5IGZyb20gYSBcInJlZHVjZXJcIiBzbyBpdCdzXG4gICAgICAgICAgLy8gbGVzcyBjb25mdXNpbmcuXG4gICAgICAgICAgcHJlZmV0Y2hSZWR1Y2VyKGFjdGlvblF1ZXVlLnN0YXRlLCB7XG4gICAgICAgICAgICB0eXBlOiBBQ1RJT05fUFJFRkVUQ0gsXG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBraW5kOiBvcHRpb25zPy5raW5kID8/IFByZWZldGNoS2luZC5GVUxMLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gIHJlcGxhY2U6IChocmVmOiBzdHJpbmcsIG9wdGlvbnM/OiBOYXZpZ2F0ZU9wdGlvbnMpID0+IHtcbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hOYXZpZ2F0ZUFjdGlvbihocmVmLCAncmVwbGFjZScsIG9wdGlvbnM/LnNjcm9sbCA/PyB0cnVlLCBudWxsKVxuICAgIH0pXG4gIH0sXG4gIHB1c2g6IChocmVmOiBzdHJpbmcsIG9wdGlvbnM/OiBOYXZpZ2F0ZU9wdGlvbnMpID0+IHtcbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hOYXZpZ2F0ZUFjdGlvbihocmVmLCAncHVzaCcsIG9wdGlvbnM/LnNjcm9sbCA/PyB0cnVlLCBudWxsKVxuICAgIH0pXG4gIH0sXG4gIHJlZnJlc2g6ICgpID0+IHtcbiAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgICAgICB0eXBlOiBBQ1RJT05fUkVGUkVTSCxcbiAgICAgICAgb3JpZ2luOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luLFxuICAgICAgfSlcbiAgICB9KVxuICB9LFxuICBobXJSZWZyZXNoOiAoKSA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdobXJSZWZyZXNoIGNhbiBvbmx5IGJlIHVzZWQgaW4gZGV2ZWxvcG1lbnQgbW9kZS4gUGxlYXNlIHVzZSByZWZyZXNoIGluc3RlYWQuJ1xuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdGFydFRyYW5zaXRpb24oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgICAgdHlwZTogQUNUSU9OX0hNUl9SRUZSRVNILFxuICAgICAgICAgIG9yaWdpbjogd2luZG93LmxvY2F0aW9uLm9yaWdpbixcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9LFxufVxuXG4vLyBFeGlzdHMgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4gRG9uJ3QgdXNlIGluIGFwcGxpY2F0aW9uIGNvZGUuXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5leHQpIHtcbiAgd2luZG93Lm5leHQucm91dGVyID0gcHVibGljQXBwUm91dGVySW5zdGFuY2Vcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUiLCJkaXNwYXRjaE5hdmlnYXRlQWN0aW9uIiwiZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbiIsImdldEN1cnJlbnRBcHBSb3V0ZXJTdGF0ZSIsInB1YmxpY0FwcFJvdXRlckluc3RhbmNlIiwicnVuUmVtYWluaW5nQWN0aW9ucyIsImFjdGlvblF1ZXVlIiwic2V0U3RhdGUiLCJwZW5kaW5nIiwibmV4dCIsInJ1bkFjdGlvbiIsImFjdGlvbiIsIm5lZWRzUmVmcmVzaCIsImRpc3BhdGNoIiwidHlwZSIsIkFDVElPTl9SRUZSRVNIIiwib3JpZ2luIiwid2luZG93IiwibG9jYXRpb24iLCJwcmV2U3RhdGUiLCJzdGF0ZSIsInBheWxvYWQiLCJhY3Rpb25SZXN1bHQiLCJoYW5kbGVSZXN1bHQiLCJuZXh0U3RhdGUiLCJkaXNjYXJkZWQiLCJyZXNvbHZlIiwiaXNUaGVuYWJsZSIsInRoZW4iLCJlcnIiLCJyZWplY3QiLCJkaXNwYXRjaEFjdGlvbiIsInJlc29sdmVycyIsIkFDVElPTl9SRVNUT1JFIiwiZGVmZXJyZWRQcm9taXNlIiwiUHJvbWlzZSIsInN0YXJ0VHJhbnNpdGlvbiIsIm5ld0FjdGlvbiIsImxhc3QiLCJBQ1RJT05fTkFWSUdBVEUiLCJBQ1RJT05fU0VSVkVSX0FDVElPTiIsImdsb2JhbEFjdGlvblF1ZXVlIiwiaW5pdGlhbFN0YXRlIiwiaW5zdHJ1bWVudGF0aW9uSG9va3MiLCJyZXN1bHQiLCJyZWR1Y2VyIiwib25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQiLCJFcnJvciIsImdldEFwcFJvdXRlckFjdGlvblF1ZXVlIiwiZ2V0UHJvZmlsaW5nSG9va0Zvck9uTmF2aWdhdGlvblN0YXJ0IiwiaHJlZiIsIm5hdmlnYXRlVHlwZSIsInNob3VsZFNjcm9sbCIsImxpbmtJbnN0YW5jZVJlZiIsInVybCIsIlVSTCIsImFkZEJhc2VQYXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9BUFBfTkFWX0ZBSUxfSEFORExJTkciLCJfX3BlbmRpbmdVcmwiLCJzZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24iLCJkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiIsImlzRXh0ZXJuYWxVcmwiLCJpc0V4dGVybmFsVVJMIiwibG9jYXRpb25TZWFyY2giLCJzZWFyY2giLCJhbGxvd0FsaWFzaW5nIiwidHJlZSIsImJhY2siLCJoaXN0b3J5IiwiZm9yd2FyZCIsInByZWZldGNoIiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwib3B0aW9ucyIsInByZWZldGNoS2luZCIsImtpbmQiLCJQcmVmZXRjaEtpbmQiLCJBVVRPIiwiZmV0Y2hTdHJhdGVneSIsIkZldGNoU3RyYXRlZ3kiLCJQUFIiLCJGVUxMIiwiRnVsbCIsIlRFTVBPUkFSWSIsInByZWZldGNoV2l0aFNlZ21lbnRDYWNoZSIsIm5leHRVcmwiLCJvbkludmFsaWRhdGUiLCJjcmVhdGVQcmVmZXRjaFVSTCIsInByZWZldGNoUmVkdWNlciIsIkFDVElPTl9QUkVGRVRDSCIsInJlcGxhY2UiLCJzY3JvbGwiLCJwdXNoIiwicmVmcmVzaCIsImhtclJlZnJlc2giLCJOT0RFX0VOViIsIkFDVElPTl9ITVJfUkVGUkVTSCIsInJvdXRlciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-instance.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js": /*!*******************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js ***! \*******************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/* __next_internal_client_entry_do_not_use__ cjs */ \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 createEmptyCacheNode: function() {\n return createEmptyCacheNode;\n },\n createPrefetchURL: function() {\n return createPrefetchURL;\n },\n default: function() {\n return AppRouter;\n },\n isExternalURL: function() {\n return isExternalURL;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./router-reducer/create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\nconst _useactionqueue = __webpack_require__(/*! ./use-action-queue */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/use-action-queue.js\");\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst _addbasepath = __webpack_require__(/*! ../add-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/add-base-path.js\");\nconst _approuterannouncer = __webpack_require__(/*! ./app-router-announcer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-announcer.js\");\nconst _redirectboundary = __webpack_require__(/*! ./redirect-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-boundary.js\");\nconst _findheadincache = __webpack_require__(/*! ./router-reducer/reducers/find-head-in-cache */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js\");\nconst _unresolvedthenable = __webpack_require__(/*! ./unresolved-thenable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unresolved-thenable.js\");\nconst _removebasepath = __webpack_require__(/*! ../remove-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ../has-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/has-base-path.js\");\nconst _computechangedpath = __webpack_require__(/*! ./router-reducer/compute-changed-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _navfailurehandler = __webpack_require__(/*! ./nav-failure-handler */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/nav-failure-handler.js\");\nconst _approuterinstance = __webpack_require__(/*! ./app-router-instance */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-instance.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\");\nconst _links = __webpack_require__(/*! ./links */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/links.js\");\nconst _rooterrorboundary = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./errors/root-error-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/root-error-boundary.js\"));\nconst _globalerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./builtin/global-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/builtin/global-error.js\"));\nconst _boundarycomponents = __webpack_require__(/*! ../../lib/framework/boundary-components */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/lib/framework/boundary-components.js\");\nconst globalMutable = {};\nfunction isExternalURL(url) {\n return url.origin !== window.location.origin;\n}\nfunction createPrefetchURL(href) {\n // Don't prefetch for bots as they don't navigate.\n if ((0, _isbot.isBot)(window.navigator.userAgent)) {\n return null;\n }\n let url;\n try {\n url = new URL((0, _addbasepath.addBasePath)(href), window.location.href);\n } catch (_) {\n // TODO: Does this need to throw or can we just console.error instead? Does\n // anyone rely on this throwing? (Seems unlikely.)\n throw Object.defineProperty(new Error(\"Cannot prefetch '\" + href + \"' because it cannot be converted to a URL.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E234\",\n enumerable: false,\n configurable: true\n });\n }\n // Don't prefetch during development (improves compilation performance)\n if (true) {\n return null;\n }\n // External urls can't be prefetched in the same way.\n if (isExternalURL(url)) {\n return null;\n }\n return url;\n}\nfunction HistoryUpdater(param) {\n let { appRouterState } = param;\n (0, _react.useInsertionEffect)(()=>{\n if (false) {}\n const { tree, pushRef, canonicalUrl } = appRouterState;\n const historyState = {\n ...pushRef.preserveCustomHistoryState ? window.history.state : {},\n // Identifier is shortened intentionally.\n // __NA is used to identify if the history entry can be handled by the app-router.\n // __N is used to identify if the history entry can be handled by the old router.\n __NA: true,\n __PRIVATE_NEXTJS_INTERNALS_TREE: tree\n };\n if (pushRef.pendingPush && // Skip pushing an additional history entry if the canonicalUrl is the same as the current url.\n // This mirrors the browser behavior for normal navigation.\n (0, _createhreffromurl.createHrefFromUrl)(new URL(window.location.href)) !== canonicalUrl) {\n // This intentionally mutates React state, pushRef is overwritten to ensure additional push/replace calls do not trigger an additional history entry.\n pushRef.pendingPush = false;\n window.history.pushState(historyState, '', canonicalUrl);\n } else {\n window.history.replaceState(historyState, '', canonicalUrl);\n }\n }, [\n appRouterState\n ]);\n (0, _react.useEffect)(()=>{\n // The Next-Url and the base tree may affect the result of a prefetch\n // task. Re-prefetch all visible links with the updated values. In most\n // cases, this will not result in any new network requests, only if\n // the prefetch result actually varies on one of these inputs.\n if (false) {}\n }, [\n appRouterState.nextUrl,\n appRouterState.tree\n ]);\n return null;\n}\n_c = HistoryUpdater;\nfunction createEmptyCacheNode() {\n return {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n };\n}\nfunction copyNextJsInternalHistoryState(data) {\n if (data == null) data = {};\n const currentState = window.history.state;\n const __NA = currentState == null ? void 0 : currentState.__NA;\n if (__NA) {\n data.__NA = __NA;\n }\n const __PRIVATE_NEXTJS_INTERNALS_TREE = currentState == null ? void 0 : currentState.__PRIVATE_NEXTJS_INTERNALS_TREE;\n if (__PRIVATE_NEXTJS_INTERNALS_TREE) {\n data.__PRIVATE_NEXTJS_INTERNALS_TREE = __PRIVATE_NEXTJS_INTERNALS_TREE;\n }\n return data;\n}\nfunction Head(param) {\n let { headCacheNode } = param;\n // If this segment has a `prefetchHead`, it's the statically prefetched data.\n // We should use that on initial render instead of `head`. Then we'll switch\n // to `head` when the dynamic response streams in.\n const head = headCacheNode !== null ? headCacheNode.head : null;\n const prefetchHead = headCacheNode !== null ? headCacheNode.prefetchHead : null;\n // If no prefetch data is available, then we go straight to rendering `head`.\n const resolvedPrefetchRsc = prefetchHead !== null ? prefetchHead : head;\n // We use `useDeferredValue` to handle switching between the prefetched and\n // final values. The second argument is returned on initial render, then it\n // re-renders with the first argument.\n return (0, _react.useDeferredValue)(head, resolvedPrefetchRsc);\n}\n_c1 = Head;\n/**\n * The global router that wraps the application components.\n */ function Router(param) {\n let { actionQueue, assetPrefix, globalError } = param;\n const state = (0, _useactionqueue.useActionQueue)(actionQueue);\n const { canonicalUrl } = state;\n // Add memoized pathname/query for useSearchParams and usePathname.\n const { searchParams, pathname } = (0, _react.useMemo)(()=>{\n const url = new URL(canonicalUrl, false ? 0 : window.location.href);\n return {\n // This is turned into a readonly class in `useSearchParams`\n searchParams: url.searchParams,\n pathname: (0, _hasbasepath.hasBasePath)(url.pathname) ? (0, _removebasepath.removeBasePath)(url.pathname) : url.pathname\n };\n }, [\n canonicalUrl\n ]);\n if (true) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const { cache, prefetchCache, tree } = state;\n // This hook is in a conditional but that is ok because `process.env.NODE_ENV` never changes\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n // Add `window.nd` for debugging purposes.\n // This is not meant for use in applications as concurrent rendering will affect the cache/tree/router.\n // @ts-ignore this is for debugging\n window.nd = {\n router: _approuterinstance.publicAppRouterInstance,\n cache,\n prefetchCache,\n tree\n };\n }, [\n cache,\n prefetchCache,\n tree\n ]);\n }\n (0, _react.useEffect)(()=>{\n // If the app is restored from bfcache, it's possible that\n // pushRef.mpaNavigation is true, which would mean that any re-render of this component\n // would trigger the mpa navigation logic again from the lines below.\n // This will restore the router to the initial state in the event that the app is restored from bfcache.\n function handlePageShow(event) {\n var _window_history_state;\n if (!event.persisted || !((_window_history_state = window.history.state) == null ? void 0 : _window_history_state.__PRIVATE_NEXTJS_INTERNALS_TREE)) {\n return;\n }\n // Clear the pendingMpaPath value so that a subsequent MPA navigation to the same URL can be triggered.\n // This is necessary because if the browser restored from bfcache, the pendingMpaPath would still be set to the value\n // of the last MPA navigation.\n globalMutable.pendingMpaPath = undefined;\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(window.location.href),\n tree: window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE\n });\n }\n window.addEventListener('pageshow', handlePageShow);\n return ()=>{\n window.removeEventListener('pageshow', handlePageShow);\n };\n }, []);\n (0, _react.useEffect)(()=>{\n // Ensure that any redirect errors that bubble up outside of the RedirectBoundary\n // are caught and handled by the router.\n function handleUnhandledRedirect(event) {\n const error = 'reason' in event ? event.reason : event.error;\n if ((0, _redirecterror.isRedirectError)(error)) {\n event.preventDefault();\n const url = (0, _redirect.getURLFromRedirectError)(error);\n const redirectType = (0, _redirect.getRedirectTypeFromError)(error);\n // TODO: This should access the router methods directly, rather than\n // go through the public interface.\n if (redirectType === _redirecterror.RedirectType.push) {\n _approuterinstance.publicAppRouterInstance.push(url, {});\n } else {\n _approuterinstance.publicAppRouterInstance.replace(url, {});\n }\n }\n }\n window.addEventListener('error', handleUnhandledRedirect);\n window.addEventListener('unhandledrejection', handleUnhandledRedirect);\n return ()=>{\n window.removeEventListener('error', handleUnhandledRedirect);\n window.removeEventListener('unhandledrejection', handleUnhandledRedirect);\n };\n }, []);\n // When mpaNavigation flag is set do a hard navigation to the new url.\n // Infinitely suspend because we don't actually want to rerender any child\n // components with the new URL and any entangled state updates shouldn't\n // commit either (eg: useTransition isPending should stay true until the page\n // unloads).\n //\n // This is a side effect in render. Don't try this at home, kids. It's\n // probably safe because we know this is a singleton component and it's never\n // in . At least I hope so. (It will run twice in dev strict mode,\n // but that's... fine?)\n const { pushRef } = state;\n if (pushRef.mpaNavigation) {\n // if there's a re-render, we don't want to trigger another redirect if one is already in flight to the same URL\n if (globalMutable.pendingMpaPath !== canonicalUrl) {\n const location = window.location;\n if (pushRef.pendingPush) {\n location.assign(canonicalUrl);\n } else {\n location.replace(canonicalUrl);\n }\n globalMutable.pendingMpaPath = canonicalUrl;\n }\n // TODO-APP: Should we listen to navigateerror here to catch failed\n // navigations somehow? And should we call window.stop() if a SPA navigation\n // should interrupt an MPA one?\n // NOTE: This is intentionally using `throw` instead of `use` because we're\n // inside an externally mutable condition (pushRef.mpaNavigation), which\n // violates the rules of hooks.\n throw _unresolvedthenable.unresolvedThenable;\n }\n (0, _react.useEffect)(()=>{\n const originalPushState = window.history.pushState.bind(window.history);\n const originalReplaceState = window.history.replaceState.bind(window.history);\n // Ensure the canonical URL in the Next.js Router is updated when the URL is changed so that `usePathname` and `useSearchParams` hold the pushed values.\n const applyUrlFromHistoryPushReplace = (url)=>{\n var _window_history_state;\n const href = window.location.href;\n const tree = (_window_history_state = window.history.state) == null ? void 0 : _window_history_state.__PRIVATE_NEXTJS_INTERNALS_TREE;\n (0, _react.startTransition)(()=>{\n (0, _useactionqueue.dispatchAppRouterAction)({\n type: _routerreducertypes.ACTION_RESTORE,\n url: new URL(url != null ? url : href, href),\n tree\n });\n });\n };\n /**\n * Patch pushState to ensure external changes to the history are reflected in the Next.js Router.\n * Ensures Next.js internal history state is copied to the new history entry.\n * Ensures usePathname and useSearchParams hold the newly provided url.\n */ window.history.pushState = function pushState(data, _unused, url) {\n // Avoid a loop when Next.js internals trigger pushState/replaceState\n if ((data == null ? void 0 : data.__NA) || (data == null ? void 0 : data._N)) {\n return originalPushState(data, _unused, url);\n }\n data = copyNextJsInternalHistoryState(data);\n if (url) {\n applyUrlFromHistoryPushReplace(url);\n }\n return originalPushState(data, _unused, url);\n };\n /**\n * Patch replaceState to ensure external changes to the history are reflected in the Next.js Router.\n * Ensures Next.js internal history state is copied to the new history entry.\n * Ensures usePathname and useSearchParams hold the newly provided url.\n */ window.history.replaceState = function replaceState(data, _unused, url) {\n // Avoid a loop when Next.js internals trigger pushState/replaceState\n if ((data == null ? void 0 : data.__NA) || (data == null ? void 0 : data._N)) {\n return originalReplaceState(data, _unused, url);\n }\n data = copyNextJsInternalHistoryState(data);\n if (url) {\n applyUrlFromHistoryPushReplace(url);\n }\n return originalReplaceState(data, _unused, url);\n };\n /**\n * Handle popstate event, this is used to handle back/forward in the browser.\n * By default dispatches ACTION_RESTORE, however if the history entry was not pushed/replaced by app-router it will reload the page.\n * That case can happen when the old router injected the history entry.\n */ const onPopState = (event)=>{\n if (!event.state) {\n // TODO-APP: this case only happens when pushState/replaceState was called outside of Next.js. It should probably reload the page in this case.\n return;\n }\n // This case happens when the history entry was pushed by the `pages` router.\n if (!event.state.__NA) {\n window.location.reload();\n return;\n }\n // TODO-APP: Ideally the back button should not use startTransition as it should apply the updates synchronously\n // Without startTransition works if the cache is there for this path\n (0, _react.startTransition)(()=>{\n (0, _approuterinstance.dispatchTraverseAction)(window.location.href, event.state.__PRIVATE_NEXTJS_INTERNALS_TREE);\n });\n };\n // Register popstate event to call onPopstate.\n window.addEventListener('popstate', onPopState);\n return ()=>{\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n window.removeEventListener('popstate', onPopState);\n };\n }, []);\n const { cache, tree, nextUrl, focusAndScrollRef } = state;\n const matchingHead = (0, _react.useMemo)(()=>{\n return (0, _findheadincache.findHeadInCache)(cache, tree[1]);\n }, [\n cache,\n tree\n ]);\n // Add memoized pathParams for useParams.\n const pathParams = (0, _react.useMemo)(()=>{\n return (0, _computechangedpath.getSelectedParams)(tree);\n }, [\n tree\n ]);\n const layoutRouterContext = (0, _react.useMemo)(()=>{\n return {\n parentTree: tree,\n parentCacheNode: cache,\n parentSegmentPath: null,\n // Root node always has `url`\n // Provided in AppTreeContext to ensure it can be overwritten in layout-router\n url: canonicalUrl\n };\n }, [\n tree,\n cache,\n canonicalUrl\n ]);\n const globalLayoutRouterContext = (0, _react.useMemo)(()=>{\n return {\n tree,\n focusAndScrollRef,\n nextUrl\n };\n }, [\n tree,\n focusAndScrollRef,\n nextUrl\n ]);\n let head;\n if (matchingHead !== null) {\n // The head is wrapped in an extra component so we can use\n // `useDeferredValue` to swap between the prefetched and final versions of\n // the head. (This is what LayoutRouter does for segment data, too.)\n //\n // The `key` is used to remount the component whenever the head moves to\n // a different segment.\n const [headCacheNode, headKey, headKeyWithoutSearchParams] = matchingHead;\n head = /*#__PURE__*/ (0, _jsxruntime.jsx)(Head, {\n headCacheNode: headCacheNode\n }, false ? 0 : headKey);\n } else {\n head = null;\n }\n let content = /*#__PURE__*/ (0, _jsxruntime.jsxs)(_redirectboundary.RedirectBoundary, {\n children: [\n head,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_boundarycomponents.RootLayoutBoundary, {\n children: cache.rsc\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_approuterannouncer.AppRouterAnnouncer, {\n tree: tree\n })\n ]\n });\n if (true) {\n // In development, we apply few error boundaries and hot-reloader:\n // - DevRootHTTPAccessFallbackBoundary: avoid using navigation API like notFound() in root layout\n // - HotReloader:\n // - hot-reload the app when the code changes\n // - render dev overlay\n // - catch runtime errors and display global-error when necessary\n if (true) {\n const { DevRootHTTPAccessFallbackBoundary } = __webpack_require__(/*! ./dev-root-http-access-fallback-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js\");\n content = /*#__PURE__*/ (0, _jsxruntime.jsx)(DevRootHTTPAccessFallbackBoundary, {\n children: content\n });\n }\n const HotReloader = (__webpack_require__(/*! ../dev/hot-reloader/app/hot-reloader-app */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\")[\"default\"]);\n content = /*#__PURE__*/ (0, _jsxruntime.jsx)(HotReloader, {\n assetPrefix: assetPrefix,\n globalError: globalError,\n children: content\n });\n } else {}\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(HistoryUpdater, {\n appRouterState: state\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(RuntimeStyles, {}),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.PathParamsContext.Provider, {\n value: pathParams,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.PathnameContext.Provider, {\n value: pathname,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_hooksclientcontextsharedruntime.SearchParamsContext.Provider, {\n value: searchParams,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.GlobalLayoutRouterContext.Provider, {\n value: globalLayoutRouterContext,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.AppRouterContext.Provider, {\n value: _approuterinstance.publicAppRouterInstance,\n children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_approutercontextsharedruntime.LayoutRouterContext.Provider, {\n value: layoutRouterContext,\n children: content\n })\n })\n })\n })\n })\n })\n ]\n });\n}\n_c2 = Router;\nfunction AppRouter(param) {\n let { actionQueue, globalErrorState, assetPrefix } = param;\n (0, _navfailurehandler.useNavFailureHandler)();\n const router = /*#__PURE__*/ (0, _jsxruntime.jsx)(Router, {\n actionQueue: actionQueue,\n assetPrefix: assetPrefix,\n globalError: globalErrorState\n });\n // At the very top level, use the default GlobalError component as the final fallback.\n // When the app router itself fails, which means the framework itself fails, we show the default error.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_rooterrorboundary.default, {\n errorComponent: _globalerror.default,\n children: router\n });\n}\n_c3 = AppRouter;\nconst runtimeStyles = new Set();\nlet runtimeStyleChanged = new Set();\nglobalThis._N_E_STYLE_LOAD = function(href) {\n let len = runtimeStyles.size;\n runtimeStyles.add(href);\n if (runtimeStyles.size !== len) {\n runtimeStyleChanged.forEach((cb)=>cb());\n }\n // TODO figure out how to get a promise here\n // But maybe it's not necessary as react would block rendering until it's loaded\n return Promise.resolve();\n};\nfunction RuntimeStyles() {\n _s();\n const [, forceUpdate] = _react.default.useState(0);\n const renderedStylesSize = runtimeStyles.size;\n (0, _react.useEffect)(()=>{\n const changed = ()=>forceUpdate((c)=>c + 1);\n runtimeStyleChanged.add(changed);\n if (renderedStylesSize !== runtimeStyles.size) {\n changed();\n }\n return ()=>{\n runtimeStyleChanged.delete(changed);\n };\n }, [\n renderedStylesSize,\n forceUpdate\n ]);\n const dplId = false ? 0 : '';\n return [\n ...runtimeStyles\n ].map((href, i)=>/*#__PURE__*/ (0, _jsxruntime.jsx)(\"link\", {\n rel: \"stylesheet\",\n href: \"\" + href + dplId,\n // @ts-ignore\n precedence: \"next\"\n }, i));\n}\n_s(RuntimeStyles, \"Eht7Kgdrrgt5B4LSklQ7qDPo8Aw=\");\n_c4 = RuntimeStyles;\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.js.map\nvar _c, _c1, _c2, _c3, _c4;\n$RefreshReg$(_c, \"HistoryUpdater\");\n$RefreshReg$(_c1, \"Head\");\n$RefreshReg$(_c2, \"Router\");\n$RefreshReg$(_c3, \"AppRouter\");\n$RefreshReg$(_c4, \"RuntimeStyles\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYXBwLXJvdXRlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQTZJZ0JBLG9CQUFvQjtlQUFwQkE7O0lBOUVBQyxtQkFBaUI7ZUFBakJBOztJQXdmaEIsT0EwQkM7ZUExQnVCQzs7SUFuZ0JSQyxhQUFhO2VBQWJBOzs7Ozs7NkVBNUNUOzJEQUtBO2dEQUV3QjsrQ0FFRzs2REFLM0I7NENBQ2lEO21DQUNsQzt5Q0FDTTtnREFDTzs4Q0FDRjs2Q0FDRDtnREFDRzs0Q0FDSjt5Q0FDSDtnREFDTTsrQ0FFRzsrQ0FNOUI7c0NBQzJEOzJDQUNwQjttQ0FDYjt3RkFDSDtrRkFDQztnREFDSTtBQUVuQyxNQUFNQyxnQkFFRixDQUFDO0FBRUUsU0FBU0QsY0FBY0UsR0FBUTtJQUNwQyxPQUFPQSxJQUFJQyxNQUFNLEtBQUtDLE9BQU9DLFFBQVEsQ0FBQ0YsTUFBTTtBQUM5QztBQVNPLFNBQVNMLGtCQUFrQlEsSUFBWTtJQUM1QyxrREFBa0Q7SUFDbEQsSUFBSUMsQ0FBQUEsR0FBQUEsT0FBQUEsS0FBQUEsRUFBTUgsT0FBT0ksU0FBUyxDQUFDQyxTQUFTLEdBQUc7UUFDckMsT0FBTztJQUNUO0lBRUEsSUFBSVA7SUFDSixJQUFJO1FBQ0ZBLE1BQU0sSUFBSVEsSUFBSUMsQ0FBQUEsR0FBQUEsYUFBQUEsV0FBQUEsRUFBWUwsT0FBT0YsT0FBT0MsUUFBUSxDQUFDQyxJQUFJO0lBQ3ZELEVBQUUsT0FBT00sR0FBRztRQUNWLDJFQUEyRTtRQUMzRSxrREFBa0Q7UUFDbEQsTUFBTSxxQkFFTCxDQUZLLElBQUlDLE1BQ1Asc0JBQW1CUCxPQUFLLCtDQURyQjttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFFQSx1RUFB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R0FDbkMscUJBQUNDLFFBQUFBO1lBRUNDLEtBQUk7WUFDSjlKLE1BQU8sS0FBRUEsT0FBT3lKO1lBQ2hCLGFBQWE7WUFDYk0sWUFBVztXQUpOSDtBQVVYOztNQTdCU2xDIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHtcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICBzdGFydFRyYW5zaXRpb24sXG4gIHVzZUluc2VydGlvbkVmZmVjdCxcbiAgdXNlRGVmZXJyZWRWYWx1ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBcHBSb3V0ZXJDb250ZXh0LFxuICBMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICBHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBBQ1RJT05fUkVTVE9SRSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlclN0YXRlIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7XG4gIFNlYXJjaFBhcmFtc0NvbnRleHQsXG4gIFBhdGhuYW1lQ29udGV4dCxcbiAgUGF0aFBhcmFtc0NvbnRleHQsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbiwgdXNlQWN0aW9uUXVldWUgfSBmcm9tICcuL3VzZS1hY3Rpb24tcXVldWUnXG5pbXBvcnQgeyBpc0JvdCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdCdcbmltcG9ydCB7IGFkZEJhc2VQYXRoIH0gZnJvbSAnLi4vYWRkLWJhc2UtcGF0aCdcbmltcG9ydCB7IEFwcFJvdXRlckFubm91bmNlciB9IGZyb20gJy4vYXBwLXJvdXRlci1hbm5vdW5jZXInXG5pbXBvcnQgeyBSZWRpcmVjdEJvdW5kYXJ5IH0gZnJvbSAnLi9yZWRpcmVjdC1ib3VuZGFyeSdcbmltcG9ydCB7IGZpbmRIZWFkSW5DYWNoZSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZmluZC1oZWFkLWluLWNhY2hlJ1xuaW1wb3J0IHsgdW5yZXNvbHZlZFRoZW5hYmxlIH0gZnJvbSAnLi91bnJlc29sdmVkLXRoZW5hYmxlJ1xuaW1wb3J0IHsgcmVtb3ZlQmFzZVBhdGggfSBmcm9tICcuLi9yZW1vdmUtYmFzZS1wYXRoJ1xuaW1wb3J0IHsgaGFzQmFzZVBhdGggfSBmcm9tICcuLi9oYXMtYmFzZS1wYXRoJ1xuaW1wb3J0IHsgZ2V0U2VsZWN0ZWRQYXJhbXMgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL2NvbXB1dGUtY2hhbmdlZC1wYXRoJ1xuaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgdXNlTmF2RmFpbHVyZUhhbmRsZXIgfSBmcm9tICcuL25hdi1mYWlsdXJlLWhhbmRsZXInXG5pbXBvcnQge1xuICBkaXNwYXRjaFRyYXZlcnNlQWN0aW9uLFxuICBwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZSxcbiAgdHlwZSBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSxcbiAgdHlwZSBHbG9iYWxFcnJvclN0YXRlLFxufSBmcm9tICcuL2FwcC1yb3V0ZXItaW5zdGFuY2UnXG5pbXBvcnQgeyBnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IsIGdldFVSTEZyb21SZWRpcmVjdEVycm9yIH0gZnJvbSAnLi9yZWRpcmVjdCdcbmltcG9ydCB7IGlzUmVkaXJlY3RFcnJvciwgUmVkaXJlY3RUeXBlIH0gZnJvbSAnLi9yZWRpcmVjdC1lcnJvcidcbmltcG9ydCB7IHBpbmdWaXNpYmxlTGlua3MgfSBmcm9tICcuL2xpbmtzJ1xuaW1wb3J0IFJvb3RFcnJvckJvdW5kYXJ5IGZyb20gJy4vZXJyb3JzL3Jvb3QtZXJyb3ItYm91bmRhcnknXG5pbXBvcnQgRGVmYXVsdEdsb2JhbEVycm9yIGZyb20gJy4vYnVpbHRpbi9nbG9iYWwtZXJyb3InXG5pbXBvcnQgeyBSb290TGF5b3V0Qm91bmRhcnkgfSBmcm9tICcuLi8uLi9saWIvZnJhbWV3b3JrL2JvdW5kYXJ5LWNvbXBvbmVudHMnXG5cbmNvbnN0IGdsb2JhbE11dGFibGU6IHtcbiAgcGVuZGluZ01wYVBhdGg/OiBzdHJpbmdcbn0gPSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbFVSTCh1cmw6IFVSTCkge1xuICByZXR1cm4gdXJsLm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpblxufVxuXG4vKipcbiAqIEdpdmVuIGEgbGluayBocmVmLCBjb25zdHJ1Y3RzIHRoZSBVUkwgdGhhdCBzaG91bGQgYmUgcHJlZmV0Y2hlZC4gUmV0dXJucyBudWxsXG4gKiBpbiBjYXNlcyB3aGVyZSBwcmVmZXRjaGluZyBzaG91bGQgYmUgZGlzYWJsZWQsIGxpa2UgZXh0ZXJuYWwgVVJMcywgb3JcbiAqIGR1cmluZyBkZXZlbG9wbWVudC5cbiAqIEBwYXJhbSBocmVmIFRoZSBocmVmIHBhc3NlZCB0byA8TGluaz4sIHJvdXRlci5wcmVmZXRjaCgpLCBvciBzaW1pbGFyXG4gKiBAcmV0dXJucyBBIFVSTCBvYmplY3QgdG8gcHJlZmV0Y2gsIG9yIG51bGwgaWYgcHJlZmV0Y2hpbmcgc2hvdWxkIGJlIGRpc2FibGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcmVmZXRjaFVSTChocmVmOiBzdHJpbmcpOiBVUkwgfCBudWxsIHtcbiAgLy8gRG9uJ3QgcHJlZmV0Y2ggZm9yIGJvdHMgYXMgdGhleSBkb24ndCBuYXZpZ2F0ZS5cbiAgaWYgKGlzQm90KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBsZXQgdXJsOiBVUkxcbiAgdHJ5IHtcbiAgICB1cmwgPSBuZXcgVVJMKGFkZEJhc2VQYXRoKGhyZWYpLCB3aW5kb3cubG9jYXRpb24uaHJlZilcbiAgfSBjYXRjaCAoXykge1xuICAgIC8vIFRPRE86IERvZXMgdGhpcyBuZWVkIHRvIHRocm93IG9yIGNhbiB3ZSBqdXN0IGNvbnNvbGUuZXJyb3IgaW5zdGVhZD8gRG9lc1xuICAgIC8vIGFueW9uZSByZWx5IG9uIHRoaXMgdGhyb3dpbmc/IChTZWVtcyB1bmxpa2VseS4pXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYENhbm5vdCBwcmVmZXRjaCAnJHtocmVmfScgYmVjYXVzZSBpdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVVJMLmBcbiAgICApXG4gIH1cblxuICAvLyBEb24ndCBwcmVmZXRjaCBkdXJpbmcgZGV2ZWxvcG1lbnQgKGltcHJvdmVzIGNvbXBpbGF0aW9uIHBlcmZvcm1hbmNlKVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gRXh0ZXJuYWwgdXJscyBjYW4ndCBiZSBwcmVmZXRjaGVkIGluIHRoZSBzYW1lIHdheS5cbiAgaWYgKGlzRXh0ZXJuYWxVUkwodXJsKSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gdXJsXG59XG5cbmZ1bmN0aW9uIEhpc3RvcnlVcGRhdGVyKHtcbiAgYXBwUm91dGVyU3RhdGUsXG59OiB7XG4gIGFwcFJvdXRlclN0YXRlOiBBcHBSb3V0ZXJTdGF0ZVxufSkge1xuICB1c2VJbnNlcnRpb25FZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HKSB7XG4gICAgICAvLyBjbGVhciBwZW5kaW5nIFVSTCBhcyBuYXZpZ2F0aW9uIGlzIG5vIGxvbmdlclxuICAgICAgLy8gaW4gZmxpZ2h0XG4gICAgICB3aW5kb3cubmV4dC5fX3BlbmRpbmdVcmwgPSB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCB7IHRyZWUsIHB1c2hSZWYsIGNhbm9uaWNhbFVybCB9ID0gYXBwUm91dGVyU3RhdGVcbiAgICBjb25zdCBoaXN0b3J5U3RhdGUgPSB7XG4gICAgICAuLi4ocHVzaFJlZi5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSA/IHdpbmRvdy5oaXN0b3J5LnN0YXRlIDoge30pLFxuICAgICAgLy8gSWRlbnRpZmllciBpcyBzaG9ydGVuZWQgaW50ZW50aW9uYWxseS5cbiAgICAgIC8vIF9fTkEgaXMgdXNlZCB0byBpZGVudGlmeSBpZiB0aGUgaGlzdG9yeSBlbnRyeSBjYW4gYmUgaGFuZGxlZCBieSB0aGUgYXBwLXJvdXRlci5cbiAgICAgIC8vIF9fTiBpcyB1c2VkIHRvIGlkZW50aWZ5IGlmIHRoZSBoaXN0b3J5IGVudHJ5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBvbGQgcm91dGVyLlxuICAgICAgX19OQTogdHJ1ZSxcbiAgICAgIF9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUU6IHRyZWUsXG4gICAgfVxuICAgIGlmIChcbiAgICAgIHB1c2hSZWYucGVuZGluZ1B1c2ggJiZcbiAgICAgIC8vIFNraXAgcHVzaGluZyBhbiBhZGRpdGlvbmFsIGhpc3RvcnkgZW50cnkgaWYgdGhlIGNhbm9uaWNhbFVybCBpcyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCB1cmwuXG4gICAgICAvLyBUaGlzIG1pcnJvcnMgdGhlIGJyb3dzZXIgYmVoYXZpb3IgZm9yIG5vcm1hbCBuYXZpZ2F0aW9uLlxuICAgICAgY3JlYXRlSHJlZkZyb21VcmwobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpICE9PSBjYW5vbmljYWxVcmxcbiAgICApIHtcbiAgICAgIC8vIFRoaXMgaW50ZW50aW9uYWxseSBtdXRhdGVzIFJlYWN0IHN0YXRlLCBwdXNoUmVmIGlzIG92ZXJ3cml0dGVuIHRvIGVuc3VyZSBhZGRpdGlvbmFsIHB1c2gvcmVwbGFjZSBjYWxscyBkbyBub3QgdHJpZ2dlciBhbiBhZGRpdGlvbmFsIGhpc3RvcnkgZW50cnkuXG4gICAgICBwdXNoUmVmLnBlbmRpbmdQdXNoID0gZmFsc2VcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCBjYW5vbmljYWxVcmwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCBjYW5vbmljYWxVcmwpXG4gICAgfVxuICB9LCBbYXBwUm91dGVyU3RhdGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVGhlIE5leHQtVXJsIGFuZCB0aGUgYmFzZSB0cmVlIG1heSBhZmZlY3QgdGhlIHJlc3VsdCBvZiBhIHByZWZldGNoXG4gICAgLy8gdGFzay4gUmUtcHJlZmV0Y2ggYWxsIHZpc2libGUgbGlua3Mgd2l0aCB0aGUgdXBkYXRlZCB2YWx1ZXMuIEluIG1vc3RcbiAgICAvLyBjYXNlcywgdGhpcyB3aWxsIG5vdCByZXN1bHQgaW4gYW55IG5ldyBuZXR3b3JrIHJlcXVlc3RzLCBvbmx5IGlmXG4gICAgLy8gdGhlIHByZWZldGNoIHJlc3VsdCBhY3R1YWxseSB2YXJpZXMgb24gb25lIG9mIHRoZXNlIGlucHV0cy5cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFKSB7XG4gICAgICBwaW5nVmlzaWJsZUxpbmtzKGFwcFJvdXRlclN0YXRlLm5leHRVcmwsIGFwcFJvdXRlclN0YXRlLnRyZWUpXG4gICAgfVxuICB9LCBbYXBwUm91dGVyU3RhdGUubmV4dFVybCwgYXBwUm91dGVyU3RhdGUudHJlZV0pXG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVtcHR5Q2FjaGVOb2RlKCk6IENhY2hlTm9kZSB7XG4gIHJldHVybiB7XG4gICAgbGF6eURhdGE6IG51bGwsXG4gICAgcnNjOiBudWxsLFxuICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgIGhlYWQ6IG51bGwsXG4gICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgbG9hZGluZzogbnVsbCxcbiAgICBuYXZpZ2F0ZWRBdDogLTEsXG4gIH1cbn1cblxuZnVuY3Rpb24gY29weU5leHRKc0ludGVybmFsSGlzdG9yeVN0YXRlKGRhdGE6IGFueSkge1xuICBpZiAoZGF0YSA9PSBudWxsKSBkYXRhID0ge31cbiAgY29uc3QgY3VycmVudFN0YXRlID0gd2luZG93Lmhpc3Rvcnkuc3RhdGVcbiAgY29uc3QgX19OQSA9IGN1cnJlbnRTdGF0ZT8uX19OQVxuICBpZiAoX19OQSkge1xuICAgIGRhdGEuX19OQSA9IF9fTkFcbiAgfVxuICBjb25zdCBfX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFID1cbiAgICBjdXJyZW50U3RhdGU/Ll9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUVcbiAgaWYgKF9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUUpIHtcbiAgICBkYXRhLl9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUUgPSBfX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG5mdW5jdGlvbiBIZWFkKHtcbiAgaGVhZENhY2hlTm9kZSxcbn06IHtcbiAgaGVhZENhY2hlTm9kZTogQ2FjaGVOb2RlIHwgbnVsbFxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIC8vIElmIHRoaXMgc2VnbWVudCBoYXMgYSBgcHJlZmV0Y2hIZWFkYCwgaXQncyB0aGUgc3RhdGljYWxseSBwcmVmZXRjaGVkIGRhdGEuXG4gIC8vIFdlIHNob3VsZCB1c2UgdGhhdCBvbiBpbml0aWFsIHJlbmRlciBpbnN0ZWFkIG9mIGBoZWFkYC4gVGhlbiB3ZSdsbCBzd2l0Y2hcbiAgLy8gdG8gYGhlYWRgIHdoZW4gdGhlIGR5bmFtaWMgcmVzcG9uc2Ugc3RyZWFtcyBpbi5cbiAgY29uc3QgaGVhZCA9IGhlYWRDYWNoZU5vZGUgIT09IG51bGwgPyBoZWFkQ2FjaGVOb2RlLmhlYWQgOiBudWxsXG4gIGNvbnN0IHByZWZldGNoSGVhZCA9XG4gICAgaGVhZENhY2hlTm9kZSAhPT0gbnVsbCA/IGhlYWRDYWNoZU5vZGUucHJlZmV0Y2hIZWFkIDogbnVsbFxuXG4gIC8vIElmIG5vIHByZWZldGNoIGRhdGEgaXMgYXZhaWxhYmxlLCB0aGVuIHdlIGdvIHN0cmFpZ2h0IHRvIHJlbmRlcmluZyBgaGVhZGAuXG4gIGNvbnN0IHJlc29sdmVkUHJlZmV0Y2hSc2MgPSBwcmVmZXRjaEhlYWQgIT09IG51bGwgPyBwcmVmZXRjaEhlYWQgOiBoZWFkXG5cbiAgLy8gV2UgdXNlIGB1c2VEZWZlcnJlZFZhbHVlYCB0byBoYW5kbGUgc3dpdGNoaW5nIGJldHdlZW4gdGhlIHByZWZldGNoZWQgYW5kXG4gIC8vIGZpbmFsIHZhbHVlcy4gVGhlIHNlY29uZCBhcmd1bWVudCBpcyByZXR1cm5lZCBvbiBpbml0aWFsIHJlbmRlciwgdGhlbiBpdFxuICAvLyByZS1yZW5kZXJzIHdpdGggdGhlIGZpcnN0IGFyZ3VtZW50LlxuICByZXR1cm4gdXNlRGVmZXJyZWRWYWx1ZShoZWFkLCByZXNvbHZlZFByZWZldGNoUnNjKVxufVxuXG4vKipcbiAqIFRoZSBnbG9iYWwgcm91dGVyIHRoYXQgd3JhcHMgdGhlIGFwcGxpY2F0aW9uIGNvbXBvbmVudHMuXG4gKi9cbmZ1bmN0aW9uIFJvdXRlcih7XG4gIGFjdGlvblF1ZXVlLFxuICBhc3NldFByZWZpeCxcbiAgZ2xvYmFsRXJyb3IsXG59OiB7XG4gIGFjdGlvblF1ZXVlOiBBcHBSb3V0ZXJBY3Rpb25RdWV1ZVxuICBhc3NldFByZWZpeDogc3RyaW5nXG4gIGdsb2JhbEVycm9yOiBHbG9iYWxFcnJvclN0YXRlXG59KSB7XG4gIGNvbnN0IHN0YXRlID0gdXNlQWN0aW9uUXVldWUoYWN0aW9uUXVldWUpXG4gIGNvbnN0IHsgY2Fub25pY2FsVXJsIH0gPSBzdGF0ZVxuICAvLyBBZGQgbWVtb2l6ZWQgcGF0aG5hbWUvcXVlcnkgZm9yIHVzZVNlYXJjaFBhcmFtcyBhbmQgdXNlUGF0aG5hbWUuXG4gIGNvbnN0IHsgc2VhcmNoUGFyYW1zLCBwYXRobmFtZSB9ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChcbiAgICAgIGNhbm9uaWNhbFVybCxcbiAgICAgIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gJ2h0dHA6Ly9uJyA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmXG4gICAgKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC8vIFRoaXMgaXMgdHVybmVkIGludG8gYSByZWFkb25seSBjbGFzcyBpbiBgdXNlU2VhcmNoUGFyYW1zYFxuICAgICAgc2VhcmNoUGFyYW1zOiB1cmwuc2VhcmNoUGFyYW1zLFxuICAgICAgcGF0aG5hbWU6IGhhc0Jhc2VQYXRoKHVybC5wYXRobmFtZSlcbiAgICAgICAgPyByZW1vdmVCYXNlUGF0aCh1cmwucGF0aG5hbWUpXG4gICAgICAgIDogdXJsLnBhdGhuYW1lLFxuICAgIH1cbiAgfSwgW2Nhbm9uaWNhbFVybF0pXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICBjb25zdCB7IGNhY2hlLCBwcmVmZXRjaENhY2hlLCB0cmVlIH0gPSBzdGF0ZVxuXG4gICAgLy8gVGhpcyBob29rIGlzIGluIGEgY29uZGl0aW9uYWwgYnV0IHRoYXQgaXMgb2sgYmVjYXVzZSBgcHJvY2Vzcy5lbnYuTk9ERV9FTlZgIG5ldmVyIGNoYW5nZXNcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gQWRkIGB3aW5kb3cubmRgIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gICAgICAvLyBUaGlzIGlzIG5vdCBtZWFudCBmb3IgdXNlIGluIGFwcGxpY2F0aW9ucyBhcyBjb25jdXJyZW50IHJlbmRlcmluZyB3aWxsIGFmZmVjdCB0aGUgY2FjaGUvdHJlZS9yb3V0ZXIuXG4gICAgICAvLyBAdHMtaWdub3JlIHRoaXMgaXMgZm9yIGRlYnVnZ2luZ1xuICAgICAgd2luZG93Lm5kID0ge1xuICAgICAgICByb3V0ZXI6IHB1YmxpY0FwcFJvdXRlckluc3RhbmNlLFxuICAgICAgICBjYWNoZSxcbiAgICAgICAgcHJlZmV0Y2hDYWNoZSxcbiAgICAgICAgdHJlZSxcbiAgICAgIH1cbiAgICB9LCBbY2FjaGUsIHByZWZldGNoQ2FjaGUsIHRyZWVdKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBJZiB0aGUgYXBwIGlzIHJlc3RvcmVkIGZyb20gYmZjYWNoZSwgaXQncyBwb3NzaWJsZSB0aGF0XG4gICAgLy8gcHVzaFJlZi5tcGFOYXZpZ2F0aW9uIGlzIHRydWUsIHdoaWNoIHdvdWxkIG1lYW4gdGhhdCBhbnkgcmUtcmVuZGVyIG9mIHRoaXMgY29tcG9uZW50XG4gICAgLy8gd291bGQgdHJpZ2dlciB0aGUgbXBhIG5hdmlnYXRpb24gbG9naWMgYWdhaW4gZnJvbSB0aGUgbGluZXMgYmVsb3cuXG4gICAgLy8gVGhpcyB3aWxsIHJlc3RvcmUgdGhlIHJvdXRlciB0byB0aGUgaW5pdGlhbCBzdGF0ZSBpbiB0aGUgZXZlbnQgdGhhdCB0aGUgYXBwIGlzIHJlc3RvcmVkIGZyb20gYmZjYWNoZS5cbiAgICBmdW5jdGlvbiBoYW5kbGVQYWdlU2hvdyhldmVudDogUGFnZVRyYW5zaXRpb25FdmVudCkge1xuICAgICAgaWYgKFxuICAgICAgICAhZXZlbnQucGVyc2lzdGVkIHx8XG4gICAgICAgICF3aW5kb3cuaGlzdG9yeS5zdGF0ZT8uX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRVxuICAgICAgKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBDbGVhciB0aGUgcGVuZGluZ01wYVBhdGggdmFsdWUgc28gdGhhdCBhIHN1YnNlcXVlbnQgTVBBIG5hdmlnYXRpb24gdG8gdGhlIHNhbWUgVVJMIGNhbiBiZSB0cmlnZ2VyZWQuXG4gICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGlmIHRoZSBicm93c2VyIHJlc3RvcmVkIGZyb20gYmZjYWNoZSwgdGhlIHBlbmRpbmdNcGFQYXRoIHdvdWxkIHN0aWxsIGJlIHNldCB0byB0aGUgdmFsdWVcbiAgICAgIC8vIG9mIHRoZSBsYXN0IE1QQSBuYXZpZ2F0aW9uLlxuICAgICAgZ2xvYmFsTXV0YWJsZS5wZW5kaW5nTXBhUGF0aCA9IHVuZGVmaW5lZFxuXG4gICAgICBkaXNwYXRjaEFwcFJvdXRlckFjdGlvbih7XG4gICAgICAgIHR5cGU6IEFDVElPTl9SRVNUT1JFLFxuICAgICAgICB1cmw6IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLFxuICAgICAgICB0cmVlOiB3aW5kb3cuaGlzdG9yeS5zdGF0ZS5fX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBoYW5kbGVQYWdlU2hvdylcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCBoYW5kbGVQYWdlU2hvdylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gRW5zdXJlIHRoYXQgYW55IHJlZGlyZWN0IGVycm9ycyB0aGF0IGJ1YmJsZSB1cCBvdXRzaWRlIG9mIHRoZSBSZWRpcmVjdEJvdW5kYXJ5XG4gICAgLy8gYXJlIGNhdWdodCBhbmQgaGFuZGxlZCBieSB0aGUgcm91dGVyLlxuICAgIGZ1bmN0aW9uIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KFxuICAgICAgZXZlbnQ6IEVycm9yRXZlbnQgfCBQcm9taXNlUmVqZWN0aW9uRXZlbnRcbiAgICApIHtcbiAgICAgIGNvbnN0IGVycm9yID0gJ3JlYXNvbicgaW4gZXZlbnQgPyBldmVudC5yZWFzb24gOiBldmVudC5lcnJvclxuICAgICAgaWYgKGlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBjb25zdCB1cmwgPSBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcilcbiAgICAgICAgY29uc3QgcmVkaXJlY3RUeXBlID0gZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yKGVycm9yKVxuICAgICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBhY2Nlc3MgdGhlIHJvdXRlciBtZXRob2RzIGRpcmVjdGx5LCByYXRoZXIgdGhhblxuICAgICAgICAvLyBnbyB0aHJvdWdoIHRoZSBwdWJsaWMgaW50ZXJmYWNlLlxuICAgICAgICBpZiAocmVkaXJlY3RUeXBlID09PSBSZWRpcmVjdFR5cGUucHVzaCkge1xuICAgICAgICAgIHB1YmxpY0FwcFJvdXRlckluc3RhbmNlLnB1c2godXJsLCB7fSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwdWJsaWNBcHBSb3V0ZXJJbnN0YW5jZS5yZXBsYWNlKHVybCwge30pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgaGFuZGxlVW5oYW5kbGVkUmVkaXJlY3QpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3VuaGFuZGxlZHJlamVjdGlvbicsIGhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gV2hlbiBtcGFOYXZpZ2F0aW9uIGZsYWcgaXMgc2V0IGRvIGEgaGFyZCBuYXZpZ2F0aW9uIHRvIHRoZSBuZXcgdXJsLlxuICAvLyBJbmZpbml0ZWx5IHN1c3BlbmQgYmVjYXVzZSB3ZSBkb24ndCBhY3R1YWxseSB3YW50IHRvIHJlcmVuZGVyIGFueSBjaGlsZFxuICAvLyBjb21wb25lbnRzIHdpdGggdGhlIG5ldyBVUkwgYW5kIGFueSBlbnRhbmdsZWQgc3RhdGUgdXBkYXRlcyBzaG91bGRuJ3RcbiAgLy8gY29tbWl0IGVpdGhlciAoZWc6IHVzZVRyYW5zaXRpb24gaXNQZW5kaW5nIHNob3VsZCBzdGF5IHRydWUgdW50aWwgdGhlIHBhZ2VcbiAgLy8gdW5sb2FkcykuXG4gIC8vXG4gIC8vIFRoaXMgaXMgYSBzaWRlIGVmZmVjdCBpbiByZW5kZXIuIERvbid0IHRyeSB0aGlzIGF0IGhvbWUsIGtpZHMuIEl0J3NcbiAgLy8gcHJvYmFibHkgc2FmZSBiZWNhdXNlIHdlIGtub3cgdGhpcyBpcyBhIHNpbmdsZXRvbiBjb21wb25lbnQgYW5kIGl0J3MgbmV2ZXJcbiAgLy8gaW4gPE9mZnNjcmVlbj4uIEF0IGxlYXN0IEkgaG9wZSBzby4gKEl0IHdpbGwgcnVuIHR3aWNlIGluIGRldiBzdHJpY3QgbW9kZSxcbiAgLy8gYnV0IHRoYXQncy4uLiBmaW5lPylcbiAgY29uc3QgeyBwdXNoUmVmIH0gPSBzdGF0ZVxuICBpZiAocHVzaFJlZi5tcGFOYXZpZ2F0aW9uKSB7XG4gICAgLy8gaWYgdGhlcmUncyBhIHJlLXJlbmRlciwgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGFub3RoZXIgcmVkaXJlY3QgaWYgb25lIGlzIGFscmVhZHkgaW4gZmxpZ2h0IHRvIHRoZSBzYW1lIFVSTFxuICAgIGlmIChnbG9iYWxNdXRhYmxlLnBlbmRpbmdNcGFQYXRoICE9PSBjYW5vbmljYWxVcmwpIHtcbiAgICAgIGNvbnN0IGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uXG4gICAgICBpZiAocHVzaFJlZi5wZW5kaW5nUHVzaCkge1xuICAgICAgICBsb2NhdGlvbi5hc3NpZ24oY2Fub25pY2FsVXJsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9jYXRpb24ucmVwbGFjZShjYW5vbmljYWxVcmwpXG4gICAgICB9XG5cbiAgICAgIGdsb2JhbE11dGFibGUucGVuZGluZ01wYVBhdGggPSBjYW5vbmljYWxVcmxcbiAgICB9XG4gICAgLy8gVE9ETy1BUFA6IFNob3VsZCB3ZSBsaXN0ZW4gdG8gbmF2aWdhdGVlcnJvciBoZXJlIHRvIGNhdGNoIGZhaWxlZFxuICAgIC8vIG5hdmlnYXRpb25zIHNvbWVob3c/IEFuZCBzaG91bGQgd2UgY2FsbCB3aW5kb3cuc3RvcCgpIGlmIGEgU1BBIG5hdmlnYXRpb25cbiAgICAvLyBzaG91bGQgaW50ZXJydXB0IGFuIE1QQSBvbmU/XG4gICAgLy8gTk9URTogVGhpcyBpcyBpbnRlbnRpb25hbGx5IHVzaW5nIGB0aHJvd2AgaW5zdGVhZCBvZiBgdXNlYCBiZWNhdXNlIHdlJ3JlXG4gICAgLy8gaW5zaWRlIGFuIGV4dGVybmFsbHkgbXV0YWJsZSBjb25kaXRpb24gKHB1c2hSZWYubXBhTmF2aWdhdGlvbiksIHdoaWNoXG4gICAgLy8gdmlvbGF0ZXMgdGhlIHJ1bGVzIG9mIGhvb2tzLlxuICAgIHRocm93IHVucmVzb2x2ZWRUaGVuYWJsZVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbFB1c2hTdGF0ZSA9IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZS5iaW5kKHdpbmRvdy5oaXN0b3J5KVxuICAgIGNvbnN0IG9yaWdpbmFsUmVwbGFjZVN0YXRlID0gd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlLmJpbmQoXG4gICAgICB3aW5kb3cuaGlzdG9yeVxuICAgIClcblxuICAgIC8vIEVuc3VyZSB0aGUgY2Fub25pY2FsIFVSTCBpbiB0aGUgTmV4dC5qcyBSb3V0ZXIgaXMgdXBkYXRlZCB3aGVuIHRoZSBVUkwgaXMgY2hhbmdlZCBzbyB0aGF0IGB1c2VQYXRobmFtZWAgYW5kIGB1c2VTZWFyY2hQYXJhbXNgIGhvbGQgdGhlIHB1c2hlZCB2YWx1ZXMuXG4gICAgY29uc3QgYXBwbHlVcmxGcm9tSGlzdG9yeVB1c2hSZXBsYWNlID0gKFxuICAgICAgdXJsOiBzdHJpbmcgfCBVUkwgfCBudWxsIHwgdW5kZWZpbmVkXG4gICAgKSA9PiB7XG4gICAgICBjb25zdCBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgIGNvbnN0IHRyZWU6IEZsaWdodFJvdXRlclN0YXRlIHwgdW5kZWZpbmVkID1cbiAgICAgICAgd2luZG93Lmhpc3Rvcnkuc3RhdGU/Ll9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUVcblxuICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oe1xuICAgICAgICAgIHR5cGU6IEFDVElPTl9SRVNUT1JFLFxuICAgICAgICAgIHVybDogbmV3IFVSTCh1cmwgPz8gaHJlZiwgaHJlZiksXG4gICAgICAgICAgdHJlZSxcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUGF0Y2ggcHVzaFN0YXRlIHRvIGVuc3VyZSBleHRlcm5hbCBjaGFuZ2VzIHRvIHRoZSBoaXN0b3J5IGFyZSByZWZsZWN0ZWQgaW4gdGhlIE5leHQuanMgUm91dGVyLlxuICAgICAqIEVuc3VyZXMgTmV4dC5qcyBpbnRlcm5hbCBoaXN0b3J5IHN0YXRlIGlzIGNvcGllZCB0byB0aGUgbmV3IGhpc3RvcnkgZW50cnkuXG4gICAgICogRW5zdXJlcyB1c2VQYXRobmFtZSBhbmQgdXNlU2VhcmNoUGFyYW1zIGhvbGQgdGhlIG5ld2x5IHByb3ZpZGVkIHVybC5cbiAgICAgKi9cbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgPSBmdW5jdGlvbiBwdXNoU3RhdGUoXG4gICAgICBkYXRhOiBhbnksXG4gICAgICBfdW51c2VkOiBzdHJpbmcsXG4gICAgICB1cmw/OiBzdHJpbmcgfCBVUkwgfCBudWxsXG4gICAgKTogdm9pZCB7XG4gICAgICAvLyBBdm9pZCBhIGxvb3Agd2hlbiBOZXh0LmpzIGludGVybmFscyB0cmlnZ2VyIHB1c2hTdGF0ZS9yZXBsYWNlU3RhdGVcbiAgICAgIGlmIChkYXRhPy5fX05BIHx8IGRhdGE/Ll9OKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbFB1c2hTdGF0ZShkYXRhLCBfdW51c2VkLCB1cmwpXG4gICAgICB9XG5cbiAgICAgIGRhdGEgPSBjb3B5TmV4dEpzSW50ZXJuYWxIaXN0b3J5U3RhdGUoZGF0YSlcblxuICAgICAgaWYgKHVybCkge1xuICAgICAgICBhcHBseVVybEZyb21IaXN0b3J5UHVzaFJlcGxhY2UodXJsKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gb3JpZ2luYWxQdXNoU3RhdGUoZGF0YSwgX3VudXNlZCwgdXJsKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhdGNoIHJlcGxhY2VTdGF0ZSB0byBlbnN1cmUgZXh0ZXJuYWwgY2hhbmdlcyB0byB0aGUgaGlzdG9yeSBhcmUgcmVmbGVjdGVkIGluIHRoZSBOZXh0LmpzIFJvdXRlci5cbiAgICAgKiBFbnN1cmVzIE5leHQuanMgaW50ZXJuYWwgaGlzdG9yeSBzdGF0ZSBpcyBjb3BpZWQgdG8gdGhlIG5ldyBoaXN0b3J5IGVudHJ5LlxuICAgICAqIEVuc3VyZXMgdXNlUGF0aG5hbWUgYW5kIHVzZVNlYXJjaFBhcmFtcyBob2xkIHRoZSBuZXdseSBwcm92aWRlZCB1cmwuXG4gICAgICovXG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gcmVwbGFjZVN0YXRlKFxuICAgICAgZGF0YTogYW55LFxuICAgICAgX3VudXNlZDogc3RyaW5nLFxuICAgICAgdXJsPzogc3RyaW5nIHwgVVJMIHwgbnVsbFxuICAgICk6IHZvaWQge1xuICAgICAgLy8gQXZvaWQgYSBsb29wIHdoZW4gTmV4dC5qcyBpbnRlcm5hbHMgdHJpZ2dlciBwdXNoU3RhdGUvcmVwbGFjZVN0YXRlXG4gICAgICBpZiAoZGF0YT8uX19OQSB8fCBkYXRhPy5fTikge1xuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlU3RhdGUoZGF0YSwgX3VudXNlZCwgdXJsKVxuICAgICAgfVxuICAgICAgZGF0YSA9IGNvcHlOZXh0SnNJbnRlcm5hbEhpc3RvcnlTdGF0ZShkYXRhKVxuXG4gICAgICBpZiAodXJsKSB7XG4gICAgICAgIGFwcGx5VXJsRnJvbUhpc3RvcnlQdXNoUmVwbGFjZSh1cmwpXG4gICAgICB9XG4gICAgICByZXR1cm4gb3JpZ2luYWxSZXBsYWNlU3RhdGUoZGF0YSwgX3VudXNlZCwgdXJsKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZSBwb3BzdGF0ZSBldmVudCwgdGhpcyBpcyB1c2VkIHRvIGhhbmRsZSBiYWNrL2ZvcndhcmQgaW4gdGhlIGJyb3dzZXIuXG4gICAgICogQnkgZGVmYXVsdCBkaXNwYXRjaGVzIEFDVElPTl9SRVNUT1JFLCBob3dldmVyIGlmIHRoZSBoaXN0b3J5IGVudHJ5IHdhcyBub3QgcHVzaGVkL3JlcGxhY2VkIGJ5IGFwcC1yb3V0ZXIgaXQgd2lsbCByZWxvYWQgdGhlIHBhZ2UuXG4gICAgICogVGhhdCBjYXNlIGNhbiBoYXBwZW4gd2hlbiB0aGUgb2xkIHJvdXRlciBpbmplY3RlZCB0aGUgaGlzdG9yeSBlbnRyeS5cbiAgICAgKi9cbiAgICBjb25zdCBvblBvcFN0YXRlID0gKGV2ZW50OiBQb3BTdGF0ZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWV2ZW50LnN0YXRlKSB7XG4gICAgICAgIC8vIFRPRE8tQVBQOiB0aGlzIGNhc2Ugb25seSBoYXBwZW5zIHdoZW4gcHVzaFN0YXRlL3JlcGxhY2VTdGF0ZSB3YXMgY2FsbGVkIG91dHNpZGUgb2YgTmV4dC5qcy4gSXQgc2hvdWxkIHByb2JhYmx5IHJlbG9hZCB0aGUgcGFnZSBpbiB0aGlzIGNhc2UuXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIGNhc2UgaGFwcGVucyB3aGVuIHRoZSBoaXN0b3J5IGVudHJ5IHdhcyBwdXNoZWQgYnkgdGhlIGBwYWdlc2Agcm91dGVyLlxuICAgICAgaWYgKCFldmVudC5zdGF0ZS5fX05BKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gVE9ETy1BUFA6IElkZWFsbHkgdGhlIGJhY2sgYnV0dG9uIHNob3VsZCBub3QgdXNlIHN0YXJ0VHJhbnNpdGlvbiBhcyBpdCBzaG91bGQgYXBwbHkgdGhlIHVwZGF0ZXMgc3luY2hyb25vdXNseVxuICAgICAgLy8gV2l0aG91dCBzdGFydFRyYW5zaXRpb24gd29ya3MgaWYgdGhlIGNhY2hlIGlzIHRoZXJlIGZvciB0aGlzIHBhdGhcbiAgICAgIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoVHJhdmVyc2VBY3Rpb24oXG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgZXZlbnQuc3RhdGUuX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRVxuICAgICAgICApXG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIHBvcHN0YXRlIGV2ZW50IHRvIGNhbGwgb25Qb3BzdGF0ZS5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCBvblBvcFN0YXRlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUgPSBvcmlnaW5hbFB1c2hTdGF0ZVxuICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlID0gb3JpZ2luYWxSZXBsYWNlU3RhdGVcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIG9uUG9wU3RhdGUpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCB7IGNhY2hlLCB0cmVlLCBuZXh0VXJsLCBmb2N1c0FuZFNjcm9sbFJlZiB9ID0gc3RhdGVcblxuICBjb25zdCBtYXRjaGluZ0hlYWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZmluZEhlYWRJbkNhY2hlKGNhY2hlLCB0cmVlWzFdKVxuICB9LCBbY2FjaGUsIHRyZWVdKVxuXG4gIC8vIEFkZCBtZW1vaXplZCBwYXRoUGFyYW1zIGZvciB1c2VQYXJhbXMuXG4gIGNvbnN0IHBhdGhQYXJhbXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gZ2V0U2VsZWN0ZWRQYXJhbXModHJlZSlcbiAgfSwgW3RyZWVdKVxuXG4gIGNvbnN0IGxheW91dFJvdXRlckNvbnRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50VHJlZTogdHJlZSxcbiAgICAgIHBhcmVudENhY2hlTm9kZTogY2FjaGUsXG4gICAgICBwYXJlbnRTZWdtZW50UGF0aDogbnVsbCxcbiAgICAgIC8vIFJvb3Qgbm9kZSBhbHdheXMgaGFzIGB1cmxgXG4gICAgICAvLyBQcm92aWRlZCBpbiBBcHBUcmVlQ29udGV4dCB0byBlbnN1cmUgaXQgY2FuIGJlIG92ZXJ3cml0dGVuIGluIGxheW91dC1yb3V0ZXJcbiAgICAgIHVybDogY2Fub25pY2FsVXJsLFxuICAgIH1cbiAgfSwgW3RyZWUsIGNhY2hlLCBjYW5vbmljYWxVcmxdKVxuXG4gIGNvbnN0IGdsb2JhbExheW91dFJvdXRlckNvbnRleHQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHJlZSxcbiAgICAgIGZvY3VzQW5kU2Nyb2xsUmVmLFxuICAgICAgbmV4dFVybCxcbiAgICB9XG4gIH0sIFt0cmVlLCBmb2N1c0FuZFNjcm9sbFJlZiwgbmV4dFVybF0pXG5cbiAgbGV0IGhlYWRcbiAgaWYgKG1hdGNoaW5nSGVhZCAhPT0gbnVsbCkge1xuICAgIC8vIFRoZSBoZWFkIGlzIHdyYXBwZWQgaW4gYW4gZXh0cmEgY29tcG9uZW50IHNvIHdlIGNhbiB1c2VcbiAgICAvLyBgdXNlRGVmZXJyZWRWYWx1ZWAgdG8gc3dhcCBiZXR3ZWVuIHRoZSBwcmVmZXRjaGVkIGFuZCBmaW5hbCB2ZXJzaW9ucyBvZlxuICAgIC8vIHRoZSBoZWFkLiAoVGhpcyBpcyB3aGF0IExheW91dFJvdXRlciBkb2VzIGZvciBzZWdtZW50IGRhdGEsIHRvby4pXG4gICAgLy9cbiAgICAvLyBUaGUgYGtleWAgaXMgdXNlZCB0byByZW1vdW50IHRoZSBjb21wb25lbnQgd2hlbmV2ZXIgdGhlIGhlYWQgbW92ZXMgdG9cbiAgICAvLyBhIGRpZmZlcmVudCBzZWdtZW50LlxuICAgIGNvbnN0IFtoZWFkQ2FjaGVOb2RlLCBoZWFkS2V5LCBoZWFkS2V5V2l0aG91dFNlYXJjaFBhcmFtc10gPSBtYXRjaGluZ0hlYWRcblxuICAgIGhlYWQgPSAoXG4gICAgICA8SGVhZFxuICAgICAgICBrZXk9e1xuICAgICAgICAgIC8vIE5lY2Vzc2FyeSBmb3IgUFBSOiBvbWl0IHNlYXJjaCBwYXJhbXMgZnJvbSB0aGUga2V5IHRvIG1hdGNoIHByZXJlbmRlcmVkIGtleXNcbiAgICAgICAgICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyA/IGhlYWRLZXlXaXRob3V0U2VhcmNoUGFyYW1zIDogaGVhZEtleVxuICAgICAgICB9XG4gICAgICAgIGhlYWRDYWNoZU5vZGU9e2hlYWRDYWNoZU5vZGV9XG4gICAgICAvPlxuICAgIClcbiAgfSBlbHNlIHtcbiAgICBoZWFkID0gbnVsbFxuICB9XG5cbiAgbGV0IGNvbnRlbnQgPSAoXG4gICAgPFJlZGlyZWN0Qm91bmRhcnk+XG4gICAgICB7aGVhZH1cbiAgICAgIHsvKiBSb290TGF5b3V0Qm91bmRhcnkgZW5hYmxlcyBkZXRlY3Rpb24gb2YgU3VzcGVuc2UgYm91bmRhcmllcyBhcm91bmQgdGhlIHJvb3QgbGF5b3V0LlxuICAgICAgICAgIFdoZW4gdXNlcnMgd3JhcCB0aGVpciBsYXlvdXQgaW4gPFN1c3BlbnNlPiwgdGhpcyBjcmVhdGVzIHRoZSBjb21wb25lbnQgc3RhY2sgcGF0dGVyblxuICAgICAgICAgIFwiU3VzcGVuc2UgLT4gUm9vdExheW91dEJvdW5kYXJ5XCIgd2hpY2ggZHluYW1pYy1yZW5kZXJpbmcudHMgdXNlcyB0byBhbGxvdyBkeW5hbWljIHJlbmRlcmluZy4gKi99XG4gICAgICA8Um9vdExheW91dEJvdW5kYXJ5PntjYWNoZS5yc2N9PC9Sb290TGF5b3V0Qm91bmRhcnk+XG4gICAgICA8QXBwUm91dGVyQW5ub3VuY2VyIHRyZWU9e3RyZWV9IC8+XG4gICAgPC9SZWRpcmVjdEJvdW5kYXJ5PlxuICApXG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBJbiBkZXZlbG9wbWVudCwgd2UgYXBwbHkgZmV3IGVycm9yIGJvdW5kYXJpZXMgYW5kIGhvdC1yZWxvYWRlcjpcbiAgICAvLyAtIERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeTogYXZvaWQgdXNpbmcgbmF2aWdhdGlvbiBBUEkgbGlrZSBub3RGb3VuZCgpIGluIHJvb3QgbGF5b3V0XG4gICAgLy8gLSBIb3RSZWxvYWRlcjpcbiAgICAvLyAgLSBob3QtcmVsb2FkIHRoZSBhcHAgd2hlbiB0aGUgY29kZSBjaGFuZ2VzXG4gICAgLy8gIC0gcmVuZGVyIGRldiBvdmVybGF5XG4gICAgLy8gIC0gY2F0Y2ggcnVudGltZSBlcnJvcnMgYW5kIGRpc3BsYXkgZ2xvYmFsLWVycm9yIHdoZW4gbmVjZXNzYXJ5XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zdCB7IERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSB9ID1cbiAgICAgICAgcmVxdWlyZSgnLi9kZXYtcm9vdC1odHRwLWFjY2Vzcy1mYWxsYmFjay1ib3VuZGFyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4vZGV2LXJvb3QtaHR0cC1hY2Nlc3MtZmFsbGJhY2stYm91bmRhcnknKVxuICAgICAgY29udGVudCA9IChcbiAgICAgICAgPERldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeT5cbiAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgPC9EZXZSb290SFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk+XG4gICAgICApXG4gICAgfVxuICAgIGNvbnN0IEhvdFJlbG9hZGVyOiB0eXBlb2YgaW1wb3J0KCcuLi9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwJykuZGVmYXVsdCA9XG4gICAgICAoXG4gICAgICAgIHJlcXVpcmUoJy4uL2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi9kZXYvaG90LXJlbG9hZGVyL2FwcC9ob3QtcmVsb2FkZXItYXBwJylcbiAgICAgICkuZGVmYXVsdFxuXG4gICAgY29udGVudCA9IChcbiAgICAgIDxIb3RSZWxvYWRlciBhc3NldFByZWZpeD17YXNzZXRQcmVmaXh9IGdsb2JhbEVycm9yPXtnbG9iYWxFcnJvcn0+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9Ib3RSZWxvYWRlcj5cbiAgICApXG4gIH0gZWxzZSB7XG4gICAgY29udGVudCA9IChcbiAgICAgIDxSb290RXJyb3JCb3VuZGFyeVxuICAgICAgICBlcnJvckNvbXBvbmVudD17Z2xvYmFsRXJyb3JbMF19XG4gICAgICAgIGVycm9yU3R5bGVzPXtnbG9iYWxFcnJvclsxXX1cbiAgICAgID5cbiAgICAgICAge2NvbnRlbnR9XG4gICAgICA8L1Jvb3RFcnJvckJvdW5kYXJ5PlxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxIaXN0b3J5VXBkYXRlciBhcHBSb3V0ZXJTdGF0ZT17c3RhdGV9IC8+XG4gICAgICA8UnVudGltZVN0eWxlcyAvPlxuICAgICAgPFBhdGhQYXJhbXNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwYXRoUGFyYW1zfT5cbiAgICAgICAgPFBhdGhuYW1lQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cGF0aG5hbWV9PlxuICAgICAgICAgIDxTZWFyY2hQYXJhbXNDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzZWFyY2hQYXJhbXN9PlxuICAgICAgICAgICAgPEdsb2JhbExheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgICAgdmFsdWU9e2dsb2JhbExheW91dFJvdXRlckNvbnRleHR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHsvKiBUT0RPOiBXZSBzaG91bGQgYmUgYWJsZSB0byByZW1vdmUgdGhpcyBjb250ZXh0LiB1c2VSb3V0ZXJcbiAgICAgICAgICAgICAgICAgIHNob3VsZCBpbXBvcnQgZnJvbSBhcHAtcm91dGVyLWluc3RhbmNlIGluc3RlYWQuIEl0J3Mgb25seVxuICAgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGJlY2F1c2UgdXNlUm91dGVyIGlzIHNoYXJlZCBiZXR3ZWVuIFBhZ2VzIGFuZFxuICAgICAgICAgICAgICAgICAgQXBwIFJvdXRlci4gV2Ugc2hvdWxkIGZvcmsgdGhhdCBtb2R1bGUsIHRoZW4gcmVtb3ZlIHRoaXNcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQgcHJvdmlkZXIuICovfVxuICAgICAgICAgICAgICA8QXBwUm91dGVyQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cHVibGljQXBwUm91dGVySW5zdGFuY2V9PlxuICAgICAgICAgICAgICAgIDxMYXlvdXRSb3V0ZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtsYXlvdXRSb3V0ZXJDb250ZXh0fT5cbiAgICAgICAgICAgICAgICAgIHtjb250ZW50fVxuICAgICAgICAgICAgICAgIDwvTGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgICAgICAgPC9BcHBSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgICAgPC9HbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICAgIDwvU2VhcmNoUGFyYW1zQ29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgPC9QYXRobmFtZUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICA8L1BhdGhQYXJhbXNDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEFwcFJvdXRlcih7XG4gIGFjdGlvblF1ZXVlLFxuICBnbG9iYWxFcnJvclN0YXRlLFxuICBhc3NldFByZWZpeCxcbn06IHtcbiAgYWN0aW9uUXVldWU6IEFwcFJvdXRlckFjdGlvblF1ZXVlXG4gIGdsb2JhbEVycm9yU3RhdGU6IEdsb2JhbEVycm9yU3RhdGVcbiAgYXNzZXRQcmVmaXg6IHN0cmluZ1xufSkge1xuICB1c2VOYXZGYWlsdXJlSGFuZGxlcigpXG5cbiAgY29uc3Qgcm91dGVyID0gKFxuICAgIDxSb3V0ZXJcbiAgICAgIGFjdGlvblF1ZXVlPXthY3Rpb25RdWV1ZX1cbiAgICAgIGFzc2V0UHJlZml4PXthc3NldFByZWZpeH1cbiAgICAgIGdsb2JhbEVycm9yPXtnbG9iYWxFcnJvclN0YXRlfVxuICAgIC8+XG4gIClcblxuICAvLyBBdCB0aGUgdmVyeSB0b3AgbGV2ZWwsIHVzZSB0aGUgZGVmYXVsdCBHbG9iYWxFcnJvciBjb21wb25lbnQgYXMgdGhlIGZpbmFsIGZhbGxiYWNrLlxuICAvLyBXaGVuIHRoZSBhcHAgcm91dGVyIGl0c2VsZiBmYWlscywgd2hpY2ggbWVhbnMgdGhlIGZyYW1ld29yayBpdHNlbGYgZmFpbHMsIHdlIHNob3cgdGhlIGRlZmF1bHQgZXJyb3IuXG4gIHJldHVybiAoXG4gICAgPFJvb3RFcnJvckJvdW5kYXJ5IGVycm9yQ29tcG9uZW50PXtEZWZhdWx0R2xvYmFsRXJyb3J9PlxuICAgICAge3JvdXRlcn1cbiAgICA8L1Jvb3RFcnJvckJvdW5kYXJ5PlxuICApXG59XG5cbmNvbnN0IHJ1bnRpbWVTdHlsZXMgPSBuZXcgU2V0PHN0cmluZz4oKVxubGV0IHJ1bnRpbWVTdHlsZUNoYW5nZWQgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KClcblxuZ2xvYmFsVGhpcy5fTl9FX1NUWUxFX0xPQUQgPSBmdW5jdGlvbiAoaHJlZjogc3RyaW5nKSB7XG4gIGxldCBsZW4gPSBydW50aW1lU3R5bGVzLnNpemVcbiAgcnVudGltZVN0eWxlcy5hZGQoaHJlZilcbiAgaWYgKHJ1bnRpbWVTdHlsZXMuc2l6ZSAhPT0gbGVuKSB7XG4gICAgcnVudGltZVN0eWxlQ2hhbmdlZC5mb3JFYWNoKChjYikgPT4gY2IoKSlcbiAgfVxuICAvLyBUT0RPIGZpZ3VyZSBvdXQgaG93IHRvIGdldCBhIHByb21pc2UgaGVyZVxuICAvLyBCdXQgbWF5YmUgaXQncyBub3QgbmVjZXNzYXJ5IGFzIHJlYWN0IHdvdWxkIGJsb2NrIHJlbmRlcmluZyB1bnRpbCBpdCdzIGxvYWRlZFxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKClcbn1cblxuZnVuY3Rpb24gUnVudGltZVN0eWxlcygpIHtcbiAgY29uc3QgWywgZm9yY2VVcGRhdGVdID0gUmVhY3QudXNlU3RhdGUoMClcbiAgY29uc3QgcmVuZGVyZWRTdHlsZXNTaXplID0gcnVudGltZVN0eWxlcy5zaXplXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY2hhbmdlZCA9ICgpID0+IGZvcmNlVXBkYXRlKChjKSA9PiBjICsgMSlcbiAgICBydW50aW1lU3R5bGVDaGFuZ2VkLmFkZChjaGFuZ2VkKVxuICAgIGlmIChyZW5kZXJlZFN0eWxlc1NpemUgIT09IHJ1bnRpbWVTdHlsZXMuc2l6ZSkge1xuICAgICAgY2hhbmdlZCgpXG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBydW50aW1lU3R5bGVDaGFuZ2VkLmRlbGV0ZShjaGFuZ2VkKVxuICAgIH1cbiAgfSwgW3JlbmRlcmVkU3R5bGVzU2l6ZSwgZm9yY2VVcGRhdGVdKVxuXG4gIGNvbnN0IGRwbElkID0gcHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEXG4gICAgPyBgP2RwbD0ke3Byb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRH1gXG4gICAgOiAnJ1xuICByZXR1cm4gWy4uLnJ1bnRpbWVTdHlsZXNdLm1hcCgoaHJlZiwgaSkgPT4gKFxuICAgIDxsaW5rXG4gICAgICBrZXk9e2l9XG4gICAgICByZWw9XCJzdHlsZXNoZWV0XCJcbiAgICAgIGhyZWY9e2Ake2hyZWZ9JHtkcGxJZH1gfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcHJlY2VkZW5jZT1cIm5leHRcIlxuICAgICAgLy8gVE9ETyBmaWd1cmUgb3V0IGNyb3NzT3JpZ2luIGFuZCBub25jZVxuICAgICAgLy8gY3Jvc3NPcmlnaW49e1RPRE99XG4gICAgICAvLyBub25jZT17VE9ET31cbiAgICAvPlxuICApKVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUVtcHR5Q2FjaGVOb2RlIiwiY3JlYXRlUHJlZmV0Y2hVUkwiLCJBcHBSb3V0ZXIiLCJpc0V4dGVybmFsVVJMIiwiZ2xvYmFsTXV0YWJsZSIsInVybCIsIm9yaWdpbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImlzQm90IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiVVJMIiwiYWRkQmFzZVBhdGgiLCJfIiwiRXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJIaXN0b3J5VXBkYXRlciIsImFwcFJvdXRlclN0YXRlIiwidXNlSW5zZXJ0aW9uRWZmZWN0IiwiX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORyIsIm5leHQiLCJfX3BlbmRpbmdVcmwiLCJ1bmRlZmluZWQiLCJ0cmVlIiwicHVzaFJlZiIsImNhbm9uaWNhbFVybCIsImhpc3RvcnlTdGF0ZSIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiaGlzdG9yeSIsInN0YXRlIiwiX19OQSIsIl9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUUiLCJwZW5kaW5nUHVzaCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwicHVzaFN0YXRlIiwicmVwbGFjZVN0YXRlIiwidXNlRWZmZWN0IiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwicGluZ1Zpc2libGVMaW5rcyIsIm5leHRVcmwiLCJsYXp5RGF0YSIsInJzYyIsInByZWZldGNoUnNjIiwiaGVhZCIsInByZWZldGNoSGVhZCIsInBhcmFsbGVsUm91dGVzIiwiTWFwIiwibG9hZGluZyIsIm5hdmlnYXRlZEF0IiwiY29weU5leHRKc0ludGVybmFsSGlzdG9yeVN0YXRlIiwiZGF0YSIsImN1cnJlbnRTdGF0ZSIsIkhlYWQiLCJoZWFkQ2FjaGVOb2RlIiwicmVzb2x2ZWRQcmVmZXRjaFJzYyIsInVzZURlZmVycmVkVmFsdWUiLCJSb3V0ZXIiLCJhY3Rpb25RdWV1ZSIsImFzc2V0UHJlZml4IiwiZ2xvYmFsRXJyb3IiLCJ1c2VBY3Rpb25RdWV1ZSIsInNlYXJjaFBhcmFtcyIsInBhdGhuYW1lIiwidXNlTWVtbyIsImhhc0Jhc2VQYXRoIiwicmVtb3ZlQmFzZVBhdGgiLCJjYWNoZSIsInByZWZldGNoQ2FjaGUiLCJuZCIsInJvdXRlciIsInB1YmxpY0FwcFJvdXRlckluc3RhbmNlIiwiaGFuZGxlUGFnZVNob3ciLCJldmVudCIsInBlcnNpc3RlZCIsInBlbmRpbmdNcGFQYXRoIiwiZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24iLCJ0eXBlIiwiQUNUSU9OX1JFU1RPUkUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVVuaGFuZGxlZFJlZGlyZWN0IiwiZXJyb3IiLCJyZWFzb24iLCJpc1JlZGlyZWN0RXJyb3IiLCJwcmV2ZW50RGVmYXVsdCIsImdldFVSTEZyb21SZWRpcmVjdEVycm9yIiwicmVkaXJlY3RUeXBlIiwiZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yIiwiUmVkaXJlY3RUeXBlIiwicHVzaCIsInJlcGxhY2UiLCJtcGFOYXZpZ2F0aW9uIiwiYXNzaWduIiwidW5yZXNvbHZlZFRoZW5hYmxlIiwib3JpZ2luYWxQdXNoU3RhdGUiLCJiaW5kIiwib3JpZ2luYWxSZXBsYWNlU3RhdGUiLCJhcHBseVVybEZyb21IaXN0b3J5UHVzaFJlcGxhY2UiLCJzdGFydFRyYW5zaXRpb24iLCJfdW51c2VkIiwiX04iLCJvblBvcFN0YXRlIiwicmVsb2FkIiwiZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbiIsImZvY3VzQW5kU2Nyb2xsUmVmIiwibWF0Y2hpbmdIZWFkIiwiZmluZEhlYWRJbkNhY2hlIiwicGF0aFBhcmFtcyIsImdldFNlbGVjdGVkUGFyYW1zIiwibGF5b3V0Um91dGVyQ29udGV4dCIsInBhcmVudFRyZWUiLCJwYXJlbnRDYWNoZU5vZGUiLCJwYXJlbnRTZWdtZW50UGF0aCIsImdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJoZWFkS2V5IiwiaGVhZEtleVdpdGhvdXRTZWFyY2hQYXJhbXMiLCJjb250ZW50IiwiUmVkaXJlY3RCb3VuZGFyeSIsIlJvb3RMYXlvdXRCb3VuZGFyeSIsIkFwcFJvdXRlckFubm91bmNlciIsIkRldlJvb3RIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSIsInJlcXVpcmUiLCJIb3RSZWxvYWRlciIsImRlZmF1bHQiLCJSb290RXJyb3JCb3VuZGFyeSIsImVycm9yQ29tcG9uZW50IiwiZXJyb3JTdHlsZXMiLCJSdW50aW1lU3R5bGVzIiwiUGF0aFBhcmFtc0NvbnRleHQiLCJQcm92aWRlciIsInZhbHVlIiwiUGF0aG5hbWVDb250ZXh0IiwiU2VhcmNoUGFyYW1zQ29udGV4dCIsIkdsb2JhbExheW91dFJvdXRlckNvbnRleHQiLCJBcHBSb3V0ZXJDb250ZXh0IiwiTGF5b3V0Um91dGVyQ29udGV4dCIsImdsb2JhbEVycm9yU3RhdGUiLCJ1c2VOYXZGYWlsdXJlSGFuZGxlciIsIkRlZmF1bHRHbG9iYWxFcnJvciIsInJ1bnRpbWVTdHlsZXMiLCJTZXQiLCJydW50aW1lU3R5bGVDaGFuZ2VkIiwiZ2xvYmFsVGhpcyIsIl9OX0VfU1RZTEVfTE9BRCIsImxlbiIsInNpemUiLCJhZGQiLCJmb3JFYWNoIiwiY2IiLCJQcm9taXNlIiwicmVzb2x2ZSIsImZvcmNlVXBkYXRlIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsInJlbmRlcmVkU3R5bGVzU2l6ZSIsImNoYW5nZWQiLCJjIiwiZGVsZXRlIiwiZHBsSWQiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJtYXAiLCJpIiwibGluayIsInJlbCIsInByZWNlZGVuY2UiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/builtin/global-error.js": /*!*****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/builtin/global-error.js ***! \*****************************************************************************************************************************************************/ /***/ ((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}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return _default;\n }\n}));\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _handleisrerror = __webpack_require__(/*! ../handle-isr-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/handle-isr-error.js\");\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily: 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center'\n },\n text: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '28px',\n margin: '0 8px'\n }\n};\nfunction DefaultGlobalError(param) {\n let { error } = param;\n const digest = error == null ? void 0 : error.digest;\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"html\", {\n id: \"__next_error__\",\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"head\", {}),\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"body\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_handleisrerror.HandleISRError, {\n error: error\n }),\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"div\", {\n style: styles.error,\n children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"div\", {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsxs)(\"h2\", {\n style: styles.text,\n children: [\n \"Application error: a \",\n digest ? 'server' : 'client',\n \"-side exception has occurred while loading \",\n window.location.hostname,\n \" (see the\",\n ' ',\n digest ? 'server logs' : 'browser console',\n \" for more information).\"\n ]\n }),\n digest ? /*#__PURE__*/ (0, _jsxruntime.jsx)(\"p\", {\n style: styles.text,\n children: \"Digest: \" + digest\n }) : null\n ]\n })\n })\n ]\n })\n ]\n });\n}\n_c = DefaultGlobalError;\nconst _default = DefaultGlobalError;\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=global-error.js.map\nvar _c;\n$RefreshReg$(_c, \"DefaultGlobalError\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FvREE7OztlQUFBOzs7OzRDQWxEK0I7QUFFL0IsTUFBTUEsU0FBUztJQUNiQyxPQUFPO1FBQ0wsMEZBQTBGO1FBQzFGQyxZQUNFO1FBQ0ZDLFFBQVE7UUFDUkMsV0FBVztRQUNYQyxTQUFTO1FBQ1RDLGVBQWU7UUFDZkMsWUFBWTtRQUNaQyxnQkFBZ0I7SUFDbEI7SUFDQUMsTUFBTTtRQUNKQyxVQUFVO1FBQ1ZDLFlBQVk7UUFDWkMsWUFBWTtRQUNaQyxRQUFRO0lBQ1Y7QUFDRjtBQUtBLDRCQUE0QixLQUF5QjtJQUF6QixNQUFFWixLQUFLLEVBQWtCLEdBQXpCO0lBQzFCLE1BQU1jLFNBQTZCZCxTQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPYyxNQUFNO0lBQ2hELHFCQUNFLHNCQUFDQyxRQUFBQTtRQUFLQyxJQUFHOzswQkFDUCxxQkFBQ0MsUUFBQUEsQ0FBQUE7MEJBQ0Qsc0JBQUNDLFFBQUFBOztrQ0FDQyxxQkFBQ0MsZ0JBQUFBLGNBQWM7d0JBQUNuQixPQUFPQTs7a0NBQ3ZCLHFCQUFDb0IsT0FBQUE7d0JBQUlDLE9BQU90QixPQUFPQyxLQUFLO2tDQUN0QixvQ0FBQ29CLE9BQUFBOzs4Q0FDQyxzQkFBQ0UsTUFBQUE7b0NBQUdELE9BQU90QixPQUFPUyxJQUFJOzt3Q0FBRTt3Q0FDQU0sU0FBUyxXQUFXO3dDQUFTO3dDQUN2QlMsT0FBT0MsUUFBUSxDQUFDQyxRQUFRO3dDQUFDO3dDQUFVO3dDQUM5RFgsU0FBUyxnQkFBZ0I7d0NBQWtCOzs7Z0NBRzdDQSxTQUFBQSxXQUFBQSxHQUFTLHFCQUFDWSxLQUFBQTtvQ0FBRUwsT0FBT3RCLE9BQU9TLElBQUk7OENBQUksYUFBVU07cUNBQWdCOzs7Ozs7OztBQU16RTtLQXJCU0Q7TUF5QlQsV0FBZUEiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IEhhbmRsZUlTUkVycm9yIH0gZnJvbSAnLi4vaGFuZGxlLWlzci1lcnJvcidcblxuY29uc3Qgc3R5bGVzID0ge1xuICBlcnJvcjoge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvbW9kZXJuLW5vcm1hbGl6ZS9ibG9iL21haW4vbW9kZXJuLW5vcm1hbGl6ZS5jc3MjTDM4LUw1MlxuICAgIGZvbnRGYW1pbHk6XG4gICAgICAnc3lzdGVtLXVpLFwiU2Vnb2UgVUlcIixSb2JvdG8sSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsXCJBcHBsZSBDb2xvciBFbW9qaVwiLFwiU2Vnb2UgVUkgRW1vamlcIicsXG4gICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgfSxcbiAgdGV4dDoge1xuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogNDAwLFxuICAgIGxpbmVIZWlnaHQ6ICcyOHB4JyxcbiAgICBtYXJnaW46ICcwIDhweCcsXG4gIH0sXG59IGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIEdsb2JhbEVycm9yQ29tcG9uZW50ID0gUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gIGVycm9yOiBhbnlcbn0+XG5mdW5jdGlvbiBEZWZhdWx0R2xvYmFsRXJyb3IoeyBlcnJvciB9OiB7IGVycm9yOiBhbnkgfSkge1xuICBjb25zdCBkaWdlc3Q6IHN0cmluZyB8IHVuZGVmaW5lZCA9IGVycm9yPy5kaWdlc3RcbiAgcmV0dXJuIChcbiAgICA8aHRtbCBpZD1cIl9fbmV4dF9lcnJvcl9fXCI+XG4gICAgICA8aGVhZD48L2hlYWQ+XG4gICAgICA8Ym9keT5cbiAgICAgICAgPEhhbmRsZUlTUkVycm9yIGVycm9yPXtlcnJvcn0gLz5cbiAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmVycm9yfT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGgyIHN0eWxlPXtzdHlsZXMudGV4dH0+XG4gICAgICAgICAgICAgIEFwcGxpY2F0aW9uIGVycm9yOiBhIHtkaWdlc3QgPyAnc2VydmVyJyA6ICdjbGllbnQnfS1zaWRlIGV4Y2VwdGlvblxuICAgICAgICAgICAgICBoYXMgb2NjdXJyZWQgd2hpbGUgbG9hZGluZyB7d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lfSAoc2VlIHRoZXsnICd9XG4gICAgICAgICAgICAgIHtkaWdlc3QgPyAnc2VydmVyIGxvZ3MnIDogJ2Jyb3dzZXIgY29uc29sZSd9IGZvciBtb3JlXG4gICAgICAgICAgICAgIGluZm9ybWF0aW9uKS5cbiAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICB7ZGlnZXN0ID8gPHAgc3R5bGU9e3N0eWxlcy50ZXh0fT57YERpZ2VzdDogJHtkaWdlc3R9YH08L3A+IDogbnVsbH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApXG59XG5cbi8vIEV4cG9ydGVkIHNvIHRoYXQgdGhlIGltcG9ydCBzaWduYXR1cmUgaW4gdGhlIGxvYWRlcnMgY2FuIGJlIGlkZW50aWNhbCB0byB1c2VyXG4vLyBzdXBwbGllZCBjdXN0b20gZ2xvYmFsIGVycm9yIHNpZ25hdHVyZXMuXG5leHBvcnQgZGVmYXVsdCBEZWZhdWx0R2xvYmFsRXJyb3JcbiJdLCJuYW1lcyI6WyJzdHlsZXMiLCJlcnJvciIsImZvbnRGYW1pbHkiLCJoZWlnaHQiLCJ0ZXh0QWxpZ24iLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImFsaWduSXRlbXMiLCJqdXN0aWZ5Q29udGVudCIsInRleHQiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJsaW5lSGVpZ2h0IiwibWFyZ2luIiwiRGVmYXVsdEdsb2JhbEVycm9yIiwiZGlnZXN0IiwiaHRtbCIsImlkIiwiaGVhZCIsImJvZHkiLCJIYW5kbGVJU1JFcnJvciIsImRpdiIsInN0eWxlIiwiaDIiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsImhvc3RuYW1lIiwicCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/builtin/global-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js": /*!***********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js ***! \***********************************************************************************************************************************************************************/ /***/ ((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 DevRootHTTPAccessFallbackBoundary: function() {\n return DevRootHTTPAccessFallbackBoundary;\n },\n bailOnRootNotFound: function() {\n return bailOnRootNotFound;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _errorboundary = __webpack_require__(/*! ./http-access-fallback/error-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\");\nfunction bailOnRootNotFound() {\n throw Object.defineProperty(new Error('notFound() is not allowed to use in root layout'), \"__NEXT_ERROR_CODE\", {\n value: \"E192\",\n enumerable: false,\n configurable: true\n });\n}\nfunction NotAllowedRootHTTPFallbackError() {\n bailOnRootNotFound();\n return null;\n}\n_c = NotAllowedRootHTTPFallbackError;\nfunction DevRootHTTPAccessFallbackBoundary(param) {\n let { children } = param;\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary.HTTPAccessFallbackBoundary, {\n notFound: /*#__PURE__*/ (0, _jsxruntime.jsx)(NotAllowedRootHTTPFallbackError, {}),\n children: children\n });\n}\n_c1 = DevRootHTTPAccessFallbackBoundary;\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-root-http-access-fallback-boundary.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"NotAllowedRootHTTPFallbackError\");\n$RefreshReg$(_c1, \"DevRootHTTPAccessFallbackBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZGV2LXJvb3QtaHR0cC1hY2Nlc3MtZmFsbGJhY2stYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZWdCQSxpQ0FBaUM7ZUFBakNBOztJQVRBQyxrQkFBa0I7ZUFBbEJBOzs7Ozs0RUFKRTsyQ0FDeUI7QUFHcEMsU0FBU0E7SUFDZCxNQUFNLHFCQUE0RCxDQUE1RCxJQUFJQyxNQUFNLG9EQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBMkQ7QUFDbkU7QUFFQTtJQUNFRDtJQUNBLE9BQU87QUFDVDtLQUhTRTtBQUtGLDJDQUEyQyxLQUlqRDtJQUppRCxNQUNoREMsUUFBUSxFQUdULEdBSmlEO0lBS2hELHFCQUNFLHFCQUFDQyxlQUFBQSwwQkFBMEI7UUFBQ0MsVUFBQUEsV0FBQUEsR0FBVSxxQkFBQ0gsaUNBQUFBLENBQUFBO2tCQUNwQ0M7O0FBR1A7TUFWZ0JKIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL2Rldi1yb290LWh0dHAtYWNjZXNzLWZhbGxiYWNrLWJvdW5kYXJ5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkgfSBmcm9tICcuL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2Vycm9yLWJvdW5kYXJ5J1xuXG4vLyBUT0RPOiBlcnJvciBvbiB1c2luZyBmb3JiaWRkZW4gYW5kIHVuYXV0aG9yaXplZCBpbiByb290IGxheW91dFxuZXhwb3J0IGZ1bmN0aW9uIGJhaWxPblJvb3ROb3RGb3VuZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdub3RGb3VuZCgpIGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBpbiByb290IGxheW91dCcpXG59XG5cbmZ1bmN0aW9uIE5vdEFsbG93ZWRSb290SFRUUEZhbGxiYWNrRXJyb3IoKSB7XG4gIGJhaWxPblJvb3ROb3RGb3VuZCgpXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEZXZSb290SFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSkge1xuICByZXR1cm4gKFxuICAgIDxIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSBub3RGb3VuZD17PE5vdEFsbG93ZWRSb290SFRUUEZhbGxiYWNrRXJyb3IgLz59PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnk+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJEZXZSb290SFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkiLCJiYWlsT25Sb290Tm90Rm91bmQiLCJFcnJvciIsIk5vdEFsbG93ZWRSb290SFRUUEZhbGxiYWNrRXJyb3IiLCJjaGlsZHJlbiIsIkhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5Iiwibm90Rm91bmQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/error-boundary.js": /*!***********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/error-boundary.js ***! \***********************************************************************************************************************************************/ /***/ ((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 ErrorBoundary: function() {\n return ErrorBoundary;\n },\n ErrorBoundaryHandler: function() {\n return ErrorBoundaryHandler;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ./navigation-untracked */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _navfailurehandler = __webpack_require__(/*! ./nav-failure-handler */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/nav-failure-handler.js\");\nconst _handleisrerror = __webpack_require__(/*! ./handle-isr-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/handle-isr-error.js\");\nconst _isbot = __webpack_require__(/*! ../../shared/lib/router/utils/is-bot */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst isBotUserAgent = true && (0, _isbot.isBot)(window.navigator.userAgent);\nclass ErrorBoundaryHandler extends _react.default.Component {\n static getDerivedStateFromError(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error)) {\n // Re-throw if an expected internal Next.js router error occurs\n // this means it should be handled by a different boundary (such as a NotFound boundary in a parent segment)\n throw error;\n }\n return {\n error\n };\n }\n static getDerivedStateFromProps(props, state) {\n const { error } = state;\n // if we encounter an error while\n // a navigation is pending we shouldn't render\n // the error boundary and instead should fallback\n // to a hard navigation to attempt recovering\n if (false) {}\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.error) {\n return {\n error: null,\n previousPathname: props.pathname\n };\n }\n return {\n error: state.error,\n previousPathname: props.pathname\n };\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n //When it's bot request, segment level error boundary will keep rendering the children,\n // the final error will be caught by the root error boundary and determine wether need to apply graceful degrade.\n if (this.state.error && !isBotUserAgent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_handleisrerror.HandleISRError, {\n error: this.state.error\n }),\n this.props.errorStyles,\n this.props.errorScripts,\n /*#__PURE__*/ (0, _jsxruntime.jsx)(this.props.errorComponent, {\n error: this.state.error,\n reset: this.reset\n })\n ]\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props), this.reset = ()=>{\n this.setState({\n error: null\n });\n };\n this.state = {\n error: null,\n previousPathname: this.props.pathname\n };\n }\n}\nfunction ErrorBoundary(param) {\n let { errorComponent, errorStyles, errorScripts, children } = param;\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these errors can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n if (errorComponent) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(ErrorBoundaryHandler, {\n pathname: pathname,\n errorComponent: errorComponent,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\n_c = ErrorBoundary;\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=error-boundary.js.map\nvar _c;\n$RefreshReg$(_c, \"ErrorBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0lnQkEsYUFBYTtlQUFiQTs7SUE1RkhDLG9CQUFvQjtlQUFwQkE7Ozs7OzRFQWxDbUI7aURBQ0s7K0NBQ0g7K0NBQ0M7NENBQ0o7bUNBQ1Q7QUFFdEIsTUFBTUMsaUJBQ0osS0FBNkIsSUFBSUUsQ0FBQUEsR0FBQUEsT0FBQUEsS0FBQUEsRUFBTUQsT0FBT0UsU0FBUyxDQUFDQyxTQUFTO0FBMEI1RCxNQUFNTCw2QkFBNkJNLE9BQUFBLE9BQUssQ0FBQ0MsU0FBUztJQVN2RCxPQUFPQyx5QkFBeUJDLEtBQVksRUFBRTtRQUM1QyxJQUFJQyxDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCRCxRQUFRO1lBQzVCLCtEQUErRDtZQUMvRCw0R0FBNEc7WUFDNUcsTUFBTUE7UUFDUjtRQUVBLE9BQU87WUFBRUE7UUFBTTtJQUNqQjtJQUVBLE9BQU9FLHlCQUNMQyxLQUFnQyxFQUNoQ0MsS0FBZ0MsRUFDRTtRQUNsQyxNQUFNLEVBQUVKLEtBQUssRUFBRSxHQUFHSTtRQUVsQixpQ0FBaUM7UUFDakMsOENBQThDO1FBQzlDLGlEQUFpRDtRQUNqRCw2Q0FBNkM7UUFDN0MsSUFBSUMsS0FBd0MsRUFBRSxFQVE3QztRQUVEOzs7OztLQUtDLEdBQ0QsSUFBSUYsTUFBTU8sUUFBUSxLQUFLTixNQUFNSyxnQkFBZ0IsSUFBSUwsTUFBTUosS0FBSyxFQUFFO1lBQzVELE9BQU87Z0JBQ0xBLE9BQU87Z0JBQ1BTLGtCQUFrQk4sTUFBTU8sUUFBUTtZQUNsQztRQUNGO1FBQ0EsT0FBTztZQUNMVixPQUFPSSxNQUFNSixLQUFLO1lBQ2xCUyxrQkFBa0JOLE1BQU1PLFFBQVE7UUFDbEM7SUFDRjtJQU1BLHlJQUF5STtJQUN6SUMsU0FBMEI7UUFDeEIsdUZBQXVGO1FBQ3ZGLGlIQUFpSDtRQUNqSCxJQUFJLElBQUksQ0FBQ1AsS0FBSyxDQUFDSixLQUFLLElBQUksQ0FBQ1IsZ0JBQWdCO1lBQ3ZDLHFCQUNFOztrQ0FDRSxxQkFBQ29CLGdCQUFBQSxjQUFjO3dCQUFDWixPQUFPLElBQUksQ0FBQ0ksS0FBSyxDQUFDSixLQUFLOztvQkFDdEMsSUFBSSxDQUFDRyxLQUFLLENBQUNVLFdBQVc7b0JBQ3RCLElBQUksQ0FBQ1YsS0FBSyxDQUFDVyxZQUFZO2tDQUN4QixxQkFBQ0MsSUFBSSxDQUFDWixLQUFLLENBQUNhLGNBQWM7d0JBQ3hCaEIsT0FBTyxJQUFJLENBQUNJLEtBQUssQ0FBQ0osS0FBSzt3QkFDdkJpQixPQUFPLElBQUksQ0FBQ0EsS0FBSzs7OztRQUl6QjtRQUVBLE9BQU8sSUFBSSxDQUFDZCxLQUFLLENBQUNlLFFBQVE7SUFDNUI7SUE1RUFDLFlBQVloQixLQUFnQyxDQUFFO1FBQzVDLEtBQUssQ0FBQ0EsUUFBQUEsSUFBQUEsQ0FvRFJjLEtBQUFBLEdBQVE7WUFDTixJQUFJLENBQUNHLFFBQVEsQ0FBQztnQkFBRXBCLE9BQU87WUFBSztRQUM5QjtRQXJERSxJQUFJLENBQUNJLEtBQUssR0FBRztZQUFFSixPQUFPO1lBQU1TLGtCQUFrQixJQUFJLENBQUNOLEtBQUssQ0FBQ08sUUFBUTtRQUFDO0lBQ3BFO0FBMEVGO0FBV08sdUJBQXVCLEtBTzdCO0lBUDZCLE1BQzVCTSxjQUFjLEVBQ2RILFdBQVcsRUFDWEMsWUFBWSxFQUNaSSxRQUFRLEVBR1QsR0FQNkI7SUFRNUIsNkVBQTZFO0lBQzdFLHFFQUFxRTtJQUNyRSx3RUFBd0U7SUFDeEUsb0VBQW9FO0lBQ3BFLE1BQU1SLFdBQVdXLENBQUFBLEdBQUFBLHFCQUFBQSxvQkFBQUE7SUFDakIsSUFBSUwsZ0JBQWdCO1FBQ2xCLHFCQUNFLHFCQUFDekIsc0JBQUFBO1lBQ0NtQixVQUFVQTtZQUNWTSxnQkFBZ0JBO1lBQ2hCSCxhQUFhQTtZQUNiQyxjQUFjQTtzQkFFYkk7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1o7S0EzQmdCNUIiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvZXJyb3ItYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHsgdHlwZSBKU1ggfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVVudHJhY2tlZFBhdGhuYW1lIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXVudHJhY2tlZCdcbmltcG9ydCB7IGlzTmV4dFJvdXRlckVycm9yIH0gZnJvbSAnLi9pcy1uZXh0LXJvdXRlci1lcnJvcidcbmltcG9ydCB7IGhhbmRsZUhhcmROYXZFcnJvciB9IGZyb20gJy4vbmF2LWZhaWx1cmUtaGFuZGxlcidcbmltcG9ydCB7IEhhbmRsZUlTUkVycm9yIH0gZnJvbSAnLi9oYW5kbGUtaXNyLWVycm9yJ1xuaW1wb3J0IHsgaXNCb3QgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3QnXG5cbmNvbnN0IGlzQm90VXNlckFnZW50ID1cbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNCb3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpXG5cbmV4cG9ydCB0eXBlIEVycm9yQ29tcG9uZW50ID0gUmVhY3QuQ29tcG9uZW50VHlwZTx7XG4gIGVycm9yOiBFcnJvclxuICAvLyBnbG9iYWwtZXJyb3IsIHRoZXJlJ3Mgbm8gYHJlc2V0YCBmdW5jdGlvbjtcbiAgLy8gcmVndWxhciBlcnJvciBib3VuZGFyeSwgdGhlcmUncyBhIGByZXNldGAgZnVuY3Rpb24uXG4gIHJlc2V0PzogKCkgPT4gdm9pZFxufT5cblxuZXhwb3J0IGludGVyZmFjZSBFcnJvckJvdW5kYXJ5UHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZVxuICBlcnJvckNvbXBvbmVudDogRXJyb3JDb21wb25lbnQgfCB1bmRlZmluZWRcbiAgZXJyb3JTdHlsZXM/OiBSZWFjdC5SZWFjdE5vZGUgfCB1bmRlZmluZWRcbiAgZXJyb3JTY3JpcHRzPzogUmVhY3QuUmVhY3ROb2RlIHwgdW5kZWZpbmVkXG59XG5cbmludGVyZmFjZSBFcnJvckJvdW5kYXJ5SGFuZGxlclByb3BzIGV4dGVuZHMgRXJyb3JCb3VuZGFyeVByb3BzIHtcbiAgcGF0aG5hbWU6IHN0cmluZyB8IG51bGxcbiAgZXJyb3JDb21wb25lbnQ6IEVycm9yQ29tcG9uZW50XG59XG5cbmludGVyZmFjZSBFcnJvckJvdW5kYXJ5SGFuZGxlclN0YXRlIHtcbiAgZXJyb3I6IEVycm9yIHwgbnVsbFxuICBwcmV2aW91c1BhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvckJvdW5kYXJ5SGFuZGxlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxcbiAgRXJyb3JCb3VuZGFyeUhhbmRsZXJQcm9wcyxcbiAgRXJyb3JCb3VuZGFyeUhhbmRsZXJTdGF0ZVxuPiB7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBFcnJvckJvdW5kYXJ5SGFuZGxlclByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5zdGF0ZSA9IHsgZXJyb3I6IG51bGwsIHByZXZpb3VzUGF0aG5hbWU6IHRoaXMucHJvcHMucGF0aG5hbWUgfVxuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcjogRXJyb3IpIHtcbiAgICBpZiAoaXNOZXh0Um91dGVyRXJyb3IoZXJyb3IpKSB7XG4gICAgICAvLyBSZS10aHJvdyBpZiBhbiBleHBlY3RlZCBpbnRlcm5hbCBOZXh0LmpzIHJvdXRlciBlcnJvciBvY2N1cnNcbiAgICAgIC8vIHRoaXMgbWVhbnMgaXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgYSBkaWZmZXJlbnQgYm91bmRhcnkgKHN1Y2ggYXMgYSBOb3RGb3VuZCBib3VuZGFyeSBpbiBhIHBhcmVudCBzZWdtZW50KVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICByZXR1cm4geyBlcnJvciB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKFxuICAgIHByb3BzOiBFcnJvckJvdW5kYXJ5SGFuZGxlclByb3BzLFxuICAgIHN0YXRlOiBFcnJvckJvdW5kYXJ5SGFuZGxlclN0YXRlXG4gICk6IEVycm9yQm91bmRhcnlIYW5kbGVyU3RhdGUgfCBudWxsIHtcbiAgICBjb25zdCB7IGVycm9yIH0gPSBzdGF0ZVxuXG4gICAgLy8gaWYgd2UgZW5jb3VudGVyIGFuIGVycm9yIHdoaWxlXG4gICAgLy8gYSBuYXZpZ2F0aW9uIGlzIHBlbmRpbmcgd2Ugc2hvdWxkbid0IHJlbmRlclxuICAgIC8vIHRoZSBlcnJvciBib3VuZGFyeSBhbmQgaW5zdGVhZCBzaG91bGQgZmFsbGJhY2tcbiAgICAvLyB0byBhIGhhcmQgbmF2aWdhdGlvbiB0byBhdHRlbXB0IHJlY292ZXJpbmdcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORykge1xuICAgICAgaWYgKGVycm9yICYmIGhhbmRsZUhhcmROYXZFcnJvcihlcnJvcikpIHtcbiAgICAgICAgLy8gY2xlYXIgZXJyb3Igc28gd2UgZG9uJ3QgcmVuZGVyIGFueXRoaW5nXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIHJlc2V0IG9mIHRoZSBlcnJvciBib3VuZGFyeSB3aGVuIGEgbmF2aWdhdGlvbiBoYXBwZW5zLlxuICAgICAqIEVuc3VyZXMgdGhlIGVycm9yIGJvdW5kYXJ5IGRvZXMgbm90IHN0YXkgZW5hYmxlZCB3aGVuIG5hdmlnYXRpbmcgdG8gYSBuZXcgcGFnZS5cbiAgICAgKiBBcHByb2FjaCBvZiBzZXRTdGF0ZSBpbiByZW5kZXIgaXMgc2FmZSBhcyBpdCBjaGVja3MgdGhlIHByZXZpb3VzIHBhdGhuYW1lIGFuZCB0aGVuIG92ZXJyaWRlc1xuICAgICAqIGl0IGFzIG91dGxpbmVkIGluIGh0dHBzOi8vcmVhY3QuZGV2L3JlZmVyZW5jZS9yZWFjdC91c2VTdGF0ZSNzdG9yaW5nLWluZm9ybWF0aW9uLWZyb20tcHJldmlvdXMtcmVuZGVyc1xuICAgICAqL1xuICAgIGlmIChwcm9wcy5wYXRobmFtZSAhPT0gc3RhdGUucHJldmlvdXNQYXRobmFtZSAmJiBzdGF0ZS5lcnJvcikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICAgIHByZXZpb3VzUGF0aG5hbWU6IHByb3BzLnBhdGhuYW1lLFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IHN0YXRlLmVycm9yLFxuICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgfVxuICB9XG5cbiAgcmVzZXQgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBFeHBsaWNpdCB0eXBlIGlzIG5lZWRlZCB0byBhdm9pZCB0aGUgZ2VuZXJhdGVkIGAuZC50c2AgaGF2aW5nIGEgd2lkZSByZXR1cm4gdHlwZSB0aGF0IGNvdWxkIGJlIHNwZWNpZmljIHRvIHRoZSBgQHR5cGVzL3JlYWN0YCB2ZXJzaW9uLlxuICByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAvL1doZW4gaXQncyBib3QgcmVxdWVzdCwgc2VnbWVudCBsZXZlbCBlcnJvciBib3VuZGFyeSB3aWxsIGtlZXAgcmVuZGVyaW5nIHRoZSBjaGlsZHJlbixcbiAgICAvLyB0aGUgZmluYWwgZXJyb3Igd2lsbCBiZSBjYXVnaHQgYnkgdGhlIHJvb3QgZXJyb3IgYm91bmRhcnkgYW5kIGRldGVybWluZSB3ZXRoZXIgbmVlZCB0byBhcHBseSBncmFjZWZ1bCBkZWdyYWRlLlxuICAgIGlmICh0aGlzLnN0YXRlLmVycm9yICYmICFpc0JvdFVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8SGFuZGxlSVNSRXJyb3IgZXJyb3I9e3RoaXMuc3RhdGUuZXJyb3J9IC8+XG4gICAgICAgICAge3RoaXMucHJvcHMuZXJyb3JTdHlsZXN9XG4gICAgICAgICAge3RoaXMucHJvcHMuZXJyb3JTY3JpcHRzfVxuICAgICAgICAgIDx0aGlzLnByb3BzLmVycm9yQ29tcG9uZW50XG4gICAgICAgICAgICBlcnJvcj17dGhpcy5zdGF0ZS5lcnJvcn1cbiAgICAgICAgICAgIHJlc2V0PXt0aGlzLnJlc2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuXG4gIH1cbn1cblxuLyoqXG4gKiBIYW5kbGVzIGVycm9ycyB0aHJvdWdoIGBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3JgLlxuICogUmVuZGVycyB0aGUgcHJvdmlkZWQgZXJyb3IgY29tcG9uZW50IGFuZCBwcm92aWRlcyBhIHdheSB0byBgcmVzZXRgIHRoZSBlcnJvciBib3VuZGFyeSBzdGF0ZS5cbiAqL1xuXG4vKipcbiAqIFJlbmRlcnMgZXJyb3IgYm91bmRhcnkgd2l0aCB0aGUgcHJvdmlkZWQgXCJlcnJvckNvbXBvbmVudFwiIHByb3BlcnR5IGFzIHRoZSBmYWxsYmFjay5cbiAqIElmIG5vIFwiZXJyb3JDb21wb25lbnRcIiBwcm9wZXJ0eSBpcyBwcm92aWRlZCBpdCByZW5kZXJzIHRoZSBjaGlsZHJlbiB3aXRob3V0IGFuIGVycm9yIGJvdW5kYXJ5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gRXJyb3JCb3VuZGFyeSh7XG4gIGVycm9yQ29tcG9uZW50LFxuICBlcnJvclN0eWxlcyxcbiAgZXJyb3JTY3JpcHRzLFxuICBjaGlsZHJlbixcbn06IEVycm9yQm91bmRhcnlQcm9wcyAmIHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxufSk6IEpTWC5FbGVtZW50IHtcbiAgLy8gV2hlbiB3ZSdyZSByZW5kZXJpbmcgdGhlIG1pc3NpbmcgcGFyYW1zIHNoZWxsLCB0aGlzIHdpbGwgcmV0dXJuIG51bGwuIFRoaXNcbiAgLy8gaXMgYmVjYXVzZSB3ZSB3b24ndCBiZSByZW5kZXJpbmcgYW55IG5vdCBmb3VuZCBib3VuZGFyaWVzIG9yIGVycm9yXG4gIC8vIGJvdW5kYXJpZXMgZm9yIHRoZSBtaXNzaW5nIHBhcmFtcyBzaGVsbC4gV2hlbiB0aGlzIHJ1bnMgb24gdGhlIGNsaWVudFxuICAvLyAod2hlcmUgdGhlc2UgZXJyb3JzIGNhbiBvY2N1ciksIHdlIHdpbGwgZ2V0IHRoZSBjb3JyZWN0IHBhdGhuYW1lLlxuICBjb25zdCBwYXRobmFtZSA9IHVzZVVudHJhY2tlZFBhdGhuYW1lKClcbiAgaWYgKGVycm9yQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxFcnJvckJvdW5kYXJ5SGFuZGxlclxuICAgICAgICBwYXRobmFtZT17cGF0aG5hbWV9XG4gICAgICAgIGVycm9yQ29tcG9uZW50PXtlcnJvckNvbXBvbmVudH1cbiAgICAgICAgZXJyb3JTdHlsZXM9e2Vycm9yU3R5bGVzfVxuICAgICAgICBlcnJvclNjcmlwdHM9e2Vycm9yU2NyaXB0c31cbiAgICAgID5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9FcnJvckJvdW5kYXJ5SGFuZGxlcj5cbiAgICApXG4gIH1cblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+XG59XG4iXSwibmFtZXMiOlsiRXJyb3JCb3VuZGFyeSIsIkVycm9yQm91bmRhcnlIYW5kbGVyIiwiaXNCb3RVc2VyQWdlbnQiLCJ3aW5kb3ciLCJpc0JvdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsIlJlYWN0IiwiQ29tcG9uZW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwiZXJyb3IiLCJpc05leHRSb3V0ZXJFcnJvciIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsInByb3BzIiwic3RhdGUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORyIsImhhbmRsZUhhcmROYXZFcnJvciIsInByZXZpb3VzUGF0aG5hbWUiLCJwYXRobmFtZSIsInJlbmRlciIsIkhhbmRsZUlTUkVycm9yIiwiZXJyb3JTdHlsZXMiLCJlcnJvclNjcmlwdHMiLCJ0aGlzIiwiZXJyb3JDb21wb25lbnQiLCJyZXNldCIsImNoaWxkcmVuIiwiY29uc3RydWN0b3IiLCJzZXRTdGF0ZSIsInVzZVVudHJhY2tlZFBhdGhuYW1lIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/error-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js": /*!*****************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js ***! \*****************************************************************************************************************************************************************/ /***/ ((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 GracefulDegradeBoundary: function() {\n return GracefulDegradeBoundary;\n },\n default: function() {\n return _default;\n }\n});\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nfunction getDomNodeAttributes(node) {\n const result = {};\n for(let i = 0; i < node.attributes.length; i++){\n const attr = node.attributes[i];\n result[attr.name] = attr.value;\n }\n return result;\n}\nclass GracefulDegradeBoundary extends _react.Component {\n static getDerivedStateFromError(_) {\n return {\n hasError: true\n };\n }\n componentDidMount() {\n const htmlNode = this.htmlRef.current;\n if (this.state.hasError && htmlNode) {\n // Reapply the cached HTML attributes to the root element\n Object.entries(this.htmlAttributes).forEach((param)=>{\n let [key, value] = param;\n htmlNode.setAttribute(key, value);\n });\n }\n }\n render() {\n const { hasError } = this.state;\n // Cache the root HTML content on the first render\n if ( true && !this.rootHtml) {\n this.rootHtml = document.documentElement.innerHTML;\n this.htmlAttributes = getDomNodeAttributes(document.documentElement);\n }\n if (hasError) {\n // Render the current HTML content without hydration\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(\"html\", {\n ref: this.htmlRef,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: this.rootHtml\n }\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props);\n this.state = {\n hasError: false\n };\n this.rootHtml = '';\n this.htmlAttributes = {};\n this.htmlRef = /*#__PURE__*/ (0, _react.createRef)();\n }\n}\nconst _default = GracefulDegradeBoundary;\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=graceful-degrade-boundary.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3JzL2dyYWNlZnVsLWRlZ3JhZGUtYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBcUJhQSx1QkFBdUI7ZUFBdkJBOztJQXVEYixPQUFzQztlQUF0Qzs7OzttQ0ExRXFEO0FBVXJELFNBQVNDLHFCQUFxQkMsSUFBaUI7SUFDN0MsTUFBTUMsU0FBaUMsQ0FBQztJQUN4QyxJQUFLLElBQUlDLElBQUksR0FBR0EsSUFBSUYsS0FBS0csVUFBVSxDQUFDQyxNQUFNLEVBQUVGLElBQUs7UUFDL0MsTUFBTUcsT0FBT0wsS0FBS0csVUFBVSxDQUFDRCxFQUFFO1FBQy9CRCxNQUFNLENBQUNJLEtBQUtDLElBQUksQ0FBQyxHQUFHRCxLQUFLRSxLQUFLO0lBQ2hDO0lBQ0EsT0FBT047QUFDVDtBQUVPLE1BQU1ILGdDQUFnQ1UsT0FBQUEsU0FBUztJQWdCcEQsT0FBT0MseUJBQXlCQyxDQUFVLEVBQXNCO1FBQzlELE9BQU87WUFBRUMsVUFBVTtRQUFLO0lBQzFCO0lBRUFDLG9CQUFvQjtRQUNsQixNQUFNQyxXQUFXLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPO1FBQ3JDLElBQUksSUFBSSxDQUFDQyxLQUFLLENBQUNMLFFBQVEsSUFBSUUsVUFBVTtZQUNuQyx5REFBeUQ7WUFDekRJLE9BQU9DLE9BQU8sQ0FBQyxJQUFJLENBQUNDLGNBQWMsRUFBRUMsT0FBTyxDQUFDO29CQUFDLENBQUNDLEtBQUtkLE1BQU07Z0JBQ3ZETSxTQUFTUyxZQUFZLENBQUNELEtBQUtkO1lBQzdCO1FBQ0Y7SUFDRjtJQUVBZ0IsU0FBUztRQUNQLE1BQU0sRUFBRVosUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDSyxLQUFLO1FBQy9CLGtEQUFrRDtRQUNsRCxJQUFJLEtBQTZCLElBQUksQ0FBQyxJQUFJLENBQUNTLFFBQVEsRUFBRTtZQUNuRCxJQUFJLENBQUNBLFFBQVEsR0FBR0MsU0FBU0MsZUFBZSxDQUFDQyxTQUFTO1lBQ2xELElBQUksQ0FBQ1QsY0FBYyxHQUFHcEIscUJBQXFCMkIsU0FBU0MsZUFBZTtRQUNyRTtRQUVBLElBQUloQixVQUFVO1lBQ1osb0RBQW9EO1lBQ3BELHFCQUNFLHFCQUFDa0IsUUFBQUE7Z0JBQ0NDLEtBQUssSUFBSSxDQUFDaEIsT0FBTztnQkFDakJpQix3QkFBd0I7Z0JBQ3hCQyx5QkFBeUI7b0JBQ3ZCQyxRQUFRLElBQUksQ0FBQ1IsUUFBUTtnQkFDdkI7O1FBR047UUFFQSxPQUFPLElBQUksQ0FBQ1MsS0FBSyxDQUFDQyxRQUFRO0lBQzVCO0lBNUNBQyxZQUFZRixLQUF5QixDQUFFO1FBQ3JDLEtBQUssQ0FBQ0E7UUFDTixJQUFJLENBQUNsQixLQUFLLEdBQUc7WUFBRUwsVUFBVTtRQUFNO1FBQy9CLElBQUksQ0FBQ2MsUUFBUSxHQUFHO1FBQ2hCLElBQUksQ0FBQ04sY0FBYyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDTCxPQUFPLGlCQUFHdUIsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUE7SUFDakI7QUF1Q0Y7TUFFQSxXQUFldkMiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9lcnJvcnMvZ3JhY2VmdWwtZGVncmFkZS1ib3VuZGFyeS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IENvbXBvbmVudCwgY3JlYXRlUmVmLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuXG5pbnRlcmZhY2UgRXJyb3JCb3VuZGFyeVByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxufVxuXG5pbnRlcmZhY2UgRXJyb3JCb3VuZGFyeVN0YXRlIHtcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbn1cblxuZnVuY3Rpb24gZ2V0RG9tTm9kZUF0dHJpYnV0ZXMobm9kZTogSFRNTEVsZW1lbnQpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBhdHRyID0gbm9kZS5hdHRyaWJ1dGVzW2ldXG4gICAgcmVzdWx0W2F0dHIubmFtZV0gPSBhdHRyLnZhbHVlXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgY2xhc3MgR3JhY2VmdWxEZWdyYWRlQm91bmRhcnkgZXh0ZW5kcyBDb21wb25lbnQ8XG4gIEVycm9yQm91bmRhcnlQcm9wcyxcbiAgRXJyb3JCb3VuZGFyeVN0YXRlXG4+IHtcbiAgcHJpdmF0ZSByb290SHRtbDogc3RyaW5nXG4gIHByaXZhdGUgaHRtbEF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgcHJpdmF0ZSBodG1sUmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTEh0bWxFbGVtZW50IHwgbnVsbD5cblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRXJyb3JCb3VuZGFyeVByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5zdGF0ZSA9IHsgaGFzRXJyb3I6IGZhbHNlIH1cbiAgICB0aGlzLnJvb3RIdG1sID0gJydcbiAgICB0aGlzLmh0bWxBdHRyaWJ1dGVzID0ge31cbiAgICB0aGlzLmh0bWxSZWYgPSBjcmVhdGVSZWY8SFRNTEh0bWxFbGVtZW50PigpXG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKF86IHVua25vd24pOiBFcnJvckJvdW5kYXJ5U3RhdGUge1xuICAgIHJldHVybiB7IGhhc0Vycm9yOiB0cnVlIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgIGNvbnN0IGh0bWxOb2RlID0gdGhpcy5odG1sUmVmLmN1cnJlbnRcbiAgICBpZiAodGhpcy5zdGF0ZS5oYXNFcnJvciAmJiBodG1sTm9kZSkge1xuICAgICAgLy8gUmVhcHBseSB0aGUgY2FjaGVkIEhUTUwgYXR0cmlidXRlcyB0byB0aGUgcm9vdCBlbGVtZW50XG4gICAgICBPYmplY3QuZW50cmllcyh0aGlzLmh0bWxBdHRyaWJ1dGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaHRtbE5vZGUuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGhhc0Vycm9yIH0gPSB0aGlzLnN0YXRlXG4gICAgLy8gQ2FjaGUgdGhlIHJvb3QgSFRNTCBjb250ZW50IG9uIHRoZSBmaXJzdCByZW5kZXJcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgIXRoaXMucm9vdEh0bWwpIHtcbiAgICAgIHRoaXMucm9vdEh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MXG4gICAgICB0aGlzLmh0bWxBdHRyaWJ1dGVzID0gZ2V0RG9tTm9kZUF0dHJpYnV0ZXMoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KVxuICAgIH1cblxuICAgIGlmIChoYXNFcnJvcikge1xuICAgICAgLy8gUmVuZGVyIHRoZSBjdXJyZW50IEhUTUwgY29udGVudCB3aXRob3V0IGh5ZHJhdGlvblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGh0bWxcbiAgICAgICAgICByZWY9e3RoaXMuaHRtbFJlZn1cbiAgICAgICAgICBzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiB0aGlzLnJvb3RIdG1sLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW5cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBHcmFjZWZ1bERlZ3JhZGVCb3VuZGFyeVxuIl0sIm5hbWVzIjpbIkdyYWNlZnVsRGVncmFkZUJvdW5kYXJ5IiwiZ2V0RG9tTm9kZUF0dHJpYnV0ZXMiLCJub2RlIiwicmVzdWx0IiwiaSIsImF0dHJpYnV0ZXMiLCJsZW5ndGgiLCJhdHRyIiwibmFtZSIsInZhbHVlIiwiQ29tcG9uZW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwiXyIsImhhc0Vycm9yIiwiY29tcG9uZW50RGlkTW91bnQiLCJodG1sTm9kZSIsImh0bWxSZWYiLCJjdXJyZW50Iiwic3RhdGUiLCJPYmplY3QiLCJlbnRyaWVzIiwiaHRtbEF0dHJpYnV0ZXMiLCJmb3JFYWNoIiwia2V5Iiwic2V0QXR0cmlidXRlIiwicmVuZGVyIiwid2luZG93Iiwicm9vdEh0bWwiLCJkb2N1bWVudCIsImRvY3VtZW50RWxlbWVudCIsImlubmVySFRNTCIsImh0bWwiLCJyZWYiLCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsInByb3BzIiwiY2hpbGRyZW4iLCJjb25zdHJ1Y3RvciIsImNyZWF0ZVJlZiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/root-error-boundary.js": /*!***********************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/root-error-boundary.js ***! \***********************************************************************************************************************************************************/ /***/ ((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}));\nObject.defineProperty(exports, \"default\", ({\n enumerable: true,\n get: function() {\n return RootErrorBoundary;\n }\n}));\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _gracefuldegradeboundary = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./graceful-degrade-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js\"));\nconst _errorboundary = __webpack_require__(/*! ../error-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/error-boundary.js\");\nconst _isbot = __webpack_require__(/*! ../../../shared/lib/router/utils/is-bot */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/is-bot.js\");\nconst isBotUserAgent = true && (0, _isbot.isBot)(window.navigator.userAgent);\nfunction RootErrorBoundary(param) {\n let { children, errorComponent, errorStyles, errorScripts } = param;\n if (isBotUserAgent) {\n // Preserve existing DOM/HTML for bots to avoid replacing content with an error UI\n // and to keep the original SSR output intact.\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_gracefuldegradeboundary.default, {\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_errorboundary.ErrorBoundary, {\n errorComponent: errorComponent,\n errorStyles: errorStyles,\n errorScripts: errorScripts,\n children: children\n });\n}\n_c = RootErrorBoundary;\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=root-error-boundary.js.map\nvar _c;\n$RefreshReg$(_c, \"RootErrorBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZXJyb3JzL3Jvb3QtZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FVQTs7O2VBQXdCQTs7Ozs7NEVBUlE7OEZBQ0k7MkNBQ21CO21DQUNqQztBQUV0QixNQUFNQyxpQkFDSixLQUE2QixJQUFJRSxDQUFBQSxHQUFBQSxPQUFBQSxLQUFBQSxFQUFNRCxPQUFPRSxTQUFTLENBQUNDLFNBQVM7QUFFcEQsMkJBQTJCLEtBS1c7SUFMWCxNQUN4Q0MsUUFBUSxFQUNSQyxjQUFjLEVBQ2RDLFdBQVcsRUFDWEMsWUFBWSxFQUN1QyxHQUxYO0lBTXhDLElBQUlSLGdCQUFnQjtRQUNsQixrRkFBa0Y7UUFDbEYsOENBQThDO1FBQzlDLHFCQUFPLHFCQUFDUyx5QkFBQUEsT0FBdUI7c0JBQUVKOztJQUNuQztJQUVBLHFCQUNFLHFCQUFDSyxlQUFBQSxhQUFhO1FBQ1pKLGdCQUFnQkE7UUFDaEJDLGFBQWFBO1FBQ2JDLGNBQWNBO2tCQUViSDs7QUFHUDtLQXJCd0JOIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvZXJyb3JzL3Jvb3QtZXJyb3ItYm91bmRhcnkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuXG5pbXBvcnQgUmVhY3QsIHsgdHlwZSBKU1ggfSBmcm9tICdyZWFjdCdcbmltcG9ydCBHcmFjZWZ1bERlZ3JhZGVCb3VuZGFyeSBmcm9tICcuL2dyYWNlZnVsLWRlZ3JhZGUtYm91bmRhcnknXG5pbXBvcnQgeyBFcnJvckJvdW5kYXJ5LCB0eXBlIEVycm9yQm91bmRhcnlQcm9wcyB9IGZyb20gJy4uL2Vycm9yLWJvdW5kYXJ5J1xuaW1wb3J0IHsgaXNCb3QgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9pcy1ib3QnXG5cbmNvbnN0IGlzQm90VXNlckFnZW50ID1cbiAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgaXNCb3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RFcnJvckJvdW5kYXJ5KHtcbiAgY2hpbGRyZW4sXG4gIGVycm9yQ29tcG9uZW50LFxuICBlcnJvclN0eWxlcyxcbiAgZXJyb3JTY3JpcHRzLFxufTogRXJyb3JCb3VuZGFyeVByb3BzICYgeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pOiBKU1guRWxlbWVudCB7XG4gIGlmIChpc0JvdFVzZXJBZ2VudCkge1xuICAgIC8vIFByZXNlcnZlIGV4aXN0aW5nIERPTS9IVE1MIGZvciBib3RzIHRvIGF2b2lkIHJlcGxhY2luZyBjb250ZW50IHdpdGggYW4gZXJyb3IgVUlcbiAgICAvLyBhbmQgdG8ga2VlcCB0aGUgb3JpZ2luYWwgU1NSIG91dHB1dCBpbnRhY3QuXG4gICAgcmV0dXJuIDxHcmFjZWZ1bERlZ3JhZGVCb3VuZGFyeT57Y2hpbGRyZW59PC9HcmFjZWZ1bERlZ3JhZGVCb3VuZGFyeT5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEVycm9yQm91bmRhcnlcbiAgICAgIGVycm9yQ29tcG9uZW50PXtlcnJvckNvbXBvbmVudH1cbiAgICAgIGVycm9yU3R5bGVzPXtlcnJvclN0eWxlc31cbiAgICAgIGVycm9yU2NyaXB0cz17ZXJyb3JTY3JpcHRzfVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L0Vycm9yQm91bmRhcnk+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSb290RXJyb3JCb3VuZGFyeSIsImlzQm90VXNlckFnZW50Iiwid2luZG93IiwiaXNCb3QiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJjaGlsZHJlbiIsImVycm9yQ29tcG9uZW50IiwiZXJyb3JTdHlsZXMiLCJlcnJvclNjcmlwdHMiLCJHcmFjZWZ1bERlZ3JhZGVCb3VuZGFyeSIsIkVycm9yQm91bmRhcnkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/errors/root-error-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/forbidden.js": /*!******************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/forbidden.js ***! \******************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"forbidden\", ({\n enumerable: true,\n get: function() {\n return forbidden;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";403\";\nfunction forbidden() {\n if (true) {\n throw Object.defineProperty(new Error(\"`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E488\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\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=forbidden.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvZm9yYmlkZGVuLmpzIiwibWFwcGluZ3MiOiI7Ozs7NkNBcUJnQkE7OztlQUFBQTs7O2dEQWxCVDtBQUVQLDZCQUE2QjtBQUM3Qjs7Ozs7Ozs7Ozs7Q0FXQyxHQUVELE1BQU1DLFNBQVUsS0FBRUMsb0JBQUFBLDhCQUE4QixHQUFDO0FBRTFDLFNBQVNGO0lBQ2QsSUFBSSxJQUFnRCxFQUFFO1FBQ3BELE1BQU0scUJBRUwsQ0FGSyxJQUFJTSxNQUNQLGdIQURHO21CQUFBO3dCQUFBOzBCQUFBO1FBRU47SUFDRjtJQUVBLDRDQUE0QztJQUM1QyxNQUFNQyxRQUFRLHFCQUFpQixDQUFqQixJQUFJRCxNQUFNTCxTQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBZ0I7SUFDNUJNLE1BQWtDQyxNQUFNLEdBQUdQO0lBQzdDLE1BQU1NO0FBQ1IiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvZm9yYmlkZGVuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSxcbiAgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjaydcblxuLy8gVE9ETzogQWRkIGBmb3JiaWRkZW5gIGRvY3Ncbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIHJlbmRlciB0aGUgW2ZvcmJpZGRlbi5qcyBmaWxlXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9maWxlLWNvbnZlbnRpb25zL2ZvcmJpZGRlbilcbiAqIHdpdGhpbiBhIHJvdXRlIHNlZ21lbnQgYXMgd2VsbCBhcyBpbmplY3QgYSB0YWcuXG4gKlxuICogYGZvcmJpZGRlbigpYCBjYW4gYmUgdXNlZCBpblxuICogW1NlcnZlciBDb21wb25lbnRzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yZW5kZXJpbmcvc2VydmVyLWNvbXBvbmVudHMpLFxuICogW1JvdXRlIEhhbmRsZXJzXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9yb3V0aW5nL3JvdXRlLWhhbmRsZXJzKSwgYW5kXG4gKiBbU2VydmVyIEFjdGlvbnNdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvc2VydmVyLWFjdGlvbnMtYW5kLW11dGF0aW9ucykuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgZm9yYmlkZGVuYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2ZvcmJpZGRlbilcbiAqL1xuXG5jb25zdCBESUdFU1QgPSBgJHtIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREV9OzQwM2BcblxuZXhwb3J0IGZ1bmN0aW9uIGZvcmJpZGRlbigpOiBuZXZlciB7XG4gIGlmICghcHJvY2Vzcy5lbnYuX19ORVhUX0VYUEVSSU1FTlRBTF9BVVRIX0lOVEVSUlVQVFMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgXFxgZm9yYmlkZGVuKClcXGAgaXMgZXhwZXJpbWVudGFsIGFuZCBvbmx5IGFsbG93ZWQgdG8gYmUgZW5hYmxlZCB3aGVuIFxcYGV4cGVyaW1lbnRhbC5hdXRoSW50ZXJydXB0c1xcYCBpcyBlbmFibGVkLmBcbiAgICApXG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihESUdFU1QpIGFzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yXG4gIDsoZXJyb3IgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IpLmRpZ2VzdCA9IERJR0VTVFxuICB0aHJvdyBlcnJvclxufVxuIl0sIm5hbWVzIjpbImZvcmJpZGRlbiIsIkRJR0VTVCIsIkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfRVhQRVJJTUVOVEFMX0FVVEhfSU5URVJSVVBUUyIsIkVycm9yIiwiZXJyb3IiLCJkaWdlc3QiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/forbidden.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/handle-isr-error.js": /*!*************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/handle-isr-error.js ***! \*************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"HandleISRError\", ({\n enumerable: true,\n get: function() {\n return HandleISRError;\n }\n}));\nconst workAsyncStorage = false ? 0 : undefined;\nfunction HandleISRError(param) {\n let { error } = param;\n if (workAsyncStorage) {\n const store = workAsyncStorage.getStore();\n if ((store == null ? void 0 : store.isRevalidate) || (store == null ? void 0 : store.isStaticGeneration)) {\n console.error(error);\n throw error;\n }\n }\n return null;\n}\n_c = HandleISRError;\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=handle-isr-error.js.map\nvar _c;\n$RefreshReg$(_c, \"HandleISRError\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaGFuZGxlLWlzci1lcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7O2tEQVVnQkE7OztlQUFBQTs7O0FBVmhCLE1BQU1DLG1CQUNKLE1BQTZCLEdBRXZCRSxDQUNnQixHQUNsQkM7QUFLQyx3QkFBd0IsS0FBeUI7SUFBekIsTUFBRUMsS0FBSyxFQUFrQixHQUF6QjtJQUM3QixJQUFJSixrQkFBa0I7UUFDcEIsTUFBTUssUUFBUUwsaUJBQWlCTSxRQUFRO1FBQ3ZDLElBQUlELENBQUFBLFNBQUFBLE9BQUFBLEtBQUFBLElBQUFBLE1BQU9FLFlBQUFBLE1BQWdCRixTQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxNQUFPRyxrQkFBQUEsR0FBb0I7WUFDcERDLFFBQVFMLEtBQUssQ0FBQ0E7WUFDZCxNQUFNQTtRQUNSO0lBQ0Y7SUFFQSxPQUFPO0FBQ1Q7S0FWZ0JMIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL2hhbmRsZS1pc3ItZXJyb3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHdvcmtBc3luY1N0b3JhZ2UgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKVxuICAgICAgKS53b3JrQXN5bmNTdG9yYWdlXG4gICAgOiB1bmRlZmluZWRcblxuLy8gaWYgd2UgYXJlIHJldmFsaWRhdGluZyB3ZSB3YW50IHRvIHJlLXRocm93IHRoZSBlcnJvciBzbyB0aGVcbi8vIGZ1bmN0aW9uIGNyYXNoZXMgc28gd2UgY2FuIG1haW50YWluIG91ciBwcmV2aW91cyBjYWNoZVxuLy8gaW5zdGVhZCBvZiBjYWNoaW5nIHRoZSBlcnJvciBwYWdlXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlSVNSRXJyb3IoeyBlcnJvciB9OiB7IGVycm9yOiBhbnkgfSkge1xuICBpZiAod29ya0FzeW5jU3RvcmFnZSkge1xuICAgIGNvbnN0IHN0b3JlID0gd29ya0FzeW5jU3RvcmFnZS5nZXRTdG9yZSgpXG4gICAgaWYgKHN0b3JlPy5pc1JldmFsaWRhdGUgfHwgc3RvcmU/LmlzU3RhdGljR2VuZXJhdGlvbikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJuYW1lcyI6WyJIYW5kbGVJU1JFcnJvciIsIndvcmtBc3luY1N0b3JhZ2UiLCJ3aW5kb3ciLCJyZXF1aXJlIiwidW5kZWZpbmVkIiwiZXJyb3IiLCJzdG9yZSIsImdldFN0b3JlIiwiaXNSZXZhbGlkYXRlIiwiaXNTdGF0aWNHZW5lcmF0aW9uIiwiY29uc29sZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/handle-isr-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js ***! \********************************************************************************************************************************************************************/ /***/ ((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}));\nObject.defineProperty(exports, \"HTTPAccessFallbackBoundary\", ({\n enumerable: true,\n get: function() {\n return HTTPAccessFallbackBoundary;\n }\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _navigationuntracked = __webpack_require__(/*! ../navigation-untracked */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _warnonce = __webpack_require__(/*! ../../../shared/lib/utils/warn-once */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/utils/warn-once.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nclass HTTPAccessFallbackErrorBoundary extends _react.default.Component {\n componentDidCatch() {\n if ( true && this.props.missingSlots && this.props.missingSlots.size > 0 && // A missing children slot is the typical not-found case, so no need to warn\n !this.props.missingSlots.has('children')) {\n let warningMessage = 'No default component was found for a parallel route rendered on this page. Falling back to nearest NotFound boundary.\\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/routing/parallel-routes#defaultjs\\n\\n';\n const formattedSlots = Array.from(this.props.missingSlots).sort((a, b)=>a.localeCompare(b)).map((slot)=>\"@\" + slot).join(', ');\n warningMessage += 'Missing slots: ' + formattedSlots;\n (0, _warnonce.warnOnce)(warningMessage);\n }\n }\n static getDerivedStateFromError(error) {\n if ((0, _httpaccessfallback.isHTTPAccessFallbackError)(error)) {\n const httpStatus = (0, _httpaccessfallback.getAccessFallbackHTTPStatus)(error);\n return {\n triggeredStatus: httpStatus\n };\n }\n // Re-throw if error is not for 404\n throw error;\n }\n static getDerivedStateFromProps(props, state) {\n /**\n * Handles reset of the error boundary when a navigation happens.\n * Ensures the error boundary does not stay enabled when navigating to a new page.\n * Approach of setState in render is safe as it checks the previous pathname and then overrides\n * it as outlined in https://react.dev/reference/react/useState#storing-information-from-previous-renders\n */ if (props.pathname !== state.previousPathname && state.triggeredStatus) {\n return {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n return {\n triggeredStatus: state.triggeredStatus,\n previousPathname: props.pathname\n };\n }\n render() {\n const { notFound, forbidden, unauthorized, children } = this.props;\n const { triggeredStatus } = this.state;\n const errorComponents = {\n [_httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND]: notFound,\n [_httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN]: forbidden,\n [_httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED]: unauthorized\n };\n if (triggeredStatus) {\n const isNotFound = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.NOT_FOUND && notFound;\n const isForbidden = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.FORBIDDEN && forbidden;\n const isUnauthorized = triggeredStatus === _httpaccessfallback.HTTPAccessErrorStatus.UNAUTHORIZED && unauthorized;\n // If there's no matched boundary in this layer, keep throwing the error by rendering the children\n if (!(isNotFound || isForbidden || isUnauthorized)) {\n return children;\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"robots\",\n content: \"noindex\"\n }),\n true && /*#__PURE__*/ (0, _jsxruntime.jsx)(\"meta\", {\n name: \"boundary-next-error\",\n content: (0, _httpaccessfallback.getAccessFallbackErrorTypeByStatus)(triggeredStatus)\n }),\n errorComponents[triggeredStatus]\n ]\n });\n }\n return children;\n }\n constructor(props){\n super(props);\n this.state = {\n triggeredStatus: undefined,\n previousPathname: props.pathname\n };\n }\n}\nfunction HTTPAccessFallbackBoundary(param) {\n let { notFound, forbidden, unauthorized, children } = param;\n // When we're rendering the missing params shell, this will return null. This\n // is because we won't be rendering any not found boundaries or error\n // boundaries for the missing params shell. When this runs on the client\n // (where these error can occur), we will get the correct pathname.\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const missingSlots = (0, _react.useContext)(_approutercontextsharedruntime.MissingSlotContext);\n const hasErrorFallback = !!(notFound || forbidden || unauthorized);\n if (hasErrorFallback) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HTTPAccessFallbackErrorBoundary, {\n pathname: pathname,\n notFound: notFound,\n forbidden: forbidden,\n unauthorized: unauthorized,\n missingSlots: missingSlots,\n children: children\n });\n }\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(_jsxruntime.Fragment, {\n children: children\n });\n}\n_c = HTTPAccessFallbackBoundary;\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=error-boundary.js.map\nvar _c;\n$RefreshReg$(_c, \"HTTPAccessFallbackBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs4REF1SmdCQTs7O2VBQUFBOzs7Ozs2RUExSWtCO2lEQUNHO2dEQU05QjtzQ0FDa0I7MkRBQ1U7QUFxQm5DLE1BQU1DLHdDQUF3Q0MsT0FBQUEsT0FBSyxDQUFDQyxTQUFTO0lBWTNEQyxvQkFBMEI7UUFDeEIsSUFDRUMsS0FBb0IsSUFDcEIsSUFBSSxDQUFDRyxLQUFLLENBQUNDLFlBQVksSUFDdkIsSUFBSSxDQUFDRCxLQUFLLENBQUNDLFlBQVksQ0FBQ0MsSUFBSSxHQUFHLEtBQy9CLDRFQUE0RTtRQUM1RSxDQUFDLElBQUksQ0FBQ0YsS0FBSyxDQUFDQyxZQUFZLENBQUNFLEdBQUcsQ0FBQyxhQUM3QjtZQUNBLElBQUlDLGlCQUNGLDRIQUNBO1lBRUYsTUFBTUMsaUJBQWlCQyxNQUFNQyxJQUFJLENBQUMsSUFBSSxDQUFDUCxLQUFLLENBQUNDLFlBQVksRUFDdERPLElBQUksQ0FBQyxDQUFDQyxHQUFHQyxJQUFNRCxFQUFFRSxhQUFhLENBQUNELElBQy9CRSxHQUFHLENBQUMsQ0FBQ0MsT0FBVSxNQUFHQSxNQUNsQkMsSUFBSSxDQUFDO1lBRVJWLGtCQUFrQixvQkFBb0JDO1lBRXRDVSxDQUFBQSxHQUFBQSxVQUFBQSxRQUFBQSxFQUFTWDtRQUNYO0lBQ0Y7SUFFQSxPQUFPWSx5QkFBeUJDLEtBQVUsRUFBRTtRQUMxQyxJQUFJQyxDQUFBQSxHQUFBQSxvQkFBQUEseUJBQXlCLEVBQUNELFFBQVE7WUFDcEMsTUFBTUUsYUFBYUMsQ0FBQUEsR0FBQUEsb0JBQUFBLDJCQUFBQSxFQUE0Qkg7WUFDL0MsT0FBTztnQkFDTEksaUJBQWlCRjtZQUNuQjtRQUNGO1FBQ0EsbUNBQW1DO1FBQ25DLE1BQU1GO0lBQ1I7SUFFQSxPQUFPSyx5QkFDTHRCLEtBQTJDLEVBQzNDdUIsS0FBOEIsRUFDRTtRQUNoQzs7Ozs7S0FLQyxHQUNELElBQUl2QixNQUFNd0IsUUFBUSxLQUFLRCxNQUFNRSxnQkFBZ0IsSUFBSUYsTUFBTUYsZUFBZSxFQUFFO1lBQ3RFLE9BQU87Z0JBQ0xBLGlCQUFpQks7Z0JBQ2pCRCxrQkFBa0J6QixNQUFNd0IsUUFBUTtZQUNsQztRQUNGO1FBQ0EsT0FBTztZQUNMSCxpQkFBaUJFLE1BQU1GLGVBQWU7WUFDdENJLGtCQUFrQnpCLE1BQU13QixRQUFRO1FBQ2xDO0lBQ0Y7SUFFQUcsU0FBUztRQUNQLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxTQUFTLEVBQUVDLFlBQVksRUFBRUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDL0IsS0FBSztRQUNsRSxNQUFNLEVBQUVxQixlQUFlLEVBQUUsR0FBRyxJQUFJLENBQUNFLEtBQUs7UUFDdEMsTUFBTVMsa0JBQWtCO1lBQ3RCLENBQUNDLG9CQUFBQSxxQkFBcUIsQ0FBQ0MsU0FBUyxDQUFDLEVBQUVOO1lBQ25DLENBQUNLLG9CQUFBQSxxQkFBcUIsQ0FBQ0UsU0FBUyxDQUFDLEVBQUVOO1lBQ25DLENBQUNJLG9CQUFBQSxxQkFBcUIsQ0FBQ0csWUFBWSxDQUFDLEVBQUVOO1FBQ3hDO1FBRUEsSUFBSVQsaUJBQWlCO1lBQ25CLE1BQU1nQixhQUNKaEIsb0JBQW9CWSxvQkFBQUEscUJBQXFCLENBQUNDLFNBQVMsSUFBSU47WUFDekQsTUFBTVUsY0FDSmpCLG9CQUFvQlksb0JBQUFBLHFCQUFxQixDQUFDRSxTQUFTLElBQUlOO1lBQ3pELE1BQU1VLGlCQUNKbEIsb0JBQW9CWSxvQkFBQUEscUJBQXFCLENBQUNHLFlBQVksSUFBSU47WUFFNUQsa0dBQWtHO1lBQ2xHLElBQUksQ0FBRU8sQ0FBQUEsY0FBY0MsZUFBZUMsY0FBQUEsQ0FBYSxFQUFJO2dCQUNsRCxPQUFPUjtZQUNUO1lBRUEscUJBQ0U7O2tDQUNFLHFCQUFDUyxRQUFBQTt3QkFBS0MsTUFBSzt3QkFBU0MsU0FBUTs7eUJBQ1csSUFBYixjQUN4QixxQkFBQ0YsUUFBQUE7d0JBQ0NDLE1BQUs7d0JBQ0xDLFNBQVNDLENBQUFBLEdBQUFBLG9CQUFBQSxrQ0FBQUEsRUFBbUN0Qjs7b0JBRy9DVyxlQUFlLENBQUNYLGdCQUFnQjs7O1FBR3ZDO1FBRUEsT0FBT1U7SUFDVDtJQXJHQWEsWUFBWTVDLEtBQTJDLENBQUU7UUFDdkQsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ3VCLEtBQUssR0FBRztZQUNYRixpQkFBaUJLO1lBQ2pCRCxrQkFBa0J6QixNQUFNd0IsUUFBUTtRQUNsQztJQUNGO0FBZ0dGO0FBRU8sb0NBQW9DLEtBS1Q7SUFMUyxNQUN6Q0ksUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLFlBQVksRUFDWkMsUUFBUSxFQUN3QixHQUxTO0lBTXpDLDZFQUE2RTtJQUM3RSxxRUFBcUU7SUFDckUsd0VBQXdFO0lBQ3hFLG1FQUFtRTtJQUNuRSxNQUFNUCxXQUFXcUIsQ0FBQUEsR0FBQUEscUJBQUFBLG9CQUFBQTtJQUNqQixNQUFNNUMsZUFBZTZDLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLCtCQUFBQSxrQkFBa0I7SUFDbEQsTUFBTUMsbUJBQW1CLENBQUMsQ0FBRXBCLENBQUFBLFlBQVlDLGFBQWFDLFlBQUFBLENBQVc7SUFFaEUsSUFBSWtCLGtCQUFrQjtRQUNwQixxQkFDRSxxQkFBQ3ZELGlDQUFBQTtZQUNDK0IsVUFBVUE7WUFDVkksVUFBVUE7WUFDVkMsV0FBV0E7WUFDWEMsY0FBY0E7WUFDZDdCLGNBQWNBO3NCQUViOEI7O0lBR1A7SUFFQSxxQkFBTztrQkFBR0E7O0FBQ1o7S0E3QmdCdkMiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9odHRwLWFjY2Vzcy1mYWxsYmFjay9lcnJvci1ib3VuZGFyeS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbi8qKlxuICogSFRUUEFjY2Vzc0ZhbGxiYWNrQm91bmRhcnkgaXMgYSBib3VuZGFyeSB0aGF0IGNhdGNoZXMgZXJyb3JzIGFuZCByZW5kZXJzIGFcbiAqIGZhbGxiYWNrIGNvbXBvbmVudCBmb3IgSFRUUCBlcnJvcnMuXG4gKlxuICogSXQgcmVjZWl2ZXMgdGhlIHN0YXR1cyBjb2RlLCBhbmQgZGV0ZXJtaW5lIGlmIGl0IHNob3VsZCByZW5kZXIgZmFsbGJhY2tzIGZvciBmZXcgSFRUUCA0eHggZXJyb3JzLlxuICpcbiAqIGUuZy4gNDA0XG4gKiA0MDQgcmVwcmVzZW50cyBub3QgZm91bmQsIGFuZCB0aGUgZmFsbGJhY2sgY29tcG9uZW50IHBhaXIgY29udGFpbnMgdGhlIGNvbXBvbmVudCBhbmQgaXRzIHN0eWxlcy5cbiAqXG4gKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVVudHJhY2tlZFBhdGhuYW1lIH0gZnJvbSAnLi4vbmF2aWdhdGlvbi11bnRyYWNrZWQnXG5pbXBvcnQge1xuICBIVFRQQWNjZXNzRXJyb3JTdGF0dXMsXG4gIGdldEFjY2Vzc0ZhbGxiYWNrSFRUUFN0YXR1cyxcbiAgZ2V0QWNjZXNzRmFsbGJhY2tFcnJvclR5cGVCeVN0YXR1cyxcbiAgaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjaydcbmltcG9ydCB7IHdhcm5PbmNlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi91dGlscy93YXJuLW9uY2UnXG5pbXBvcnQgeyBNaXNzaW5nU2xvdENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcblxuaW50ZXJmYWNlIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5UHJvcHMge1xuICBub3RGb3VuZD86IFJlYWN0LlJlYWN0Tm9kZVxuICBmb3JiaWRkZW4/OiBSZWFjdC5SZWFjdE5vZGVcbiAgdW5hdXRob3JpemVkPzogUmVhY3QuUmVhY3ROb2RlXG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGVcbiAgbWlzc2luZ1Nsb3RzPzogU2V0PHN0cmluZz5cbn1cblxuaW50ZXJmYWNlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlQcm9wc1xuICBleHRlbmRzIEhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5UHJvcHMge1xuICBwYXRobmFtZTogc3RyaW5nIHwgbnVsbFxuICBtaXNzaW5nU2xvdHM/OiBTZXQ8c3RyaW5nPlxufVxuXG5pbnRlcmZhY2UgSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGUge1xuICB0cmlnZ2VyZWRTdGF0dXM6IG51bWJlciB8IHVuZGVmaW5lZFxuICBwcmV2aW91c1BhdGhuYW1lOiBzdHJpbmcgfCBudWxsXG59XG5cbmNsYXNzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnlQcm9wcyxcbiAgSFRUUEFjY2Vzc0JvdW5kYXJ5U3RhdGVcbj4ge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeVByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIHRyaWdnZXJlZFN0YXR1czogdW5kZWZpbmVkLFxuICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkQ2F0Y2goKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiZcbiAgICAgIHRoaXMucHJvcHMubWlzc2luZ1Nsb3RzICYmXG4gICAgICB0aGlzLnByb3BzLm1pc3NpbmdTbG90cy5zaXplID4gMCAmJlxuICAgICAgLy8gQSBtaXNzaW5nIGNoaWxkcmVuIHNsb3QgaXMgdGhlIHR5cGljYWwgbm90LWZvdW5kIGNhc2UsIHNvIG5vIG5lZWQgdG8gd2FyblxuICAgICAgIXRoaXMucHJvcHMubWlzc2luZ1Nsb3RzLmhhcygnY2hpbGRyZW4nKVxuICAgICkge1xuICAgICAgbGV0IHdhcm5pbmdNZXNzYWdlID1cbiAgICAgICAgJ05vIGRlZmF1bHQgY29tcG9uZW50IHdhcyBmb3VuZCBmb3IgYSBwYXJhbGxlbCByb3V0ZSByZW5kZXJlZCBvbiB0aGlzIHBhZ2UuIEZhbGxpbmcgYmFjayB0byBuZWFyZXN0IE5vdEZvdW5kIGJvdW5kYXJ5LlxcbicgK1xuICAgICAgICAnTGVhcm4gbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9wYXJhbGxlbC1yb3V0ZXMjZGVmYXVsdGpzXFxuXFxuJ1xuXG4gICAgICBjb25zdCBmb3JtYXR0ZWRTbG90cyA9IEFycmF5LmZyb20odGhpcy5wcm9wcy5taXNzaW5nU2xvdHMpXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxvY2FsZUNvbXBhcmUoYikpXG4gICAgICAgIC5tYXAoKHNsb3QpID0+IGBAJHtzbG90fWApXG4gICAgICAgIC5qb2luKCcsICcpXG5cbiAgICAgIHdhcm5pbmdNZXNzYWdlICs9ICdNaXNzaW5nIHNsb3RzOiAnICsgZm9ybWF0dGVkU2xvdHNcblxuICAgICAgd2Fybk9uY2Uod2FybmluZ01lc3NhZ2UpXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcjogYW55KSB7XG4gICAgaWYgKGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IoZXJyb3IpKSB7XG4gICAgICBjb25zdCBodHRwU3RhdHVzID0gZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzKGVycm9yKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJpZ2dlcmVkU3RhdHVzOiBodHRwU3RhdHVzLFxuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZS10aHJvdyBpZiBlcnJvciBpcyBub3QgZm9yIDQwNFxuICAgIHRocm93IGVycm9yXG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKFxuICAgIHByb3BzOiBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5UHJvcHMsXG4gICAgc3RhdGU6IEhUVFBBY2Nlc3NCb3VuZGFyeVN0YXRlXG4gICk6IEhUVFBBY2Nlc3NCb3VuZGFyeVN0YXRlIHwgbnVsbCB7XG4gICAgLyoqXG4gICAgICogSGFuZGxlcyByZXNldCBvZiB0aGUgZXJyb3IgYm91bmRhcnkgd2hlbiBhIG5hdmlnYXRpb24gaGFwcGVucy5cbiAgICAgKiBFbnN1cmVzIHRoZSBlcnJvciBib3VuZGFyeSBkb2VzIG5vdCBzdGF5IGVuYWJsZWQgd2hlbiBuYXZpZ2F0aW5nIHRvIGEgbmV3IHBhZ2UuXG4gICAgICogQXBwcm9hY2ggb2Ygc2V0U3RhdGUgaW4gcmVuZGVyIGlzIHNhZmUgYXMgaXQgY2hlY2tzIHRoZSBwcmV2aW91cyBwYXRobmFtZSBhbmQgdGhlbiBvdmVycmlkZXNcbiAgICAgKiBpdCBhcyBvdXRsaW5lZCBpbiBodHRwczovL3JlYWN0LmRldi9yZWZlcmVuY2UvcmVhY3QvdXNlU3RhdGUjc3RvcmluZy1pbmZvcm1hdGlvbi1mcm9tLXByZXZpb3VzLXJlbmRlcnNcbiAgICAgKi9cbiAgICBpZiAocHJvcHMucGF0aG5hbWUgIT09IHN0YXRlLnByZXZpb3VzUGF0aG5hbWUgJiYgc3RhdGUudHJpZ2dlcmVkU3RhdHVzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmlnZ2VyZWRTdGF0dXM6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJldmlvdXNQYXRobmFtZTogcHJvcHMucGF0aG5hbWUsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICB0cmlnZ2VyZWRTdGF0dXM6IHN0YXRlLnRyaWdnZXJlZFN0YXR1cyxcbiAgICAgIHByZXZpb3VzUGF0aG5hbWU6IHByb3BzLnBhdGhuYW1lLFxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IG5vdEZvdW5kLCBmb3JiaWRkZW4sIHVuYXV0aG9yaXplZCwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IHRyaWdnZXJlZFN0YXR1cyB9ID0gdGhpcy5zdGF0ZVxuICAgIGNvbnN0IGVycm9yQ29tcG9uZW50cyA9IHtcbiAgICAgIFtIVFRQQWNjZXNzRXJyb3JTdGF0dXMuTk9UX0ZPVU5EXTogbm90Rm91bmQsXG4gICAgICBbSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLkZPUkJJRERFTl06IGZvcmJpZGRlbixcbiAgICAgIFtIVFRQQWNjZXNzRXJyb3JTdGF0dXMuVU5BVVRIT1JJWkVEXTogdW5hdXRob3JpemVkLFxuICAgIH1cblxuICAgIGlmICh0cmlnZ2VyZWRTdGF0dXMpIHtcbiAgICAgIGNvbnN0IGlzTm90Rm91bmQgPVxuICAgICAgICB0cmlnZ2VyZWRTdGF0dXMgPT09IEhUVFBBY2Nlc3NFcnJvclN0YXR1cy5OT1RfRk9VTkQgJiYgbm90Rm91bmRcbiAgICAgIGNvbnN0IGlzRm9yYmlkZGVuID1cbiAgICAgICAgdHJpZ2dlcmVkU3RhdHVzID09PSBIVFRQQWNjZXNzRXJyb3JTdGF0dXMuRk9SQklEREVOICYmIGZvcmJpZGRlblxuICAgICAgY29uc3QgaXNVbmF1dGhvcml6ZWQgPVxuICAgICAgICB0cmlnZ2VyZWRTdGF0dXMgPT09IEhUVFBBY2Nlc3NFcnJvclN0YXR1cy5VTkFVVEhPUklaRUQgJiYgdW5hdXRob3JpemVkXG5cbiAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gbWF0Y2hlZCBib3VuZGFyeSBpbiB0aGlzIGxheWVyLCBrZWVwIHRocm93aW5nIHRoZSBlcnJvciBieSByZW5kZXJpbmcgdGhlIGNoaWxkcmVuXG4gICAgICBpZiAoIShpc05vdEZvdW5kIHx8IGlzRm9yYmlkZGVuIHx8IGlzVW5hdXRob3JpemVkKSkge1xuICAgICAgICByZXR1cm4gY2hpbGRyZW5cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8bWV0YSBuYW1lPVwicm9ib3RzXCIgY29udGVudD1cIm5vaW5kZXhcIiAvPlxuICAgICAgICAgIHtwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50JyAmJiAoXG4gICAgICAgICAgICA8bWV0YVxuICAgICAgICAgICAgICBuYW1lPVwiYm91bmRhcnktbmV4dC1lcnJvclwiXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2dldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXModHJpZ2dlcmVkU3RhdHVzKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7ZXJyb3JDb21wb25lbnRzW3RyaWdnZXJlZFN0YXR1c119XG4gICAgICAgIDwvPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBjaGlsZHJlblxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSh7XG4gIG5vdEZvdW5kLFxuICBmb3JiaWRkZW4sXG4gIHVuYXV0aG9yaXplZCxcbiAgY2hpbGRyZW4sXG59OiBIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeVByb3BzKSB7XG4gIC8vIFdoZW4gd2UncmUgcmVuZGVyaW5nIHRoZSBtaXNzaW5nIHBhcmFtcyBzaGVsbCwgdGhpcyB3aWxsIHJldHVybiBudWxsLiBUaGlzXG4gIC8vIGlzIGJlY2F1c2Ugd2Ugd29uJ3QgYmUgcmVuZGVyaW5nIGFueSBub3QgZm91bmQgYm91bmRhcmllcyBvciBlcnJvclxuICAvLyBib3VuZGFyaWVzIGZvciB0aGUgbWlzc2luZyBwYXJhbXMgc2hlbGwuIFdoZW4gdGhpcyBydW5zIG9uIHRoZSBjbGllbnRcbiAgLy8gKHdoZXJlIHRoZXNlIGVycm9yIGNhbiBvY2N1ciksIHdlIHdpbGwgZ2V0IHRoZSBjb3JyZWN0IHBhdGhuYW1lLlxuICBjb25zdCBwYXRobmFtZSA9IHVzZVVudHJhY2tlZFBhdGhuYW1lKClcbiAgY29uc3QgbWlzc2luZ1Nsb3RzID0gdXNlQ29udGV4dChNaXNzaW5nU2xvdENvbnRleHQpXG4gIGNvbnN0IGhhc0Vycm9yRmFsbGJhY2sgPSAhIShub3RGb3VuZCB8fCBmb3JiaWRkZW4gfHwgdW5hdXRob3JpemVkKVxuXG4gIGlmIChoYXNFcnJvckZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxIVFRQQWNjZXNzRmFsbGJhY2tFcnJvckJvdW5kYXJ5XG4gICAgICAgIHBhdGhuYW1lPXtwYXRobmFtZX1cbiAgICAgICAgbm90Rm91bmQ9e25vdEZvdW5kfVxuICAgICAgICBmb3JiaWRkZW49e2ZvcmJpZGRlbn1cbiAgICAgICAgdW5hdXRob3JpemVkPXt1bmF1dGhvcml6ZWR9XG4gICAgICAgIG1pc3NpbmdTbG90cz17bWlzc2luZ1Nsb3RzfVxuICAgICAgPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yQm91bmRhcnk+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPlxufVxuIl0sIm5hbWVzIjpbIkhUVFBBY2Nlc3NGYWxsYmFja0JvdW5kYXJ5IiwiSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JCb3VuZGFyeSIsIlJlYWN0IiwiQ29tcG9uZW50IiwiY29tcG9uZW50RGlkQ2F0Y2giLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJwcm9wcyIsIm1pc3NpbmdTbG90cyIsInNpemUiLCJoYXMiLCJ3YXJuaW5nTWVzc2FnZSIsImZvcm1hdHRlZFNsb3RzIiwiQXJyYXkiLCJmcm9tIiwic29ydCIsImEiLCJiIiwibG9jYWxlQ29tcGFyZSIsIm1hcCIsInNsb3QiLCJqb2luIiwid2Fybk9uY2UiLCJnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IiLCJlcnJvciIsImlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IiLCJodHRwU3RhdHVzIiwiZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzIiwidHJpZ2dlcmVkU3RhdHVzIiwiZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIiwic3RhdGUiLCJwYXRobmFtZSIsInByZXZpb3VzUGF0aG5hbWUiLCJ1bmRlZmluZWQiLCJyZW5kZXIiLCJub3RGb3VuZCIsImZvcmJpZGRlbiIsInVuYXV0aG9yaXplZCIsImNoaWxkcmVuIiwiZXJyb3JDb21wb25lbnRzIiwiSFRUUEFjY2Vzc0Vycm9yU3RhdHVzIiwiTk9UX0ZPVU5EIiwiRk9SQklEREVOIiwiVU5BVVRIT1JJWkVEIiwiaXNOb3RGb3VuZCIsImlzRm9yYmlkZGVuIiwiaXNVbmF1dGhvcml6ZWQiLCJtZXRhIiwibmFtZSIsImNvbnRlbnQiLCJnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzIiwiY29uc3RydWN0b3IiLCJ1c2VVbnRyYWNrZWRQYXRobmFtZSIsInVzZUNvbnRleHQiLCJNaXNzaW5nU2xvdENvbnRleHQiLCJoYXNFcnJvckZhbGxiYWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js": /*!**************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js ***! \**************************************************************************************************************************************************************************/ /***/ ((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 HTTPAccessErrorStatus: function() {\n return HTTPAccessErrorStatus;\n },\n HTTP_ERROR_FALLBACK_ERROR_CODE: function() {\n return HTTP_ERROR_FALLBACK_ERROR_CODE;\n },\n getAccessFallbackErrorTypeByStatus: function() {\n return getAccessFallbackErrorTypeByStatus;\n },\n getAccessFallbackHTTPStatus: function() {\n return getAccessFallbackHTTPStatus;\n },\n isHTTPAccessFallbackError: function() {\n return isHTTPAccessFallbackError;\n }\n});\nconst HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401\n};\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus));\nconst HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK';\nfunction isHTTPAccessFallbackError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const [prefix, httpStatus] = error.digest.split(';');\n return prefix === HTTP_ERROR_FALLBACK_ERROR_CODE && ALLOWED_CODES.has(Number(httpStatus));\n}\nfunction getAccessFallbackHTTPStatus(error) {\n const httpStatus = error.digest.split(';')[1];\n return Number(httpStatus);\n}\nfunction getAccessFallbackErrorTypeByStatus(status) {\n switch(status){\n case 401:\n return 'unauthorized';\n case 403:\n return 'forbidden';\n case 404:\n return 'not-found';\n default:\n return;\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=http-access-fallback.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2suanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQWFBLHFCQUFxQjtlQUFyQkE7O0lBUUFDLDhCQUE4QjtlQUE5QkE7O0lBdUNHQyxrQ0FBa0M7ZUFBbENBOztJQVBBQywyQkFBMkI7ZUFBM0JBOztJQW5CQUMseUJBQXlCO2VBQXpCQTs7O0FBckJULE1BQU1KLHdCQUF3QjtJQUNuQ0ssV0FBVztJQUNYQyxXQUFXO0lBQ1hDLGNBQWM7QUFDaEI7QUFFQSxNQUFNQyxnQkFBZ0IsSUFBSUMsSUFBSUMsT0FBT0MsTUFBTSxDQUFDWDtBQUVyQyxNQUFNQyxpQ0FBaUM7QUFhdkMsU0FBU0csMEJBQ2RRLEtBQWM7SUFFZCxJQUNFLE9BQU9BLFVBQVUsWUFDakJBLFVBQVUsUUFDVixDQUFFLGFBQVlBLEtBQUFBLENBQUksSUFDbEIsT0FBT0EsTUFBTUMsTUFBTSxLQUFLLFVBQ3hCO1FBQ0EsT0FBTztJQUNUO0lBQ0EsTUFBTSxDQUFDQyxRQUFRQyxXQUFXLEdBQUdILE1BQU1DLE1BQU0sQ0FBQ0csS0FBSyxDQUFDO0lBRWhELE9BQ0VGLFdBQVdiLGtDQUNYTyxjQUFjUyxHQUFHLENBQUNDLE9BQU9IO0FBRTdCO0FBRU8sU0FBU1osNEJBQ2RTLEtBQThCO0lBRTlCLE1BQU1HLGFBQWFILE1BQU1DLE1BQU0sQ0FBQ0csS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQzdDLE9BQU9FLE9BQU9IO0FBQ2hCO0FBRU8sU0FBU2IsbUNBQ2RpQixNQUFjO0lBRWQsT0FBUUE7UUFDTixLQUFLO1lBQ0gsT0FBTztRQUNULEtBQUs7WUFDSCxPQUFPO1FBQ1QsS0FBSztZQUNILE9BQU87UUFDVDtZQUNFO0lBQ0o7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL2h0dHAtYWNjZXNzLWZhbGxiYWNrL2h0dHAtYWNjZXNzLWZhbGxiYWNrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBIVFRQQWNjZXNzRXJyb3JTdGF0dXMgPSB7XG4gIE5PVF9GT1VORDogNDA0LFxuICBGT1JCSURERU46IDQwMyxcbiAgVU5BVVRIT1JJWkVEOiA0MDEsXG59XG5cbmNvbnN0IEFMTE9XRURfQ09ERVMgPSBuZXcgU2V0KE9iamVjdC52YWx1ZXMoSFRUUEFjY2Vzc0Vycm9yU3RhdHVzKSlcblxuZXhwb3J0IGNvbnN0IEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSA9ICdORVhUX0hUVFBfRVJST1JfRkFMTEJBQ0snXG5cbmV4cG9ydCB0eXBlIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yID0gRXJyb3IgJiB7XG4gIGRpZ2VzdDogYCR7dHlwZW9mIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07JHtzdHJpbmd9YFxufVxuXG4vKipcbiAqIENoZWNrcyBhbiBlcnJvciB0byBkZXRlcm1pbmUgaWYgaXQncyBhbiBlcnJvciBnZW5lcmF0ZWQgYnlcbiAqIHRoZSBIVFRQIG5hdmlnYXRpb24gQVBJcyBgbm90Rm91bmQoKWAsIGBmb3JiaWRkZW4oKWAgb3IgYHVuYXV0aG9yaXplZCgpYC5cbiAqXG4gKiBAcGFyYW0gZXJyb3IgdGhlIGVycm9yIHRoYXQgbWF5IHJlZmVyZW5jZSBhIEhUVFAgYWNjZXNzIGVycm9yXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBlcnJvciBpcyBhIEhUVFAgYWNjZXNzIGVycm9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0hUVFBBY2Nlc3NGYWxsYmFja0Vycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyB8fFxuICAgIGVycm9yID09PSBudWxsIHx8XG4gICAgISgnZGlnZXN0JyBpbiBlcnJvcikgfHxcbiAgICB0eXBlb2YgZXJyb3IuZGlnZXN0ICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBbcHJlZml4LCBodHRwU3RhdHVzXSA9IGVycm9yLmRpZ2VzdC5zcGxpdCgnOycpXG5cbiAgcmV0dXJuIChcbiAgICBwcmVmaXggPT09IEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSAmJlxuICAgIEFMTE9XRURfQ09ERVMuaGFzKE51bWJlcihodHRwU3RhdHVzKSlcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzKFxuICBlcnJvcjogSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3Jcbik6IG51bWJlciB7XG4gIGNvbnN0IGh0dHBTdGF0dXMgPSBlcnJvci5kaWdlc3Quc3BsaXQoJzsnKVsxXVxuICByZXR1cm4gTnVtYmVyKGh0dHBTdGF0dXMpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzKFxuICBzdGF0dXM6IG51bWJlclxuKTogJ25vdC1mb3VuZCcgfCAnZm9yYmlkZGVuJyB8ICd1bmF1dGhvcml6ZWQnIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIDQwMTpcbiAgICAgIHJldHVybiAndW5hdXRob3JpemVkJ1xuICAgIGNhc2UgNDAzOlxuICAgICAgcmV0dXJuICdmb3JiaWRkZW4nXG4gICAgY2FzZSA0MDQ6XG4gICAgICByZXR1cm4gJ25vdC1mb3VuZCdcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJIVFRQQWNjZXNzRXJyb3JTdGF0dXMiLCJIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUiLCJnZXRBY2Nlc3NGYWxsYmFja0Vycm9yVHlwZUJ5U3RhdHVzIiwiZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzIiwiaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciIsIk5PVF9GT1VORCIsIkZPUkJJRERFTiIsIlVOQVVUSE9SSVpFRCIsIkFMTE9XRURfQ09ERVMiLCJTZXQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJlcnJvciIsImRpZ2VzdCIsInByZWZpeCIsImh0dHBTdGF0dXMiLCJzcGxpdCIsImhhcyIsIk51bWJlciIsInN0YXR1cyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/is-next-router-error.js": /*!*****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/is-next-router-error.js ***! \*****************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNextRouterError\", ({\n enumerable: true,\n get: function() {\n return isNextRouterError;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\");\nfunction isNextRouterError(error) {\n return (0, _redirecterror.isRedirectError)(error) || (0, _httpaccessfallback.isHTTPAccessFallbackError)(error);\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=is-next-router-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7OztxREFXZ0JBOzs7ZUFBQUE7OztnREFSVDsyQ0FDNkM7QUFPN0MsU0FBU0Esa0JBQ2RDLEtBQWM7SUFFZCxPQUFPQyxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQkQsVUFBVUUsQ0FBQUEsR0FBQUEsb0JBQUFBLHlCQUFBQSxFQUEwQkY7QUFDN0QiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbiAgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjaydcbmltcG9ydCB7IGlzUmVkaXJlY3RFcnJvciwgdHlwZSBSZWRpcmVjdEVycm9yIH0gZnJvbSAnLi9yZWRpcmVjdC1lcnJvcidcblxuLyoqXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGVycm9yIGlzIGEgbmF2aWdhdGlvbiBzaWduYWwgZXJyb3IuIFRoZXNlIGVycm9ycyBhcmVcbiAqIHRocm93biBieSB1c2VyIGNvZGUgdG8gcGVyZm9ybSBuYXZpZ2F0aW9uIG9wZXJhdGlvbnMgYW5kIGludGVycnVwdCB0aGUgUmVhY3RcbiAqIHJlbmRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTmV4dFJvdXRlckVycm9yKFxuICBlcnJvcjogdW5rbm93blxuKTogZXJyb3IgaXMgUmVkaXJlY3RFcnJvciB8IEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yIHtcbiAgcmV0dXJuIGlzUmVkaXJlY3RFcnJvcihlcnJvcikgfHwgaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcihlcnJvcilcbn1cbiJdLCJuYW1lcyI6WyJpc05leHRSb3V0ZXJFcnJvciIsImVycm9yIiwiaXNSZWRpcmVjdEVycm9yIiwiaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/is-next-router-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/links.js": /*!**************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/links.js ***! \**************************************************************************************************************************************/ /***/ ((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 IDLE_LINK_STATUS: function() {\n return IDLE_LINK_STATUS;\n },\n PENDING_LINK_STATUS: function() {\n return PENDING_LINK_STATUS;\n },\n mountFormInstance: function() {\n return mountFormInstance;\n },\n mountLinkInstance: function() {\n return mountLinkInstance;\n },\n onLinkVisibilityChanged: function() {\n return onLinkVisibilityChanged;\n },\n onNavigationIntent: function() {\n return onNavigationIntent;\n },\n pingVisibleLinks: function() {\n return pingVisibleLinks;\n },\n setLinkForCurrentNavigation: function() {\n return setLinkForCurrentNavigation;\n },\n unmountLinkForCurrentNavigation: function() {\n return unmountLinkForCurrentNavigation;\n },\n unmountPrefetchableInstance: function() {\n return unmountPrefetchableInstance;\n }\n});\nconst _approuterinstance = __webpack_require__(/*! ./app-router-instance */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-instance.js\");\nconst _approuter = __webpack_require__(/*! ./app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _segmentcache = __webpack_require__(/*! ./segment-cache */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer/router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _invarianterror = __webpack_require__(/*! ../../shared/lib/invariant-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/invariant-error.js\");\n// Tracks the most recently navigated link instance. When null, indicates\n// the current navigation was not initiated by a link click.\nlet linkForMostRecentNavigation = null;\nconst PENDING_LINK_STATUS = {\n pending: true\n};\nconst IDLE_LINK_STATUS = {\n pending: false\n};\nfunction setLinkForCurrentNavigation(link) {\n (0, _react.startTransition)(()=>{\n linkForMostRecentNavigation == null ? void 0 : linkForMostRecentNavigation.setOptimisticLinkStatus(IDLE_LINK_STATUS);\n link == null ? void 0 : link.setOptimisticLinkStatus(PENDING_LINK_STATUS);\n linkForMostRecentNavigation = link;\n });\n}\nfunction unmountLinkForCurrentNavigation(link) {\n if (linkForMostRecentNavigation === link) {\n linkForMostRecentNavigation = null;\n }\n}\n// Use a WeakMap to associate a Link instance with its DOM element. This is\n// used by the IntersectionObserver to track the link's visibility.\nconst prefetchable = typeof WeakMap === 'function' ? new WeakMap() : new Map();\n// A Set of the currently visible links. We re-prefetch visible links after a\n// cache invalidation, or when the current URL changes. It's a separate data\n// structure from the WeakMap above because only the visible links need to\n// be enumerated.\nconst prefetchableAndVisible = new Set();\n// A single IntersectionObserver instance shared by all components.\nconst observer = typeof IntersectionObserver === 'function' ? new IntersectionObserver(handleIntersect, {\n rootMargin: '200px'\n}) : null;\nfunction observeVisibility(element, instance) {\n const existingInstance = prefetchable.get(element);\n if (existingInstance !== undefined) {\n // This shouldn't happen because each component should have its own\n // anchor tag instance, but it's defensive coding to avoid a memory leak in\n // case there's a logical error somewhere else.\n unmountPrefetchableInstance(element);\n }\n // Only track prefetchable links that have a valid prefetch URL\n prefetchable.set(element, instance);\n if (observer !== null) {\n observer.observe(element);\n }\n}\nfunction coercePrefetchableUrl(href) {\n try {\n return (0, _approuter.createPrefetchURL)(href);\n } catch (e) {\n // createPrefetchURL sometimes throws an error if an invalid URL is\n // provided, though I'm not sure if it's actually necessary.\n // TODO: Consider removing the throw from the inner function, or change it\n // to reportError. Or maybe the error isn't even necessary for automatic\n // prefetches, just navigations.\n const reportErrorFn = typeof reportError === 'function' ? reportError : console.error;\n reportErrorFn(\"Cannot prefetch '\" + href + \"' because it cannot be converted to a URL.\");\n return null;\n }\n}\nfunction mountLinkInstance(element, href, router, fetchStrategy, prefetchEnabled, setOptimisticLinkStatus) {\n if (prefetchEnabled) {\n const prefetchURL = coercePrefetchableUrl(href);\n if (prefetchURL !== null) {\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: prefetchURL.href,\n setOptimisticLinkStatus\n };\n // We only observe the link's visibility if it's prefetchable. For\n // example, this excludes links to external URLs.\n observeVisibility(element, instance);\n return instance;\n }\n }\n // If the link is not prefetchable, we still create an instance so we can\n // track its optimistic state (i.e. useLinkStatus).\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: null,\n setOptimisticLinkStatus\n };\n return instance;\n}\nfunction mountFormInstance(element, href, router, fetchStrategy) {\n const prefetchURL = coercePrefetchableUrl(href);\n if (prefetchURL === null) {\n // This href is not prefetchable, so we don't track it.\n // TODO: We currently observe/unobserve a form every time its href changes.\n // For Links, this isn't a big deal because the href doesn't usually change,\n // but for forms it's extremely common. We should optimize this.\n return;\n }\n const instance = {\n router,\n fetchStrategy,\n isVisible: false,\n prefetchTask: null,\n prefetchHref: prefetchURL.href,\n setOptimisticLinkStatus: null\n };\n observeVisibility(element, instance);\n}\nfunction unmountPrefetchableInstance(element) {\n const instance = prefetchable.get(element);\n if (instance !== undefined) {\n prefetchable.delete(element);\n prefetchableAndVisible.delete(instance);\n const prefetchTask = instance.prefetchTask;\n if (prefetchTask !== null) {\n (0, _segmentcache.cancelPrefetchTask)(prefetchTask);\n }\n }\n if (observer !== null) {\n observer.unobserve(element);\n }\n}\nfunction handleIntersect(entries) {\n for (const entry of entries){\n // Some extremely old browsers or polyfills don't reliably support\n // isIntersecting so we check intersectionRatio instead. (Do we care? Not\n // really. But whatever this is fine.)\n const isVisible = entry.intersectionRatio > 0;\n onLinkVisibilityChanged(entry.target, isVisible);\n }\n}\nfunction onLinkVisibilityChanged(element, isVisible) {\n if (true) {\n // Prefetching on viewport is disabled in development for performance\n // reasons, because it requires compiling the target page.\n // TODO: Investigate re-enabling this.\n return;\n }\n const instance = prefetchable.get(element);\n if (instance === undefined) {\n return;\n }\n instance.isVisible = isVisible;\n if (isVisible) {\n prefetchableAndVisible.add(instance);\n } else {\n prefetchableAndVisible.delete(instance);\n }\n rescheduleLinkPrefetch(instance, _segmentcache.PrefetchPriority.Default);\n}\nfunction onNavigationIntent(element, unstable_upgradeToDynamicPrefetch) {\n const instance = prefetchable.get(element);\n if (instance === undefined) {\n return;\n }\n // Prefetch the link on hover/touchstart.\n if (instance !== undefined) {\n if (false) {}\n rescheduleLinkPrefetch(instance, _segmentcache.PrefetchPriority.Intent);\n }\n}\nfunction rescheduleLinkPrefetch(instance, priority) {\n const existingPrefetchTask = instance.prefetchTask;\n if (!instance.isVisible) {\n // Cancel any in-progress prefetch task. (If it already finished then this\n // is a no-op.)\n if (existingPrefetchTask !== null) {\n (0, _segmentcache.cancelPrefetchTask)(existingPrefetchTask);\n }\n // We don't need to reset the prefetchTask to null upon cancellation; an\n // old task object can be rescheduled with reschedulePrefetchTask. This is a\n // micro-optimization but also makes the code simpler (don't need to\n // worry about whether an old task object is stale).\n return;\n }\n if (true) {\n // The old prefetch implementation does not have different priority levels.\n // Just schedule a new prefetch task.\n prefetchWithOldCacheImplementation(instance);\n return;\n }\n const appRouterState = (0, _approuterinstance.getCurrentAppRouterState)();\n if (appRouterState !== null) {\n const treeAtTimeOfPrefetch = appRouterState.tree;\n if (existingPrefetchTask === null) {\n // Initiate a prefetch task.\n const nextUrl = appRouterState.nextUrl;\n const cacheKey = (0, _segmentcache.createCacheKey)(instance.prefetchHref, nextUrl);\n instance.prefetchTask = (0, _segmentcache.schedulePrefetchTask)(cacheKey, treeAtTimeOfPrefetch, instance.fetchStrategy, priority, null);\n } else {\n // We already have an old task object that we can reschedule. This is\n // effectively the same as canceling the old task and creating a new one.\n (0, _segmentcache.reschedulePrefetchTask)(existingPrefetchTask, treeAtTimeOfPrefetch, instance.fetchStrategy, priority);\n }\n }\n}\nfunction pingVisibleLinks(nextUrl, tree) {\n // For each currently visible link, cancel the existing prefetch task (if it\n // exists) and schedule a new one. This is effectively the same as if all the\n // visible links left and then re-entered the viewport.\n //\n // This is called when the Next-Url or the base tree changes, since those\n // may affect the result of a prefetch task. It's also called after a\n // cache invalidation.\n for (const instance of prefetchableAndVisible){\n const task = instance.prefetchTask;\n if (task !== null && !(0, _segmentcache.isPrefetchTaskDirty)(task, nextUrl, tree)) {\n continue;\n }\n // Something changed. Cancel the existing prefetch task and schedule a\n // new one.\n if (task !== null) {\n (0, _segmentcache.cancelPrefetchTask)(task);\n }\n const cacheKey = (0, _segmentcache.createCacheKey)(instance.prefetchHref, nextUrl);\n instance.prefetchTask = (0, _segmentcache.schedulePrefetchTask)(cacheKey, tree, instance.fetchStrategy, _segmentcache.PrefetchPriority.Default, null);\n }\n}\nfunction prefetchWithOldCacheImplementation(instance) {\n // This is the path used when the Segment Cache is not enabled.\n if (false) {}\n const doPrefetch = async ()=>{\n // note that `appRouter.prefetch()` is currently sync,\n // so we have to wrap this call in an async function to be able to catch() errors below.\n let prefetchKind;\n switch(instance.fetchStrategy){\n case _segmentcache.FetchStrategy.PPR:\n {\n prefetchKind = _routerreducertypes.PrefetchKind.AUTO;\n break;\n }\n case _segmentcache.FetchStrategy.Full:\n {\n prefetchKind = _routerreducertypes.PrefetchKind.FULL;\n break;\n }\n case _segmentcache.FetchStrategy.PPRRuntime:\n {\n // We can only get here if Client Segment Cache is off, and in that case\n // it shouldn't be possible for a link to request a runtime prefetch.\n throw Object.defineProperty(new _invarianterror.InvariantError('FetchStrategy.PPRRuntime should never be used when `experimental.clientSegmentCache` is disabled'), \"__NEXT_ERROR_CODE\", {\n value: \"E772\",\n enumerable: false,\n configurable: true\n });\n }\n default:\n {\n instance.fetchStrategy;\n // Unreachable, but otherwise typescript will consider the variable unassigned\n prefetchKind = undefined;\n }\n }\n return instance.router.prefetch(instance.prefetchHref, {\n kind: prefetchKind\n });\n };\n // Prefetch the page if asked (only in the client)\n // We need to handle a prefetch error here since we may be\n // loading with priority which can reject but we don't\n // want to force navigation since this is only a prefetch\n doPrefetch().catch((err)=>{\n if (true) {\n // rethrow to show invalid URL errors\n throw 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=links.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGlua3MuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBb0VhQSxnQkFBZ0I7ZUFBaEJBOztJQUhBQyxtQkFBbUI7ZUFBbkJBOztJQW9IR0MsaUJBQWlCO2VBQWpCQTs7SUF0Q0FDLGlCQUFpQjtlQUFqQkE7O0lBd0ZBQyx1QkFBdUI7ZUFBdkJBOztJQXNCQUMsa0JBQWtCO2VBQWxCQTs7SUEwRUFDLGdCQUFnQjtlQUFoQkE7O0lBN1BBQywyQkFBMkI7ZUFBM0JBOztJQVNBQywrQkFBK0I7ZUFBL0JBOztJQTJIQUMsMkJBQTJCO2VBQTNCQTs7OytDQTVNeUI7dUNBQ1A7MENBSzNCO21DQVN5QjtnREFDSDs0Q0FDRTtBQXlDL0IseUVBQXlFO0FBQ3pFLDREQUE0RDtBQUM1RCxJQUFJQyw4QkFBbUQ7QUFHaEQsTUFBTVQsc0JBQXNCO0lBQUVVLFNBQVM7QUFBSztBQUc1QyxNQUFNWCxtQkFBbUI7SUFBRVcsU0FBUztBQUFNO0FBTTFDLFNBQVNKLDRCQUE0QkssSUFBeUI7SUFDbkVDLENBQUFBLEdBQUFBLE9BQUFBLGVBQUFBLEVBQWdCO1FBQ2RILCtCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSw0QkFBNkJJLHVCQUF1QixDQUFDZDtRQUNyRFksUUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsS0FBTUUsdUJBQXVCLENBQUNiO1FBQzlCUyw4QkFBOEJFO0lBQ2hDO0FBQ0Y7QUFHTyxTQUFTSixnQ0FBZ0NJLElBQWtCO0lBQ2hFLElBQUlGLGdDQUFnQ0UsTUFBTTtRQUN4Q0YsOEJBQThCO0lBQ2hDO0FBQ0Y7QUFFQSwyRUFBMkU7QUFDM0UsbUVBQW1FO0FBQ25FLE1BQU1LLGVBR0osT0FBT0MsWUFBWSxhQUFhLElBQUlBLFlB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QWtEO0lBQ2xELDBEQUEwRDtJQUMxRCxzREFBc0Q7SUFDdEQseURBQXlEO0lBQ3pERCxhQUFhVSxLQUFLLENBQUMsQ0FBQ0M7UUFDbEIsSUFBSXZDLElBQW9CLEVBQW1CO1lBQ3pDLHFDQUFxQztZQUNyQyxNQUFNdUM7UUFDUjtJQUNGO0FBQ0YiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvbGlua3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHsgZ2V0Q3VycmVudEFwcFJvdXRlclN0YXRlIH0gZnJvbSAnLi9hcHAtcm91dGVyLWluc3RhbmNlJ1xuaW1wb3J0IHsgY3JlYXRlUHJlZmV0Y2hVUkwgfSBmcm9tICcuL2FwcC1yb3V0ZXInXG5pbXBvcnQge1xuICBGZXRjaFN0cmF0ZWd5LFxuICBpc1ByZWZldGNoVGFza0RpcnR5LFxuICB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3ksXG59IGZyb20gJy4vc2VnbWVudC1jYWNoZSdcbmltcG9ydCB7IGNyZWF0ZUNhY2hlS2V5IH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlJ1xuaW1wb3J0IHtcbiAgdHlwZSBQcmVmZXRjaFRhc2ssXG4gIFByZWZldGNoUHJpb3JpdHksXG4gIHNjaGVkdWxlUHJlZmV0Y2hUYXNrIGFzIHNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayxcbiAgY2FuY2VsUHJlZmV0Y2hUYXNrLFxuICByZXNjaGVkdWxlUHJlZmV0Y2hUYXNrLFxufSBmcm9tICcuL3NlZ21lbnQtY2FjaGUnXG5pbXBvcnQgeyBzdGFydFRyYW5zaXRpb24gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFByZWZldGNoS2luZCB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBJbnZhcmlhbnRFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaW52YXJpYW50LWVycm9yJ1xuXG50eXBlIExpbmtFbGVtZW50ID0gSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudFxuXG50eXBlIEVsZW1lbnQgPSBMaW5rRWxlbWVudCB8IEhUTUxGb3JtRWxlbWVudFxuXG4vLyBQcm9wZXJ0aWVzIHRoYXQgYXJlIHNoYXJlZCBiZXR3ZWVuIExpbmsgYW5kIEZvcm0gaW5zdGFuY2VzLiBXZSB1c2UgdGhlIHNhbWVcbi8vIHNoYXBlIGZvciBib3RoIHRvIHByZXZlbnQgYSBwb2x5bW9ycGhpYyBkZS1vcHQgaW4gdGhlIFZNLlxudHlwZSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgPSB7XG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2VcbiAgZmV0Y2hTdHJhdGVneTogUHJlZmV0Y2hUYXNrRmV0Y2hTdHJhdGVneVxuXG4gIGlzVmlzaWJsZTogYm9vbGVhblxuXG4gIC8vIFRoZSBtb3N0IHJlY2VudGx5IGluaXRpYXRlZCBwcmVmZXRjaCB0YXNrLiBJdCBtYXkgb3IgbWF5IG5vdCBoYXZlXG4gIC8vIGFscmVhZHkgY29tcGxldGVkLiBUaGUgc2FtZSBwcmVmZXRjaCB0YXNrIG9iamVjdCBjYW4gYmUgcmV1c2VkIGFjcm9zc1xuICAvLyBtdWx0aXBsZSBwcmVmZXRjaGVzIG9mIHRoZSBzYW1lIGxpbmsuXG4gIHByZWZldGNoVGFzazogUHJlZmV0Y2hUYXNrIHwgbnVsbFxufVxuXG5leHBvcnQgdHlwZSBGb3JtSW5zdGFuY2UgPSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgJiB7XG4gIHByZWZldGNoSHJlZjogc3RyaW5nXG4gIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOiBudWxsXG59XG5cbnR5cGUgUHJlZmV0Y2hhYmxlTGlua0luc3RhbmNlID0gTGlua09yRm9ybUluc3RhbmNlU2hhcmVkICYge1xuICBwcmVmZXRjaEhyZWY6IHN0cmluZ1xuICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogKHN0YXR1czogeyBwZW5kaW5nOiBib29sZWFuIH0pID0+IHZvaWRcbn1cblxudHlwZSBOb25QcmVmZXRjaGFibGVMaW5rSW5zdGFuY2UgPSBMaW5rT3JGb3JtSW5zdGFuY2VTaGFyZWQgJiB7XG4gIHByZWZldGNoSHJlZjogbnVsbFxuICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogKHN0YXR1czogeyBwZW5kaW5nOiBib29sZWFuIH0pID0+IHZvaWRcbn1cblxudHlwZSBQcmVmZXRjaGFibGVJbnN0YW5jZSA9IFByZWZldGNoYWJsZUxpbmtJbnN0YW5jZSB8IEZvcm1JbnN0YW5jZVxuXG5leHBvcnQgdHlwZSBMaW5rSW5zdGFuY2UgPVxuICB8IFByZWZldGNoYWJsZUxpbmtJbnN0YW5jZVxuICB8IE5vblByZWZldGNoYWJsZUxpbmtJbnN0YW5jZVxuXG4vLyBUcmFja3MgdGhlIG1vc3QgcmVjZW50bHkgbmF2aWdhdGVkIGxpbmsgaW5zdGFuY2UuIFdoZW4gbnVsbCwgaW5kaWNhdGVzXG4vLyB0aGUgY3VycmVudCBuYXZpZ2F0aW9uIHdhcyBub3QgaW5pdGlhdGVkIGJ5IGEgbGluayBjbGljay5cbmxldCBsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb246IExpbmtJbnN0YW5jZSB8IG51bGwgPSBudWxsXG5cbi8vIFN0YXR1cyBvYmplY3QgaW5kaWNhdGluZyBsaW5rIGlzIHBlbmRpbmdcbmV4cG9ydCBjb25zdCBQRU5ESU5HX0xJTktfU1RBVFVTID0geyBwZW5kaW5nOiB0cnVlIH1cblxuLy8gU3RhdHVzIG9iamVjdCBpbmRpY2F0aW5nIGxpbmsgaXMgaWRsZVxuZXhwb3J0IGNvbnN0IElETEVfTElOS19TVEFUVVMgPSB7IHBlbmRpbmc6IGZhbHNlIH1cblxuLy8gVXBkYXRlcyB0aGUgbG9hZGluZyBzdGF0ZSB3aGVuIG5hdmlnYXRpbmcgYmV0d2VlbiBsaW5rc1xuLy8gLSBSZXNldHMgdGhlIHByZXZpb3VzIGxpbmsncyBsb2FkaW5nIHN0YXRlXG4vLyAtIFNldHMgdGhlIG5ldyBsaW5rJ3MgbG9hZGluZyBzdGF0ZVxuLy8gLSBVcGRhdGVzIHRyYWNraW5nIG9mIGN1cnJlbnQgbmF2aWdhdGlvblxuZXhwb3J0IGZ1bmN0aW9uIHNldExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbihsaW5rOiBMaW5rSW5zdGFuY2UgfCBudWxsKSB7XG4gIHN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgbGlua0Zvck1vc3RSZWNlbnROYXZpZ2F0aW9uPy5zZXRPcHRpbWlzdGljTGlua1N0YXR1cyhJRExFX0xJTktfU1RBVFVTKVxuICAgIGxpbms/LnNldE9wdGltaXN0aWNMaW5rU3RhdHVzKFBFTkRJTkdfTElOS19TVEFUVVMpXG4gICAgbGlua0Zvck1vc3RSZWNlbnROYXZpZ2F0aW9uID0gbGlua1xuICB9KVxufVxuXG4vLyBVbm1vdW50cyB0aGUgY3VycmVudCBsaW5rIGluc3RhbmNlIGZyb20gbmF2aWdhdGlvbiB0cmFja2luZ1xuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24obGluazogTGlua0luc3RhbmNlKSB7XG4gIGlmIChsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24gPT09IGxpbmspIHtcbiAgICBsaW5rRm9yTW9zdFJlY2VudE5hdmlnYXRpb24gPSBudWxsXG4gIH1cbn1cblxuLy8gVXNlIGEgV2Vha01hcCB0byBhc3NvY2lhdGUgYSBMaW5rIGluc3RhbmNlIHdpdGggaXRzIERPTSBlbGVtZW50LiBUaGlzIGlzXG4vLyB1c2VkIGJ5IHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciB0byB0cmFjayB0aGUgbGluaydzIHZpc2liaWxpdHkuXG5jb25zdCBwcmVmZXRjaGFibGU6XG4gIHwgV2Vha01hcDxFbGVtZW50LCBQcmVmZXRjaGFibGVJbnN0YW5jZT5cbiAgfCBNYXA8RWxlbWVudCwgUHJlZmV0Y2hhYmxlSW5zdGFuY2U+ID1cbiAgdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgPyBuZXcgV2Vha01hcCgpIDogbmV3IE1hcCgpXG5cbi8vIEEgU2V0IG9mIHRoZSBjdXJyZW50bHkgdmlzaWJsZSBsaW5rcy4gV2UgcmUtcHJlZmV0Y2ggdmlzaWJsZSBsaW5rcyBhZnRlciBhXG4vLyBjYWNoZSBpbnZhbGlkYXRpb24sIG9yIHdoZW4gdGhlIGN1cnJlbnQgVVJMIGNoYW5nZXMuIEl0J3MgYSBzZXBhcmF0ZSBkYXRhXG4vLyBzdHJ1Y3R1cmUgZnJvbSB0aGUgV2Vha01hcCBhYm92ZSBiZWNhdXNlIG9ubHkgdGhlIHZpc2libGUgbGlua3MgbmVlZCB0b1xuLy8gYmUgZW51bWVyYXRlZC5cbmNvbnN0IHByZWZldGNoYWJsZUFuZFZpc2libGU6IFNldDxQcmVmZXRjaGFibGVJbnN0YW5jZT4gPSBuZXcgU2V0KClcblxuLy8gQSBzaW5nbGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgaW5zdGFuY2Ugc2hhcmVkIGJ5IGFsbCA8TGluaz4gY29tcG9uZW50cy5cbmNvbnN0IG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlciB8IG51bGwgPVxuICB0eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPT09ICdmdW5jdGlvbidcbiAgICA/IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihoYW5kbGVJbnRlcnNlY3QsIHtcbiAgICAgICAgcm9vdE1hcmdpbjogJzIwMHB4JyxcbiAgICAgIH0pXG4gICAgOiBudWxsXG5cbmZ1bmN0aW9uIG9ic2VydmVWaXNpYmlsaXR5KGVsZW1lbnQ6IEVsZW1lbnQsIGluc3RhbmNlOiBQcmVmZXRjaGFibGVJbnN0YW5jZSkge1xuICBjb25zdCBleGlzdGluZ0luc3RhbmNlID0gcHJlZmV0Y2hhYmxlLmdldChlbGVtZW50KVxuICBpZiAoZXhpc3RpbmdJbnN0YW5jZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIGJlY2F1c2UgZWFjaCA8TGluaz4gY29tcG9uZW50IHNob3VsZCBoYXZlIGl0cyBvd25cbiAgICAvLyBhbmNob3IgdGFnIGluc3RhbmNlLCBidXQgaXQncyBkZWZlbnNpdmUgY29kaW5nIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsgaW5cbiAgICAvLyBjYXNlIHRoZXJlJ3MgYSBsb2dpY2FsIGVycm9yIHNvbWV3aGVyZSBlbHNlLlxuICAgIHVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZShlbGVtZW50KVxuICB9XG4gIC8vIE9ubHkgdHJhY2sgcHJlZmV0Y2hhYmxlIGxpbmtzIHRoYXQgaGF2ZSBhIHZhbGlkIHByZWZldGNoIFVSTFxuICBwcmVmZXRjaGFibGUuc2V0KGVsZW1lbnQsIGluc3RhbmNlKVxuICBpZiAob2JzZXJ2ZXIgIT09IG51bGwpIHtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQpXG4gIH1cbn1cblxuZnVuY3Rpb24gY29lcmNlUHJlZmV0Y2hhYmxlVXJsKGhyZWY6IHN0cmluZyk6IFVSTCB8IG51bGwge1xuICB0cnkge1xuICAgIHJldHVybiBjcmVhdGVQcmVmZXRjaFVSTChocmVmKVxuICB9IGNhdGNoIHtcbiAgICAvLyBjcmVhdGVQcmVmZXRjaFVSTCBzb21ldGltZXMgdGhyb3dzIGFuIGVycm9yIGlmIGFuIGludmFsaWQgVVJMIGlzXG4gICAgLy8gcHJvdmlkZWQsIHRob3VnaCBJJ20gbm90IHN1cmUgaWYgaXQncyBhY3R1YWxseSBuZWNlc3NhcnkuXG4gICAgLy8gVE9ETzogQ29uc2lkZXIgcmVtb3ZpbmcgdGhlIHRocm93IGZyb20gdGhlIGlubmVyIGZ1bmN0aW9uLCBvciBjaGFuZ2UgaXRcbiAgICAvLyB0byByZXBvcnRFcnJvci4gT3IgbWF5YmUgdGhlIGVycm9yIGlzbid0IGV2ZW4gbmVjZXNzYXJ5IGZvciBhdXRvbWF0aWNcbiAgICAvLyBwcmVmZXRjaGVzLCBqdXN0IG5hdmlnYXRpb25zLlxuICAgIGNvbnN0IHJlcG9ydEVycm9yRm4gPVxuICAgICAgdHlwZW9mIHJlcG9ydEVycm9yID09PSAnZnVuY3Rpb24nID8gcmVwb3J0RXJyb3IgOiBjb25zb2xlLmVycm9yXG4gICAgcmVwb3J0RXJyb3JGbihcbiAgICAgIGBDYW5ub3QgcHJlZmV0Y2ggJyR7aHJlZn0nIGJlY2F1c2UgaXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIFVSTC5gXG4gICAgKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdW50TGlua0luc3RhbmNlKFxuICBlbGVtZW50OiBMaW5rRWxlbWVudCxcbiAgaHJlZjogc3RyaW5nLFxuICByb3V0ZXI6IEFwcFJvdXRlckluc3RhbmNlLFxuICBmZXRjaFN0cmF0ZWd5OiBQcmVmZXRjaFRhc2tGZXRjaFN0cmF0ZWd5LFxuICBwcmVmZXRjaEVuYWJsZWQ6IGJvb2xlYW4sXG4gIHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOiAoc3RhdHVzOiB7IHBlbmRpbmc6IGJvb2xlYW4gfSkgPT4gdm9pZFxuKTogTGlua0luc3RhbmNlIHtcbiAgaWYgKHByZWZldGNoRW5hYmxlZCkge1xuICAgIGNvbnN0IHByZWZldGNoVVJMID0gY29lcmNlUHJlZmV0Y2hhYmxlVXJsKGhyZWYpXG4gICAgaWYgKHByZWZldGNoVVJMICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBpbnN0YW5jZTogUHJlZmV0Y2hhYmxlTGlua0luc3RhbmNlID0ge1xuICAgICAgICByb3V0ZXIsXG4gICAgICAgIGZldGNoU3RyYXRlZ3ksXG4gICAgICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgICAgIHByZWZldGNoVGFzazogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIcmVmOiBwcmVmZXRjaFVSTC5ocmVmLFxuICAgICAgICBzZXRPcHRpbWlzdGljTGlua1N0YXR1cyxcbiAgICAgIH1cbiAgICAgIC8vIFdlIG9ubHkgb2JzZXJ2ZSB0aGUgbGluaydzIHZpc2liaWxpdHkgaWYgaXQncyBwcmVmZXRjaGFibGUuIEZvclxuICAgICAgLy8gZXhhbXBsZSwgdGhpcyBleGNsdWRlcyBsaW5rcyB0byBleHRlcm5hbCBVUkxzLlxuICAgICAgb2JzZXJ2ZVZpc2liaWxpdHkoZWxlbWVudCwgaW5zdGFuY2UpXG4gICAgICByZXR1cm4gaW5zdGFuY2VcbiAgICB9XG4gIH1cbiAgLy8gSWYgdGhlIGxpbmsgaXMgbm90IHByZWZldGNoYWJsZSwgd2Ugc3RpbGwgY3JlYXRlIGFuIGluc3RhbmNlIHNvIHdlIGNhblxuICAvLyB0cmFjayBpdHMgb3B0aW1pc3RpYyBzdGF0ZSAoaS5lLiB1c2VMaW5rU3RhdHVzKS5cbiAgY29uc3QgaW5zdGFuY2U6IE5vblByZWZldGNoYWJsZUxpbmtJbnN0YW5jZSA9IHtcbiAgICByb3V0ZXIsXG4gICAgZmV0Y2hTdHJhdGVneSxcbiAgICBpc1Zpc2libGU6IGZhbHNlLFxuICAgIHByZWZldGNoVGFzazogbnVsbCxcbiAgICBwcmVmZXRjaEhyZWY6IG51bGwsXG4gICAgc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMsXG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3VudEZvcm1JbnN0YW5jZShcbiAgZWxlbWVudDogSFRNTEZvcm1FbGVtZW50LFxuICBocmVmOiBzdHJpbmcsXG4gIHJvdXRlcjogQXBwUm91dGVySW5zdGFuY2UsXG4gIGZldGNoU3RyYXRlZ3k6IFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3lcbik6IHZvaWQge1xuICBjb25zdCBwcmVmZXRjaFVSTCA9IGNvZXJjZVByZWZldGNoYWJsZVVybChocmVmKVxuICBpZiAocHJlZmV0Y2hVUkwgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGhyZWYgaXMgbm90IHByZWZldGNoYWJsZSwgc28gd2UgZG9uJ3QgdHJhY2sgaXQuXG4gICAgLy8gVE9ETzogV2UgY3VycmVudGx5IG9ic2VydmUvdW5vYnNlcnZlIGEgZm9ybSBldmVyeSB0aW1lIGl0cyBocmVmIGNoYW5nZXMuXG4gICAgLy8gRm9yIExpbmtzLCB0aGlzIGlzbid0IGEgYmlnIGRlYWwgYmVjYXVzZSB0aGUgaHJlZiBkb2Vzbid0IHVzdWFsbHkgY2hhbmdlLFxuICAgIC8vIGJ1dCBmb3IgZm9ybXMgaXQncyBleHRyZW1lbHkgY29tbW9uLiBXZSBzaG91bGQgb3B0aW1pemUgdGhpcy5cbiAgICByZXR1cm5cbiAgfVxuICBjb25zdCBpbnN0YW5jZTogRm9ybUluc3RhbmNlID0ge1xuICAgIHJvdXRlcixcbiAgICBmZXRjaFN0cmF0ZWd5LFxuICAgIGlzVmlzaWJsZTogZmFsc2UsXG4gICAgcHJlZmV0Y2hUYXNrOiBudWxsLFxuICAgIHByZWZldGNoSHJlZjogcHJlZmV0Y2hVUkwuaHJlZixcbiAgICBzZXRPcHRpbWlzdGljTGlua1N0YXR1czogbnVsbCxcbiAgfVxuICBvYnNlcnZlVmlzaWJpbGl0eShlbGVtZW50LCBpbnN0YW5jZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZShlbGVtZW50OiBFbGVtZW50KSB7XG4gIGNvbnN0IGluc3RhbmNlID0gcHJlZmV0Y2hhYmxlLmdldChlbGVtZW50KVxuICBpZiAoaW5zdGFuY2UgIT09IHVuZGVmaW5lZCkge1xuICAgIHByZWZldGNoYWJsZS5kZWxldGUoZWxlbWVudClcbiAgICBwcmVmZXRjaGFibGVBbmRWaXNpYmxlLmRlbGV0ZShpbnN0YW5jZSlcbiAgICBjb25zdCBwcmVmZXRjaFRhc2sgPSBpbnN0YW5jZS5wcmVmZXRjaFRhc2tcbiAgICBpZiAocHJlZmV0Y2hUYXNrICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxQcmVmZXRjaFRhc2socHJlZmV0Y2hUYXNrKVxuICAgIH1cbiAgfVxuICBpZiAob2JzZXJ2ZXIgIT09IG51bGwpIHtcbiAgICBvYnNlcnZlci51bm9ic2VydmUoZWxlbWVudClcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVJbnRlcnNlY3QoZW50cmllczogQXJyYXk8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4pIHtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7XG4gICAgLy8gU29tZSBleHRyZW1lbHkgb2xkIGJyb3dzZXJzIG9yIHBvbHlmaWxscyBkb24ndCByZWxpYWJseSBzdXBwb3J0XG4gICAgLy8gaXNJbnRlcnNlY3Rpbmcgc28gd2UgY2hlY2sgaW50ZXJzZWN0aW9uUmF0aW8gaW5zdGVhZC4gKERvIHdlIGNhcmU/IE5vdFxuICAgIC8vIHJlYWxseS4gQnV0IHdoYXRldmVyIHRoaXMgaXMgZmluZS4pXG4gICAgY29uc3QgaXNWaXNpYmxlID0gZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8gPiAwXG4gICAgb25MaW5rVmlzaWJpbGl0eUNoYW5nZWQoZW50cnkudGFyZ2V0IGFzIEhUTUxBbmNob3JFbGVtZW50LCBpc1Zpc2libGUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTGlua1Zpc2liaWxpdHlDaGFuZ2VkKGVsZW1lbnQ6IEVsZW1lbnQsIGlzVmlzaWJsZTogYm9vbGVhbikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFByZWZldGNoaW5nIG9uIHZpZXdwb3J0IGlzIGRpc2FibGVkIGluIGRldmVsb3BtZW50IGZvciBwZXJmb3JtYW5jZVxuICAgIC8vIHJlYXNvbnMsIGJlY2F1c2UgaXQgcmVxdWlyZXMgY29tcGlsaW5nIHRoZSB0YXJnZXQgcGFnZS5cbiAgICAvLyBUT0RPOiBJbnZlc3RpZ2F0ZSByZS1lbmFibGluZyB0aGlzLlxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgaW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpbnN0YW5jZS5pc1Zpc2libGUgPSBpc1Zpc2libGVcbiAgaWYgKGlzVmlzaWJsZSkge1xuICAgIHByZWZldGNoYWJsZUFuZFZpc2libGUuYWRkKGluc3RhbmNlKVxuICB9IGVsc2Uge1xuICAgIHByZWZldGNoYWJsZUFuZFZpc2libGUuZGVsZXRlKGluc3RhbmNlKVxuICB9XG4gIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goaW5zdGFuY2UsIFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uTmF2aWdhdGlvbkludGVudChcbiAgZWxlbWVudDogSFRNTEFuY2hvckVsZW1lbnQgfCBTVkdBRWxlbWVudCxcbiAgdW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoOiBib29sZWFuXG4pIHtcbiAgY29uc3QgaW5zdGFuY2UgPSBwcmVmZXRjaGFibGUuZ2V0KGVsZW1lbnQpXG4gIGlmIChpbnN0YW5jZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgLy8gUHJlZmV0Y2ggdGhlIGxpbmsgb24gaG92ZXIvdG91Y2hzdGFydC5cbiAgaWYgKGluc3RhbmNlICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfRFlOQU1JQ19PTl9IT1ZFUiAmJlxuICAgICAgdW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoXG4gICAgKSB7XG4gICAgICAvLyBTd2l0Y2ggdG8gYSBmdWxsIHByZWZldGNoXG4gICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5ID0gRmV0Y2hTdHJhdGVneS5GdWxsXG4gICAgfVxuICAgIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goaW5zdGFuY2UsIFByZWZldGNoUHJpb3JpdHkuSW50ZW50KVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlc2NoZWR1bGVMaW5rUHJlZmV0Y2goXG4gIGluc3RhbmNlOiBQcmVmZXRjaGFibGVJbnN0YW5jZSxcbiAgcHJpb3JpdHk6IFByZWZldGNoUHJpb3JpdHkuRGVmYXVsdCB8IFByZWZldGNoUHJpb3JpdHkuSW50ZW50XG4pIHtcbiAgY29uc3QgZXhpc3RpbmdQcmVmZXRjaFRhc2sgPSBpbnN0YW5jZS5wcmVmZXRjaFRhc2tcblxuICBpZiAoIWluc3RhbmNlLmlzVmlzaWJsZSkge1xuICAgIC8vIENhbmNlbCBhbnkgaW4tcHJvZ3Jlc3MgcHJlZmV0Y2ggdGFzay4gKElmIGl0IGFscmVhZHkgZmluaXNoZWQgdGhlbiB0aGlzXG4gICAgLy8gaXMgYSBuby1vcC4pXG4gICAgaWYgKGV4aXN0aW5nUHJlZmV0Y2hUYXNrICE9PSBudWxsKSB7XG4gICAgICBjYW5jZWxQcmVmZXRjaFRhc2soZXhpc3RpbmdQcmVmZXRjaFRhc2spXG4gICAgfVxuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gcmVzZXQgdGhlIHByZWZldGNoVGFzayB0byBudWxsIHVwb24gY2FuY2VsbGF0aW9uOyBhblxuICAgIC8vIG9sZCB0YXNrIG9iamVjdCBjYW4gYmUgcmVzY2hlZHVsZWQgd2l0aCByZXNjaGVkdWxlUHJlZmV0Y2hUYXNrLiBUaGlzIGlzIGFcbiAgICAvLyBtaWNyby1vcHRpbWl6YXRpb24gYnV0IGFsc28gbWFrZXMgdGhlIGNvZGUgc2ltcGxlciAoZG9uJ3QgbmVlZCB0b1xuICAgIC8vIHdvcnJ5IGFib3V0IHdoZXRoZXIgYW4gb2xkIHRhc2sgb2JqZWN0IGlzIHN0YWxlKS5cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFKSB7XG4gICAgLy8gVGhlIG9sZCBwcmVmZXRjaCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBoYXZlIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbHMuXG4gICAgLy8gSnVzdCBzY2hlZHVsZSBhIG5ldyBwcmVmZXRjaCB0YXNrLlxuICAgIHByZWZldGNoV2l0aE9sZENhY2hlSW1wbGVtZW50YXRpb24oaW5zdGFuY2UpXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb25zdCBhcHBSb3V0ZXJTdGF0ZSA9IGdldEN1cnJlbnRBcHBSb3V0ZXJTdGF0ZSgpXG4gIGlmIChhcHBSb3V0ZXJTdGF0ZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHRyZWVBdFRpbWVPZlByZWZldGNoID0gYXBwUm91dGVyU3RhdGUudHJlZVxuICAgIGlmIChleGlzdGluZ1ByZWZldGNoVGFzayA9PT0gbnVsbCkge1xuICAgICAgLy8gSW5pdGlhdGUgYSBwcmVmZXRjaCB0YXNrLlxuICAgICAgY29uc3QgbmV4dFVybCA9IGFwcFJvdXRlclN0YXRlLm5leHRVcmxcbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlQ2FjaGVLZXkoaW5zdGFuY2UucHJlZmV0Y2hIcmVmLCBuZXh0VXJsKVxuICAgICAgaW5zdGFuY2UucHJlZmV0Y2hUYXNrID0gc2NoZWR1bGVTZWdtZW50UHJlZmV0Y2hUYXNrKFxuICAgICAgICBjYWNoZUtleSxcbiAgICAgICAgdHJlZUF0VGltZU9mUHJlZmV0Y2gsXG4gICAgICAgIGluc3RhbmNlLmZldGNoU3RyYXRlZ3ksXG4gICAgICAgIHByaW9yaXR5LFxuICAgICAgICBudWxsXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBvbGQgdGFzayBvYmplY3QgdGhhdCB3ZSBjYW4gcmVzY2hlZHVsZS4gVGhpcyBpc1xuICAgICAgLy8gZWZmZWN0aXZlbHkgdGhlIHNhbWUgYXMgY2FuY2VsaW5nIHRoZSBvbGQgdGFzayBhbmQgY3JlYXRpbmcgYSBuZXcgb25lLlxuICAgICAgcmVzY2hlZHVsZVByZWZldGNoVGFzayhcbiAgICAgICAgZXhpc3RpbmdQcmVmZXRjaFRhc2ssXG4gICAgICAgIHRyZWVBdFRpbWVPZlByZWZldGNoLFxuICAgICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5LFxuICAgICAgICBwcmlvcml0eVxuICAgICAgKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGluZ1Zpc2libGVMaW5rcyhcbiAgbmV4dFVybDogc3RyaW5nIHwgbnVsbCxcbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbikge1xuICAvLyBGb3IgZWFjaCBjdXJyZW50bHkgdmlzaWJsZSBsaW5rLCBjYW5jZWwgdGhlIGV4aXN0aW5nIHByZWZldGNoIHRhc2sgKGlmIGl0XG4gIC8vIGV4aXN0cykgYW5kIHNjaGVkdWxlIGEgbmV3IG9uZS4gVGhpcyBpcyBlZmZlY3RpdmVseSB0aGUgc2FtZSBhcyBpZiBhbGwgdGhlXG4gIC8vIHZpc2libGUgbGlua3MgbGVmdCBhbmQgdGhlbiByZS1lbnRlcmVkIHRoZSB2aWV3cG9ydC5cbiAgLy9cbiAgLy8gVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgTmV4dC1Vcmwgb3IgdGhlIGJhc2UgdHJlZSBjaGFuZ2VzLCBzaW5jZSB0aG9zZVxuICAvLyBtYXkgYWZmZWN0IHRoZSByZXN1bHQgb2YgYSBwcmVmZXRjaCB0YXNrLiBJdCdzIGFsc28gY2FsbGVkIGFmdGVyIGFcbiAgLy8gY2FjaGUgaW52YWxpZGF0aW9uLlxuICBmb3IgKGNvbnN0IGluc3RhbmNlIG9mIHByZWZldGNoYWJsZUFuZFZpc2libGUpIHtcbiAgICBjb25zdCB0YXNrID0gaW5zdGFuY2UucHJlZmV0Y2hUYXNrXG4gICAgaWYgKHRhc2sgIT09IG51bGwgJiYgIWlzUHJlZmV0Y2hUYXNrRGlydHkodGFzaywgbmV4dFVybCwgdHJlZSkpIHtcbiAgICAgIC8vIFRoZSBjYWNoZSBoYXMgbm90IGJlZW4gaW52YWxpZGF0ZWQsIGFuZCBub25lIG9mIHRoZSBpbnB1dHMgaGF2ZVxuICAgICAgLy8gY2hhbmdlZC4gQmFpbCBvdXQuXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICAvLyBTb21ldGhpbmcgY2hhbmdlZC4gQ2FuY2VsIHRoZSBleGlzdGluZyBwcmVmZXRjaCB0YXNrIGFuZCBzY2hlZHVsZSBhXG4gICAgLy8gbmV3IG9uZS5cbiAgICBpZiAodGFzayAhPT0gbnVsbCkge1xuICAgICAgY2FuY2VsUHJlZmV0Y2hUYXNrKHRhc2spXG4gICAgfVxuICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlQ2FjaGVLZXkoaW5zdGFuY2UucHJlZmV0Y2hIcmVmLCBuZXh0VXJsKVxuICAgIGluc3RhbmNlLnByZWZldGNoVGFzayA9IHNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayhcbiAgICAgIGNhY2hlS2V5LFxuICAgICAgdHJlZSxcbiAgICAgIGluc3RhbmNlLmZldGNoU3RyYXRlZ3ksXG4gICAgICBQcmVmZXRjaFByaW9yaXR5LkRlZmF1bHQsXG4gICAgICBudWxsXG4gICAgKVxuICB9XG59XG5cbmZ1bmN0aW9uIHByZWZldGNoV2l0aE9sZENhY2hlSW1wbGVtZW50YXRpb24oaW5zdGFuY2U6IFByZWZldGNoYWJsZUluc3RhbmNlKSB7XG4gIC8vIFRoaXMgaXMgdGhlIHBhdGggdXNlZCB3aGVuIHRoZSBTZWdtZW50IENhY2hlIGlzIG5vdCBlbmFibGVkLlxuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGRvUHJlZmV0Y2ggPSBhc3luYyAoKSA9PiB7XG4gICAgLy8gbm90ZSB0aGF0IGBhcHBSb3V0ZXIucHJlZmV0Y2goKWAgaXMgY3VycmVudGx5IHN5bmMsXG4gICAgLy8gc28gd2UgaGF2ZSB0byB3cmFwIHRoaXMgY2FsbCBpbiBhbiBhc3luYyBmdW5jdGlvbiB0byBiZSBhYmxlIHRvIGNhdGNoKCkgZXJyb3JzIGJlbG93LlxuXG4gICAgbGV0IHByZWZldGNoS2luZDogUHJlZmV0Y2hLaW5kXG4gICAgc3dpdGNoIChpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5KSB7XG4gICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuUFBSOiB7XG4gICAgICAgIHByZWZldGNoS2luZCA9IFByZWZldGNoS2luZC5BVVRPXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIEZldGNoU3RyYXRlZ3kuRnVsbDoge1xuICAgICAgICBwcmVmZXRjaEtpbmQgPSBQcmVmZXRjaEtpbmQuRlVMTFxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBGZXRjaFN0cmF0ZWd5LlBQUlJ1bnRpbWU6IHtcbiAgICAgICAgLy8gV2UgY2FuIG9ubHkgZ2V0IGhlcmUgaWYgQ2xpZW50IFNlZ21lbnQgQ2FjaGUgaXMgb2ZmLCBhbmQgaW4gdGhhdCBjYXNlXG4gICAgICAgIC8vIGl0IHNob3VsZG4ndCBiZSBwb3NzaWJsZSBmb3IgYSBsaW5rIHRvIHJlcXVlc3QgYSBydW50aW1lIHByZWZldGNoLlxuICAgICAgICB0aHJvdyBuZXcgSW52YXJpYW50RXJyb3IoXG4gICAgICAgICAgJ0ZldGNoU3RyYXRlZ3kuUFBSUnVudGltZSBzaG91bGQgbmV2ZXIgYmUgdXNlZCB3aGVuIGBleHBlcmltZW50YWwuY2xpZW50U2VnbWVudENhY2hlYCBpcyBkaXNhYmxlZCdcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBpbnN0YW5jZS5mZXRjaFN0cmF0ZWd5IHNhdGlzZmllcyBuZXZlclxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IG90aGVyd2lzZSB0eXBlc2NyaXB0IHdpbGwgY29uc2lkZXIgdGhlIHZhcmlhYmxlIHVuYXNzaWduZWRcbiAgICAgICAgcHJlZmV0Y2hLaW5kID0gdW5kZWZpbmVkIVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZS5yb3V0ZXIucHJlZmV0Y2goaW5zdGFuY2UucHJlZmV0Y2hIcmVmLCB7XG4gICAgICBraW5kOiBwcmVmZXRjaEtpbmQsXG4gICAgfSlcbiAgfVxuXG4gIC8vIFByZWZldGNoIHRoZSBwYWdlIGlmIGFza2VkIChvbmx5IGluIHRoZSBjbGllbnQpXG4gIC8vIFdlIG5lZWQgdG8gaGFuZGxlIGEgcHJlZmV0Y2ggZXJyb3IgaGVyZSBzaW5jZSB3ZSBtYXkgYmVcbiAgLy8gbG9hZGluZyB3aXRoIHByaW9yaXR5IHdoaWNoIGNhbiByZWplY3QgYnV0IHdlIGRvbid0XG4gIC8vIHdhbnQgdG8gZm9yY2UgbmF2aWdhdGlvbiBzaW5jZSB0aGlzIGlzIG9ubHkgYSBwcmVmZXRjaFxuICBkb1ByZWZldGNoKCkuY2F0Y2goKGVycikgPT4ge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAvLyByZXRocm93IHRvIHNob3cgaW52YWxpZCBVUkwgZXJyb3JzXG4gICAgICB0aHJvdyBlcnJcbiAgICB9XG4gIH0pXG59XG4iXSwibmFtZXMiOlsiSURMRV9MSU5LX1NUQVRVUyIsIlBFTkRJTkdfTElOS19TVEFUVVMiLCJtb3VudEZvcm1JbnN0YW5jZSIsIm1vdW50TGlua0luc3RhbmNlIiwib25MaW5rVmlzaWJpbGl0eUNoYW5nZWQiLCJvbk5hdmlnYXRpb25JbnRlbnQiLCJwaW5nVmlzaWJsZUxpbmtzIiwic2V0TGlua0ZvckN1cnJlbnROYXZpZ2F0aW9uIiwidW5tb3VudExpbmtGb3JDdXJyZW50TmF2aWdhdGlvbiIsInVubW91bnRQcmVmZXRjaGFibGVJbnN0YW5jZSIsImxpbmtGb3JNb3N0UmVjZW50TmF2aWdhdGlvbiIsInBlbmRpbmciLCJsaW5rIiwic3RhcnRUcmFuc2l0aW9uIiwic2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMiLCJwcmVmZXRjaGFibGUiLCJXZWFrTWFwIiwiTWFwIiwicHJlZmV0Y2hhYmxlQW5kVmlzaWJsZSIsIlNldCIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJoYW5kbGVJbnRlcnNlY3QiLCJyb290TWFyZ2luIiwib2JzZXJ2ZVZpc2liaWxpdHkiLCJlbGVtZW50IiwiaW5zdGFuY2UiLCJleGlzdGluZ0luc3RhbmNlIiwiZ2V0IiwidW5kZWZpbmVkIiwic2V0Iiwib2JzZXJ2ZSIsImNvZXJjZVByZWZldGNoYWJsZVVybCIsImhyZWYiLCJjcmVhdGVQcmVmZXRjaFVSTCIsInJlcG9ydEVycm9yRm4iLCJyZXBvcnRFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInJvdXRlciIsImZldGNoU3RyYXRlZ3kiLCJwcmVmZXRjaEVuYWJsZWQiLCJwcmVmZXRjaFVSTCIsImlzVmlzaWJsZSIsInByZWZldGNoVGFzayIsInByZWZldGNoSHJlZiIsImRlbGV0ZSIsImNhbmNlbFByZWZldGNoVGFzayIsInVub2JzZXJ2ZSIsImVudHJpZXMiLCJlbnRyeSIsImludGVyc2VjdGlvblJhdGlvIiwidGFyZ2V0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiYWRkIiwicmVzY2hlZHVsZUxpbmtQcmVmZXRjaCIsIlByZWZldGNoUHJpb3JpdHkiLCJEZWZhdWx0IiwidW5zdGFibGVfdXBncmFkZVRvRHluYW1pY1ByZWZldGNoIiwiX19ORVhUX0RZTkFNSUNfT05fSE9WRVIiLCJGZXRjaFN0cmF0ZWd5IiwiRnVsbCIsIkludGVudCIsInByaW9yaXR5IiwiZXhpc3RpbmdQcmVmZXRjaFRhc2siLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJwcmVmZXRjaFdpdGhPbGRDYWNoZUltcGxlbWVudGF0aW9uIiwiYXBwUm91dGVyU3RhdGUiLCJnZXRDdXJyZW50QXBwUm91dGVyU3RhdGUiLCJ0cmVlQXRUaW1lT2ZQcmVmZXRjaCIsInRyZWUiLCJuZXh0VXJsIiwiY2FjaGVLZXkiLCJjcmVhdGVDYWNoZUtleSIsInNjaGVkdWxlU2VnbWVudFByZWZldGNoVGFzayIsInJlc2NoZWR1bGVQcmVmZXRjaFRhc2siLCJ0YXNrIiwiaXNQcmVmZXRjaFRhc2tEaXJ0eSIsIndpbmRvdyIsImRvUHJlZmV0Y2giLCJwcmVmZXRjaEtpbmQiLCJQUFIiLCJQcmVmZXRjaEtpbmQiLCJBVVRPIiwiRlVMTCIsIlBQUlJ1bnRpbWUiLCJJbnZhcmlhbnRFcnJvciIsInByZWZldGNoIiwia2luZCIsImNhdGNoIiwiZXJyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/links.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js": /*!***********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js ***! \***********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"matchSegment\", ({\n enumerable: true,\n get: function() {\n return matchSegment;\n }\n}));\nconst matchSegment = (existingSegment, segment)=>{\n // segment is either Array or string\n if (typeof existingSegment === 'string') {\n if (typeof segment === 'string') {\n // Common case: segment is just a string\n return existingSegment === segment;\n }\n return false;\n }\n if (typeof segment === 'string') {\n return false;\n }\n return existingSegment[0] === segment[0] && existingSegment[1] === segment[1];\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=match-segments.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbWF0Y2gtc2VnbWVudHMuanMiLCJtYXBwaW5ncyI6Ijs7OztnREFFYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsZUFBZSxDQUMxQkMsaUJBQ0FDO0lBRUEsb0NBQW9DO0lBQ3BDLElBQUksT0FBT0Qsb0JBQW9CLFVBQVU7UUFDdkMsSUFBSSxPQUFPQyxZQUFZLFVBQVU7WUFDL0Isd0NBQXdDO1lBQ3hDLE9BQU9ELG9CQUFvQkM7UUFDN0I7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxJQUFJLE9BQU9BLFlBQVksVUFBVTtRQUMvQixPQUFPO0lBQ1Q7SUFDQSxPQUFPRCxlQUFlLENBQUMsRUFBRSxLQUFLQyxPQUFPLENBQUMsRUFBRSxJQUFJRCxlQUFlLENBQUMsRUFBRSxLQUFLQyxPQUFPLENBQUMsRUFBRTtBQUMvRSIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy9tYXRjaC1zZWdtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNlZ21lbnQgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcblxuZXhwb3J0IGNvbnN0IG1hdGNoU2VnbWVudCA9IChcbiAgZXhpc3RpbmdTZWdtZW50OiBTZWdtZW50LFxuICBzZWdtZW50OiBTZWdtZW50XG4pOiBib29sZWFuID0+IHtcbiAgLy8gc2VnbWVudCBpcyBlaXRoZXIgQXJyYXkgb3Igc3RyaW5nXG4gIGlmICh0eXBlb2YgZXhpc3RpbmdTZWdtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGlmICh0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIENvbW1vbiBjYXNlOiBzZWdtZW50IGlzIGp1c3QgYSBzdHJpbmdcbiAgICAgIHJldHVybiBleGlzdGluZ1NlZ21lbnQgPT09IHNlZ21lbnRcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIGV4aXN0aW5nU2VnbWVudFswXSA9PT0gc2VnbWVudFswXSAmJiBleGlzdGluZ1NlZ21lbnRbMV0gPT09IHNlZ21lbnRbMV1cbn1cbiJdLCJuYW1lcyI6WyJtYXRjaFNlZ21lbnQiLCJleGlzdGluZ1NlZ21lbnQiLCJzZWdtZW50Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/nav-failure-handler.js": /*!****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/nav-failure-handler.js ***! \****************************************************************************************************************************************************/ /***/ ((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 handleHardNavError: function() {\n return handleHardNavError;\n },\n useNavFailureHandler: function() {\n return useNavFailureHandler;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./router-reducer/create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nfunction handleHardNavError(error) {\n if (error && \"object\" !== 'undefined' && window.next.__pendingUrl && (0, _createhreffromurl.createHrefFromUrl)(new URL(window.location.href)) !== (0, _createhreffromurl.createHrefFromUrl)(window.next.__pendingUrl)) {\n console.error(\"Error occurred during navigation, falling back to hard navigation\", error);\n window.location.href = window.next.__pendingUrl.toString();\n return true;\n }\n return false;\n}\nfunction useNavFailureHandler() {\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=nav-failure-handler.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2LWZhaWx1cmUtaGFuZGxlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFHZ0JBLGtCQUFrQjtlQUFsQkE7O0lBa0JBQyxvQkFBb0I7ZUFBcEJBOzs7bUNBckJVOytDQUNRO0FBRTNCLFNBQVNELG1CQUFtQkUsS0FBYztJQUMvQyxJQUNFQSxTQUNBLE9BQU9DLE1BQVcsZUFDbEJBLE9BQU9DLElBQUksQ0FBQ0MsWUFBWSxJQUN4QkMsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQixJQUFJQyxJQUFJSixPQUFPSyxRQUFRLENBQUNDLElBQUksT0FDNUNILENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JILE9BQU9DLElBQUksQ0FBQ0MsWUFBWSxHQUM1QztRQUNBSyxRQUFRUixLQUFLLENBQ1YscUVBQ0RBO1FBRUZDLE9BQU9LLFFBQVEsQ0FBQ0MsSUFBSSxHQUFHTixPQUFPQyxJQUFJLENBQUNDLFlBQVksQ0FBQ00sUUFBUTtRQUN4RCxPQUFPO0lBQ1Q7SUFDQSxPQUFPO0FBQ1Q7QUFFTyxTQUFTVjtJQUNkLElBQUlXLEtBQXdDLEVBQUUsRUF1QjdDO0FBQ0giLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvbmF2LWZhaWx1cmUtaGFuZGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybCdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUhhcmROYXZFcnJvcihlcnJvcjogdW5rbm93bik6IGJvb2xlYW4ge1xuICBpZiAoXG4gICAgZXJyb3IgJiZcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybCAmJlxuICAgIGNyZWF0ZUhyZWZGcm9tVXJsKG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpKSAhPT1cbiAgICAgIGNyZWF0ZUhyZWZGcm9tVXJsKHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybClcbiAgKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBFcnJvciBvY2N1cnJlZCBkdXJpbmcgbmF2aWdhdGlvbiwgZmFsbGluZyBiYWNrIHRvIGhhcmQgbmF2aWdhdGlvbmAsXG4gICAgICBlcnJvclxuICAgIClcbiAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybC50b1N0cmluZygpXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZU5hdkZhaWx1cmVIYW5kbGVyKCkge1xuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0FQUF9OQVZfRkFJTF9IQU5ETElORykge1xuICAgIC8vIHRoaXMgaWYgaXMgb25seSBmb3IgRENFIG9mIHRoZSBmZWF0dXJlIGZsYWcgbm90IGNvbmRpdGlvbmFsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciA9IChcbiAgICAgICAgZXZ0OiBFcnJvckV2ZW50IHwgUHJvbWlzZVJlamVjdGlvbkV2ZW50XG4gICAgICApID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSAncmVhc29uJyBpbiBldnQgPyBldnQucmVhc29uIDogZXZ0LmVycm9yXG4gICAgICAgIC8vIGlmIHdlIGhhdmUgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi9yZWplY3Rpb24gZHVyaW5nXG4gICAgICAgIC8vIGEgbmF2aWdhdGlvbiB3ZSBmYWxsIGJhY2sgdG8gYSBoYXJkIG5hdmlnYXRpb24gdG9cbiAgICAgICAgLy8gYXR0ZW1wdCByZWNvdmVyaW5nIHRvIGEgZ29vZCBzdGF0ZVxuICAgICAgICBoYW5kbGVIYXJkTmF2RXJyb3IoZXJyb3IpXG4gICAgICB9XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5oYW5kbGVkcmVqZWN0aW9uJywgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKVxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgdW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyKVxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAndW5oYW5kbGVkcmVqZWN0aW9uJyxcbiAgICAgICAgICB1bmNhdWdodEV4Y2VwdGlvbkhhbmRsZXJcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH0sIFtdKVxuICB9XG59XG4iXSwibmFtZXMiOlsiaGFuZGxlSGFyZE5hdkVycm9yIiwidXNlTmF2RmFpbHVyZUhhbmRsZXIiLCJlcnJvciIsIndpbmRvdyIsIm5leHQiLCJfX3BlbmRpbmdVcmwiLCJjcmVhdGVIcmVmRnJvbVVybCIsIlVSTCIsImxvY2F0aW9uIiwiaHJlZiIsImNvbnNvbGUiLCJ0b1N0cmluZyIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQVBQX05BVl9GQUlMX0hBTkRMSU5HIiwidXNlRWZmZWN0IiwidW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIiwiZXZ0IiwicmVhc29uIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/nav-failure-handler.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation-untracked.js": /*!*****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation-untracked.js ***! \*****************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"useUntrackedPathname\", ({\n enumerable: true,\n get: function() {\n return useUntrackedPathname;\n }\n}));\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\n/**\n * This checks to see if the current render has any unknown route parameters.\n * It's used to trigger a different render path in the error boundary.\n *\n * @returns true if there are any unknown route parameters, false otherwise\n */ function hasFallbackRouteParams() {\n if (false) {}\n return false;\n}\nfunction useUntrackedPathname() {\n // If there are any unknown route parameters we would typically throw\n // an error, but this internal method allows us to return a null value instead\n // for components that do not propagate the pathname to the static shell (like\n // the error boundary).\n if (hasFallbackRouteParams()) {\n return null;\n }\n // This shouldn't cause any issues related to conditional rendering because\n // the environment will be consistent for the render.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\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=navigation-untracked.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi11bnRyYWNrZWQuanMiLCJtYXBwaW5ncyI6Ijs7Ozt3REFvRGdCQTs7O2VBQUFBOzs7bUNBcERXOzZEQUNLO0FBRWhDOzs7OztDQUtDLEdBQ0QsU0FBU0M7SUFDUCxJQUFJLEtBQTZCLEVBQUUsRUEwQmxDO0lBRUQsT0FBTztBQUNUO0FBYU8sU0FBU0Q7SUFDZCxxRUFBcUU7SUFDckUsOEVBQThFO0lBQzlFLDhFQUE4RTtJQUM5RSx1QkFBdUI7SUFDdkIsSUFBSUMsMEJBQTBCO1FBQzVCLE9BQU87SUFDVDtJQUVBLDJFQUEyRTtJQUMzRSxxREFBcUQ7SUFDckQsc0RBQXNEO0lBQ3RELE9BQU9VLENBQUFBLEdBQUFBLE9BQUFBLFVBQUFBLEVBQVdDLGlDQUFBQSxlQUFlO0FBQ25DIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL25hdmlnYXRpb24tdW50cmFja2VkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFBhdGhuYW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5cbi8qKlxuICogVGhpcyBjaGVja3MgdG8gc2VlIGlmIHRoZSBjdXJyZW50IHJlbmRlciBoYXMgYW55IHVua25vd24gcm91dGUgcGFyYW1ldGVycy5cbiAqIEl0J3MgdXNlZCB0byB0cmlnZ2VyIGEgZGlmZmVyZW50IHJlbmRlciBwYXRoIGluIHRoZSBlcnJvciBib3VuZGFyeS5cbiAqXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzLCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gaGFzRmFsbGJhY2tSb3V0ZVBhcmFtcygpOiBib29sZWFuIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ugc2hvdWxkIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgY2xpZW50IGJ1bmRsZS5cbiAgICBjb25zdCB7IHdvcmtVbml0QXN5bmNTdG9yYWdlIH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvd29yay11bml0LWFzeW5jLXN0b3JhZ2UuZXh0ZXJuYWwnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci93b3JrLXVuaXQtYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpXG5cbiAgICBjb25zdCB3b3JrVW5pdFN0b3JlID0gd29ya1VuaXRBc3luY1N0b3JhZ2UuZ2V0U3RvcmUoKVxuICAgIGlmICghd29ya1VuaXRTdG9yZSkgcmV0dXJuIGZhbHNlXG5cbiAgICBzd2l0Y2ggKHdvcmtVbml0U3RvcmUudHlwZSkge1xuICAgICAgY2FzZSAncHJlcmVuZGVyJzpcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1jbGllbnQnOlxuICAgICAgY2FzZSAncHJlcmVuZGVyLXBwcic6XG4gICAgICAgIGNvbnN0IGZhbGxiYWNrUGFyYW1zID0gd29ya1VuaXRTdG9yZS5mYWxsYmFja1JvdXRlUGFyYW1zXG4gICAgICAgIHJldHVybiBmYWxsYmFja1BhcmFtcyA/IGZhbGxiYWNrUGFyYW1zLnNpemUgPiAwIDogZmFsc2VcbiAgICAgIGNhc2UgJ3ByZXJlbmRlci1sZWdhY3knOlxuICAgICAgY2FzZSAncmVxdWVzdCc6XG4gICAgICBjYXNlICdwcmVyZW5kZXItcnVudGltZSc6XG4gICAgICBjYXNlICdjYWNoZSc6XG4gICAgICBjYXNlICdwcml2YXRlLWNhY2hlJzpcbiAgICAgIGNhc2UgJ3Vuc3RhYmxlLWNhY2hlJzpcbiAgICAgICAgYnJlYWtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHdvcmtVbml0U3RvcmUgc2F0aXNmaWVzIG5ldmVyXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBUaGlzIHJldHVybnMgYSBgbnVsbGAgdmFsdWUgaWYgdGhlcmUgYXJlIGFueSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMsIGFuZFxuICogb3RoZXJ3aXNlIHJldHVybnMgdGhlIHBhdGhuYW1lIGZyb20gdGhlIGNvbnRleHQuIFRoaXMgaXMgYW4gYWx0ZXJuYXRpdmUgdG9cbiAqIGB1c2VQYXRobmFtZWAgdGhhdCBpcyB1c2VkIGluIHRoZSBlcnJvciBib3VuZGFyeSB0byBhdm9pZCByZW5kZXJpbmcgdGhlXG4gKiBlcnJvciBib3VuZGFyeSB3aGVuIHRoZXJlIGFyZSB1bmtub3duIHJvdXRlIHBhcmFtZXRlcnMuIFRoaXMgZG9lc24ndCB0aHJvd1xuICogd2hlbiBhY2Nlc3NlZCB3aXRoIHVua25vd24gcm91dGUgcGFyYW1ldGVycy5cbiAqXG4gKiBAcmV0dXJuc1xuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlVW50cmFja2VkUGF0aG5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gIC8vIElmIHRoZXJlIGFyZSBhbnkgdW5rbm93biByb3V0ZSBwYXJhbWV0ZXJzIHdlIHdvdWxkIHR5cGljYWxseSB0aHJvd1xuICAvLyBhbiBlcnJvciwgYnV0IHRoaXMgaW50ZXJuYWwgbWV0aG9kIGFsbG93cyB1cyB0byByZXR1cm4gYSBudWxsIHZhbHVlIGluc3RlYWRcbiAgLy8gZm9yIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgcHJvcGFnYXRlIHRoZSBwYXRobmFtZSB0byB0aGUgc3RhdGljIHNoZWxsIChsaWtlXG4gIC8vIHRoZSBlcnJvciBib3VuZGFyeSkuXG4gIGlmIChoYXNGYWxsYmFja1JvdXRlUGFyYW1zKCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gVGhpcyBzaG91bGRuJ3QgY2F1c2UgYW55IGlzc3VlcyByZWxhdGVkIHRvIGNvbmRpdGlvbmFsIHJlbmRlcmluZyBiZWNhdXNlXG4gIC8vIHRoZSBlbnZpcm9ubWVudCB3aWxsIGJlIGNvbnNpc3RlbnQgZm9yIHRoZSByZW5kZXIuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9ydWxlcy1vZi1ob29rc1xuICByZXR1cm4gdXNlQ29udGV4dChQYXRobmFtZUNvbnRleHQpXG59XG4iXSwibmFtZXMiOlsidXNlVW50cmFja2VkUGF0aG5hbWUiLCJoYXNGYWxsYmFja1JvdXRlUGFyYW1zIiwid2luZG93Iiwid29ya1VuaXRBc3luY1N0b3JhZ2UiLCJyZXF1aXJlIiwid29ya1VuaXRTdG9yZSIsImdldFN0b3JlIiwidHlwZSIsImZhbGxiYWNrUGFyYW1zIiwiZmFsbGJhY2tSb3V0ZVBhcmFtcyIsInNpemUiLCJ1c2VDb250ZXh0IiwiUGF0aG5hbWVDb250ZXh0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation-untracked.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.js": /*!*******************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.js ***! \*******************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nvar _s = $RefreshSig$(), _s1 = $RefreshSig$(), _s2 = $RefreshSig$(), _s3 = $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 ReadonlyURLSearchParams: function() {\n return _navigationreactserver.ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _navigationreactserver.RedirectType;\n },\n ServerInsertedHTMLContext: function() {\n return _serverinsertedhtmlsharedruntime.ServerInsertedHTMLContext;\n },\n forbidden: function() {\n return _navigationreactserver.forbidden;\n },\n notFound: function() {\n return _navigationreactserver.notFound;\n },\n permanentRedirect: function() {\n return _navigationreactserver.permanentRedirect;\n },\n redirect: function() {\n return _navigationreactserver.redirect;\n },\n unauthorized: function() {\n return _navigationreactserver.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return _unrecognizedactionerror.unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _navigationreactserver.unstable_rethrow;\n },\n useParams: function() {\n return useParams;\n },\n usePathname: function() {\n return usePathname;\n },\n useRouter: function() {\n return useRouter;\n },\n useSearchParams: function() {\n return useSearchParams;\n },\n useSelectedLayoutSegment: function() {\n return useSelectedLayoutSegment;\n },\n useSelectedLayoutSegments: function() {\n return useSelectedLayoutSegments;\n },\n useServerInsertedHTML: function() {\n return _serverinsertedhtmlsharedruntime.useServerInsertedHTML;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _hooksclientcontextsharedruntime = __webpack_require__(/*! ../../shared/lib/hooks-client-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js\");\nconst _getsegmentvalue = __webpack_require__(/*! ./router-reducer/reducers/get-segment-value */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\");\nconst _segment = __webpack_require__(/*! ../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _navigationreactserver = __webpack_require__(/*! ./navigation.react-server */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.react-server.js\");\nconst _serverinsertedhtmlsharedruntime = __webpack_require__(/*! ../../shared/lib/server-inserted-html.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ./unrecognized-action-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst useDynamicRouteParams = false ? 0 : undefined;\nfunction useSearchParams() {\n const searchParams = (0, _react.useContext)(_hooksclientcontextsharedruntime.SearchParamsContext);\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = (0, _react.useMemo)(()=>{\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null;\n }\n return new _navigationreactserver.ReadonlyURLSearchParams(searchParams);\n }, [\n searchParams\n ]);\n if (false) {}\n return readonlySearchParams;\n}\nfunction usePathname() {\n _s();\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('usePathname()');\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathnameContext);\n}\n_s(usePathname, \"rJhb7jJF4Q92igNmh5lAnMUEkkY=\", false, function() {\n return [\n useDynamicRouteParams\n ];\n});\nfunction useRouter() {\n const router = (0, _react.useContext)(_approutercontextsharedruntime.AppRouterContext);\n if (router === null) {\n throw Object.defineProperty(new Error('invariant expected app router to be mounted'), \"__NEXT_ERROR_CODE\", {\n value: \"E238\",\n enumerable: false,\n configurable: true\n });\n }\n return router;\n}\nfunction useParams() {\n _s1();\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useParams()');\n return (0, _react.useContext)(_hooksclientcontextsharedruntime.PathParamsContext);\n}\n_s1(useParams, \"rJhb7jJF4Q92igNmh5lAnMUEkkY=\", false, function() {\n return [\n useDynamicRouteParams\n ];\n});\n/** Get the canonical parameters from the current level to the leaf node. */ // Client components API\nfunction getSelectedLayoutSegmentPath(tree, parallelRouteKey, first, segmentPath) {\n if (first === void 0) first = true;\n if (segmentPath === void 0) segmentPath = [];\n let node;\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey];\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1];\n var _parallelRoutes_children;\n node = (_parallelRoutes_children = parallelRoutes.children) != null ? _parallelRoutes_children : Object.values(parallelRoutes)[0];\n }\n if (!node) return segmentPath;\n const segment = node[0];\n let segmentValue = (0, _getsegmentvalue.getSegmentValue)(segment);\n if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return segmentPath;\n }\n segmentPath.push(segmentValue);\n return getSelectedLayoutSegmentPath(node, parallelRouteKey, false, segmentPath);\n}\nfunction useSelectedLayoutSegments(parallelRouteKey) {\n _s2();\n if (parallelRouteKey === void 0) parallelRouteKey = 'children';\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useSelectedLayoutSegments()');\n const context = (0, _react.useContext)(_approutercontextsharedruntime.LayoutRouterContext);\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null;\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey);\n}\n_s2(useSelectedLayoutSegments, \"rJhb7jJF4Q92igNmh5lAnMUEkkY=\", false, function() {\n return [\n useDynamicRouteParams\n ];\n});\nfunction useSelectedLayoutSegment(parallelRouteKey) {\n _s3();\n if (parallelRouteKey === void 0) parallelRouteKey = 'children';\n useDynamicRouteParams == null ? void 0 : useDynamicRouteParams('useSelectedLayoutSegment()');\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey);\n if (!selectedLayoutSegments || selectedLayoutSegments.length === 0) {\n return null;\n }\n const selectedLayoutSegment = parallelRouteKey === 'children' ? selectedLayoutSegments[0] : selectedLayoutSegments[selectedLayoutSegments.length - 1];\n // if the default slot is showing, we return null since it's not technically \"selected\" (it's a fallback)\n // and returning an internal value like `__DEFAULT__` would be confusing.\n return selectedLayoutSegment === _segment.DEFAULT_SEGMENT_KEY ? null : selectedLayoutSegment;\n}\n_s3(useSelectedLayoutSegment, \"GQkIYFIXjatgPrznv5JwL5TXjn8=\", false, function() {\n return [\n useDynamicRouteParams,\n useSelectedLayoutSegments\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=navigation.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQTRSRUEsdUJBQXVCO2VBQXZCQSx1QkFBQUEsdUJBQXVCOztJQUR2QkMsWUFBWTtlQUFaQSx1QkFBQUEsWUFBWTs7SUF0TFpDLHlCQUF5QjtlQUF6QkEsaUNBQUFBLHlCQUF5Qjs7SUFrTHpCQyxTQUFTO2VBQVRBLHVCQUFBQSxTQUFTOztJQURUQyxRQUFRO2VBQVJBLHVCQUFBQSxRQUFROztJQUlSQyxpQkFBaUI7ZUFBakJBLHVCQUFBQSxpQkFBaUI7O0lBRGpCQyxRQUFRO2VBQVJBLHVCQUFBQSxRQUFROztJQURSQyxZQUFZO2VBQVpBLHVCQUFBQSxZQUFZOztJQU5MQyxrQ0FBa0M7ZUFBbENBLHlCQUFBQSxrQ0FBa0M7O0lBV3pDQyxnQkFBZ0I7ZUFBaEJBLHVCQUFBQSxnQkFBZ0I7O0lBdElGQyxTQUFTO2VBQVRBOztJQTVEQUMsV0FBVztlQUFYQTs7SUFpQ0FDLFNBQVM7ZUFBVEE7O0lBOUVBQyxlQUFlO2VBQWZBOztJQTZNQUMsd0JBQXdCO2VBQXhCQTs7SUEvQkFDLHlCQUF5QjtlQUF6QkE7O0lBdEhkQyxxQkFBcUI7ZUFBckJBLGlDQUFBQSxxQkFBcUI7OzttQ0FuR2E7MkRBSzdCOzZEQUtBOzZDQUN5QjtxQ0FDc0I7bURBQ2Q7NkRBdUZqQztxREEySzRDO0FBaFFuRCxNQUFNQyx3QkFDSixNQUE2QixHQUV2QkUsQ0FDcUIsR0FDdkJDO0FBdUJDLFNBQVNQO0lBQ2QsTUFBTVEsZUFBZUMsQ0FBQUEsR0FBQUEsT0FBQUEsVUFBQUEsRUFBV0MsaUNBQUFBLG1CQUFtQjtJQUVuRCw4REFBOEQ7SUFDOUQsMEVBQTBFO0lBQzFFLGtCQUFr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QyxFQUFFLEdBQ3pCQSxzQkFBc0IsQ0FBQ0EsdUJBQXVCQyxNQUFNLEdBQUcsRUFBRTtJQUUvRCx5R0FBeUc7SUFDekcseUVBQXlFO0lBQ3pFLE9BQU9DLDBCQUEwQkMsU0FBQUEsbUJBQW1CLEdBQ2hELE9BQ0FEO0FBQ047SUFyQmdCdkM7O1FBR2RHO1FBRStCRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy9uYXZpZ2F0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgUGFyYW1zIH0gZnJvbSAnLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJ1xuXG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBcHBSb3V0ZXJDb250ZXh0LFxuICBMYXlvdXRSb3V0ZXJDb250ZXh0LFxuICB0eXBlIEFwcFJvdXRlckluc3RhbmNlLFxufSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7XG4gIFNlYXJjaFBhcmFtc0NvbnRleHQsXG4gIFBhdGhuYW1lQ29udGV4dCxcbiAgUGF0aFBhcmFtc0NvbnRleHQsXG59IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvaG9va3MtY2xpZW50LWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBnZXRTZWdtZW50VmFsdWUgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2dldC1zZWdtZW50LXZhbHVlJ1xuaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSwgREVGQVVMVF9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCB7IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLnJlYWN0LXNlcnZlcidcblxuY29uc3QgdXNlRHluYW1pY1JvdXRlUGFyYW1zID1cbiAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcbiAgICA/IChcbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvZHluYW1pYy1yZW5kZXJpbmcnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9keW5hbWljLXJlbmRlcmluZycpXG4gICAgICApLnVzZUR5bmFtaWNSb3V0ZVBhcmFtc1xuICAgIDogdW5kZWZpbmVkXG5cbi8qKlxuICogQSBbQ2xpZW50IENvbXBvbmVudF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL2NsaWVudC1jb21wb25lbnRzKSBob29rXG4gKiB0aGF0IGxldHMgeW91ICpyZWFkKiB0aGUgY3VycmVudCBVUkwncyBzZWFyY2ggcGFyYW1ldGVycy5cbiAqXG4gKiBMZWFybiBtb3JlIGFib3V0IFtgVVJMU2VhcmNoUGFyYW1zYCBvbiBNRE5dKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9VUkxTZWFyY2hQYXJhbXMpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBcInVzZSBjbGllbnRcIlxuICogaW1wb3J0IHsgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IHVzZVNlYXJjaFBhcmFtcygpXG4gKiAgIHNlYXJjaFBhcmFtcy5nZXQoJ2ZvbycpIC8vIHJldHVybnMgJ2Jhcicgd2hlbiA/Zm9vPWJhclxuICogICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVNlYXJjaFBhcmFtc2BdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcylcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VhcmNoUGFyYW1zKCk6IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIHtcbiAgY29uc3Qgc2VhcmNoUGFyYW1zID0gdXNlQ29udGV4dChTZWFyY2hQYXJhbXNDb250ZXh0KVxuXG4gIC8vIEluIHRoZSBjYXNlIHdoZXJlIHRoaXMgaXMgYG51bGxgLCB0aGUgY29tcGF0IHR5cGVzIGFkZGVkIGluXG4gIC8vIGBuZXh0LWVudi5kLnRzYCB3aWxsIGFkZCBhIG5ldyBvdmVybG9hZCB0aGF0IGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIHRvXG4gIC8vIGluY2x1ZGUgYG51bGxgLlxuICBjb25zdCByZWFkb25seVNlYXJjaFBhcmFtcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghc2VhcmNoUGFyYW1zKSB7XG4gICAgICAvLyBXaGVuIHRoZSByb3V0ZXIgaXMgbm90IHJlYWR5IGluIHBhZ2VzLCB3ZSB3b24ndCBoYXZlIHRoZSBzZWFyY2ggcGFyYW1zXG4gICAgICAvLyBhdmFpbGFibGUuXG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMoc2VhcmNoUGFyYW1zKVxuICB9LCBbc2VhcmNoUGFyYW1zXSkgYXMgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNcblxuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBjbGllbnQgYnVuZGxlLlxuICAgIGNvbnN0IHsgYmFpbG91dFRvQ2xpZW50UmVuZGVyaW5nIH0gPVxuICAgICAgcmVxdWlyZSgnLi9iYWlsb3V0LXRvLWNsaWVudC1yZW5kZXJpbmcnKSBhcyB0eXBlb2YgaW1wb3J0KCcuL2JhaWxvdXQtdG8tY2xpZW50LXJlbmRlcmluZycpXG4gICAgLy8gVE9ETy1BUFA6IGhhbmRsZSBkeW5hbWljID0gJ2ZvcmNlLXN0YXRpYycgaGVyZSBhbmQgb24gdGhlIGNsaWVudFxuICAgIGJhaWxvdXRUb0NsaWVudFJlbmRlcmluZygndXNlU2VhcmNoUGFyYW1zKCknKVxuICB9XG5cbiAgcmV0dXJuIHJlYWRvbmx5U2VhcmNoUGFyYW1zXG59XG5cbi8qKlxuICogQSBbQ2xpZW50IENvbXBvbmVudF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL2NsaWVudC1jb21wb25lbnRzKSBob29rXG4gKiB0aGF0IGxldHMgeW91IHJlYWQgdGhlIGN1cnJlbnQgVVJMJ3MgcGF0aG5hbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBcInVzZSBjbGllbnRcIlxuICogaW1wb3J0IHsgdXNlUGF0aG5hbWUgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFnZSgpIHtcbiAqICBjb25zdCBwYXRobmFtZSA9IHVzZVBhdGhuYW1lKCkgLy8gcmV0dXJucyBcIi9kYXNoYm9hcmRcIiBvbiAvZGFzaGJvYXJkP2Zvbz1iYXJcbiAqICAvLyAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVzZVBhdGhuYW1lYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1wYXRobmFtZSlcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlUGF0aG5hbWUoKTogc3RyaW5nIHtcbiAgdXNlRHluYW1pY1JvdXRlUGFyYW1zPy4oJ3VzZVBhdGhuYW1lKCknKVxuXG4gIC8vIEluIHRoZSBjYXNlIHdoZXJlIHRoaXMgaXMgYG51bGxgLCB0aGUgY29tcGF0IHR5cGVzIGFkZGVkIGluIGBuZXh0LWVudi5kLnRzYFxuICAvLyB3aWxsIGFkZCBhIG5ldyBvdmVybG9hZCB0aGF0IGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIHRvIGluY2x1ZGUgYG51bGxgLlxuICByZXR1cm4gdXNlQ29udGV4dChQYXRobmFtZUNvbnRleHQpIGFzIHN0cmluZ1xufVxuXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmV4cG9ydCB7XG4gIFNlcnZlckluc2VydGVkSFRNTENvbnRleHQsXG4gIHVzZVNlcnZlckluc2VydGVkSFRNTCxcbn0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9zZXJ2ZXItaW5zZXJ0ZWQtaHRtbC5zaGFyZWQtcnVudGltZSdcblxuLyoqXG4gKlxuICogVGhpcyBob29rIGFsbG93cyB5b3UgdG8gcHJvZ3JhbW1hdGljYWxseSBjaGFuZ2Ugcm91dGVzIGluc2lkZSBbQ2xpZW50IENvbXBvbmVudF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL2NsaWVudC1jb21wb25lbnRzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIFwidXNlIGNsaWVudFwiXG4gKiBpbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUGFnZSgpIHtcbiAqICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKVxuICogIC8vIC4uLlxuICogIHJvdXRlci5wdXNoKCcvZGFzaGJvYXJkJykgLy8gTmF2aWdhdGUgdG8gL2Rhc2hib2FyZFxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlUm91dGVyYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1yb3V0ZXIpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVJvdXRlcigpOiBBcHBSb3V0ZXJJbnN0YW5jZSB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoQXBwUm91dGVyQ29udGV4dClcbiAgaWYgKHJvdXRlciA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IGV4cGVjdGVkIGFwcCByb3V0ZXIgdG8gYmUgbW91bnRlZCcpXG4gIH1cblxuICByZXR1cm4gcm91dGVyXG59XG5cbi8qKlxuICogQSBbQ2xpZW50IENvbXBvbmVudF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL2NsaWVudC1jb21wb25lbnRzKSBob29rXG4gKiB0aGF0IGxldHMgeW91IHJlYWQgYSByb3V0ZSdzIGR5bmFtaWMgcGFyYW1zIGZpbGxlZCBpbiBieSB0aGUgY3VycmVudCBVUkwuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBcInVzZSBjbGllbnRcIlxuICogaW1wb3J0IHsgdXNlUGFyYW1zIH0gZnJvbSAnbmV4dC9uYXZpZ2F0aW9uJ1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFBhZ2UoKSB7XG4gKiAgIC8vIG9uIC9kYXNoYm9hcmQvW3RlYW1dIHdoZXJlIHBhdGhuYW1lIGlzIC9kYXNoYm9hcmQvbmV4dGpzXG4gKiAgIGNvbnN0IHsgdGVhbSB9ID0gdXNlUGFyYW1zKCkgLy8gdGVhbSA9PT0gXCJuZXh0anNcIlxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlUGFyYW1zYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1wYXJhbXMpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVBhcmFtczxUIGV4dGVuZHMgUGFyYW1zID0gUGFyYW1zPigpOiBUIHtcbiAgdXNlRHluYW1pY1JvdXRlUGFyYW1zPy4oJ3VzZVBhcmFtcygpJylcblxuICByZXR1cm4gdXNlQ29udGV4dChQYXRoUGFyYW1zQ29udGV4dCkgYXMgVFxufVxuXG4vKiogR2V0IHRoZSBjYW5vbmljYWwgcGFyYW1ldGVycyBmcm9tIHRoZSBjdXJyZW50IGxldmVsIHRvIHRoZSBsZWFmIG5vZGUuICovXG4vLyBDbGllbnQgY29tcG9uZW50cyBBUElcbmZ1bmN0aW9uIGdldFNlbGVjdGVkTGF5b3V0U2VnbWVudFBhdGgoXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmcsXG4gIGZpcnN0ID0gdHJ1ZSxcbiAgc2VnbWVudFBhdGg6IHN0cmluZ1tdID0gW11cbik6IHN0cmluZ1tdIHtcbiAgbGV0IG5vZGU6IEZsaWdodFJvdXRlclN0YXRlXG4gIGlmIChmaXJzdCkge1xuICAgIC8vIFVzZSB0aGUgcHJvdmlkZWQgcGFyYWxsZWwgcm91dGUga2V5IG9uIHRoZSBmaXJzdCBwYXJhbGxlbCByb3V0ZVxuICAgIG5vZGUgPSB0cmVlWzFdW3BhcmFsbGVsUm91dGVLZXldXG4gIH0gZWxzZSB7XG4gICAgLy8gQWZ0ZXIgZmlyc3QgcGFyYWxsZWwgcm91dGUgcHJlZmVyIGNoaWxkcmVuLCBpZiB0aGVyZSdzIG5vIGNoaWxkcmVuIHBpY2sgdGhlIGZpcnN0IHBhcmFsbGVsIHJvdXRlLlxuICAgIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gdHJlZVsxXVxuICAgIG5vZGUgPSBwYXJhbGxlbFJvdXRlcy5jaGlsZHJlbiA/PyBPYmplY3QudmFsdWVzKHBhcmFsbGVsUm91dGVzKVswXVxuICB9XG5cbiAgaWYgKCFub2RlKSByZXR1cm4gc2VnbWVudFBhdGhcbiAgY29uc3Qgc2VnbWVudCA9IG5vZGVbMF1cblxuICBsZXQgc2VnbWVudFZhbHVlID0gZ2V0U2VnbWVudFZhbHVlKHNlZ21lbnQpXG5cbiAgaWYgKCFzZWdtZW50VmFsdWUgfHwgc2VnbWVudFZhbHVlLnN0YXJ0c1dpdGgoUEFHRV9TRUdNRU5UX0tFWSkpIHtcbiAgICByZXR1cm4gc2VnbWVudFBhdGhcbiAgfVxuXG4gIHNlZ21lbnRQYXRoLnB1c2goc2VnbWVudFZhbHVlKVxuXG4gIHJldHVybiBnZXRTZWxlY3RlZExheW91dFNlZ21lbnRQYXRoKFxuICAgIG5vZGUsXG4gICAgcGFyYWxsZWxSb3V0ZUtleSxcbiAgICBmYWxzZSxcbiAgICBzZWdtZW50UGF0aFxuICApXG59XG5cbi8qKlxuICogQSBbQ2xpZW50IENvbXBvbmVudF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL2NsaWVudC1jb21wb25lbnRzKSBob29rXG4gKiB0aGF0IGxldHMgeW91IHJlYWQgdGhlIGFjdGl2ZSByb3V0ZSBzZWdtZW50cyAqKmJlbG93KiogdGhlIExheW91dCBpdCBpcyBjYWxsZWQgZnJvbS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqICd1c2UgY2xpZW50J1xuICpcbiAqIGltcG9ydCB7IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG4gKlxuICogZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhhbXBsZUNsaWVudENvbXBvbmVudCgpIHtcbiAqICAgY29uc3Qgc2VnbWVudHMgPSB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzKClcbiAqXG4gKiAgIHJldHVybiAoXG4gKiAgICAgPHVsPlxuICogICAgICAge3NlZ21lbnRzLm1hcCgoc2VnbWVudCwgaW5kZXgpID0+IChcbiAqICAgICAgICAgPGxpIGtleT17aW5kZXh9PntzZWdtZW50fTwvbGk+XG4gKiAgICAgICApKX1cbiAqICAgICA8L3VsPlxuICogICApXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1c2VTZWxlY3RlZExheW91dFNlZ21lbnRzYF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWxlY3RlZC1sYXlvdXQtc2VnbWVudHMpXG4gKi9cbi8vIENsaWVudCBjb21wb25lbnRzIEFQSVxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMoXG4gIHBhcmFsbGVsUm91dGVLZXk6IHN0cmluZyA9ICdjaGlsZHJlbidcbik6IHN0cmluZ1tdIHtcbiAgdXNlRHluYW1pY1JvdXRlUGFyYW1zPy4oJ3VzZVNlbGVjdGVkTGF5b3V0U2VnbWVudHMoKScpXG5cbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoTGF5b3V0Um91dGVyQ29udGV4dClcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciBUaGlzIG9ubHkgaGFwcGVucyBpbiBgcGFnZXNgLiBUeXBlIGlzIG92ZXJ3cml0dGVuIGluIG5hdmlnYXRpb24uZC50c1xuICBpZiAoIWNvbnRleHQpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGdldFNlbGVjdGVkTGF5b3V0U2VnbWVudFBhdGgoY29udGV4dC5wYXJlbnRUcmVlLCBwYXJhbGxlbFJvdXRlS2V5KVxufVxuXG4vKipcbiAqIEEgW0NsaWVudCBDb21wb25lbnRdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9jbGllbnQtY29tcG9uZW50cykgaG9va1xuICogdGhhdCBsZXRzIHlvdSByZWFkIHRoZSBhY3RpdmUgcm91dGUgc2VnbWVudCAqKm9uZSBsZXZlbCBiZWxvdyoqIHRoZSBMYXlvdXQgaXQgaXMgY2FsbGVkIGZyb20uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAndXNlIGNsaWVudCdcbiAqIGltcG9ydCB7IHVzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCB9IGZyb20gJ25leHQvbmF2aWdhdGlvbidcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBFeGFtcGxlQ2xpZW50Q29tcG9uZW50KCkge1xuICogICBjb25zdCBzZWdtZW50ID0gdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50KClcbiAqXG4gKiAgIHJldHVybiA8cD5BY3RpdmUgc2VnbWVudDoge3NlZ21lbnR9PC9wPlxuICogfVxuICogYGBgXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50YF0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWxlY3RlZC1sYXlvdXQtc2VnbWVudClcbiAqL1xuLy8gQ2xpZW50IGNvbXBvbmVudHMgQVBJXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50KFxuICBwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmcgPSAnY2hpbGRyZW4nXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgdXNlRHluYW1pY1JvdXRlUGFyYW1zPy4oJ3VzZVNlbGVjdGVkTGF5b3V0U2VnbWVudCgpJylcblxuICBjb25zdCBzZWxlY3RlZExheW91dFNlZ21lbnRzID0gdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cyhwYXJhbGxlbFJvdXRlS2V5KVxuXG4gIGlmICghc2VsZWN0ZWRMYXlvdXRTZWdtZW50cyB8fCBzZWxlY3RlZExheW91dFNlZ21lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBzZWxlY3RlZExheW91dFNlZ21lbnQgPVxuICAgIHBhcmFsbGVsUm91dGVLZXkgPT09ICdjaGlsZHJlbidcbiAgICAgID8gc2VsZWN0ZWRMYXlvdXRTZWdtZW50c1swXVxuICAgICAgOiBzZWxlY3RlZExheW91dFNlZ21lbnRzW3NlbGVjdGVkTGF5b3V0U2VnbWVudHMubGVuZ3RoIC0gMV1cblxuICAvLyBpZiB0aGUgZGVmYXVsdCBzbG90IGlzIHNob3dpbmcsIHdlIHJldHVybiBudWxsIHNpbmNlIGl0J3Mgbm90IHRlY2huaWNhbGx5IFwic2VsZWN0ZWRcIiAoaXQncyBhIGZhbGxiYWNrKVxuICAvLyBhbmQgcmV0dXJuaW5nIGFuIGludGVybmFsIHZhbHVlIGxpa2UgYF9fREVGQVVMVF9fYCB3b3VsZCBiZSBjb25mdXNpbmcuXG4gIHJldHVybiBzZWxlY3RlZExheW91dFNlZ21lbnQgPT09IERFRkFVTFRfU0VHTUVOVF9LRVlcbiAgICA/IG51bGxcbiAgICA6IHNlbGVjdGVkTGF5b3V0U2VnbWVudFxufVxuXG5leHBvcnQgeyB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yIH0gZnJvbSAnLi91bnJlY29nbml6ZWQtYWN0aW9uLWVycm9yJ1xuXG4vLyBTaGFyZWQgY29tcG9uZW50cyBBUElzXG5leHBvcnQge1xuICBub3RGb3VuZCxcbiAgZm9yYmlkZGVuLFxuICB1bmF1dGhvcml6ZWQsXG4gIHJlZGlyZWN0LFxuICBwZXJtYW5lbnRSZWRpcmVjdCxcbiAgUmVkaXJlY3RUeXBlLFxuICBSZWFkb25seVVSTFNlYXJjaFBhcmFtcyxcbiAgdW5zdGFibGVfcmV0aHJvdyxcbn0gZnJvbSAnLi9uYXZpZ2F0aW9uLnJlYWN0LXNlcnZlcidcbiJdLCJuYW1lcyI6WyJSZWFkb25seVVSTFNlYXJjaFBhcmFtcyIsIlJlZGlyZWN0VHlwZSIsIlNlcnZlckluc2VydGVkSFRNTENvbnRleHQiLCJmb3JiaWRkZW4iLCJub3RGb3VuZCIsInBlcm1hbmVudFJlZGlyZWN0IiwicmVkaXJlY3QiLCJ1bmF1dGhvcml6ZWQiLCJ1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yIiwidW5zdGFibGVfcmV0aHJvdyIsInVzZVBhcmFtcyIsInVzZVBhdGhuYW1lIiwidXNlUm91dGVyIiwidXNlU2VhcmNoUGFyYW1zIiwidXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50IiwidXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cyIsInVzZVNlcnZlckluc2VydGVkSFRNTCIsInVzZUR5bmFtaWNSb3V0ZVBhcmFtcyIsIndpbmRvdyIsInJlcXVpcmUiLCJ1bmRlZmluZWQiLCJzZWFyY2hQYXJhbXMiLCJ1c2VDb250ZXh0IiwiU2VhcmNoUGFyYW1zQ29udGV4dCIsInJlYWRvbmx5U2VhcmNoUGFyYW1zIiwidXNlTWVtbyIsImJhaWxvdXRUb0NsaWVudFJlbmRlcmluZyIsIlBhdGhuYW1lQ29udGV4dCIsInJvdXRlciIsIkFwcFJvdXRlckNvbnRleHQiLCJFcnJvciIsIlBhdGhQYXJhbXNDb250ZXh0IiwiZ2V0U2VsZWN0ZWRMYXlvdXRTZWdtZW50UGF0aCIsInRyZWUiLCJwYXJhbGxlbFJvdXRlS2V5IiwiZmlyc3QiLCJzZWdtZW50UGF0aCIsIm5vZGUiLCJwYXJhbGxlbFJvdXRlcyIsImNoaWxkcmVuIiwiT2JqZWN0IiwidmFsdWVzIiwic2VnbWVudCIsInNlZ21lbnRWYWx1ZSIsImdldFNlZ21lbnRWYWx1ZSIsInN0YXJ0c1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwicHVzaCIsImNvbnRleHQiLCJMYXlvdXRSb3V0ZXJDb250ZXh0IiwicGFyZW50VHJlZSIsInNlbGVjdGVkTGF5b3V0U2VnbWVudHMiLCJsZW5ndGgiLCJzZWxlY3RlZExheW91dFNlZ21lbnQiLCJERUZBVUxUX1NFR01FTlRfS0VZIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.react-server.js": /*!********************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.react-server.js ***! \********************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/** @internal */ \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 ReadonlyURLSearchParams: function() {\n return ReadonlyURLSearchParams;\n },\n RedirectType: function() {\n return _redirecterror.RedirectType;\n },\n forbidden: function() {\n return _forbidden.forbidden;\n },\n notFound: function() {\n return _notfound.notFound;\n },\n permanentRedirect: function() {\n return _redirect.permanentRedirect;\n },\n redirect: function() {\n return _redirect.redirect;\n },\n unauthorized: function() {\n return _unauthorized.unauthorized;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n },\n unstable_rethrow: function() {\n return _unstablerethrow.unstable_rethrow;\n }\n});\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\");\nconst _notfound = __webpack_require__(/*! ./not-found */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/not-found.js\");\nconst _forbidden = __webpack_require__(/*! ./forbidden */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/forbidden.js\");\nconst _unauthorized = __webpack_require__(/*! ./unauthorized */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unauthorized.js\");\nconst _unstablerethrow = __webpack_require__(/*! ./unstable-rethrow */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.js\");\nclass ReadonlyURLSearchParamsError extends Error {\n constructor(){\n super('Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams');\n }\n}\nclass ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ append() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ delete() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ set() {\n throw new ReadonlyURLSearchParamsError();\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */ sort() {\n throw new ReadonlyURLSearchParamsError();\n }\n}\nfunction unstable_isUnrecognizedActionError() {\n throw Object.defineProperty(new Error('`unstable_isUnrecognizedActionError` can only be used on the client.'), \"__NEXT_ERROR_CODE\", {\n value: \"E776\",\n enumerable: false,\n configurable: true\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=navigation.react-server.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi5yZWFjdC1zZXJ2ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsY0FBYzs7Ozs7Ozs7Ozs7O0lBd0NMQSx1QkFBdUI7ZUFBdkJBOztJQUxBQyxZQUFZO2VBQVpBLGVBQUFBLFlBQVk7O0lBRVpDLFNBQVM7ZUFBVEEsV0FBQUEsU0FBUzs7SUFEVEMsUUFBUTtlQUFSQSxVQUFBQSxRQUFROztJQUZFQyxpQkFBaUI7ZUFBakJBLFVBQUFBLGlCQUFpQjs7SUFBM0JDLFFBQVE7ZUFBUkEsVUFBQUEsUUFBUTs7SUFJUkMsWUFBWTtlQUFaQSxjQUFBQSxZQUFZOztJQVZMQyxrQ0FBa0M7ZUFBbENBOztJQVdQQyxnQkFBZ0I7ZUFBaEJBLGlCQUFBQSxnQkFBZ0I7OztzQ0FMbUI7MkNBQ2Y7c0NBQ0o7dUNBQ0M7MENBQ0c7NkNBQ0k7QUF0Q2pDLE1BQU1DLHFDQUFxQ0M7SUFDekNDLGFBQWM7UUFDWixLQUFLLENBQ0g7SUFFSjtBQUNGO0FBRUEsTUFBTVgsZ0NBQWdDWTtJQUNwQyx3S0FBd0ssR0FDeEtDLFNBQVM7UUFDUCxNQUFNLElBQUlKO0lBQ1o7SUFDQSx3S0FBd0ssR0FDeEtLLFNBQVM7UUFDUCxNQUFNLElBQUlMO0lBQ1o7SUFDQSx3S0FBd0ssR0FDeEtNLE1BQU07UUFDSixNQUFNLElBQUlOO0lBQ1o7SUFDQSx3S0FBd0ssR0FDeEtPLE9BQU87UUFDTCxNQUFNLElBQUlQO0lBQ1o7QUFDRjtBQUVPLFNBQVNGO0lBQ2QsTUFBTSxxQkFFTCxDQUZLLElBQUlHLE1BQ1IseUVBREk7ZUFBQTtvQkFBQTtzQkFBQTtJQUVOO0FBQ0YiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvbmF2aWdhdGlvbi5yZWFjdC1zZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXG4gICAgICAnTWV0aG9kIHVuYXZhaWxhYmxlIG9uIGBSZWFkb25seVVSTFNlYXJjaFBhcmFtc2AuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zI3VwZGF0aW5nLXNlYXJjaHBhcmFtcydcbiAgICApXG4gIH1cbn1cblxuY2xhc3MgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXMgZXh0ZW5kcyBVUkxTZWFyY2hQYXJhbXMge1xuICAvKiogQGRlcHJlY2F0ZWQgTWV0aG9kIHVuYXZhaWxhYmxlIG9uIGBSZWFkb25seVVSTFNlYXJjaFBhcmFtc2AuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zI3VwZGF0aW5nLXNlYXJjaHBhcmFtcyAqL1xuICBhcHBlbmQoKSB7XG4gICAgdGhyb3cgbmV3IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zRXJyb3IoKVxuICB9XG4gIC8qKiBAZGVwcmVjYXRlZCBNZXRob2QgdW5hdmFpbGFibGUgb24gYFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zYC4gUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdXNlLXNlYXJjaC1wYXJhbXMjdXBkYXRpbmctc2VhcmNocGFyYW1zICovXG4gIGRlbGV0ZSgpIHtcbiAgICB0aHJvdyBuZXcgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvcigpXG4gIH1cbiAgLyoqIEBkZXByZWNhdGVkIE1ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMgKi9cbiAgc2V0KCkge1xuICAgIHRocm93IG5ldyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yKClcbiAgfVxuICAvKiogQGRlcHJlY2F0ZWQgTWV0aG9kIHVuYXZhaWxhYmxlIG9uIGBSZWFkb25seVVSTFNlYXJjaFBhcmFtc2AuIFJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL3VzZS1zZWFyY2gtcGFyYW1zI3VwZGF0aW5nLXNlYXJjaHBhcmFtcyAqL1xuICBzb3J0KCkge1xuICAgIHRocm93IG5ldyBSZWFkb25seVVSTFNlYXJjaFBhcmFtc0Vycm9yKClcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvcigpOiBib29sZWFuIHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgICdgdW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvcmAgY2FuIG9ubHkgYmUgdXNlZCBvbiB0aGUgY2xpZW50LidcbiAgKVxufVxuXG5leHBvcnQgeyByZWRpcmVjdCwgcGVybWFuZW50UmVkaXJlY3QgfSBmcm9tICcuL3JlZGlyZWN0J1xuZXhwb3J0IHsgUmVkaXJlY3RUeXBlIH0gZnJvbSAnLi9yZWRpcmVjdC1lcnJvcidcbmV4cG9ydCB7IG5vdEZvdW5kIH0gZnJvbSAnLi9ub3QtZm91bmQnXG5leHBvcnQgeyBmb3JiaWRkZW4gfSBmcm9tICcuL2ZvcmJpZGRlbidcbmV4cG9ydCB7IHVuYXV0aG9yaXplZCB9IGZyb20gJy4vdW5hdXRob3JpemVkJ1xuZXhwb3J0IHsgdW5zdGFibGVfcmV0aHJvdyB9IGZyb20gJy4vdW5zdGFibGUtcmV0aHJvdydcbmV4cG9ydCB7IFJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zIH1cbiJdLCJuYW1lcyI6WyJSZWFkb25seVVSTFNlYXJjaFBhcmFtcyIsIlJlZGlyZWN0VHlwZSIsImZvcmJpZGRlbiIsIm5vdEZvdW5kIiwicGVybWFuZW50UmVkaXJlY3QiLCJyZWRpcmVjdCIsInVuYXV0aG9yaXplZCIsInVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IiLCJ1bnN0YWJsZV9yZXRocm93IiwiUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcHBlbmQiLCJkZWxldGUiLCJzZXQiLCJzb3J0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.react-server.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/not-found.js": /*!******************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/not-found.js ***! \******************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"notFound\", ({\n enumerable: true,\n get: function() {\n return notFound;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";404\";\nfunction notFound() {\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\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=not-found.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLmpzIiwibWFwcGluZ3MiOiI7Ozs7NENBc0JnQkE7OztlQUFBQTs7O2dEQW5CVDtBQUVQOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FFRCxNQUFNQyxTQUFVLEtBQUVDLG9CQUFBQSw4QkFBOEIsR0FBQztBQUUxQyxTQUFTRjtJQUNkLDRDQUE0QztJQUM1QyxNQUFNRyxRQUFRLHFCQUFpQixDQUFqQixJQUFJQyxNQUFNSCxTQUFWO2VBQUE7b0JBQUE7c0JBQUE7SUFBZ0I7SUFDNUJFLE1BQWtDRSxNQUFNLEdBQUdKO0lBRTdDLE1BQU1FO0FBQ1IiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSxcbiAgdHlwZSBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcixcbn0gZnJvbSAnLi9odHRwLWFjY2Vzcy1mYWxsYmFjay9odHRwLWFjY2Vzcy1mYWxsYmFjaydcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB5b3UgdG8gcmVuZGVyIHRoZSBbbm90LWZvdW5kLmpzIGZpbGVdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2ZpbGUtY29udmVudGlvbnMvbm90LWZvdW5kKVxuICogd2l0aGluIGEgcm91dGUgc2VnbWVudCBhcyB3ZWxsIGFzIGluamVjdCBhIHRhZy5cbiAqXG4gKiBgbm90Rm91bmQoKWAgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqIC0gSW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCB0aGlzIHdpbGwgaW5zZXJ0IGEgYDxtZXRhIG5hbWU9XCJyb2JvdHNcIiBjb250ZW50PVwibm9pbmRleFwiIC8+YCBtZXRhIHRhZyBhbmQgc2V0IHRoZSBzdGF0dXMgY29kZSB0byA0MDQuXG4gKiAtIEluIGEgUm91dGUgSGFuZGxlciBvciBTZXJ2ZXIgQWN0aW9uLCBpdCB3aWxsIHNlcnZlIGEgNDA0IHRvIHRoZSBjYWxsZXIuXG4gKlxuICogUmVhZCBtb3JlOiBbTmV4dC5qcyBEb2NzOiBgbm90Rm91bmRgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvbm90LWZvdW5kKVxuICovXG5cbmNvbnN0IERJR0VTVCA9IGAke0hUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07NDA0YFxuXG5leHBvcnQgZnVuY3Rpb24gbm90Rm91bmQoKTogbmV2ZXIge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGhyb3ctbGl0ZXJhbFxuICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihESUdFU1QpIGFzIEhUVFBBY2Nlc3NGYWxsYmFja0Vycm9yXG4gIDsoZXJyb3IgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IpLmRpZ2VzdCA9IERJR0VTVFxuXG4gIHRocm93IGVycm9yXG59XG4iXSwibmFtZXMiOlsibm90Rm91bmQiLCJESUdFU1QiLCJIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUiLCJlcnJvciIsIkVycm9yIiwiZGlnZXN0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/not-found.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/promise-queue.js": /*!**********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/promise-queue.js ***! \**********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/*\n This is a simple promise queue that allows you to limit the number of concurrent promises\n that are running at any given time. It's used to limit the number of concurrent\n prefetch requests that are being made to the server but could be used for other\n things as well.\n*/ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"PromiseQueue\", ({\n enumerable: true,\n get: function() {\n return PromiseQueue;\n }\n}));\nconst _class_private_field_loose_base = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_base */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\");\nconst _class_private_field_loose_key = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_key */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\");\nvar _maxConcurrency = /*#__PURE__*/ _class_private_field_loose_key._(\"_maxConcurrency\"), _runningCount = /*#__PURE__*/ _class_private_field_loose_key._(\"_runningCount\"), _queue = /*#__PURE__*/ _class_private_field_loose_key._(\"_queue\"), _processNext = /*#__PURE__*/ _class_private_field_loose_key._(\"_processNext\");\nclass PromiseQueue {\n enqueue(promiseFn) {\n let taskResolve;\n let taskReject;\n const taskPromise = new Promise((resolve, reject)=>{\n taskResolve = resolve;\n taskReject = reject;\n });\n const task = async ()=>{\n try {\n _class_private_field_loose_base._(this, _runningCount)[_runningCount]++;\n const result = await promiseFn();\n taskResolve(result);\n } catch (error) {\n taskReject(error);\n } finally{\n _class_private_field_loose_base._(this, _runningCount)[_runningCount]--;\n _class_private_field_loose_base._(this, _processNext)[_processNext]();\n }\n };\n const enqueueResult = {\n promiseFn: taskPromise,\n task\n };\n // wonder if we should take a LIFO approach here\n _class_private_field_loose_base._(this, _queue)[_queue].push(enqueueResult);\n _class_private_field_loose_base._(this, _processNext)[_processNext]();\n return taskPromise;\n }\n bump(promiseFn) {\n const index = _class_private_field_loose_base._(this, _queue)[_queue].findIndex((item)=>item.promiseFn === promiseFn);\n if (index > -1) {\n const bumpedItem = _class_private_field_loose_base._(this, _queue)[_queue].splice(index, 1)[0];\n _class_private_field_loose_base._(this, _queue)[_queue].unshift(bumpedItem);\n _class_private_field_loose_base._(this, _processNext)[_processNext](true);\n }\n }\n constructor(maxConcurrency = 5){\n Object.defineProperty(this, _processNext, {\n value: processNext\n });\n Object.defineProperty(this, _maxConcurrency, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _runningCount, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _queue, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base._(this, _maxConcurrency)[_maxConcurrency] = maxConcurrency;\n _class_private_field_loose_base._(this, _runningCount)[_runningCount] = 0;\n _class_private_field_loose_base._(this, _queue)[_queue] = [];\n }\n}\nfunction processNext(forced) {\n if (forced === void 0) forced = false;\n if ((_class_private_field_loose_base._(this, _runningCount)[_runningCount] < _class_private_field_loose_base._(this, _maxConcurrency)[_maxConcurrency] || forced) && _class_private_field_loose_base._(this, _queue)[_queue].length > 0) {\n var _class_private_field_loose_base__queue_shift;\n (_class_private_field_loose_base__queue_shift = _class_private_field_loose_base._(this, _queue)[_queue].shift()) == null ? void 0 : _class_private_field_loose_base__queue_shift.task();\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=promise-queue.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcHJvbWlzZS1xdWV1ZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFLQTs7OztnREFDYUE7OztlQUFBQTs7Ozs7SUFDWCxxRkFDQSxpRkFDQSxtRUFtREE7QUF0REssTUFBTUE7SUFjWEMsUUFBV0MsU0FBMkIsRUFBYztRQUNsRCxJQUFJQztRQUNKLElBQUlDO1FBRUosTUFBTUMsY0FBYyxJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1lBQ3hDTCxjQUFjSTtZQUNkSCxhQUFhSTtRQUNmO1FBRUEsTUFBTUMsT0FBTztZQUNYLElBQUk7Z0JBQ0Ysc0NBQUksRUFBQztnQkFDTCxNQUFNQyxTQUFTLE1BQU1SO2dCQUNyQkMsWUFBWU87WUFDZCxFQUFFLE9BQU9DLE9BQU87Z0JBQ2RQLFdBQVdPO1lBQ2IsU0FBVTtnQkFDUixzQ0FBSSxFQUFDO2dCQUNMLHNDQUFJLEVBQUM7WUFDUDtRQUNGO1FBRUEsTUFBTUMsZ0JBQWdCO1lBQUVWLFdBQVdHO1lBQWFJO1FBQUs7UUFDckQsZ0RBQWdEO1FBQ2hELHNDQUFJLEVBQUMsZ0JBQU9JLElBQUksQ0FBQ0Q7UUFDakIsc0NBQUksRUFBQztRQUVMLE9BQU9QO0lBQ1Q7SUFFQVMsS0FBS1osU0FBdUIsRUFBRTtRQUM1QixNQUFNYSxRQUFRLHNDQUFJLEVBQUMsZ0JBQU9DLFNBQVMsQ0FBQyxDQUFDQyxPQUFTQSxLQUFLZixTQUFTLEtBQUtBO1FBRWpFLElBQUlhLFFBQVEsQ0FBQyxHQUFHO1lBQ2QsTUFBTUcsYUFBYSxzQ0FBSSxFQUFDLGdCQUFPQyxNQUFNLENBQUNKLE9BQU8sRUFBRSxDQUFDLEVBQUU7WUFDbEQsc0NBQUksRUFBQyxnQkFBT0ssT0FBTyxDQUFDRjtZQUNwQixzQ0FBSSxFQUFDLDRCQUFhO1FBQ3BCO0lBQ0Y7SUE1Q0FHLFlBQVlDLGlCQUFpQixDQUFDLENBQUU7UUE4Q2hDO21CQUFBOztRQXJEQTs7bUJBQUE7O1FBQ0E7O21CQUFBOztRQUNBOzttQkFBQTs7UUFNRSxzQ0FBSSxFQUFDLG9DQUFrQkE7UUFDdkIsc0NBQUksRUFBQyxnQ0FBZ0I7UUFDckIsc0NBQUksRUFBQyxrQkFBUyxFQUFFO0lBQ2xCO0FBa0RGO0FBUkUscUJBQWFDLE1BQWM7SUFBZEEsSUFBQUEsV0FBQUEsS0FBQUEsR0FBQUEsU0FBUztJQUNwQixJQUNHLHVDQUFJLEVBQUMsZ0NBQWdCLHNDQUFJLEVBQUMscUNBQW1CQSxNQUFBQSxDQUFLLElBQ25ELHNDQUFJLEVBQUMsZ0JBQU9DLE1BQU0sR0FBRyxHQUNyQjtZQUNBO1NBQUEscUZBQUksRUFBQyxnQkFBT0MsS0FBSyx1QkFBakIsNkNBQXFCaEIsSUFBSTtJQUMzQjtBQUNGIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3Byb21pc2UtcXVldWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgICBUaGlzIGlzIGEgc2ltcGxlIHByb21pc2UgcXVldWUgdGhhdCBhbGxvd3MgeW91IHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBwcm9taXNlc1xuICAgIHRoYXQgYXJlIHJ1bm5pbmcgYXQgYW55IGdpdmVuIHRpbWUuIEl0J3MgdXNlZCB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnRcbiAgICBwcmVmZXRjaCByZXF1ZXN0cyB0aGF0IGFyZSBiZWluZyBtYWRlIHRvIHRoZSBzZXJ2ZXIgYnV0IGNvdWxkIGJlIHVzZWQgZm9yIG90aGVyXG4gICAgdGhpbmdzIGFzIHdlbGwuXG4qL1xuZXhwb3J0IGNsYXNzIFByb21pc2VRdWV1ZSB7XG4gICNtYXhDb25jdXJyZW5jeTogbnVtYmVyXG4gICNydW5uaW5nQ291bnQ6IG51bWJlclxuICAjcXVldWU6IEFycmF5PHtcbiAgICBwcm9taXNlRm46IFByb21pc2U8YW55PlxuICAgIHRhc2s6ICgpID0+IHZvaWRcbiAgfT5cblxuICBjb25zdHJ1Y3RvcihtYXhDb25jdXJyZW5jeSA9IDUpIHtcbiAgICB0aGlzLiNtYXhDb25jdXJyZW5jeSA9IG1heENvbmN1cnJlbmN5XG4gICAgdGhpcy4jcnVubmluZ0NvdW50ID0gMFxuICAgIHRoaXMuI3F1ZXVlID0gW11cbiAgfVxuXG4gIGVucXVldWU8VD4ocHJvbWlzZUZuOiAoKSA9PiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgbGV0IHRhc2tSZXNvbHZlOiAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZFxuICAgIGxldCB0YXNrUmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkXG5cbiAgICBjb25zdCB0YXNrUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRhc2tSZXNvbHZlID0gcmVzb2x2ZVxuICAgICAgdGFza1JlamVjdCA9IHJlamVjdFxuICAgIH0pIGFzIFByb21pc2U8VD5cblxuICAgIGNvbnN0IHRhc2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLiNydW5uaW5nQ291bnQrK1xuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwcm9taXNlRm4oKVxuICAgICAgICB0YXNrUmVzb2x2ZShyZXN1bHQpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0YXNrUmVqZWN0KGVycm9yKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy4jcnVubmluZ0NvdW50LS1cbiAgICAgICAgdGhpcy4jcHJvY2Vzc05leHQoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGVucXVldWVSZXN1bHQgPSB7IHByb21pc2VGbjogdGFza1Byb21pc2UsIHRhc2sgfVxuICAgIC8vIHdvbmRlciBpZiB3ZSBzaG91bGQgdGFrZSBhIExJRk8gYXBwcm9hY2ggaGVyZVxuICAgIHRoaXMuI3F1ZXVlLnB1c2goZW5xdWV1ZVJlc3VsdClcbiAgICB0aGlzLiNwcm9jZXNzTmV4dCgpXG5cbiAgICByZXR1cm4gdGFza1Byb21pc2VcbiAgfVxuXG4gIGJ1bXAocHJvbWlzZUZuOiBQcm9taXNlPGFueT4pIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuI3F1ZXVlLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5wcm9taXNlRm4gPT09IHByb21pc2VGbilcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBidW1wZWRJdGVtID0gdGhpcy4jcXVldWUuc3BsaWNlKGluZGV4LCAxKVswXVxuICAgICAgdGhpcy4jcXVldWUudW5zaGlmdChidW1wZWRJdGVtKVxuICAgICAgdGhpcy4jcHJvY2Vzc05leHQodHJ1ZSlcbiAgICB9XG4gIH1cblxuICAjcHJvY2Vzc05leHQoZm9yY2VkID0gZmFsc2UpIHtcbiAgICBpZiAoXG4gICAgICAodGhpcy4jcnVubmluZ0NvdW50IDwgdGhpcy4jbWF4Q29uY3VycmVuY3kgfHwgZm9yY2VkKSAmJlxuICAgICAgdGhpcy4jcXVldWUubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgdGhpcy4jcXVldWUuc2hpZnQoKT8udGFzaygpXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiUHJvbWlzZVF1ZXVlIiwiZW5xdWV1ZSIsInByb21pc2VGbiIsInRhc2tSZXNvbHZlIiwidGFza1JlamVjdCIsInRhc2tQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJ0YXNrIiwicmVzdWx0IiwiZXJyb3IiLCJlbnF1ZXVlUmVzdWx0IiwicHVzaCIsImJ1bXAiLCJpbmRleCIsImZpbmRJbmRleCIsIml0ZW0iLCJidW1wZWRJdGVtIiwic3BsaWNlIiwidW5zaGlmdCIsImNvbnN0cnVjdG9yIiwibWF4Q29uY3VycmVuY3kiLCJmb3JjZWQiLCJsZW5ndGgiLCJzaGlmdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/promise-queue.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-boundary.js": /*!**************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-boundary.js ***! \**************************************************************************************************************************************************/ /***/ ((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 RedirectBoundary: function() {\n return RedirectBoundary;\n },\n RedirectErrorBoundary: function() {\n return RedirectErrorBoundary;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _navigation = __webpack_require__(/*! ./navigation */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.js\");\nconst _redirect = __webpack_require__(/*! ./redirect */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\");\nfunction HandleRedirect(param) {\n let { redirect, reset, redirectType } = param;\n const router = (0, _navigation.useRouter)();\n (0, _react.useEffect)(()=>{\n _react.default.startTransition(()=>{\n if (redirectType === _redirecterror.RedirectType.push) {\n router.push(redirect, {});\n } else {\n router.replace(redirect, {});\n }\n reset();\n });\n }, [\n redirect,\n redirectType,\n reset,\n router\n ]);\n return null;\n}\n_c = HandleRedirect;\nclass RedirectErrorBoundary extends _react.default.Component {\n static getDerivedStateFromError(error) {\n if ((0, _redirecterror.isRedirectError)(error)) {\n const url = (0, _redirect.getURLFromRedirectError)(error);\n const redirectType = (0, _redirect.getRedirectTypeFromError)(error);\n return {\n redirect: url,\n redirectType\n };\n }\n // Re-throw if error is not for redirect\n throw error;\n }\n // Explicit type is needed to avoid the generated `.d.ts` having a wide return type that could be specific to the `@types/react` version.\n render() {\n const { redirect, redirectType } = this.state;\n if (redirect !== null && redirectType !== null) {\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(HandleRedirect, {\n redirect: redirect,\n redirectType: redirectType,\n reset: ()=>this.setState({\n redirect: null\n })\n });\n }\n return this.props.children;\n }\n constructor(props){\n super(props);\n this.state = {\n redirect: null,\n redirectType: null\n };\n }\n}\nfunction RedirectBoundary(param) {\n let { children } = param;\n const router = (0, _navigation.useRouter)();\n return /*#__PURE__*/ (0, _jsxruntime.jsx)(RedirectErrorBoundary, {\n router: router,\n children: children\n });\n}\n_c1 = RedirectBoundary;\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=redirect-boundary.js.map\nvar _c, _c1;\n$RefreshReg$(_c, \"HandleRedirect\");\n$RefreshReg$(_c1, \"RedirectBoundary\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtYm91bmRhcnkuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBeUVnQkEsZ0JBQWdCO2VBQWhCQTs7SUFwQ0hDLHFCQUFxQjtlQUFyQkE7Ozs7OzZFQXBDb0I7d0NBRVA7c0NBQ3dDOzJDQUNwQjtBQU85Qyx3QkFBd0IsS0FRdkI7SUFSdUIsTUFDdEJFLFFBQVEsRUFDUkMsS0FBSyxFQUNMQyxZQUFZLEVBS2IsR0FSdUI7SUFTdEIsTUFBTUMsU0FBU0MsQ0FBQUEsR0FBQUEsWUFBQUEsU0FBQUE7SUFFZkMsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSQyxPQUFBQSxPQUFLLENBQUNDLGVBQWUsQ0FBQztZQUNwQixJQUFJTCxpQkFBaUJNLGVBQUFBLFlBQVksQ0FBQ0MsSUFBSSxFQUFFO2dCQUN0Q04sT0FBT00sSUFBSSxDQUFDVCxVQUFVLENBQUM7WUFDekIsT0FBTztnQkFDTEcsT0FBT08sT0FBTyxDQUFDVixVQUFVLENBQUM7WUFDNUI7WUFDQUM7UUFDRjtJQUNGLEdBQUc7UUFBQ0Q7UUFBVUU7UUFBY0Q7UUFBT0U7S0FBTztJQUUxQyxPQUFPO0FBQ1Q7S0F2QlNKO0FBeUJGLE1BQU1ELDhCQUE4QlEsT0FBQUEsT0FBSyxDQUFDSyxTQUFTO0lBU3hELE9BQU9DLHlCQUF5QkMsS0FBVSxFQUFFO1FBQzFDLElBQUlDLENBQUFBLEdBQUFBLGVBQUFBLGVBQWUsRUFBQ0QsUUFBUTtZQUMxQixNQUFNRSxNQUFNQyxDQUFBQSxHQUFBQSxVQUFBQSx1QkFBQUEsRUFBd0JIO1lBQ3BDLE1BQU1YLGVBQWVlLENBQUFBLEdBQUFBLFVBQUFBLHdCQUFBQSxFQUF5Qko7WUFDOUMsT0FBTztnQkFBRWIsVUFBVWU7Z0JBQUtiO1lBQWE7UUFDdkM7UUFDQSx3Q0FBd0M7UUFDeEMsTUFBTVc7SUFDUjtJQUVBLHlJQUF5STtJQUN6SUssU0FBMEI7UUFDeEIsTUFBTSxFQUFFbEIsUUFBUSxFQUFFRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUNpQixLQUFLO1FBQzdDLElBQUluQixhQUFhLFFBQVFFLGlCQUFpQixNQUFNO1lBQzlDLHFCQUNFLHFCQUFDSCxnQkFBQUE7Z0JBQ0NDLFVBQVVBO2dCQUNWRSxjQUFjQTtnQkFDZEQsT0FBTyxJQUFNLElBQUksQ0FBQ21CLFFBQVEsQ0FBQzt3QkFBRXBCLFVBQVU7b0JBQUs7O1FBR2xEO1FBRUEsT0FBTyxJQUFJLENBQUNxQixLQUFLLENBQUNDLFFBQVE7SUFDNUI7SUE3QkFDLFlBQVlGLEtBQTRCLENBQUU7UUFDeEMsS0FBSyxDQUFDQTtRQUNOLElBQUksQ0FBQ0YsS0FBSyxHQUFHO1lBQUVuQixVQUFVO1lBQU1FLGNBQWM7UUFBSztJQUNwRDtBQTJCRjtBQUVPLDBCQUEwQixLQUEyQztJQUEzQyxNQUFFb0IsUUFBUSxFQUFpQyxHQUEzQztJQUMvQixNQUFNbkIsU0FBU0MsQ0FBQUEsR0FBQUEsWUFBQUEsU0FBQUE7SUFDZixxQkFDRSxxQkFBQ04sdUJBQUFBO1FBQXNCSyxRQUFRQTtrQkFBU21COztBQUU1QztNQUxnQnpCIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWJvdW5kYXJ5LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQXBwUm91dGVySW5zdGFuY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJy4vbmF2aWdhdGlvbidcbmltcG9ydCB7IGdldFJlZGlyZWN0VHlwZUZyb21FcnJvciwgZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IgfSBmcm9tICcuL3JlZGlyZWN0J1xuaW1wb3J0IHsgUmVkaXJlY3RUeXBlLCBpc1JlZGlyZWN0RXJyb3IgfSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG5pbnRlcmZhY2UgUmVkaXJlY3RCb3VuZGFyeVByb3BzIHtcbiAgcm91dGVyOiBBcHBSb3V0ZXJJbnN0YW5jZVxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG59XG5cbmZ1bmN0aW9uIEhhbmRsZVJlZGlyZWN0KHtcbiAgcmVkaXJlY3QsXG4gIHJlc2V0LFxuICByZWRpcmVjdFR5cGUsXG59OiB7XG4gIHJlZGlyZWN0OiBzdHJpbmdcbiAgcmVkaXJlY3RUeXBlOiBSZWRpcmVjdFR5cGVcbiAgcmVzZXQ6ICgpID0+IHZvaWRcbn0pIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIFJlYWN0LnN0YXJ0VHJhbnNpdGlvbigoKSA9PiB7XG4gICAgICBpZiAocmVkaXJlY3RUeXBlID09PSBSZWRpcmVjdFR5cGUucHVzaCkge1xuICAgICAgICByb3V0ZXIucHVzaChyZWRpcmVjdCwge30pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByb3V0ZXIucmVwbGFjZShyZWRpcmVjdCwge30pXG4gICAgICB9XG4gICAgICByZXNldCgpXG4gICAgfSlcbiAgfSwgW3JlZGlyZWN0LCByZWRpcmVjdFR5cGUsIHJlc2V0LCByb3V0ZXJdKVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBjbGFzcyBSZWRpcmVjdEVycm9yQm91bmRhcnkgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8XG4gIFJlZGlyZWN0Qm91bmRhcnlQcm9wcyxcbiAgeyByZWRpcmVjdDogc3RyaW5nIHwgbnVsbDsgcmVkaXJlY3RUeXBlOiBSZWRpcmVjdFR5cGUgfCBudWxsIH1cbj4ge1xuICBjb25zdHJ1Y3Rvcihwcm9wczogUmVkaXJlY3RCb3VuZGFyeVByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpXG4gICAgdGhpcy5zdGF0ZSA9IHsgcmVkaXJlY3Q6IG51bGwsIHJlZGlyZWN0VHlwZTogbnVsbCB9XG4gIH1cblxuICBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yOiBhbnkpIHtcbiAgICBpZiAoaXNSZWRpcmVjdEVycm9yKGVycm9yKSkge1xuICAgICAgY29uc3QgdXJsID0gZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IoZXJyb3IpXG4gICAgICBjb25zdCByZWRpcmVjdFR5cGUgPSBnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IoZXJyb3IpXG4gICAgICByZXR1cm4geyByZWRpcmVjdDogdXJsLCByZWRpcmVjdFR5cGUgfVxuICAgIH1cbiAgICAvLyBSZS10aHJvdyBpZiBlcnJvciBpcyBub3QgZm9yIHJlZGlyZWN0XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIC8vIEV4cGxpY2l0IHR5cGUgaXMgbmVlZGVkIHRvIGF2b2lkIHRoZSBnZW5lcmF0ZWQgYC5kLnRzYCBoYXZpbmcgYSB3aWRlIHJldHVybiB0eXBlIHRoYXQgY291bGQgYmUgc3BlY2lmaWMgdG8gdGhlIGBAdHlwZXMvcmVhY3RgIHZlcnNpb24uXG4gIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xuICAgIGNvbnN0IHsgcmVkaXJlY3QsIHJlZGlyZWN0VHlwZSB9ID0gdGhpcy5zdGF0ZVxuICAgIGlmIChyZWRpcmVjdCAhPT0gbnVsbCAmJiByZWRpcmVjdFR5cGUgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxIYW5kbGVSZWRpcmVjdFxuICAgICAgICAgIHJlZGlyZWN0PXtyZWRpcmVjdH1cbiAgICAgICAgICByZWRpcmVjdFR5cGU9e3JlZGlyZWN0VHlwZX1cbiAgICAgICAgICByZXNldD17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7IHJlZGlyZWN0OiBudWxsIH0pfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLmNoaWxkcmVuXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlZGlyZWN0Qm91bmRhcnkoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKVxuICByZXR1cm4gKFxuICAgIDxSZWRpcmVjdEVycm9yQm91bmRhcnkgcm91dGVyPXtyb3V0ZXJ9PntjaGlsZHJlbn08L1JlZGlyZWN0RXJyb3JCb3VuZGFyeT5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJlZGlyZWN0Qm91bmRhcnkiLCJSZWRpcmVjdEVycm9yQm91bmRhcnkiLCJIYW5kbGVSZWRpcmVjdCIsInJlZGlyZWN0IiwicmVzZXQiLCJyZWRpcmVjdFR5cGUiLCJyb3V0ZXIiLCJ1c2VSb3V0ZXIiLCJ1c2VFZmZlY3QiLCJSZWFjdCIsInN0YXJ0VHJhbnNpdGlvbiIsIlJlZGlyZWN0VHlwZSIsInB1c2giLCJyZXBsYWNlIiwiQ29tcG9uZW50IiwiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwiZXJyb3IiLCJpc1JlZGlyZWN0RXJyb3IiLCJ1cmwiLCJnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciIsImdldFJlZGlyZWN0VHlwZUZyb21FcnJvciIsInJlbmRlciIsInN0YXRlIiwic2V0U3RhdGUiLCJwcm9wcyIsImNoaWxkcmVuIiwiY29uc3RydWN0b3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-boundary.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js": /*!***********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js ***! \***********************************************************************************************************************************************/ /***/ ((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 REDIRECT_ERROR_CODE: function() {\n return REDIRECT_ERROR_CODE;\n },\n RedirectType: function() {\n return RedirectType;\n },\n isRedirectError: function() {\n return isRedirectError;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-status-code.js\");\nconst REDIRECT_ERROR_CODE = 'NEXT_REDIRECT';\nvar RedirectType = /*#__PURE__*/ function(RedirectType) {\n RedirectType[\"push\"] = \"push\";\n RedirectType[\"replace\"] = \"replace\";\n return RedirectType;\n}({});\nfunction isRedirectError(error) {\n if (typeof error !== 'object' || error === null || !('digest' in error) || typeof error.digest !== 'string') {\n return false;\n }\n const digest = error.digest.split(';');\n const [errorCode, type] = digest;\n const destination = digest.slice(2, -2).join(';');\n const status = digest.at(-2);\n const statusCode = Number(status);\n return errorCode === REDIRECT_ERROR_CODE && (type === 'replace' || type === 'push') && typeof destination === 'string' && !isNaN(statusCode) && statusCode in _redirectstatuscode.RedirectStatusCode;\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=redirect-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QtZXJyb3IuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBRWFBLG1CQUFtQjtlQUFuQkE7O0lBRURDLFlBQVk7ZUFBWkE7O0lBZ0JJQyxlQUFlO2VBQWZBOzs7Z0RBcEJtQjtBQUU1QixNQUFNRixzQkFBc0I7QUFFNUIsSUFBS0MsZUFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsWUFBQUE7OztXQUFBQTs7QUFnQkwsU0FBU0MsZ0JBQWdCQyxLQUFjO0lBQzVDLElBQ0UsT0FBT0EsVUFBVSxZQUNqQkEsVUFBVSxRQUNWLENBQUUsYUFBWUEsS0FBQUEsQ0FBSSxJQUNsQixPQUFPQSxNQUFNQyxNQUFNLEtBQUssVUFDeEI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxNQUFNQSxTQUFTRCxNQUFNQyxNQUFNLENBQUNDLEtBQUssQ0FBQztJQUNsQyxNQUFNLENBQUNDLFdBQVdDLEtBQUssR0FBR0g7SUFDMUIsTUFBTUksY0FBY0osT0FBT0ssS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHQyxJQUFJLENBQUM7SUFDN0MsTUFBTUMsU0FBU1AsT0FBT1EsRUFBRSxDQUFDLENBQUM7SUFFMUIsTUFBTUMsYUFBYUMsT0FBT0g7SUFFMUIsT0FDRUwsY0FBY04sdUJBQ2JPLENBQUFBLFNBQVMsYUFBYUEsU0FBUyxPQUFLLElBQ3JDLE9BQU9DLGdCQUFnQixZQUN2QixDQUFDTyxNQUFNRixlQUNQQSxjQUFjRyxvQkFBQUEsa0JBQWtCO0FBRXBDIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LWVycm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gJy4vcmVkaXJlY3Qtc3RhdHVzLWNvZGUnXG5cbmV4cG9ydCBjb25zdCBSRURJUkVDVF9FUlJPUl9DT0RFID0gJ05FWFRfUkVESVJFQ1QnXG5cbmV4cG9ydCBlbnVtIFJlZGlyZWN0VHlwZSB7XG4gIHB1c2ggPSAncHVzaCcsXG4gIHJlcGxhY2UgPSAncmVwbGFjZScsXG59XG5cbmV4cG9ydCB0eXBlIFJlZGlyZWN0RXJyb3IgPSBFcnJvciAmIHtcbiAgZGlnZXN0OiBgJHt0eXBlb2YgUkVESVJFQ1RfRVJST1JfQ09ERX07JHtSZWRpcmVjdFR5cGV9OyR7c3RyaW5nfTske1JlZGlyZWN0U3RhdHVzQ29kZX07YFxufVxuXG4vKipcbiAqIENoZWNrcyBhbiBlcnJvciB0byBkZXRlcm1pbmUgaWYgaXQncyBhbiBlcnJvciBnZW5lcmF0ZWQgYnkgdGhlXG4gKiBgcmVkaXJlY3QodXJsKWAgaGVscGVyLlxuICpcbiAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3IgdGhhdCBtYXkgcmVmZXJlbmNlIGEgcmVkaXJlY3QgZXJyb3JcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGVycm9yIGlzIGEgcmVkaXJlY3QgZXJyb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUmVkaXJlY3RFcnJvcihlcnJvcjogdW5rbm93bik6IGVycm9yIGlzIFJlZGlyZWN0RXJyb3Ige1xuICBpZiAoXG4gICAgdHlwZW9mIGVycm9yICE9PSAnb2JqZWN0JyB8fFxuICAgIGVycm9yID09PSBudWxsIHx8XG4gICAgISgnZGlnZXN0JyBpbiBlcnJvcikgfHxcbiAgICB0eXBlb2YgZXJyb3IuZGlnZXN0ICE9PSAnc3RyaW5nJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGRpZ2VzdCA9IGVycm9yLmRpZ2VzdC5zcGxpdCgnOycpXG4gIGNvbnN0IFtlcnJvckNvZGUsIHR5cGVdID0gZGlnZXN0XG4gIGNvbnN0IGRlc3RpbmF0aW9uID0gZGlnZXN0LnNsaWNlKDIsIC0yKS5qb2luKCc7JylcbiAgY29uc3Qgc3RhdHVzID0gZGlnZXN0LmF0KC0yKVxuXG4gIGNvbnN0IHN0YXR1c0NvZGUgPSBOdW1iZXIoc3RhdHVzKVxuXG4gIHJldHVybiAoXG4gICAgZXJyb3JDb2RlID09PSBSRURJUkVDVF9FUlJPUl9DT0RFICYmXG4gICAgKHR5cGUgPT09ICdyZXBsYWNlJyB8fCB0eXBlID09PSAncHVzaCcpICYmXG4gICAgdHlwZW9mIGRlc3RpbmF0aW9uID09PSAnc3RyaW5nJyAmJlxuICAgICFpc05hTihzdGF0dXNDb2RlKSAmJlxuICAgIHN0YXR1c0NvZGUgaW4gUmVkaXJlY3RTdGF0dXNDb2RlXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJSRURJUkVDVF9FUlJPUl9DT0RFIiwiUmVkaXJlY3RUeXBlIiwiaXNSZWRpcmVjdEVycm9yIiwiZXJyb3IiLCJkaWdlc3QiLCJzcGxpdCIsImVycm9yQ29kZSIsInR5cGUiLCJkZXN0aW5hdGlvbiIsInNsaWNlIiwiam9pbiIsInN0YXR1cyIsImF0Iiwic3RhdHVzQ29kZSIsIk51bWJlciIsImlzTmFOIiwiUmVkaXJlY3RTdGF0dXNDb2RlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-status-code.js": /*!*****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-status-code.js ***! \*****************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RedirectStatusCode\", ({\n enumerable: true,\n get: function() {\n return RedirectStatusCode;\n }\n}));\nvar RedirectStatusCode = /*#__PURE__*/ function(RedirectStatusCode) {\n RedirectStatusCode[RedirectStatusCode[\"SeeOther\"] = 303] = \"SeeOther\";\n RedirectStatusCode[RedirectStatusCode[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n RedirectStatusCode[RedirectStatusCode[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n return RedirectStatusCode;\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=redirect-status-code.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3Qtc3RhdHVzLWNvZGUuanMiLCJtYXBwaW5ncyI6Ijs7OztzREFBWUE7OztlQUFBQTs7O0FBQUwsSUFBS0EscUJBQUFBLFdBQUFBLEdBQUFBLFNBQUFBLGtCQUFBQTs7OztXQUFBQSIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC1zdGF0dXMtY29kZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBSZWRpcmVjdFN0YXR1c0NvZGUge1xuICBTZWVPdGhlciA9IDMwMyxcbiAgVGVtcG9yYXJ5UmVkaXJlY3QgPSAzMDcsXG4gIFBlcm1hbmVudFJlZGlyZWN0ID0gMzA4LFxufVxuIl0sIm5hbWVzIjpbIlJlZGlyZWN0U3RhdHVzQ29kZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-status-code.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js": /*!*****************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js ***! \*****************************************************************************************************************************************/ /***/ ((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 getRedirectError: function() {\n return getRedirectError;\n },\n getRedirectStatusCodeFromError: function() {\n return getRedirectStatusCodeFromError;\n },\n getRedirectTypeFromError: function() {\n return getRedirectTypeFromError;\n },\n getURLFromRedirectError: function() {\n return getURLFromRedirectError;\n },\n permanentRedirect: function() {\n return permanentRedirect;\n },\n redirect: function() {\n return redirect;\n }\n});\nconst _redirectstatuscode = __webpack_require__(/*! ./redirect-status-code */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-status-code.js\");\nconst _redirecterror = __webpack_require__(/*! ./redirect-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\");\nconst actionAsyncStorage = false ? 0 : undefined;\nfunction getRedirectError(url, type, statusCode) {\n if (statusCode === void 0) statusCode = _redirectstatuscode.RedirectStatusCode.TemporaryRedirect;\n const error = Object.defineProperty(new Error(_redirecterror.REDIRECT_ERROR_CODE), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = _redirecterror.REDIRECT_ERROR_CODE + \";\" + type + \";\" + url + \";\" + statusCode + \";\";\n return error;\n}\nfunction redirect(/** The URL to redirect to */ url, type) {\n var _actionAsyncStorage_getStore;\n type != null ? type : type = (actionAsyncStorage == null ? void 0 : (_actionAsyncStorage_getStore = actionAsyncStorage.getStore()) == null ? void 0 : _actionAsyncStorage_getStore.isAction) ? _redirecterror.RedirectType.push : _redirecterror.RedirectType.replace;\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.TemporaryRedirect);\n}\nfunction permanentRedirect(/** The URL to redirect to */ url, type) {\n if (type === void 0) type = _redirecterror.RedirectType.replace;\n throw getRedirectError(url, type, _redirectstatuscode.RedirectStatusCode.PermanentRedirect);\n}\nfunction getURLFromRedirectError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) return null;\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';');\n}\nfunction getRedirectTypeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return error.digest.split(';', 2)[1];\n}\nfunction getRedirectStatusCodeFromError(error) {\n if (!(0, _redirecterror.isRedirectError)(error)) {\n throw Object.defineProperty(new Error('Not a redirect error'), \"__NEXT_ERROR_CODE\", {\n value: \"E260\",\n enumerable: false,\n configurable: true\n });\n }\n return Number(error.digest.split(';').at(-2));\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=redirect.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcmVkaXJlY3QuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZWdCQSxnQkFBZ0I7ZUFBaEJBOztJQTZFQUMsOEJBQThCO2VBQTlCQTs7SUFSQUMsd0JBQXdCO2VBQXhCQTs7SUFSQUMsdUJBQXVCO2VBQXZCQTs7SUFoQkFDLGlCQUFpQjtlQUFqQkE7O0lBdkJBQyxRQUFRO2VBQVJBOzs7Z0RBckNtQjsyQ0FNNUI7QUFFUCxNQUFNQyxxQkFDSixNQUE2QixHQUV2QkUsQ0FDa0IsR0FDcEJDO0FBRUMsU0FBU1QsaUJBQ2RVLEdBQVcsRUFDWEMsSUFBa0IsRUFDbEJDLFVBQXFFO0lBQXJFQSxJQUFBQSxlQUFBQSxLQUFBQSxHQUFBQSxhQUFpQ0Msb0JBQUFBLGtCQUFrQixDQUFDQyxpQkFBaUI7SUFFckUsTUFBTUMsUUFBUSxxQkFBOEIsQ0FBOUIsSUFBSUMsTUFBTUMsZUFBQUEsbUJBQW1CLEdBQTdCO2VBQUE7b0JBQUE7c0JBQUE7SUFBNkI7SUFDM0NGLE1BQU1HLE1BQU0sR0FBTUQsZUFBQUEsbUJBQW1CLEdBQUMsTUFBR04sT0FBSyxNQUFHRCxNQUFJLE1BQUdFLGFBQVc7SUFDbkUsT0FBT0c7QUFDVDtBQWNPLFNBQVNWLFNBQ2QsMkJBQTJCLEdBQzNCSyxHQUFXLEVBQ1hDLElBQW1CO1FBRVZMO0lBQVRLLFFBQUFBLE9BQUFBLE9BQUFBLE9BQVNMLENBQUFBLHNCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxDQUFBQSwrQkFBQUEsbUJBQW9CYSxRQUFRLHVCQUE1QmIsNkJBQWdDYyxRQUFBQSxJQUNyQ0MsZUFBQUEsWUFBWSxDQUFDQyxJQUFJLEdBQ2pCRCxlQUFBQSxZQUFZLENBQUNFLE9BQU87SUFFeEIsTUFBTXZCLGlCQUFpQlUsS0FBS0MsTUFBTUUsb0JBQUFBLGtCQUFrQixDQUFDQyxpQkFBaUI7QUFDeEU7QUFhTyxTQUFTVixrQkFDZCwyQkFBMkIsR0FDM0JNLEdBQVcsRUFDWEMsSUFBeUM7SUFBekNBLElBQUFBLFNBQUFBLEtBQUFBLEdBQUFBLE9BQXFCVSxlQUFBQSxZQUFZLENBQUNFLE9BQU87SUFFekMsTUFBTXZCLGlCQUFpQlUsS0FBS0MsTUFBTUUsb0JBQUFBLGtCQUFrQixDQUFDVyxpQkFBaUI7QUFDeEU7QUFVTyxTQUFTckIsd0JBQXdCWSxLQUFjO0lBQ3BELElBQUksQ0FBQ1UsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JWLFFBQVEsT0FBTztJQUVwQyx3RUFBd0U7SUFDeEUsa0JBQWtCO0lBQ2xCLE9BQU9BLE1BQU1HLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDLEtBQUtDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDO0FBQ25EO0FBRU8sU0FBUzFCLHlCQUF5QmEsS0FBb0I7SUFDM0QsSUFBSSxDQUFDVSxDQUFBQSxHQUFBQSxlQUFBQSxlQUFBQSxFQUFnQlYsUUFBUTtRQUMzQixNQUFNLHFCQUFpQyxDQUFqQyxJQUFJQyxNQUFNLHlCQUFWO21CQUFBO3dCQUFBOzBCQUFBO1FBQWdDO0lBQ3hDO0lBRUEsT0FBT0QsTUFBTUcsTUFBTSxDQUFDUSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRTtBQUN0QztBQUVPLFNBQVN6QiwrQkFBK0JjLEtBQW9CO0lBQ2pFLElBQUksQ0FBQ1UsQ0FBQUEsR0FBQUEsZUFBQUEsZUFBQUEsRUFBZ0JWLFFBQVE7UUFDM0IsTUFBTSxxQkFBaUMsQ0FBakMsSUFBSUMsTUFBTSx5QkFBVjttQkFBQTt3QkFBQTswQkFBQTtRQUFnQztJQUN4QztJQUVBLE9BQU9hLE9BQU9kLE1BQU1HLE1BQU0sQ0FBQ1EsS0FBSyxDQUFDLEtBQUtJLEVBQUUsQ0FBQyxDQUFDO0FBQzVDIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3JlZGlyZWN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZGlyZWN0U3RhdHVzQ29kZSB9IGZyb20gJy4vcmVkaXJlY3Qtc3RhdHVzLWNvZGUnXG5pbXBvcnQge1xuICBSZWRpcmVjdFR5cGUsXG4gIHR5cGUgUmVkaXJlY3RFcnJvcixcbiAgaXNSZWRpcmVjdEVycm9yLFxuICBSRURJUkVDVF9FUlJPUl9DT0RFLFxufSBmcm9tICcuL3JlZGlyZWN0LWVycm9yJ1xuXG5jb25zdCBhY3Rpb25Bc3luY1N0b3JhZ2UgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci9hY3Rpb24tYXN5bmMtc3RvcmFnZS5leHRlcm5hbCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL2FjdGlvbi1hc3luYy1zdG9yYWdlLmV4dGVybmFsJylcbiAgICAgICkuYWN0aW9uQXN5bmNTdG9yYWdlXG4gICAgOiB1bmRlZmluZWRcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlZGlyZWN0RXJyb3IoXG4gIHVybDogc3RyaW5nLFxuICB0eXBlOiBSZWRpcmVjdFR5cGUsXG4gIHN0YXR1c0NvZGU6IFJlZGlyZWN0U3RhdHVzQ29kZSA9IFJlZGlyZWN0U3RhdHVzQ29kZS5UZW1wb3JhcnlSZWRpcmVjdFxuKTogUmVkaXJlY3RFcnJvciB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFJFRElSRUNUX0VSUk9SX0NPREUpIGFzIFJlZGlyZWN0RXJyb3JcbiAgZXJyb3IuZGlnZXN0ID0gYCR7UkVESVJFQ1RfRVJST1JfQ09ERX07JHt0eXBlfTske3VybH07JHtzdGF0dXNDb2RlfTtgXG4gIHJldHVybiBlcnJvclxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhbm90aGVyIFVSTC4gSXQgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqIC0gSW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCB0aGlzIHdpbGwgaW5zZXJ0IGEgbWV0YSB0YWcgdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhlIHRhcmdldCBwYWdlLlxuICogLSBJbiBhIFJvdXRlIEhhbmRsZXIgb3IgU2VydmVyIEFjdGlvbiwgaXQgd2lsbCBzZXJ2ZSBhIDMwNy8zMDMgdG8gdGhlIGNhbGxlci5cbiAqIC0gSW4gYSBTZXJ2ZXIgQWN0aW9uLCB0eXBlIGRlZmF1bHRzIHRvICdwdXNoJyBhbmQgJ3JlcGxhY2UnIGVsc2V3aGVyZS5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGByZWRpcmVjdGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9yZWRpcmVjdClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZGlyZWN0KFxuICAvKiogVGhlIFVSTCB0byByZWRpcmVjdCB0byAqL1xuICB1cmw6IHN0cmluZyxcbiAgdHlwZT86IFJlZGlyZWN0VHlwZVxuKTogbmV2ZXIge1xuICB0eXBlID8/PSBhY3Rpb25Bc3luY1N0b3JhZ2U/LmdldFN0b3JlKCk/LmlzQWN0aW9uXG4gICAgPyBSZWRpcmVjdFR5cGUucHVzaFxuICAgIDogUmVkaXJlY3RUeXBlLnJlcGxhY2VcblxuICB0aHJvdyBnZXRSZWRpcmVjdEVycm9yKHVybCwgdHlwZSwgUmVkaXJlY3RTdGF0dXNDb2RlLlRlbXBvcmFyeVJlZGlyZWN0KVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZWRpcmVjdCB0aGUgdXNlciB0byBhbm90aGVyIFVSTC4gSXQgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqIC0gSW4gYSBTZXJ2ZXIgQ29tcG9uZW50LCB0aGlzIHdpbGwgaW5zZXJ0IGEgbWV0YSB0YWcgdG8gcmVkaXJlY3QgdGhlIHVzZXIgdG8gdGhlIHRhcmdldCBwYWdlLlxuICogLSBJbiBhIFJvdXRlIEhhbmRsZXIgb3IgU2VydmVyIEFjdGlvbiwgaXQgd2lsbCBzZXJ2ZSBhIDMwOC8zMDMgdG8gdGhlIGNhbGxlci5cbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGByZWRpcmVjdGBdKGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy9yZWRpcmVjdClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBlcm1hbmVudFJlZGlyZWN0KFxuICAvKiogVGhlIFVSTCB0byByZWRpcmVjdCB0byAqL1xuICB1cmw6IHN0cmluZyxcbiAgdHlwZTogUmVkaXJlY3RUeXBlID0gUmVkaXJlY3RUeXBlLnJlcGxhY2Vcbik6IG5ldmVyIHtcbiAgdGhyb3cgZ2V0UmVkaXJlY3RFcnJvcih1cmwsIHR5cGUsIFJlZGlyZWN0U3RhdHVzQ29kZS5QZXJtYW5lbnRSZWRpcmVjdClcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBlbmNvZGVkIFVSTCBmcm9tIHRoZSBlcnJvciBpZiBpdCdzIGEgUmVkaXJlY3RFcnJvciwgbnVsbFxuICogb3RoZXJ3aXNlLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCB2YWxpZGF0ZSB0aGUgVVJMIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBlcnJvciB0aGUgZXJyb3IgdGhhdCBtYXkgYmUgYSByZWRpcmVjdCBlcnJvclxuICogQHJldHVybiB0aGUgdXJsIGlmIHRoZSBlcnJvciB3YXMgYSByZWRpcmVjdCBlcnJvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VVJMRnJvbVJlZGlyZWN0RXJyb3IoZXJyb3I6IFJlZGlyZWN0RXJyb3IpOiBzdHJpbmdcbmV4cG9ydCBmdW5jdGlvbiBnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcihlcnJvcjogdW5rbm93bik6IHN0cmluZyB8IG51bGwge1xuICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHJldHVybiBudWxsXG5cbiAgLy8gU2xpY2VzIG9mZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkaWdlc3QgdGhhdCBjb250YWlucyB0aGUgY29kZSBhbmQgdGhlXG4gIC8vIHNlcGFyYXRpbmcgJzsnLlxuICByZXR1cm4gZXJyb3IuZGlnZXN0LnNwbGl0KCc7Jykuc2xpY2UoMiwgLTIpLmpvaW4oJzsnKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVkaXJlY3RUeXBlRnJvbUVycm9yKGVycm9yOiBSZWRpcmVjdEVycm9yKTogUmVkaXJlY3RUeXBlIHtcbiAgaWYgKCFpc1JlZGlyZWN0RXJyb3IoZXJyb3IpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSByZWRpcmVjdCBlcnJvcicpXG4gIH1cblxuICByZXR1cm4gZXJyb3IuZGlnZXN0LnNwbGl0KCc7JywgMilbMV0gYXMgUmVkaXJlY3RUeXBlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IoZXJyb3I6IFJlZGlyZWN0RXJyb3IpOiBudW1iZXIge1xuICBpZiAoIWlzUmVkaXJlY3RFcnJvcihlcnJvcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIHJlZGlyZWN0IGVycm9yJylcbiAgfVxuXG4gIHJldHVybiBOdW1iZXIoZXJyb3IuZGlnZXN0LnNwbGl0KCc7JykuYXQoLTIpKVxufVxuIl0sIm5hbWVzIjpbImdldFJlZGlyZWN0RXJyb3IiLCJnZXRSZWRpcmVjdFN0YXR1c0NvZGVGcm9tRXJyb3IiLCJnZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IiLCJnZXRVUkxGcm9tUmVkaXJlY3RFcnJvciIsInBlcm1hbmVudFJlZGlyZWN0IiwicmVkaXJlY3QiLCJhY3Rpb25Bc3luY1N0b3JhZ2UiLCJ3aW5kb3ciLCJyZXF1aXJlIiwidW5kZWZpbmVkIiwidXJsIiwidHlwZSIsInN0YXR1c0NvZGUiLCJSZWRpcmVjdFN0YXR1c0NvZGUiLCJUZW1wb3JhcnlSZWRpcmVjdCIsImVycm9yIiwiRXJyb3IiLCJSRURJUkVDVF9FUlJPUl9DT0RFIiwiZGlnZXN0IiwiZ2V0U3RvcmUiLCJpc0FjdGlvbiIsIlJlZGlyZWN0VHlwZSIsInB1c2giLCJyZXBsYWNlIiwiUGVybWFuZW50UmVkaXJlY3QiLCJpc1JlZGlyZWN0RXJyb3IiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIk51bWJlciIsImF0Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js": /*!****************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js ***! \****************************************************************************************************************************************************************************/ /***/ ((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 addSearchParamsToPageSegments: function() {\n return addSearchParamsToPageSegments;\n },\n handleAliasedPrefetchEntry: function() {\n return handleAliasedPrefetchEntry;\n }\n});\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _approuter = __webpack_require__(/*! ../app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ./apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _createhreffromurl = __webpack_require__(/*! ./create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _fillcachewithnewsubtreedata = __webpack_require__(/*! ./fill-cache-with-new-subtree-data */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js\");\nconst _handlemutable = __webpack_require__(/*! ./handle-mutable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nfunction handleAliasedPrefetchEntry(navigatedAt, state, flightData, url, mutable) {\n let currentTree = state.tree;\n let currentCache = state.cache;\n const href = (0, _createhreffromurl.createHrefFromUrl)(url);\n let applied;\n let scrollableSegments = [];\n if (typeof flightData === 'string') {\n return false;\n }\n for (const normalizedFlightData of flightData){\n // If the segment doesn't have a loading component, we don't need to do anything.\n if (!hasLoadingComponentInSeedData(normalizedFlightData.seedData)) {\n continue;\n }\n let treePatch = normalizedFlightData.tree;\n // Segments are keyed by searchParams (e.g. __PAGE__?{\"foo\":\"bar\"}). We might return a less specific, param-less entry,\n // so we ensure that the final tree contains the correct searchParams (reflected in the URL) are provided in the updated FlightRouterState tree.\n // We only do this on the first read, as otherwise we'd be overwriting the searchParams that may have already been set\n treePatch = addSearchParamsToPageSegments(treePatch, Object.fromEntries(url.searchParams));\n const { seedData, isRootRender, pathToSegment } = normalizedFlightData;\n // TODO-APP: remove ''\n const flightSegmentPathWithLeadingEmpty = [\n '',\n ...pathToSegment\n ];\n // Segments are keyed by searchParams (e.g. __PAGE__?{\"foo\":\"bar\"}). We might return a less specific, param-less entry,\n // so we ensure that the final tree contains the correct searchParams (reflected in the URL) are provided in the updated FlightRouterState tree.\n // We only do this on the first read, as otherwise we'd be overwriting the searchParams that may have already been set\n treePatch = addSearchParamsToPageSegments(treePatch, Object.fromEntries(url.searchParams));\n let newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)(flightSegmentPathWithLeadingEmpty, currentTree, treePatch, href);\n const newCache = (0, _approuter.createEmptyCacheNode)();\n // The prefetch cache entry was aliased -- this signals that we only fill in the cache with the\n // loading state and not the actual parallel route seed data.\n if (isRootRender && seedData) {\n // Fill in the cache with the new loading / rsc data\n const rsc = seedData[1];\n const loading = seedData[3];\n newCache.loading = loading;\n newCache.rsc = rsc;\n // Construct a new tree and apply the aliased loading state for each parallel route\n fillNewTreeWithOnlyLoadingSegments(navigatedAt, newCache, currentCache, treePatch, seedData);\n } else {\n // Copy rsc for the root node of the cache.\n newCache.rsc = currentCache.rsc;\n newCache.prefetchRsc = currentCache.prefetchRsc;\n newCache.loading = currentCache.loading;\n newCache.parallelRoutes = new Map(currentCache.parallelRoutes);\n // copy the loading state only into the leaf node (the part that changed)\n (0, _fillcachewithnewsubtreedata.fillCacheWithNewSubTreeDataButOnlyLoading)(navigatedAt, newCache, currentCache, normalizedFlightData);\n }\n // If we don't have an updated tree, there's no reason to update the cache, as the tree\n // dictates what cache nodes to render.\n if (newTree) {\n currentTree = newTree;\n currentCache = newCache;\n applied = true;\n }\n for (const subSegment of (0, _navigatereducer.generateSegmentsFromPatch)(treePatch)){\n const scrollableSegmentPath = [\n ...normalizedFlightData.pathToSegment,\n ...subSegment\n ];\n // Filter out the __DEFAULT__ paths as they shouldn't be scrolled to in this case.\n if (scrollableSegmentPath[scrollableSegmentPath.length - 1] !== _segment.DEFAULT_SEGMENT_KEY) {\n scrollableSegments.push(scrollableSegmentPath);\n }\n }\n }\n if (!applied) {\n return false;\n }\n mutable.patchedTree = currentTree;\n mutable.cache = currentCache;\n mutable.canonicalUrl = href;\n mutable.hashFragment = url.hash;\n mutable.scrollableSegments = scrollableSegments;\n return (0, _handlemutable.handleMutable)(state, mutable);\n}\nfunction hasLoadingComponentInSeedData(seedData) {\n if (!seedData) return false;\n const parallelRoutes = seedData[2];\n const loading = seedData[3];\n if (loading) {\n return true;\n }\n for(const key in parallelRoutes){\n if (hasLoadingComponentInSeedData(parallelRoutes[key])) {\n return true;\n }\n }\n return false;\n}\nfunction fillNewTreeWithOnlyLoadingSegments(navigatedAt, newCache, existingCache, routerState, cacheNodeSeedData) {\n const isLastSegment = Object.keys(routerState[1]).length === 0;\n if (isLastSegment) {\n return;\n }\n for(const key in routerState[1]){\n const parallelRouteState = routerState[1][key];\n const segmentForParallelRoute = parallelRouteState[0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segmentForParallelRoute);\n const parallelSeedData = cacheNodeSeedData !== null && cacheNodeSeedData[2][key] !== undefined ? cacheNodeSeedData[2][key] : null;\n let newCacheNode;\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const rsc = parallelSeedData[1];\n const loading = parallelSeedData[3];\n newCacheNode = {\n lazyData: null,\n // copy the layout but null the page segment as that's not meant to be used\n rsc: segmentForParallelRoute.includes(_segment.PAGE_SEGMENT_KEY) ? null : rsc,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading,\n navigatedAt\n };\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n };\n }\n const existingParallelRoutes = newCache.parallelRoutes.get(key);\n if (existingParallelRoutes) {\n existingParallelRoutes.set(cacheKey, newCacheNode);\n } else {\n newCache.parallelRoutes.set(key, new Map([\n [\n cacheKey,\n newCacheNode\n ]\n ]));\n }\n fillNewTreeWithOnlyLoadingSegments(navigatedAt, newCacheNode, existingCache, parallelRouteState, parallelSeedData);\n }\n}\nfunction addSearchParamsToPageSegments(flightRouterState, searchParams) {\n const [segment, parallelRoutes, ...rest] = flightRouterState;\n // If it's a page segment, modify the segment by adding search params\n if (segment.includes(_segment.PAGE_SEGMENT_KEY)) {\n const newSegment = (0, _segment.addSearchParamsIfPageSegment)(segment, searchParams);\n return [\n newSegment,\n parallelRoutes,\n ...rest\n ];\n }\n // Otherwise, recurse through the parallel routes and return a new tree\n const updatedParallelRoutes = {};\n for (const [key, parallelRoute] of Object.entries(parallelRoutes)){\n updatedParallelRoutes[key] = addSearchParamsToPageSegments(parallelRoute, searchParams);\n }\n return [\n segment,\n updatedParallelRoutes,\n ...rest\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=aliased-prefetch-navigations.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYWxpYXNlZC1wcmVmZXRjaC1uYXZpZ2F0aW9ucy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFzUGdCQSw2QkFBNkI7ZUFBN0JBOztJQTFOQUMsMEJBQTBCO2VBQTFCQTs7O3FDQWxCVDt1Q0FFOEI7eURBQ087K0NBQ1Y7a0RBQ0c7eURBQ3FCOzJDQUM1Qjs2Q0FDWTtBQVVuQyxTQUFTQSwyQkFDZEMsV0FBbUIsRUFDbkJDLEtBQTJCLEVBQzNCQyxVQUEyQyxFQUMzQ0MsR0FBUSxFQUNSQyxPQUFnQjtJQUVoQixJQUFJQyxjQUFjSixNQUFNSyxJQUFJO0lBQzVCLElBQUlDLGVBQWVOLE1BQU1PLEtBQUs7SUFDOUIsTUFBTUMsT0FBT0MsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQlA7SUFDL0IsSUFBSVE7SUFDSixJQUFJQyxxQkFBMEMsRUFBRTtJQUVoRCxJQUFJLE9BQU9WLGVBQWUsVUFBVTtRQUNsQyxPQUFPO0lBQ1Q7SUFFQSxLQUFLLE1BQU1XLHdCQUF3QlgsV0FBWTtRQUM3QyxpRkFBaUY7UUFDakYsSUFBSSxDQUFDWSw4QkFBOEJELHFCQUFxQkUsUUFBUSxHQUFHO1lBQ2pFO1FBQ0Y7UUFFQSxJQUFJQyxZQUFZSCxxQkFBcUJQLElBQUk7UUFDekMsdUhBQXVIO1FBQ3ZILGdKQUFnSjtRQUNoSixzSEFBc0g7UUFDdEhVLFlBQVlsQiw4QkFDVmtCLFdBQ0FDLE9BQU9DLFdBQVcsQ0FBQ2YsSUFBSWdCLFlBQVk7UUFHckMsTUFBTSxFQUFFSixRQUFRLEVBQUVLLFlBQVksRUFBRUMsYUFBYSxFQUFFLEdBQUdSO1FBQ2xELHNCQUFzQjtRQUN0QixNQUFNUyxvQ0FBb0M7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RCxjQUNBWCxlQUNBSyxvQkFDQUk7SUFFSjtBQUNGO0FBU08sU0FBU3pELDhCQUNkb0UsaUJBQW9DLEVBQ3BDL0MsWUFBMkQ7SUFFM0QsTUFBTSxDQUFDZ0QsU0FBU3BDLGdCQUFnQixHQUFHcUMsS0FBSyxHQUFHRjtJQUUzQyxxRUFBcUU7SUFDckUsSUFBSUMsUUFBUVIsUUFBUSxDQUFDQyxTQUFBQSxnQkFBZ0IsR0FBRztRQUN0QyxNQUFNUyxhQUFhQyxDQUFBQSxHQUFBQSxTQUFBQSw0QkFBQUEsRUFBNkJILFNBQVNoRDtRQUN6RCxPQUFPO1lBQUNrRDtZQUFZdEM7ZUFBbUJxQztTQUFLO0lBQzlDO0lBRUEsdUVBQXVFO0lBQ3ZFLE1BQU1HLHdCQUE4RCxDQUFDO0lBRXJFLEtBQUssTUFBTSxDQUFDMUIsS0FBSzJCLGNBQWMsSUFBSXZELE9BQU93RCxPQUFPLENBQUMxQyxnQkFBaUI7UUFDakV3QyxxQkFBcUIsQ0FBQzFCLElBQUksR0FBRy9DLDhCQUMzQjBFLGVBQ0FyRDtJQUVKO0lBRUEsT0FBTztRQUFDZ0Q7UUFBU0k7V0FBMEJIO0tBQUs7QUFDbEQiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9hbGlhc2VkLXByZWZldGNoLW5hdmlnYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ2FjaGVOb2RlU2VlZERhdGEsXG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHtcbiAgYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCxcbiAgREVGQVVMVF9TRUdNRU5UX0tFWSxcbiAgUEFHRV9TRUdNRU5UX0tFWSxcbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkRmxpZ2h0RGF0YSB9IGZyb20gJy4uLy4uL2ZsaWdodC1kYXRhLWhlbHBlcnMnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eUNhY2hlTm9kZSB9IGZyb20gJy4uL2FwcC1yb3V0ZXInXG5pbXBvcnQgeyBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUgfSBmcm9tICcuL2FwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuL2NyZWF0ZS1ocmVmLWZyb20tdXJsJ1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5J1xuaW1wb3J0IHsgZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhQnV0T25seUxvYWRpbmcgfSBmcm9tICcuL2ZpbGwtY2FjaGUtd2l0aC1uZXctc3VidHJlZS1kYXRhJ1xuaW1wb3J0IHsgaGFuZGxlTXV0YWJsZSB9IGZyb20gJy4vaGFuZGxlLW11dGFibGUnXG5pbXBvcnQgeyBnZW5lcmF0ZVNlZ21lbnRzRnJvbVBhdGNoIH0gZnJvbSAnLi9yZWR1Y2Vycy9uYXZpZ2F0ZS1yZWR1Y2VyJ1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlLCBSZWFkb25seVJlZHVjZXJTdGF0ZSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbi8qKlxuICogVGhpcyBpcyBhIHN0b3AtZ2FwIHVudGlsIHBlci1zZWdtZW50IGNhY2hpbmcgaXMgaW1wbGVtZW50ZWQuIEl0IGxldmVyYWdlcyB0aGUgYGFsaWFzZWRgIGZsYWcgdGhhdCBpcyBhZGRlZFxuICogdG8gcHJlZmV0Y2ggZW50cmllcyB3aGVuIGl0J3MgZGV0ZXJtaW5lZCB0aGF0IHRoZSBsb2FkaW5nIHN0YXRlIGZyb20gdGhhdCBlbnRyeSBzaG91bGQgYmUgdXNlZCBmb3IgdGhpcyBuYXZpZ2F0aW9uLlxuICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgYWxpYXNlZCBlbnRyeSBhbmQgb25seSBhcHBsaWVzIHRoZSBsb2FkaW5nIHN0YXRlIHRvIHRoZSB1cGRhdGVkIGNhY2hlIG5vZGUuXG4gKiBXZSBzaG91bGQgcmVtb3ZlIHRoaXMgb25jZSBwZXItc2VnbWVudCBmZXRjaGluZyBpcyBpbXBsZW1lbnRlZCBhcyBpZGVhbGx5IHRoZSBwcmVmZXRjaCBjYWNoZSB3aWxsIGNvbnRhaW4gYVxuICogbW9yZSBncmFudWxhciBzZWdtZW50IG1hcCBhbmQgc28gdGhlIHJvdXRlciB3aWxsIGJlIGFibGUgdG8gc2ltcGx5IHJlLXVzZSB0aGUgbG9hZGluZyBzZWdtZW50IGZvciB0aGUgbmV3IG5hdmlnYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYW5kbGVBbGlhc2VkUHJlZmV0Y2hFbnRyeShcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBmbGlnaHREYXRhOiBzdHJpbmcgfCBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdLFxuICB1cmw6IFVSTCxcbiAgbXV0YWJsZTogTXV0YWJsZVxuKSB7XG4gIGxldCBjdXJyZW50VHJlZSA9IHN0YXRlLnRyZWVcbiAgbGV0IGN1cnJlbnRDYWNoZSA9IHN0YXRlLmNhY2hlXG4gIGNvbnN0IGhyZWYgPSBjcmVhdGVIcmVmRnJvbVVybCh1cmwpXG4gIGxldCBhcHBsaWVkXG4gIGxldCBzY3JvbGxhYmxlU2VnbWVudHM6IEZsaWdodFNlZ21lbnRQYXRoW10gPSBbXVxuXG4gIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgb2YgZmxpZ2h0RGF0YSkge1xuICAgIC8vIElmIHRoZSBzZWdtZW50IGRvZXNuJ3QgaGF2ZSBhIGxvYWRpbmcgY29tcG9uZW50LCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLlxuICAgIGlmICghaGFzTG9hZGluZ0NvbXBvbmVudEluU2VlZERhdGEobm9ybWFsaXplZEZsaWdodERhdGEuc2VlZERhdGEpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGxldCB0cmVlUGF0Y2ggPSBub3JtYWxpemVkRmxpZ2h0RGF0YS50cmVlXG4gICAgLy8gU2VnbWVudHMgYXJlIGtleWVkIGJ5IHNlYXJjaFBhcmFtcyAoZS5nLiBfX1BBR0VfXz97XCJmb29cIjpcImJhclwifSkuIFdlIG1pZ2h0IHJldHVybiBhIGxlc3Mgc3BlY2lmaWMsIHBhcmFtLWxlc3MgZW50cnksXG4gICAgLy8gc28gd2UgZW5zdXJlIHRoYXQgdGhlIGZpbmFsIHRyZWUgY29udGFpbnMgdGhlIGNvcnJlY3Qgc2VhcmNoUGFyYW1zIChyZWZsZWN0ZWQgaW4gdGhlIFVSTCkgYXJlIHByb3ZpZGVkIGluIHRoZSB1cGRhdGVkIEZsaWdodFJvdXRlclN0YXRlIHRyZWUuXG4gICAgLy8gV2Ugb25seSBkbyB0aGlzIG9uIHRoZSBmaXJzdCByZWFkLCBhcyBvdGhlcndpc2Ugd2UnZCBiZSBvdmVyd3JpdGluZyB0aGUgc2VhcmNoUGFyYW1zIHRoYXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIHNldFxuICAgIHRyZWVQYXRjaCA9IGFkZFNlYXJjaFBhcmFtc1RvUGFnZVNlZ21lbnRzKFxuICAgICAgdHJlZVBhdGNoLFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKHVybC5zZWFyY2hQYXJhbXMpXG4gICAgKVxuXG4gICAgY29uc3QgeyBzZWVkRGF0YSwgaXNSb290UmVuZGVyLCBwYXRoVG9TZWdtZW50IH0gPSBub3JtYWxpemVkRmxpZ2h0RGF0YVxuICAgIC8vIFRPRE8tQVBQOiByZW1vdmUgJydcbiAgICBjb25zdCBmbGlnaHRTZWdtZW50UGF0aFdpdGhMZWFkaW5nRW1wdHkgPSBbJycsIC4uLnBhdGhUb1NlZ21lbnRdXG5cbiAgICAvLyBTZWdtZW50cyBhcmUga2V5ZWQgYnkgc2VhcmNoUGFyYW1zIChlLmcuIF9fUEFHRV9fP3tcImZvb1wiOlwiYmFyXCJ9KS4gV2UgbWlnaHQgcmV0dXJuIGEgbGVzcyBzcGVjaWZpYywgcGFyYW0tbGVzcyBlbnRyeSxcbiAgICAvLyBzbyB3ZSBlbnN1cmUgdGhhdCB0aGUgZmluYWwgdHJlZSBjb250YWlucyB0aGUgY29ycmVjdCBzZWFyY2hQYXJhbXMgKHJlZmxlY3RlZCBpbiB0aGUgVVJMKSBhcmUgcHJvdmlkZWQgaW4gdGhlIHVwZGF0ZWQgRmxpZ2h0Um91dGVyU3RhdGUgdHJlZS5cbiAgICAvLyBXZSBvbmx5IGRvIHRoaXMgb24gdGhlIGZpcnN0IHJlYWQsIGFzIG90aGVyd2lzZSB3ZSdkIGJlIG92ZXJ3cml0aW5nIHRoZSBzZWFyY2hQYXJhbXMgdGhhdCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0XG4gICAgdHJlZVBhdGNoID0gYWRkU2VhcmNoUGFyYW1zVG9QYWdlU2VnbWVudHMoXG4gICAgICB0cmVlUGF0Y2gsXG4gICAgICBPYmplY3QuZnJvbUVudHJpZXModXJsLnNlYXJjaFBhcmFtcylcbiAgICApXG5cbiAgICBsZXQgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgIGZsaWdodFNlZ21lbnRQYXRoV2l0aExlYWRpbmdFbXB0eSxcbiAgICAgIGN1cnJlbnRUcmVlLFxuICAgICAgdHJlZVBhdGNoLFxuICAgICAgaHJlZlxuICAgIClcblxuICAgIGNvbnN0IG5ld0NhY2hlID0gY3JlYXRlRW1wdHlDYWNoZU5vZGUoKVxuXG4gICAgLy8gVGhlIHByZWZldGNoIGNhY2hlIGVudHJ5IHdhcyBhbGlhc2VkIC0tIHRoaXMgc2lnbmFscyB0aGF0IHdlIG9ubHkgZmlsbCBpbiB0aGUgY2FjaGUgd2l0aCB0aGVcbiAgICAvLyBsb2FkaW5nIHN0YXRlIGFuZCBub3QgdGhlIGFjdHVhbCBwYXJhbGxlbCByb3V0ZSBzZWVkIGRhdGEuXG4gICAgaWYgKGlzUm9vdFJlbmRlciAmJiBzZWVkRGF0YSkge1xuICAgICAgLy8gRmlsbCBpbiB0aGUgY2FjaGUgd2l0aCB0aGUgbmV3IGxvYWRpbmcgLyByc2MgZGF0YVxuICAgICAgY29uc3QgcnNjID0gc2VlZERhdGFbMV1cbiAgICAgIGNvbnN0IGxvYWRpbmcgPSBzZWVkRGF0YVszXVxuICAgICAgbmV3Q2FjaGUubG9hZGluZyA9IGxvYWRpbmdcbiAgICAgIG5ld0NhY2hlLnJzYyA9IHJzY1xuXG4gICAgICAvLyBDb25zdHJ1Y3QgYSBuZXcgdHJlZSBhbmQgYXBwbHkgdGhlIGFsaWFzZWQgbG9hZGluZyBzdGF0ZSBmb3IgZWFjaCBwYXJhbGxlbCByb3V0ZVxuICAgICAgZmlsbE5ld1RyZWVXaXRoT25seUxvYWRpbmdTZWdtZW50cyhcbiAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgIG5ld0NhY2hlLFxuICAgICAgICBjdXJyZW50Q2FjaGUsXG4gICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgc2VlZERhdGFcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29weSByc2MgZm9yIHRoZSByb290IG5vZGUgb2YgdGhlIGNhY2hlLlxuICAgICAgbmV3Q2FjaGUucnNjID0gY3VycmVudENhY2hlLnJzY1xuICAgICAgbmV3Q2FjaGUucHJlZmV0Y2hSc2MgPSBjdXJyZW50Q2FjaGUucHJlZmV0Y2hSc2NcbiAgICAgIG5ld0NhY2hlLmxvYWRpbmcgPSBjdXJyZW50Q2FjaGUubG9hZGluZ1xuICAgICAgbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMgPSBuZXcgTWFwKGN1cnJlbnRDYWNoZS5wYXJhbGxlbFJvdXRlcylcblxuICAgICAgLy8gY29weSB0aGUgbG9hZGluZyBzdGF0ZSBvbmx5IGludG8gdGhlIGxlYWYgbm9kZSAodGhlIHBhcnQgdGhhdCBjaGFuZ2VkKVxuICAgICAgZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhQnV0T25seUxvYWRpbmcoXG4gICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICBuZXdDYWNoZSxcbiAgICAgICAgY3VycmVudENhY2hlLFxuICAgICAgICBub3JtYWxpemVkRmxpZ2h0RGF0YVxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYW4gdXBkYXRlZCB0cmVlLCB0aGVyZSdzIG5vIHJlYXNvbiB0byB1cGRhdGUgdGhlIGNhY2hlLCBhcyB0aGUgdHJlZVxuICAgIC8vIGRpY3RhdGVzIHdoYXQgY2FjaGUgbm9kZXMgdG8gcmVuZGVyLlxuICAgIGlmIChuZXdUcmVlKSB7XG4gICAgICBjdXJyZW50VHJlZSA9IG5ld1RyZWVcbiAgICAgIGN1cnJlbnRDYWNoZSA9IG5ld0NhY2hlXG4gICAgICBhcHBsaWVkID0gdHJ1ZVxuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3ViU2VnbWVudCBvZiBnZW5lcmF0ZVNlZ21lbnRzRnJvbVBhdGNoKHRyZWVQYXRjaCkpIHtcbiAgICAgIGNvbnN0IHNjcm9sbGFibGVTZWdtZW50UGF0aCA9IFtcbiAgICAgICAgLi4ubm9ybWFsaXplZEZsaWdodERhdGEucGF0aFRvU2VnbWVudCxcbiAgICAgICAgLi4uc3ViU2VnbWVudCxcbiAgICAgIF1cbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIF9fREVGQVVMVF9fIHBhdGhzIGFzIHRoZXkgc2hvdWxkbid0IGJlIHNjcm9sbGVkIHRvIGluIHRoaXMgY2FzZS5cbiAgICAgIGlmIChcbiAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRQYXRoW3Njcm9sbGFibGVTZWdtZW50UGF0aC5sZW5ndGggLSAxXSAhPT1cbiAgICAgICAgREVGQVVMVF9TRUdNRU5UX0tFWVxuICAgICAgKSB7XG4gICAgICAgIHNjcm9sbGFibGVTZWdtZW50cy5wdXNoKHNjcm9sbGFibGVTZWdtZW50UGF0aClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWFwcGxpZWQpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIG11dGFibGUucGF0Y2hlZFRyZWUgPSBjdXJyZW50VHJlZVxuICBtdXRhYmxlLmNhY2hlID0gY3VycmVudENhY2hlXG4gIG11dGFibGUuY2Fub25pY2FsVXJsID0gaHJlZlxuICBtdXRhYmxlLmhhc2hGcmFnbWVudCA9IHVybC5oYXNoXG4gIG11dGFibGUuc2Nyb2xsYWJsZVNlZ21lbnRzID0gc2Nyb2xsYWJsZVNlZ21lbnRzXG5cbiAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG59XG5cbmZ1bmN0aW9uIGhhc0xvYWRpbmdDb21wb25lbnRJblNlZWREYXRhKHNlZWREYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwpIHtcbiAgaWYgKCFzZWVkRGF0YSkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgcGFyYWxsZWxSb3V0ZXMgPSBzZWVkRGF0YVsyXVxuICBjb25zdCBsb2FkaW5nID0gc2VlZERhdGFbM11cblxuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbGxlbFJvdXRlcykge1xuICAgIGlmIChoYXNMb2FkaW5nQ29tcG9uZW50SW5TZWVkRGF0YShwYXJhbGxlbFJvdXRlc1trZXldKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gZmlsbE5ld1RyZWVXaXRoT25seUxvYWRpbmdTZWdtZW50cyhcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlLFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGNhY2hlTm9kZVNlZWREYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGxcbikge1xuICBjb25zdCBpc0xhc3RTZWdtZW50ID0gT2JqZWN0LmtleXMocm91dGVyU3RhdGVbMV0pLmxlbmd0aCA9PT0gMFxuICBpZiAoaXNMYXN0U2VnbWVudCkge1xuICAgIHJldHVyblxuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gcm91dGVyU3RhdGVbMV0pIHtcbiAgICBjb25zdCBwYXJhbGxlbFJvdXRlU3RhdGUgPSByb3V0ZXJTdGF0ZVsxXVtrZXldXG4gICAgY29uc3Qgc2VnbWVudEZvclBhcmFsbGVsUm91dGUgPSBwYXJhbGxlbFJvdXRlU3RhdGVbMF1cbiAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnRGb3JQYXJhbGxlbFJvdXRlKVxuXG4gICAgY29uc3QgcGFyYWxsZWxTZWVkRGF0YSA9XG4gICAgICBjYWNoZU5vZGVTZWVkRGF0YSAhPT0gbnVsbCAmJiBjYWNoZU5vZGVTZWVkRGF0YVsyXVtrZXldICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBjYWNoZU5vZGVTZWVkRGF0YVsyXVtrZXldXG4gICAgICAgIDogbnVsbFxuXG4gICAgbGV0IG5ld0NhY2hlTm9kZTogQ2FjaGVOb2RlXG4gICAgaWYgKHBhcmFsbGVsU2VlZERhdGEgIT09IG51bGwpIHtcbiAgICAgIC8vIE5ldyBkYXRhIHdhcyBzZW50IGZyb20gdGhlIHNlcnZlci5cbiAgICAgIGNvbnN0IHJzYyA9IHBhcmFsbGVsU2VlZERhdGFbMV1cbiAgICAgIGNvbnN0IGxvYWRpbmcgPSBwYXJhbGxlbFNlZWREYXRhWzNdXG4gICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgICAvLyBjb3B5IHRoZSBsYXlvdXQgYnV0IG51bGwgdGhlIHBhZ2Ugc2VnbWVudCBhcyB0aGF0J3Mgbm90IG1lYW50IHRvIGJlIHVzZWRcbiAgICAgICAgcnNjOiBzZWdtZW50Rm9yUGFyYWxsZWxSb3V0ZS5pbmNsdWRlcyhQQUdFX1NFR01FTlRfS0VZKSA/IG51bGwgOiByc2MsXG4gICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBkYXRhIGF2YWlsYWJsZSBmb3IgdGhpcyBub2RlLiBUaGlzIHdpbGwgdHJpZ2dlciBhIGxhenkgZmV0Y2hcbiAgICAgIC8vIGR1cmluZyByZW5kZXIuXG4gICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgICByc2M6IG51bGwsXG4gICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgICAgIGxvYWRpbmc6IG51bGwsXG4gICAgICAgIG5hdmlnYXRlZEF0OiAtMSxcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBleGlzdGluZ1BhcmFsbGVsUm91dGVzID0gbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KGtleSlcbiAgICBpZiAoZXhpc3RpbmdQYXJhbGxlbFJvdXRlcykge1xuICAgICAgZXhpc3RpbmdQYXJhbGxlbFJvdXRlcy5zZXQoY2FjaGVLZXksIG5ld0NhY2hlTm9kZSlcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuc2V0KGtleSwgbmV3IE1hcChbW2NhY2hlS2V5LCBuZXdDYWNoZU5vZGVdXSkpXG4gICAgfVxuXG4gICAgZmlsbE5ld1RyZWVXaXRoT25seUxvYWRpbmdTZWdtZW50cyhcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgbmV3Q2FjaGVOb2RlLFxuICAgICAgZXhpc3RpbmdDYWNoZSxcbiAgICAgIHBhcmFsbGVsUm91dGVTdGF0ZSxcbiAgICAgIHBhcmFsbGVsU2VlZERhdGFcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBBZGQgc2VhcmNoIHBhcmFtcyB0byB0aGUgcGFnZSBzZWdtZW50cyBpbiB0aGUgZmxpZ2h0IHJvdXRlciBzdGF0ZVxuICogUGFnZSBzZWdtZW50cyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggc2VhcmNoIHBhcmFtcyBoYXZlIGEgcGFnZSBzZWdtZW50IGtleVxuICogZm9sbG93ZWQgYnkgYSBxdWVyeSBzdHJpbmcuIFRoaXMgZnVuY3Rpb24gd2lsbCBhZGQgdGhvc2UgcGFyYW1zIHRvIHRoZSBwYWdlIHNlZ21lbnQuXG4gKiBUaGlzIGlzIHVzZWZ1bCBpZiB3ZSByZXR1cm4gYW4gYWxpYXNlZCBwcmVmZXRjaCBlbnRyeSAoaWUsIHdvbid0IGhhdmUgc2VhcmNoIHBhcmFtcylcbiAqIGJ1dCB0aGUgY2Fub25pY2FsIHJvdXRlciBVUkwgaGFzIHNlYXJjaCBwYXJhbXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRTZWFyY2hQYXJhbXNUb1BhZ2VTZWdtZW50cyhcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBzZWFyY2hQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkPlxuKTogRmxpZ2h0Um91dGVyU3RhdGUge1xuICBjb25zdCBbc2VnbWVudCwgcGFyYWxsZWxSb3V0ZXMsIC4uLnJlc3RdID0gZmxpZ2h0Um91dGVyU3RhdGVcblxuICAvLyBJZiBpdCdzIGEgcGFnZSBzZWdtZW50LCBtb2RpZnkgdGhlIHNlZ21lbnQgYnkgYWRkaW5nIHNlYXJjaCBwYXJhbXNcbiAgaWYgKHNlZ21lbnQuaW5jbHVkZXMoUEFHRV9TRUdNRU5UX0tFWSkpIHtcbiAgICBjb25zdCBuZXdTZWdtZW50ID0gYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudChzZWdtZW50LCBzZWFyY2hQYXJhbXMpXG4gICAgcmV0dXJuIFtuZXdTZWdtZW50LCBwYXJhbGxlbFJvdXRlcywgLi4ucmVzdF1cbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgcmVjdXJzZSB0aHJvdWdoIHRoZSBwYXJhbGxlbCByb3V0ZXMgYW5kIHJldHVybiBhIG5ldyB0cmVlXG4gIGNvbnN0IHVwZGF0ZWRQYXJhbGxlbFJvdXRlczogeyBba2V5OiBzdHJpbmddOiBGbGlnaHRSb3V0ZXJTdGF0ZSB9ID0ge31cblxuICBmb3IgKGNvbnN0IFtrZXksIHBhcmFsbGVsUm91dGVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFsbGVsUm91dGVzKSkge1xuICAgIHVwZGF0ZWRQYXJhbGxlbFJvdXRlc1trZXldID0gYWRkU2VhcmNoUGFyYW1zVG9QYWdlU2VnbWVudHMoXG4gICAgICBwYXJhbGxlbFJvdXRlLFxuICAgICAgc2VhcmNoUGFyYW1zXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIFtzZWdtZW50LCB1cGRhdGVkUGFyYWxsZWxSb3V0ZXMsIC4uLnJlc3RdXG59XG4iXSwibmFtZXMiOlsiYWRkU2VhcmNoUGFyYW1zVG9QYWdlU2VnbWVudHMiLCJoYW5kbGVBbGlhc2VkUHJlZmV0Y2hFbnRyeSIsIm5hdmlnYXRlZEF0Iiwic3RhdGUiLCJmbGlnaHREYXRhIiwidXJsIiwibXV0YWJsZSIsImN1cnJlbnRUcmVlIiwidHJlZSIsImN1cnJlbnRDYWNoZSIsImNhY2hlIiwiaHJlZiIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiYXBwbGllZCIsInNjcm9sbGFibGVTZWdtZW50cyIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwiaGFzTG9hZGluZ0NvbXBvbmVudEluU2VlZERhdGEiLCJzZWVkRGF0YSIsInRyZWVQYXRjaCIsIk9iamVjdCIsImZyb21FbnRyaWVzIiwic2VhcmNoUGFyYW1zIiwiaXNSb290UmVuZGVyIiwicGF0aFRvU2VnbWVudCIsImZsaWdodFNlZ21lbnRQYXRoV2l0aExlYWRpbmdFbXB0eSIsIm5ld1RyZWUiLCJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJuZXdDYWNoZSIsImNyZWF0ZUVtcHR5Q2FjaGVOb2RlIiwicnNjIiwibG9hZGluZyIsImZpbGxOZXdUcmVlV2l0aE9ubHlMb2FkaW5nU2VnbWVudHMiLCJwcmVmZXRjaFJzYyIsInBhcmFsbGVsUm91dGVzIiwiTWFwIiwiZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhQnV0T25seUxvYWRpbmciLCJzdWJTZWdtZW50IiwiZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaCIsInNjcm9sbGFibGVTZWdtZW50UGF0aCIsImxlbmd0aCIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJwdXNoIiwicGF0Y2hlZFRyZWUiLCJjYW5vbmljYWxVcmwiLCJoYXNoRnJhZ21lbnQiLCJoYXNoIiwiaGFuZGxlTXV0YWJsZSIsImtleSIsImV4aXN0aW5nQ2FjaGUiLCJyb3V0ZXJTdGF0ZSIsImNhY2hlTm9kZVNlZWREYXRhIiwiaXNMYXN0U2VnbWVudCIsImtleXMiLCJwYXJhbGxlbFJvdXRlU3RhdGUiLCJzZWdtZW50Rm9yUGFyYWxsZWxSb3V0ZSIsImNhY2hlS2V5IiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJwYXJhbGxlbFNlZWREYXRhIiwidW5kZWZpbmVkIiwibmV3Q2FjaGVOb2RlIiwibGF6eURhdGEiLCJpbmNsdWRlcyIsIlBBR0VfU0VHTUVOVF9LRVkiLCJoZWFkIiwicHJlZmV0Y2hIZWFkIiwiZXhpc3RpbmdQYXJhbGxlbFJvdXRlcyIsImdldCIsInNldCIsImZsaWdodFJvdXRlclN0YXRlIiwic2VnbWVudCIsInJlc3QiLCJuZXdTZWdtZW50IiwiYWRkU2VhcmNoUGFyYW1zSWZQYWdlU2VnbWVudCIsInVwZGF0ZWRQYXJhbGxlbFJvdXRlcyIsInBhcmFsbGVsUm91dGUiLCJlbnRyaWVzIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js": /*!*****************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js ***! \*****************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"applyFlightData\", ({\n enumerable: true,\n get: function() {\n return applyFlightData;\n }\n}));\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ./fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _fillcachewithnewsubtreedata = __webpack_require__(/*! ./fill-cache-with-new-subtree-data */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js\");\nfunction applyFlightData(navigatedAt, existingCache, cache, flightData, prefetchEntry) {\n // The one before last item is the router state tree patch\n const { tree: treePatch, seedData, head, isRootRender } = flightData;\n // Handles case where prefetch only returns the router tree patch without rendered components.\n if (seedData === null) {\n return false;\n }\n if (isRootRender) {\n const rsc = seedData[1];\n const loading = seedData[3];\n cache.loading = loading;\n cache.rsc = rsc;\n // This is a PPR-only field. When PPR is enabled, we shouldn't hit\n // this path during a navigation, but until PPR is fully implemented\n // yet it's possible the existing node does have a non-null\n // `prefetchRsc`. As an incremental step, we'll just de-opt to the\n // old behavior — no PPR value.\n cache.prefetchRsc = null;\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, existingCache, treePatch, seedData, head, prefetchEntry);\n } else {\n // Copy rsc for the root node of the cache.\n cache.rsc = existingCache.rsc;\n // This is a PPR-only field. Unlike the previous branch, since we're\n // just cloning the existing cache node, we might as well keep the\n // PPR value, if it exists.\n cache.prefetchRsc = existingCache.prefetchRsc;\n cache.parallelRoutes = new Map(existingCache.parallelRoutes);\n cache.loading = existingCache.loading;\n // Create a copy of the existing cache with the rsc applied.\n (0, _fillcachewithnewsubtreedata.fillCacheWithNewSubTreeData)(navigatedAt, cache, existingCache, flightData, prefetchEntry);\n }\n return true;\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=apply-flight-data.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYXBwbHktZmxpZ2h0LWRhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OzttREFNZ0JBOzs7ZUFBQUE7OzsyREFMOEI7eURBQ0Y7QUFJckMsU0FBU0EsZ0JBQ2RDLFdBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsS0FBZ0IsRUFDaEJDLFVBQWdDLEVBQ2hDQyxhQUFrQztJQUVsQywwREFBMEQ7SUFDMUQsTUFBTSxFQUFFQyxNQUFNQyxTQUFTLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxZQUFZLEVBQUUsR0FBR047SUFFMUQsOEZBQThGO0lBQzlGLElBQUlJLGFBQWEsTUFBTTtRQUNyQixPQUFPO0lBQ1Q7SUFFQSxJQUFJRSxjQUFjO1FBQ2hCLE1BQU1DLE1BQU1ILFFBQVEsQ0FBQyxFQUFFO1FBQ3ZCLE1BQU1JLFVBQVVKLFFBQVEsQ0FBQyxFQUFFO1FBQzNCTCxNQUFNUyxPQUFPLEdBQUdBO1FBQ2hCVCxNQUFNUSxHQUFHLEdBQUdBO1FBQ1osa0VBQWtFO1FBQ2xFLG9FQUFvRTtRQUNwRSwyREFBMkQ7UUFDM0Qsa0VBQWtFO1FBQ2xFLCtCQUErQjtRQUMvQlIsTUFBTVUsV0FBVyxHQUFHO1FBQ3BCQyxDQUFBQSxHQUFBQSwrQkFBQUEsNkJBQUFBLEVBQ0ViLGFBQ0FFLE9BQ0FELGVBQ0FLLFdBQ0FDLFVBQ0FDLE1BQ0FKO0lBRUosT0FBTztRQUNMLDJDQUEyQztRQUMzQ0YsTUFBTVEsR0FBRyxHQUFHVCxjQUFjUyxHQUFHO1FBQzdCLG9FQUFvRTtRQUNwRSxrRUFBa0U7UUFDbEUsMkJBQTJCO1FBQzNCUixNQUFNVSxXQUFXLEdBQUdYLGNBQWNXLFdBQVc7UUFDN0NWLE1BQU1ZLGNBQWMsR0FBRyxJQUFJQyxJQUFJZCxjQUFjYSxjQUFjO1FBQzNEWixNQUFNUyxPQUFPLEdBQUdWLGNBQWNVLE9BQU87UUFDckMsNERBQTREO1FBQzVESyxDQUFBQSxHQUFBQSw2QkFBQUEsMkJBQUFBLEVBQ0VoQixhQUNBRSxPQUNBRCxlQUNBRSxZQUNBQztJQUVKO0lBRUEsT0FBTztBQUNUIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYXBwbHktZmxpZ2h0LWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkIH0gZnJvbSAnLi9maWxsLWxhenktaXRlbXMtdGlsbC1sZWFmLXdpdGgtaGVhZCdcbmltcG9ydCB7IGZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YSB9IGZyb20gJy4vZmlsbC1jYWNoZS13aXRoLW5ldy1zdWJ0cmVlLWRhdGEnXG5pbXBvcnQgdHlwZSB7IFByZWZldGNoQ2FjaGVFbnRyeSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgdHlwZSB7IE5vcm1hbGl6ZWRGbGlnaHREYXRhIH0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RmxpZ2h0RGF0YShcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlLFxuICBjYWNoZTogQ2FjaGVOb2RlLFxuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbiAgcHJlZmV0Y2hFbnRyeT86IFByZWZldGNoQ2FjaGVFbnRyeVxuKTogYm9vbGVhbiB7XG4gIC8vIFRoZSBvbmUgYmVmb3JlIGxhc3QgaXRlbSBpcyB0aGUgcm91dGVyIHN0YXRlIHRyZWUgcGF0Y2hcbiAgY29uc3QgeyB0cmVlOiB0cmVlUGF0Y2gsIHNlZWREYXRhLCBoZWFkLCBpc1Jvb3RSZW5kZXIgfSA9IGZsaWdodERhdGFcblxuICAvLyBIYW5kbGVzIGNhc2Ugd2hlcmUgcHJlZmV0Y2ggb25seSByZXR1cm5zIHRoZSByb3V0ZXIgdHJlZSBwYXRjaCB3aXRob3V0IHJlbmRlcmVkIGNvbXBvbmVudHMuXG4gIGlmIChzZWVkRGF0YSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaWYgKGlzUm9vdFJlbmRlcikge1xuICAgIGNvbnN0IHJzYyA9IHNlZWREYXRhWzFdXG4gICAgY29uc3QgbG9hZGluZyA9IHNlZWREYXRhWzNdXG4gICAgY2FjaGUubG9hZGluZyA9IGxvYWRpbmdcbiAgICBjYWNoZS5yc2MgPSByc2NcbiAgICAvLyBUaGlzIGlzIGEgUFBSLW9ubHkgZmllbGQuIFdoZW4gUFBSIGlzIGVuYWJsZWQsIHdlIHNob3VsZG4ndCBoaXRcbiAgICAvLyB0aGlzIHBhdGggZHVyaW5nIGEgbmF2aWdhdGlvbiwgYnV0IHVudGlsIFBQUiBpcyBmdWxseSBpbXBsZW1lbnRlZFxuICAgIC8vIHlldCBpdCdzIHBvc3NpYmxlIHRoZSBleGlzdGluZyBub2RlIGRvZXMgaGF2ZSBhIG5vbi1udWxsXG4gICAgLy8gYHByZWZldGNoUnNjYC4gQXMgYW4gaW5jcmVtZW50YWwgc3RlcCwgd2UnbGwganVzdCBkZS1vcHQgdG8gdGhlXG4gICAgLy8gb2xkIGJlaGF2aW9yIOKAlCBubyBQUFIgdmFsdWUuXG4gICAgY2FjaGUucHJlZmV0Y2hSc2MgPSBudWxsXG4gICAgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQoXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIGNhY2hlLFxuICAgICAgZXhpc3RpbmdDYWNoZSxcbiAgICAgIHRyZWVQYXRjaCxcbiAgICAgIHNlZWREYXRhLFxuICAgICAgaGVhZCxcbiAgICAgIHByZWZldGNoRW50cnlcbiAgICApXG4gIH0gZWxzZSB7XG4gICAgLy8gQ29weSByc2MgZm9yIHRoZSByb290IG5vZGUgb2YgdGhlIGNhY2hlLlxuICAgIGNhY2hlLnJzYyA9IGV4aXN0aW5nQ2FjaGUucnNjXG4gICAgLy8gVGhpcyBpcyBhIFBQUi1vbmx5IGZpZWxkLiBVbmxpa2UgdGhlIHByZXZpb3VzIGJyYW5jaCwgc2luY2Ugd2UncmVcbiAgICAvLyBqdXN0IGNsb25pbmcgdGhlIGV4aXN0aW5nIGNhY2hlIG5vZGUsIHdlIG1pZ2h0IGFzIHdlbGwga2VlcCB0aGVcbiAgICAvLyBQUFIgdmFsdWUsIGlmIGl0IGV4aXN0cy5cbiAgICBjYWNoZS5wcmVmZXRjaFJzYyA9IGV4aXN0aW5nQ2FjaGUucHJlZmV0Y2hSc2NcbiAgICBjYWNoZS5wYXJhbGxlbFJvdXRlcyA9IG5ldyBNYXAoZXhpc3RpbmdDYWNoZS5wYXJhbGxlbFJvdXRlcylcbiAgICBjYWNoZS5sb2FkaW5nID0gZXhpc3RpbmdDYWNoZS5sb2FkaW5nXG4gICAgLy8gQ3JlYXRlIGEgY29weSBvZiB0aGUgZXhpc3RpbmcgY2FjaGUgd2l0aCB0aGUgcnNjIGFwcGxpZWQuXG4gICAgZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhKFxuICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICBjYWNoZSxcbiAgICAgIGV4aXN0aW5nQ2FjaGUsXG4gICAgICBmbGlnaHREYXRhLFxuICAgICAgcHJlZmV0Y2hFbnRyeVxuICAgIClcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG4iXSwibmFtZXMiOlsiYXBwbHlGbGlnaHREYXRhIiwibmF2aWdhdGVkQXQiLCJleGlzdGluZ0NhY2hlIiwiY2FjaGUiLCJmbGlnaHREYXRhIiwicHJlZmV0Y2hFbnRyeSIsInRyZWUiLCJ0cmVlUGF0Y2giLCJzZWVkRGF0YSIsImhlYWQiLCJpc1Jvb3RSZW5kZXIiLCJyc2MiLCJsb2FkaW5nIiwicHJlZmV0Y2hSc2MiLCJmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCIsInBhcmFsbGVsUm91dGVzIiwiTWFwIiwiZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js": /*!********************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js ***! \********************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"applyRouterStatePatchToTree\", ({\n enumerable: true,\n get: function() {\n return applyRouterStatePatchToTree;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ./refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\n/**\n * Deep merge of the two router states. Parallel route keys are preserved if the patch doesn't have them.\n */ function applyPatch(initialTree, patchTree) {\n const [initialSegment, initialParallelRoutes] = initialTree;\n const [patchSegment, patchParallelRoutes] = patchTree;\n // if the applied patch segment is __DEFAULT__ then it can be ignored in favor of the initial tree\n // this is because the __DEFAULT__ segment is used as a placeholder on navigation\n if (patchSegment === _segment.DEFAULT_SEGMENT_KEY && initialSegment !== _segment.DEFAULT_SEGMENT_KEY) {\n return initialTree;\n }\n if ((0, _matchsegments.matchSegment)(initialSegment, patchSegment)) {\n const newParallelRoutes = {};\n for(const key in initialParallelRoutes){\n const isInPatchTreeParallelRoutes = typeof patchParallelRoutes[key] !== 'undefined';\n if (isInPatchTreeParallelRoutes) {\n newParallelRoutes[key] = applyPatch(initialParallelRoutes[key], patchParallelRoutes[key]);\n } else {\n newParallelRoutes[key] = initialParallelRoutes[key];\n }\n }\n for(const key in patchParallelRoutes){\n if (newParallelRoutes[key]) {\n continue;\n }\n newParallelRoutes[key] = patchParallelRoutes[key];\n }\n const tree = [\n initialSegment,\n newParallelRoutes\n ];\n // Copy over the existing tree\n if (initialTree[2]) {\n tree[2] = initialTree[2];\n }\n if (initialTree[3]) {\n tree[3] = initialTree[3];\n }\n if (initialTree[4]) {\n tree[4] = initialTree[4];\n }\n return tree;\n }\n return patchTree;\n}\nfunction applyRouterStatePatchToTree(flightSegmentPath, flightRouterState, treePatch, path) {\n const [segment, parallelRoutes, url, refetch, isRootLayout] = flightRouterState;\n // Root refresh\n if (flightSegmentPath.length === 1) {\n const tree = applyPatch(flightRouterState, treePatch);\n (0, _refetchinactiveparallelsegments.addRefreshMarkerToActiveParallelSegments)(tree, path);\n return tree;\n }\n const [currentSegment, parallelRouteKey] = flightSegmentPath;\n // Tree path returned from the server should always match up with the current tree in the browser\n if (!(0, _matchsegments.matchSegment)(currentSegment, segment)) {\n return null;\n }\n const lastSegment = flightSegmentPath.length === 2;\n let parallelRoutePatch;\n if (lastSegment) {\n parallelRoutePatch = applyPatch(parallelRoutes[parallelRouteKey], treePatch);\n } else {\n parallelRoutePatch = applyRouterStatePatchToTree((0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath), parallelRoutes[parallelRouteKey], treePatch, path);\n if (parallelRoutePatch === null) {\n return null;\n }\n }\n const tree = [\n flightSegmentPath[0],\n {\n ...parallelRoutes,\n [parallelRouteKey]: parallelRoutePatch\n },\n url,\n refetch\n ];\n // Current segment is the root layout\n if (isRootLayout) {\n tree[4] = true;\n }\n (0, _refetchinactiveparallelsegments.addRefreshMarkerToActiveParallelSegments)(tree, path);\n return tree;\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=apply-router-state-patch-to-tree.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvYXBwbHktcm91dGVyLXN0YXRlLXBhdGNoLXRvLXRyZWUuanMiLCJtYXBwaW5ncyI6Ijs7OzsrREE2RWdCQTs7O2VBQUFBOzs7cUNBekVvQjsrQ0FDSzsyQ0FDWjs2REFDNEI7QUFFekQ7O0NBRUMsR0FDRCxTQUFTQyxXQUNQQyxXQUE4QixFQUM5QkMsU0FBNEI7SUFFNUIsTUFBTSxDQUFDQyxnQkFBZ0JDLHNCQUFzQixHQUFHSDtJQUNoRCxNQUFNLENBQUNJLGNBQWNDLG9CQUFvQixHQUFHSjtJQUU1QyxrR0FBa0c7SUFDbEcsaUZBQWlGO0lBQ2pGLElBQ0VHLGlCQUFpQkUsU0FBQUEsbUJBQW1CLElBQ3BDSixtQkFBbUJJLFNBQUFBLG1CQUFtQixFQUN0QztRQUNBLE9BQU9OO0lBQ1Q7SUFFQSxJQUFJTyxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhTCxnQkFBZ0JFLGVBQWU7UUFDOUMsTUFBTUksb0JBQTBDLENBQUM7UUFDakQsSUFBSyxNQUFNQyxPQUFPTixzQkFBdUI7WUFDdkMsTUFBTU8sOEJBQ0osT0FBT0wsbUJBQW1CLENBQUNJLElBQUksS0FBSztZQUN0QyxJQUFJQyw2QkFBNkI7Z0JBQy9CRixpQkFBaUIsQ0FBQ0MsSUFBSSxHQUFHVixXQUN2QkkscUJBQXFCLENBQUNNLElBQUksRUFDMUJKLG1CQUFtQixDQUFDSSxJQUFJO1lBRTVCLE9BQU87Z0JBQ0xELGlCQUFpQixDQUFDQyxJQUFJLEdBQUdOLHFCQUFxQixDQUFDTSxJQUFJO1lBQ3JEO1FBQ0Y7UUFFQSxJQUFLLE1BQU1BLE9BQU9KLG9CQUFxQjtZQUNyQyxJQUFJRyxpQkFBaUIsQ0FBQ0MsSUFBSSxFQUFFO2dCQUMxQjtZQUNGO1lBRUFELGlCQUFpQixDQUFDQyxJQUFJLEdBQUdKLG1CQUFtQixDQUFDSSxJQUFJO1FBQ25EO1FBRUEsTUFBTUUsT0FBMEI7WUFBQ1Q7WUFBZ0JNO1NBQWtCO1FBRW5FLDhCQUE4QjtRQUM5QixJQUFJUixXQUFXLENBQUMsRUFBRSxFQUFFO1lBQ2xCVyxJQUFJLENBQUMsRUFBRSxHQUFHWCxXQUFXLENBQUMsRUFBRTtRQUMxQjtRQUVBLElBQUlBLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDbEJXLElBQUksQ0FBQyxFQUFFLEdBQUdYLFdBQVcsQ0FBQyxFQUFFO1FBQzFCO1FBRUEsSUFBSUEsV0FBVyxDQUFDLEVBQUUsRUFBRTtZQUNsQlcsSUFBSSxDQUFDLEVBQUUsR0FBR1gsV0FBVyxDQUFDLEVBQUU7UUFDMUI7UUFFQSxPQUFPVztJQUNUO0lBRUEsT0FBT1Y7QUFDVDtBQU9PLFNBQVNILDRCQUNkYyxpQkFBb0MsRUFDcENDLGlCQUFvQyxFQUNwQ0MsU0FBNEIsRUFDNUJDLElBQVk7SUFFWixNQUFNLENBQUNDLFNBQVNDLGdCQUFnQkMsS0FBS0MsU0FBU0MsYUFBYSxHQUN6RFA7SUFFRixlQUFlO0lBQ2YsSUFBSUQsa0JBQWtCUyxNQUFNLEtBQUssR0FBRztRQUNsQyxNQUFNVixPQUEwQlosV0FBV2MsbUJBQW1CQztRQUU5RFEsQ0FBQUEsR0FBQUEsaUNBQUFBLHdDQUFBQSxFQUF5Q1gsTUFBTUk7UUFFL0MsT0FBT0o7SUFDVDtJQUVBLE1BQU0sQ0FBQ1ksZ0JBQWdCQyxpQkFBaUIsR0FBR1o7SUFFM0MsaUdBQWlHO0lBQ2pHLElBQUksQ0FBQ0wsQ0FBQUEsR0FBQUEsZUFBQUEsWUFBQUEsRUFBYWdCLGdCQUFnQlAsVUFBVTtRQUMxQyxPQUFPO0lBQ1Q7SUFFQSxNQUFNUyxjQUFjYixrQkFBa0JTLE1BQU0sS0FBSztJQUVqRCxJQUFJSztJQUNKLElBQUlELGFBQWE7UUFDZkMscUJBQXFCM0IsV0FBV2tCLGNBQWMsQ0FBQ08saUJBQWlCLEVBQUVWO0lBQ3BFLE9BQU87UUFDTFkscUJBQXFCNUIsNEJBQ25CNkIsQ0FBQUEsR0FBQUEsbUJBQUFBLHdCQUFBQSxFQUF5QmYsb0JBQ3pCSyxjQUFjLENBQUNPLGlCQUFpQixFQUNoQ1YsV0FDQUM7UUFHRixJQUFJVyx1QkFBdUIsTUFBTTtZQUMvQixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE1BQU1mLE9BQTBCO1FBQzlCQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQ3BCO1lBQ0UsR0FBR0ssY0FBYztZQUNqQixDQUFDTyxpQkFBaUIsRUFBRUU7UUFDdEI7UUFDQVI7UUFDQUM7S0FDRDtJQUVELHFDQUFxQztJQUNyQyxJQUFJQyxjQUFjO1FBQ2hCVCxJQUFJLENBQUMsRUFBRSxHQUFHO0lBQ1o7SUFFQVcsQ0FBQUEsR0FBQUEsaUNBQUFBLHdDQUFBQSxFQUF5Q1gsTUFBTUk7SUFFL0MsT0FBT0o7QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2FwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIEZsaWdodFNlZ21lbnRQYXRoLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IERFRkFVTFRfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGggfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgbWF0Y2hTZWdtZW50IH0gZnJvbSAnLi4vbWF0Y2gtc2VnbWVudHMnXG5pbXBvcnQgeyBhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzIH0gZnJvbSAnLi9yZWZldGNoLWluYWN0aXZlLXBhcmFsbGVsLXNlZ21lbnRzJ1xuXG4vKipcbiAqIERlZXAgbWVyZ2Ugb2YgdGhlIHR3byByb3V0ZXIgc3RhdGVzLiBQYXJhbGxlbCByb3V0ZSBrZXlzIGFyZSBwcmVzZXJ2ZWQgaWYgdGhlIHBhdGNoIGRvZXNuJ3QgaGF2ZSB0aGVtLlxuICovXG5mdW5jdGlvbiBhcHBseVBhdGNoKFxuICBpbml0aWFsVHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHBhdGNoVHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IEZsaWdodFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW2luaXRpYWxTZWdtZW50LCBpbml0aWFsUGFyYWxsZWxSb3V0ZXNdID0gaW5pdGlhbFRyZWVcbiAgY29uc3QgW3BhdGNoU2VnbWVudCwgcGF0Y2hQYXJhbGxlbFJvdXRlc10gPSBwYXRjaFRyZWVcblxuICAvLyBpZiB0aGUgYXBwbGllZCBwYXRjaCBzZWdtZW50IGlzIF9fREVGQVVMVF9fIHRoZW4gaXQgY2FuIGJlIGlnbm9yZWQgaW4gZmF2b3Igb2YgdGhlIGluaXRpYWwgdHJlZVxuICAvLyB0aGlzIGlzIGJlY2F1c2UgdGhlIF9fREVGQVVMVF9fIHNlZ21lbnQgaXMgdXNlZCBhcyBhIHBsYWNlaG9sZGVyIG9uIG5hdmlnYXRpb25cbiAgaWYgKFxuICAgIHBhdGNoU2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSAmJlxuICAgIGluaXRpYWxTZWdtZW50ICE9PSBERUZBVUxUX1NFR01FTlRfS0VZXG4gICkge1xuICAgIHJldHVybiBpbml0aWFsVHJlZVxuICB9XG5cbiAgaWYgKG1hdGNoU2VnbWVudChpbml0aWFsU2VnbWVudCwgcGF0Y2hTZWdtZW50KSkge1xuICAgIGNvbnN0IG5ld1BhcmFsbGVsUm91dGVzOiBGbGlnaHRSb3V0ZXJTdGF0ZVsxXSA9IHt9XG4gICAgZm9yIChjb25zdCBrZXkgaW4gaW5pdGlhbFBhcmFsbGVsUm91dGVzKSB7XG4gICAgICBjb25zdCBpc0luUGF0Y2hUcmVlUGFyYWxsZWxSb3V0ZXMgPVxuICAgICAgICB0eXBlb2YgcGF0Y2hQYXJhbGxlbFJvdXRlc1trZXldICE9PSAndW5kZWZpbmVkJ1xuICAgICAgaWYgKGlzSW5QYXRjaFRyZWVQYXJhbGxlbFJvdXRlcykge1xuICAgICAgICBuZXdQYXJhbGxlbFJvdXRlc1trZXldID0gYXBwbHlQYXRjaChcbiAgICAgICAgICBpbml0aWFsUGFyYWxsZWxSb3V0ZXNba2V5XSxcbiAgICAgICAgICBwYXRjaFBhcmFsbGVsUm91dGVzW2tleV1cbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3UGFyYWxsZWxSb3V0ZXNba2V5XSA9IGluaXRpYWxQYXJhbGxlbFJvdXRlc1trZXldXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gcGF0Y2hQYXJhbGxlbFJvdXRlcykge1xuICAgICAgaWYgKG5ld1BhcmFsbGVsUm91dGVzW2tleV0pIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgbmV3UGFyYWxsZWxSb3V0ZXNba2V5XSA9IHBhdGNoUGFyYWxsZWxSb3V0ZXNba2V5XVxuICAgIH1cblxuICAgIGNvbnN0IHRyZWU6IEZsaWdodFJvdXRlclN0YXRlID0gW2luaXRpYWxTZWdtZW50LCBuZXdQYXJhbGxlbFJvdXRlc11cblxuICAgIC8vIENvcHkgb3ZlciB0aGUgZXhpc3RpbmcgdHJlZVxuICAgIGlmIChpbml0aWFsVHJlZVsyXSkge1xuICAgICAgdHJlZVsyXSA9IGluaXRpYWxUcmVlWzJdXG4gICAgfVxuXG4gICAgaWYgKGluaXRpYWxUcmVlWzNdKSB7XG4gICAgICB0cmVlWzNdID0gaW5pdGlhbFRyZWVbM11cbiAgICB9XG5cbiAgICBpZiAoaW5pdGlhbFRyZWVbNF0pIHtcbiAgICAgIHRyZWVbNF0gPSBpbml0aWFsVHJlZVs0XVxuICAgIH1cblxuICAgIHJldHVybiB0cmVlXG4gIH1cblxuICByZXR1cm4gcGF0Y2hUcmVlXG59XG5cbi8qKlxuICogQXBwbHkgdGhlIHJvdXRlciBzdGF0ZSBmcm9tIHRoZSBGbGlnaHQgcmVzcG9uc2UsIGJ1dCBza2lwIHBhdGNoaW5nIGRlZmF1bHQgc2VnbWVudHMuXG4gKiBVc2VmdWwgZm9yIHBhdGNoaW5nIHRoZSByb3V0ZXIgY2FjaGUgd2hlbiBuYXZpZ2F0aW5nLCB3aGVyZSB3ZSBwZXJzaXN0IHRoZSBleGlzdGluZyBkZWZhdWx0IHNlZ21lbnQgaWYgdGhlcmUgaXNuJ3QgYSBuZXcgb25lLlxuICogQ3JlYXRlcyBhIG5ldyByb3V0ZXIgc3RhdGUgdHJlZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgZmxpZ2h0U2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoLFxuICBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHRyZWVQYXRjaDogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIHBhdGg6IHN0cmluZ1xuKTogRmxpZ2h0Um91dGVyU3RhdGUgfCBudWxsIHtcbiAgY29uc3QgW3NlZ21lbnQsIHBhcmFsbGVsUm91dGVzLCB1cmwsIHJlZmV0Y2gsIGlzUm9vdExheW91dF0gPVxuICAgIGZsaWdodFJvdXRlclN0YXRlXG5cbiAgLy8gUm9vdCByZWZyZXNoXG4gIGlmIChmbGlnaHRTZWdtZW50UGF0aC5sZW5ndGggPT09IDEpIHtcbiAgICBjb25zdCB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IGFwcGx5UGF0Y2goZmxpZ2h0Um91dGVyU3RhdGUsIHRyZWVQYXRjaClcblxuICAgIGFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHModHJlZSwgcGF0aClcblxuICAgIHJldHVybiB0cmVlXG4gIH1cblxuICBjb25zdCBbY3VycmVudFNlZ21lbnQsIHBhcmFsbGVsUm91dGVLZXldID0gZmxpZ2h0U2VnbWVudFBhdGhcblxuICAvLyBUcmVlIHBhdGggcmV0dXJuZWQgZnJvbSB0aGUgc2VydmVyIHNob3VsZCBhbHdheXMgbWF0Y2ggdXAgd2l0aCB0aGUgY3VycmVudCB0cmVlIGluIHRoZSBicm93c2VyXG4gIGlmICghbWF0Y2hTZWdtZW50KGN1cnJlbnRTZWdtZW50LCBzZWdtZW50KSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBsYXN0U2VnbWVudCA9IGZsaWdodFNlZ21lbnRQYXRoLmxlbmd0aCA9PT0gMlxuXG4gIGxldCBwYXJhbGxlbFJvdXRlUGF0Y2hcbiAgaWYgKGxhc3RTZWdtZW50KSB7XG4gICAgcGFyYWxsZWxSb3V0ZVBhdGNoID0gYXBwbHlQYXRjaChwYXJhbGxlbFJvdXRlc1twYXJhbGxlbFJvdXRlS2V5XSwgdHJlZVBhdGNoKVxuICB9IGVsc2Uge1xuICAgIHBhcmFsbGVsUm91dGVQYXRjaCA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgIGdldE5leHRGbGlnaHRTZWdtZW50UGF0aChmbGlnaHRTZWdtZW50UGF0aCksXG4gICAgICBwYXJhbGxlbFJvdXRlc1twYXJhbGxlbFJvdXRlS2V5XSxcbiAgICAgIHRyZWVQYXRjaCxcbiAgICAgIHBhdGhcbiAgICApXG5cbiAgICBpZiAocGFyYWxsZWxSb3V0ZVBhdGNoID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHRyZWU6IEZsaWdodFJvdXRlclN0YXRlID0gW1xuICAgIGZsaWdodFNlZ21lbnRQYXRoWzBdLFxuICAgIHtcbiAgICAgIC4uLnBhcmFsbGVsUm91dGVzLFxuICAgICAgW3BhcmFsbGVsUm91dGVLZXldOiBwYXJhbGxlbFJvdXRlUGF0Y2gsXG4gICAgfSxcbiAgICB1cmwsXG4gICAgcmVmZXRjaCxcbiAgXVxuXG4gIC8vIEN1cnJlbnQgc2VnbWVudCBpcyB0aGUgcm9vdCBsYXlvdXRcbiAgaWYgKGlzUm9vdExheW91dCkge1xuICAgIHRyZWVbNF0gPSB0cnVlXG4gIH1cblxuICBhZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzKHRyZWUsIHBhdGgpXG5cbiAgcmV0dXJuIHRyZWVcbn1cbiJdLCJuYW1lcyI6WyJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJhcHBseVBhdGNoIiwiaW5pdGlhbFRyZWUiLCJwYXRjaFRyZWUiLCJpbml0aWFsU2VnbWVudCIsImluaXRpYWxQYXJhbGxlbFJvdXRlcyIsInBhdGNoU2VnbWVudCIsInBhdGNoUGFyYWxsZWxSb3V0ZXMiLCJERUZBVUxUX1NFR01FTlRfS0VZIiwibWF0Y2hTZWdtZW50IiwibmV3UGFyYWxsZWxSb3V0ZXMiLCJrZXkiLCJpc0luUGF0Y2hUcmVlUGFyYWxsZWxSb3V0ZXMiLCJ0cmVlIiwiZmxpZ2h0U2VnbWVudFBhdGgiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsInRyZWVQYXRjaCIsInBhdGgiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZXMiLCJ1cmwiLCJyZWZldGNoIiwiaXNSb290TGF5b3V0IiwibGVuZ3RoIiwiYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cyIsImN1cnJlbnRTZWdtZW50IiwicGFyYWxsZWxSb3V0ZUtleSIsImxhc3RTZWdtZW50IiwicGFyYWxsZWxSb3V0ZVBhdGNoIiwiZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js": /*!**************************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js ***! \**************************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"clearCacheNodeDataForSegmentPath\", ({\n enumerable: true,\n get: function() {\n return clearCacheNodeDataForSegmentPath;\n }\n}));\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nfunction clearCacheNodeDataForSegmentPath(newCache, existingCache, flightSegmentPath) {\n const isLastEntry = flightSegmentPath.length <= 2;\n const [parallelRouteKey, segment] = flightSegmentPath;\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const existingChildSegmentMap = existingCache.parallelRoutes.get(parallelRouteKey);\n let childSegmentMap = newCache.parallelRoutes.get(parallelRouteKey);\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap);\n newCache.parallelRoutes.set(parallelRouteKey, childSegmentMap);\n }\n const existingChildCacheNode = existingChildSegmentMap == null ? void 0 : existingChildSegmentMap.get(cacheKey);\n let childCacheNode = childSegmentMap.get(cacheKey);\n // In case of last segment start off the fetch at this level and don't copy further down.\n if (isLastEntry) {\n if (!childCacheNode || !childCacheNode.lazyData || childCacheNode === existingChildCacheNode) {\n childSegmentMap.set(cacheKey, {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n });\n }\n return;\n }\n if (!childCacheNode || !existingChildCacheNode) {\n // Start fetch in the place where the existing cache doesn't have the data yet.\n if (!childCacheNode) {\n childSegmentMap.set(cacheKey, {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt: -1\n });\n }\n return;\n }\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes),\n loading: childCacheNode.loading\n };\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n return clearCacheNodeDataForSegmentPath(childCacheNode, existingChildCacheNode, (0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath));\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=clear-cache-node-data-for-segment-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY2xlYXItY2FjaGUtbm9kZS1kYXRhLWZvci1zZWdtZW50LXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OztvRUFRZ0JBOzs7ZUFBQUE7OzsrQ0FOeUI7a0RBQ0o7QUFLOUIsU0FBU0EsaUNBQ2RDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsaUJBQW9DO0lBRXBDLE1BQU1DLGNBQWNELGtCQUFrQkUsTUFBTSxJQUFJO0lBRWhELE1BQU0sQ0FBQ0Msa0JBQWtCQyxRQUFRLEdBQUdKO0lBQ3BDLE1BQU1LLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJGO0lBRXRDLE1BQU1HLDBCQUNKUixjQUFjUyxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFFbkMsSUFBSU8sa0JBQWtCWixTQUFTVSxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFFbEQsSUFBSSxDQUFDTyxtQkFBbUJBLG9CQUFvQkgseUJBQXlCO1FBQ25FRyxrQkFBa0IsSUFBSUMsSUFBSUo7UUFDMUJULFNBQVNVLGNBQWMsQ0FBQ0ksR0FBRyxDQUFDVCxrQkFBa0JPO0lBQ2hEO0lBRUEsTUFBTUcseUJBQXlCTiwyQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsd0JBQXlCRSxHQUFHLENBQUNKO0lBQzVELElBQUlTLGlCQUFpQkosZ0JBQWdCRCxHQUFHLENBQUNKO0lBRXpDLHlGQUF5RjtJQUN6RixJQUFJSixhQUFhO1FBQ2YsSUFDRSxDQUFDYSxrQkFDRCxDQUFDQSxlQUFlQyxRQUFRLElBQ3hCRCxtQkFBbUJELHdCQUNuQjtZQUNBSCxnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVTtnQkFDNUJVLFVBQVU7Z0JBQ1ZDLEtBQUs7Z0JBQ0xDLGFBQWE7Z0JBQ2JDLE1BQU07Z0JBQ05DLGNBQWM7Z0JBQ2RYLGdCQUFnQixJQUFJRztnQkFDcEJTLFNBQVM7Z0JBQ1RDLGFBQWEsQ0FBQztZQUNoQjtRQUNGO1FBQ0E7SUFDRjtJQUVBLElBQUksQ0FBQ1Asa0JBQWtCLENBQUNELHdCQUF3QjtRQUM5QywrRUFBK0U7UUFDL0UsSUFBSSxDQUFDQyxnQkFBZ0I7WUFDbkJKLGdCQUFnQkUsR0FBRyxDQUFDUCxVQUFVO2dCQUM1QlUsVUFBVTtnQkFDVkMsS0FBSztnQkFDTEMsYUFBYTtnQkFDYkMsTUFBTTtnQkFDTkMsY0FBYztnQkFDZFgsZ0JBQWdCLElBQUlHO2dCQUNwQlMsU0FBUztnQkFDVEMsYUFBYSxDQUFDO1lBQ2hCO1FBQ0Y7UUFDQTtJQUNGO0lBRUEsSUFBSVAsbUJBQW1CRCx3QkFBd0I7UUFDN0NDLGlCQUFpQjtZQUNmQyxVQUFVRCxlQUFlQyxRQUFRO1lBQ2pDQyxLQUFLRixlQUFlRSxHQUFHO1lBQ3ZCQyxhQUFhSCxlQUFlRyxXQUFXO1lBQ3ZDQyxNQUFNSixlQUFlSSxJQUFJO1lBQ3pCQyxjQUFjTCxlQUFlSyxZQUFZO1lBQ3pDWCxnQkFBZ0IsSUFBSUcsSUFBSUcsZUFBZU4sY0FBYztZQUNyRFksU0FBU04sZUFBZU0sT0FBTztRQUNqQztRQUNBVixnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVVM7SUFDaEM7SUFFQSxPQUFPakIsaUNBQ0xpQixnQkFDQUQsd0JBQ0FTLENBQUFBLEdBQUFBLG1CQUFBQSx3QkFBQUEsRUFBeUJ0QjtBQUU3QiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NsZWFyLWNhY2hlLW5vZGUtZGF0YS1mb3Itc2VnbWVudC1wYXRoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0U2VnbWVudFBhdGggfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGggfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5J1xuXG4vKipcbiAqIFRoaXMgd2lsbCBjbGVhciB0aGUgQ2FjaGVOb2RlIGRhdGEgZm9yIGEgcGFydGljdWxhciBzZWdtZW50IHBhdGguIFRoaXMgd2lsbCBjYXVzZSBhIGxhenktZmV0Y2ggaW4gbGF5b3V0IHJvdXRlciB0byBmaWxsIGluIG5ldyBkYXRhLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJDYWNoZU5vZGVEYXRhRm9yU2VnbWVudFBhdGgoXG4gIG5ld0NhY2hlOiBDYWNoZU5vZGUsXG4gIGV4aXN0aW5nQ2FjaGU6IENhY2hlTm9kZSxcbiAgZmxpZ2h0U2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoXG4pOiB2b2lkIHtcbiAgY29uc3QgaXNMYXN0RW50cnkgPSBmbGlnaHRTZWdtZW50UGF0aC5sZW5ndGggPD0gMlxuXG4gIGNvbnN0IFtwYXJhbGxlbFJvdXRlS2V5LCBzZWdtZW50XSA9IGZsaWdodFNlZ21lbnRQYXRoXG4gIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudClcblxuICBjb25zdCBleGlzdGluZ0NoaWxkU2VnbWVudE1hcCA9XG4gICAgZXhpc3RpbmdDYWNoZS5wYXJhbGxlbFJvdXRlcy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcblxuICBsZXQgY2hpbGRTZWdtZW50TWFwID0gbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG5cbiAgaWYgKCFjaGlsZFNlZ21lbnRNYXAgfHwgY2hpbGRTZWdtZW50TWFwID09PSBleGlzdGluZ0NoaWxkU2VnbWVudE1hcCkge1xuICAgIGNoaWxkU2VnbWVudE1hcCA9IG5ldyBNYXAoZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXApXG4gICAgbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMuc2V0KHBhcmFsbGVsUm91dGVLZXksIGNoaWxkU2VnbWVudE1hcClcbiAgfVxuXG4gIGNvbnN0IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUgPSBleGlzdGluZ0NoaWxkU2VnbWVudE1hcD8uZ2V0KGNhY2hlS2V5KVxuICBsZXQgY2hpbGRDYWNoZU5vZGUgPSBjaGlsZFNlZ21lbnRNYXAuZ2V0KGNhY2hlS2V5KVxuXG4gIC8vIEluIGNhc2Ugb2YgbGFzdCBzZWdtZW50IHN0YXJ0IG9mZiB0aGUgZmV0Y2ggYXQgdGhpcyBsZXZlbCBhbmQgZG9uJ3QgY29weSBmdXJ0aGVyIGRvd24uXG4gIGlmIChpc0xhc3RFbnRyeSkge1xuICAgIGlmIChcbiAgICAgICFjaGlsZENhY2hlTm9kZSB8fFxuICAgICAgIWNoaWxkQ2FjaGVOb2RlLmxhenlEYXRhIHx8XG4gICAgICBjaGlsZENhY2hlTm9kZSA9PT0gZXhpc3RpbmdDaGlsZENhY2hlTm9kZVxuICAgICkge1xuICAgICAgY2hpbGRTZWdtZW50TWFwLnNldChjYWNoZUtleSwge1xuICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgcnNjOiBudWxsLFxuICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICBsb2FkaW5nOiBudWxsLFxuICAgICAgICBuYXZpZ2F0ZWRBdDogLTEsXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmICghY2hpbGRDYWNoZU5vZGUgfHwgIWV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUpIHtcbiAgICAvLyBTdGFydCBmZXRjaCBpbiB0aGUgcGxhY2Ugd2hlcmUgdGhlIGV4aXN0aW5nIGNhY2hlIGRvZXNuJ3QgaGF2ZSB0aGUgZGF0YSB5ZXQuXG4gICAgaWYgKCFjaGlsZENhY2hlTm9kZSkge1xuICAgICAgY2hpbGRTZWdtZW50TWFwLnNldChjYWNoZUtleSwge1xuICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgcnNjOiBudWxsLFxuICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcCgpLFxuICAgICAgICBsb2FkaW5nOiBudWxsLFxuICAgICAgICBuYXZpZ2F0ZWRBdDogLTEsXG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuXG4gIGlmIChjaGlsZENhY2hlTm9kZSA9PT0gZXhpc3RpbmdDaGlsZENhY2hlTm9kZSkge1xuICAgIGNoaWxkQ2FjaGVOb2RlID0ge1xuICAgICAgbGF6eURhdGE6IGNoaWxkQ2FjaGVOb2RlLmxhenlEYXRhLFxuICAgICAgcnNjOiBjaGlsZENhY2hlTm9kZS5yc2MsXG4gICAgICBwcmVmZXRjaFJzYzogY2hpbGRDYWNoZU5vZGUucHJlZmV0Y2hSc2MsXG4gICAgICBoZWFkOiBjaGlsZENhY2hlTm9kZS5oZWFkLFxuICAgICAgcHJlZmV0Y2hIZWFkOiBjaGlsZENhY2hlTm9kZS5wcmVmZXRjaEhlYWQsXG4gICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcChjaGlsZENhY2hlTm9kZS5wYXJhbGxlbFJvdXRlcyksXG4gICAgICBsb2FkaW5nOiBjaGlsZENhY2hlTm9kZS5sb2FkaW5nLFxuICAgIH0gYXMgQ2FjaGVOb2RlXG4gICAgY2hpbGRTZWdtZW50TWFwLnNldChjYWNoZUtleSwgY2hpbGRDYWNoZU5vZGUpXG4gIH1cblxuICByZXR1cm4gY2xlYXJDYWNoZU5vZGVEYXRhRm9yU2VnbWVudFBhdGgoXG4gICAgY2hpbGRDYWNoZU5vZGUsXG4gICAgZXhpc3RpbmdDaGlsZENhY2hlTm9kZSxcbiAgICBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgoZmxpZ2h0U2VnbWVudFBhdGgpXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJjbGVhckNhY2hlTm9kZURhdGFGb3JTZWdtZW50UGF0aCIsIm5ld0NhY2hlIiwiZXhpc3RpbmdDYWNoZSIsImZsaWdodFNlZ21lbnRQYXRoIiwiaXNMYXN0RW50cnkiLCJsZW5ndGgiLCJwYXJhbGxlbFJvdXRlS2V5Iiwic2VnbWVudCIsImNhY2hlS2V5IiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJleGlzdGluZ0NoaWxkU2VnbWVudE1hcCIsInBhcmFsbGVsUm91dGVzIiwiZ2V0IiwiY2hpbGRTZWdtZW50TWFwIiwiTWFwIiwic2V0IiwiZXhpc3RpbmdDaGlsZENhY2hlTm9kZSIsImNoaWxkQ2FjaGVOb2RlIiwibGF6eURhdGEiLCJyc2MiLCJwcmVmZXRjaFJzYyIsImhlYWQiLCJwcmVmZXRjaEhlYWQiLCJsb2FkaW5nIiwibmF2aWdhdGVkQXQiLCJnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js ***! \********************************************************************************************************************************************************************/ /***/ ((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 computeChangedPath: function() {\n return computeChangedPath;\n },\n extractPathFromFlightRouterState: function() {\n return extractPathFromFlightRouterState;\n },\n getSelectedParams: function() {\n return getSelectedParams;\n }\n});\nconst _interceptionroutes = __webpack_require__(/*! ../../../shared/lib/router/utils/interception-routes */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js\");\nconst removeLeadingSlash = (segment)=>{\n return segment[0] === '/' ? segment.slice(1) : segment;\n};\nconst segmentToPathname = (segment)=>{\n if (typeof segment === 'string') {\n // 'children' is not a valid path -- it's technically a parallel route that corresponds with the current segment's page\n // if we don't skip it, then the computed pathname might be something like `/children` which doesn't make sense.\n if (segment === 'children') return '';\n return segment;\n }\n return segment[1];\n};\nfunction normalizeSegments(segments) {\n return segments.reduce((acc, segment)=>{\n segment = removeLeadingSlash(segment);\n if (segment === '' || (0, _segment.isGroupSegment)(segment)) {\n return acc;\n }\n return acc + \"/\" + segment;\n }, '') || '/';\n}\nfunction extractPathFromFlightRouterState(flightRouterState) {\n const segment = Array.isArray(flightRouterState[0]) ? flightRouterState[0][1] : flightRouterState[0];\n if (segment === _segment.DEFAULT_SEGMENT_KEY || _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>segment.startsWith(m))) return undefined;\n if (segment.startsWith(_segment.PAGE_SEGMENT_KEY)) return '';\n const segments = [\n segmentToPathname(segment)\n ];\n var _flightRouterState_;\n const parallelRoutes = (_flightRouterState_ = flightRouterState[1]) != null ? _flightRouterState_ : {};\n const childrenPath = parallelRoutes.children ? extractPathFromFlightRouterState(parallelRoutes.children) : undefined;\n if (childrenPath !== undefined) {\n segments.push(childrenPath);\n } else {\n for (const [key, value] of Object.entries(parallelRoutes)){\n if (key === 'children') continue;\n const childPath = extractPathFromFlightRouterState(value);\n if (childPath !== undefined) {\n segments.push(childPath);\n }\n }\n }\n return normalizeSegments(segments);\n}\nfunction computeChangedPathImpl(treeA, treeB) {\n const [segmentA, parallelRoutesA] = treeA;\n const [segmentB, parallelRoutesB] = treeB;\n const normalizedSegmentA = segmentToPathname(segmentA);\n const normalizedSegmentB = segmentToPathname(segmentB);\n if (_interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m)=>normalizedSegmentA.startsWith(m) || normalizedSegmentB.startsWith(m))) {\n return '';\n }\n if (!(0, _matchsegments.matchSegment)(segmentA, segmentB)) {\n var _extractPathFromFlightRouterState;\n // once we find where the tree changed, we compute the rest of the path by traversing the tree\n return (_extractPathFromFlightRouterState = extractPathFromFlightRouterState(treeB)) != null ? _extractPathFromFlightRouterState : '';\n }\n for(const parallelRouterKey in parallelRoutesA){\n if (parallelRoutesB[parallelRouterKey]) {\n const changedPath = computeChangedPathImpl(parallelRoutesA[parallelRouterKey], parallelRoutesB[parallelRouterKey]);\n if (changedPath !== null) {\n return segmentToPathname(segmentB) + \"/\" + changedPath;\n }\n }\n }\n return null;\n}\nfunction computeChangedPath(treeA, treeB) {\n const changedPath = computeChangedPathImpl(treeA, treeB);\n if (changedPath == null || changedPath === '/') {\n return changedPath;\n }\n // lightweight normalization to remove route groups\n return normalizeSegments(changedPath.split('/'));\n}\nfunction getSelectedParams(currentTree, params) {\n if (params === void 0) params = {};\n const parallelRoutes = currentTree[1];\n for (const parallelRoute of Object.values(parallelRoutes)){\n const segment = parallelRoute[0];\n const isDynamicParameter = Array.isArray(segment);\n const segmentValue = isDynamicParameter ? segment[1] : segment;\n if (!segmentValue || segmentValue.startsWith(_segment.PAGE_SEGMENT_KEY)) continue;\n // Ensure catchAll and optional catchall are turned into an array\n const isCatchAll = isDynamicParameter && (segment[2] === 'c' || segment[2] === 'oc');\n if (isCatchAll) {\n params[segment[0]] = segment[1].split('/');\n } else if (isDynamicParameter) {\n params[segment[0]] = segment[1];\n }\n params = getSelectedParams(parallelRoute, params);\n }\n return params;\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=compute-changed-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY29tcHV0ZS1jaGFuZ2VkLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd0hnQkEsa0JBQWtCO2VBQWxCQTs7SUE5RUFDLGdDQUFnQztlQUFoQ0E7O0lBK0ZBQyxpQkFBaUI7ZUFBakJBOzs7Z0RBckkyQjtxQ0FNcEM7MkNBQ3NCO0FBRTdCLE1BQU1DLHFCQUFxQixDQUFDQztJQUMxQixPQUFPQSxPQUFPLENBQUMsRUFBRSxLQUFLLE1BQU1BLFFBQVFDLEtBQUssQ0FBQyxLQUFLRDtBQUNqRDtBQUVBLE1BQU1FLG9CQUFvQixDQUFDRjtJQUN6QixJQUFJLE9BQU9BLFlBQVksVUFBVTtRQUMvQix1SEFBdUg7UUFDdkgsZ0hBQWdIO1FBQ2hILElBQUlBLFlBQVksWUFBWSxPQUFPO1FBRW5DLE9BQU9BO0lBQ1Q7SUFFQSxPQUFPQSxPQUFPLENBQUMsRUFBRTtBQUNuQjtBQUVBLFNBQVNHLGtCQUFrQkMsUUFBa0I7SUFDM0MsT0FDRUEsU0FBU0MsTUFBTSxDQUFDLENBQUNDLEtBQUtOO1FBQ3BCQSxVQUFVRCxtQkFBbUJDO1FBQzdCLElBQUlBLFlBQVksTUFBTU8sQ0FBQUEsR0FBQUEsU0FBQUEsY0FBQUEsRUFBZVAsVUFBVTtZQUM3QyxPQUFPTTtRQUNUO1FBRUEsT0FBVUEsTUFBSSxNQUFHTjtJQUNuQixHQUFHLE9BQU87QUFFZDtBQUVPLFNBQVNILGlDQUNkVyxpQkFBb0M7SUFFcEMsTUFBTVIsVUFBVVMsTUFBTUMsT0FBTyxDQUFDRixpQkFBaUIsQ0FBQyxFQUFFLElBQzlDQSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUN2QkEsaUJBQWlCLENBQUMsRUFBRTtJQUV4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aUVBQWlFO1FBQ2pFLE1BQU02QixhQUNKRixzQkFBdUI1QyxDQUFBQSxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQU9BLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBRztRQUVqRSxJQUFJOEMsWUFBWTtZQUNkTCxNQUFNLENBQUN6QyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUdBLE9BQU8sQ0FBQyxFQUFFLENBQUN1QyxLQUFLLENBQUM7UUFDeEMsT0FBTyxJQUFJSyxvQkFBb0I7WUFDN0JILE1BQU0sQ0FBQ3pDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBR0EsT0FBTyxDQUFDLEVBQUU7UUFDakM7UUFFQXlDLFNBQVMzQyxrQkFBa0I0QyxlQUFlRDtJQUM1QztJQUVBLE9BQU9BO0FBQ1QiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jb21wdXRlLWNoYW5nZWQtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBTZWdtZW50LFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IElOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJjZXB0aW9uLXJvdXRlcydcbmltcG9ydCB0eXBlIHsgUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL3JlcXVlc3QvcGFyYW1zJ1xuaW1wb3J0IHtcbiAgaXNHcm91cFNlZ21lbnQsXG4gIERFRkFVTFRfU0VHTUVOVF9LRVksXG4gIFBBR0VfU0VHTUVOVF9LRVksXG59IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcbmltcG9ydCB7IG1hdGNoU2VnbWVudCB9IGZyb20gJy4uL21hdGNoLXNlZ21lbnRzJ1xuXG5jb25zdCByZW1vdmVMZWFkaW5nU2xhc2ggPSAoc2VnbWVudDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHNlZ21lbnRbMF0gPT09ICcvJyA/IHNlZ21lbnQuc2xpY2UoMSkgOiBzZWdtZW50XG59XG5cbmNvbnN0IHNlZ21lbnRUb1BhdGhuYW1lID0gKHNlZ21lbnQ6IFNlZ21lbnQpOiBzdHJpbmcgPT4ge1xuICBpZiAodHlwZW9mIHNlZ21lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gJ2NoaWxkcmVuJyBpcyBub3QgYSB2YWxpZCBwYXRoIC0tIGl0J3MgdGVjaG5pY2FsbHkgYSBwYXJhbGxlbCByb3V0ZSB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIGN1cnJlbnQgc2VnbWVudCdzIHBhZ2VcbiAgICAvLyBpZiB3ZSBkb24ndCBza2lwIGl0LCB0aGVuIHRoZSBjb21wdXRlZCBwYXRobmFtZSBtaWdodCBiZSBzb21ldGhpbmcgbGlrZSBgL2NoaWxkcmVuYCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UuXG4gICAgaWYgKHNlZ21lbnQgPT09ICdjaGlsZHJlbicpIHJldHVybiAnJ1xuXG4gICAgcmV0dXJuIHNlZ21lbnRcbiAgfVxuXG4gIHJldHVybiBzZWdtZW50WzFdXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVNlZ21lbnRzKHNlZ21lbnRzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiAoXG4gICAgc2VnbWVudHMucmVkdWNlKChhY2MsIHNlZ21lbnQpID0+IHtcbiAgICAgIHNlZ21lbnQgPSByZW1vdmVMZWFkaW5nU2xhc2goc2VnbWVudClcbiAgICAgIGlmIChzZWdtZW50ID09PSAnJyB8fCBpc0dyb3VwU2VnbWVudChzZWdtZW50KSkge1xuICAgICAgICByZXR1cm4gYWNjXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBgJHthY2N9LyR7c2VnbWVudH1gXG4gICAgfSwgJycpIHx8ICcvJ1xuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZShcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBzZWdtZW50ID0gQXJyYXkuaXNBcnJheShmbGlnaHRSb3V0ZXJTdGF0ZVswXSlcbiAgICA/IGZsaWdodFJvdXRlclN0YXRlWzBdWzFdXG4gICAgOiBmbGlnaHRSb3V0ZXJTdGF0ZVswXVxuXG4gIGlmIChcbiAgICBzZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZIHx8XG4gICAgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuc29tZSgobSkgPT4gc2VnbWVudC5zdGFydHNXaXRoKG0pKVxuICApXG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuXG4gIGlmIChzZWdtZW50LnN0YXJ0c1dpdGgoUEFHRV9TRUdNRU5UX0tFWSkpIHJldHVybiAnJ1xuXG4gIGNvbnN0IHNlZ21lbnRzID0gW3NlZ21lbnRUb1BhdGhuYW1lKHNlZ21lbnQpXVxuICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IGZsaWdodFJvdXRlclN0YXRlWzFdID8/IHt9XG5cbiAgY29uc3QgY2hpbGRyZW5QYXRoID0gcGFyYWxsZWxSb3V0ZXMuY2hpbGRyZW5cbiAgICA/IGV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlKHBhcmFsbGVsUm91dGVzLmNoaWxkcmVuKVxuICAgIDogdW5kZWZpbmVkXG5cbiAgaWYgKGNoaWxkcmVuUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgc2VnbWVudHMucHVzaChjaGlsZHJlblBhdGgpXG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocGFyYWxsZWxSb3V0ZXMpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnY2hpbGRyZW4nKSBjb250aW51ZVxuXG4gICAgICBjb25zdCBjaGlsZFBhdGggPSBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSh2YWx1ZSlcblxuICAgICAgaWYgKGNoaWxkUGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goY2hpbGRQYXRoKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVTZWdtZW50cyhzZWdtZW50cylcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUNoYW5nZWRQYXRoSW1wbChcbiAgdHJlZUE6IEZsaWdodFJvdXRlclN0YXRlLFxuICB0cmVlQjogRmxpZ2h0Um91dGVyU3RhdGVcbik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBbc2VnbWVudEEsIHBhcmFsbGVsUm91dGVzQV0gPSB0cmVlQVxuICBjb25zdCBbc2VnbWVudEIsIHBhcmFsbGVsUm91dGVzQl0gPSB0cmVlQlxuXG4gIGNvbnN0IG5vcm1hbGl6ZWRTZWdtZW50QSA9IHNlZ21lbnRUb1BhdGhuYW1lKHNlZ21lbnRBKVxuICBjb25zdCBub3JtYWxpemVkU2VnbWVudEIgPSBzZWdtZW50VG9QYXRobmFtZShzZWdtZW50QilcblxuICBpZiAoXG4gICAgSU5URVJDRVBUSU9OX1JPVVRFX01BUktFUlMuc29tZShcbiAgICAgIChtKSA9PlxuICAgICAgICBub3JtYWxpemVkU2VnbWVudEEuc3RhcnRzV2l0aChtKSB8fCBub3JtYWxpemVkU2VnbWVudEIuc3RhcnRzV2l0aChtKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIW1hdGNoU2VnbWVudChzZWdtZW50QSwgc2VnbWVudEIpKSB7XG4gICAgLy8gb25jZSB3ZSBmaW5kIHdoZXJlIHRoZSB0cmVlIGNoYW5nZWQsIHdlIGNvbXB1dGUgdGhlIHJlc3Qgb2YgdGhlIHBhdGggYnkgdHJhdmVyc2luZyB0aGUgdHJlZVxuICAgIHJldHVybiBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSh0cmVlQikgPz8gJydcbiAgfVxuXG4gIGZvciAoY29uc3QgcGFyYWxsZWxSb3V0ZXJLZXkgaW4gcGFyYWxsZWxSb3V0ZXNBKSB7XG4gICAgaWYgKHBhcmFsbGVsUm91dGVzQltwYXJhbGxlbFJvdXRlcktleV0pIHtcbiAgICAgIGNvbnN0IGNoYW5nZWRQYXRoID0gY29tcHV0ZUNoYW5nZWRQYXRoSW1wbChcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXNBW3BhcmFsbGVsUm91dGVyS2V5XSxcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXNCW3BhcmFsbGVsUm91dGVyS2V5XVxuICAgICAgKVxuICAgICAgaWYgKGNoYW5nZWRQYXRoICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBgJHtzZWdtZW50VG9QYXRobmFtZShzZWdtZW50Qil9LyR7Y2hhbmdlZFBhdGh9YFxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb21wdXRlQ2hhbmdlZFBhdGgoXG4gIHRyZWVBOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgdHJlZUI6IEZsaWdodFJvdXRlclN0YXRlXG4pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgY2hhbmdlZFBhdGggPSBjb21wdXRlQ2hhbmdlZFBhdGhJbXBsKHRyZWVBLCB0cmVlQilcblxuICBpZiAoY2hhbmdlZFBhdGggPT0gbnVsbCB8fCBjaGFuZ2VkUGF0aCA9PT0gJy8nKSB7XG4gICAgcmV0dXJuIGNoYW5nZWRQYXRoXG4gIH1cblxuICAvLyBsaWdodHdlaWdodCBub3JtYWxpemF0aW9uIHRvIHJlbW92ZSByb3V0ZSBncm91cHNcbiAgcmV0dXJuIG5vcm1hbGl6ZVNlZ21lbnRzKGNoYW5nZWRQYXRoLnNwbGl0KCcvJykpXG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgZXh0cmFjdHMgZHluYW1pYyBwYXJhbWV0ZXJzIGZyb20gRmxpZ2h0Um91dGVyU3RhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3RlZFBhcmFtcyhcbiAgY3VycmVudFRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwYXJhbXM6IFBhcmFtcyA9IHt9XG4pOiBQYXJhbXMge1xuICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IGN1cnJlbnRUcmVlWzFdXG5cbiAgZm9yIChjb25zdCBwYXJhbGxlbFJvdXRlIG9mIE9iamVjdC52YWx1ZXMocGFyYWxsZWxSb3V0ZXMpKSB7XG4gICAgY29uc3Qgc2VnbWVudCA9IHBhcmFsbGVsUm91dGVbMF1cbiAgICBjb25zdCBpc0R5bmFtaWNQYXJhbWV0ZXIgPSBBcnJheS5pc0FycmF5KHNlZ21lbnQpXG4gICAgY29uc3Qgc2VnbWVudFZhbHVlID0gaXNEeW5hbWljUGFyYW1ldGVyID8gc2VnbWVudFsxXSA6IHNlZ21lbnRcbiAgICBpZiAoIXNlZ21lbnRWYWx1ZSB8fCBzZWdtZW50VmFsdWUuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSkgY29udGludWVcblxuICAgIC8vIEVuc3VyZSBjYXRjaEFsbCBhbmQgb3B0aW9uYWwgY2F0Y2hhbGwgYXJlIHR1cm5lZCBpbnRvIGFuIGFycmF5XG4gICAgY29uc3QgaXNDYXRjaEFsbCA9XG4gICAgICBpc0R5bmFtaWNQYXJhbWV0ZXIgJiYgKHNlZ21lbnRbMl0gPT09ICdjJyB8fCBzZWdtZW50WzJdID09PSAnb2MnKVxuXG4gICAgaWYgKGlzQ2F0Y2hBbGwpIHtcbiAgICAgIHBhcmFtc1tzZWdtZW50WzBdXSA9IHNlZ21lbnRbMV0uc3BsaXQoJy8nKVxuICAgIH0gZWxzZSBpZiAoaXNEeW5hbWljUGFyYW1ldGVyKSB7XG4gICAgICBwYXJhbXNbc2VnbWVudFswXV0gPSBzZWdtZW50WzFdXG4gICAgfVxuXG4gICAgcGFyYW1zID0gZ2V0U2VsZWN0ZWRQYXJhbXMocGFyYWxsZWxSb3V0ZSwgcGFyYW1zKVxuICB9XG5cbiAgcmV0dXJuIHBhcmFtc1xufVxuIl0sIm5hbWVzIjpbImNvbXB1dGVDaGFuZ2VkUGF0aCIsImV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlIiwiZ2V0U2VsZWN0ZWRQYXJhbXMiLCJyZW1vdmVMZWFkaW5nU2xhc2giLCJzZWdtZW50Iiwic2xpY2UiLCJzZWdtZW50VG9QYXRobmFtZSIsIm5vcm1hbGl6ZVNlZ21lbnRzIiwic2VnbWVudHMiLCJyZWR1Y2UiLCJhY2MiLCJpc0dyb3VwU2VnbWVudCIsImZsaWdodFJvdXRlclN0YXRlIiwiQXJyYXkiLCJpc0FycmF5IiwiREVGQVVMVF9TRUdNRU5UX0tFWSIsIklOVEVSQ0VQVElPTl9ST1VURV9NQVJLRVJTIiwic29tZSIsIm0iLCJzdGFydHNXaXRoIiwidW5kZWZpbmVkIiwiUEFHRV9TRUdNRU5UX0tFWSIsInBhcmFsbGVsUm91dGVzIiwiY2hpbGRyZW5QYXRoIiwiY2hpbGRyZW4iLCJwdXNoIiwia2V5IiwidmFsdWUiLCJPYmplY3QiLCJlbnRyaWVzIiwiY2hpbGRQYXRoIiwiY29tcHV0ZUNoYW5nZWRQYXRoSW1wbCIsInRyZWVBIiwidHJlZUIiLCJzZWdtZW50QSIsInBhcmFsbGVsUm91dGVzQSIsInNlZ21lbnRCIiwicGFyYWxsZWxSb3V0ZXNCIiwibm9ybWFsaXplZFNlZ21lbnRBIiwibm9ybWFsaXplZFNlZ21lbnRCIiwibWF0Y2hTZWdtZW50IiwicGFyYWxsZWxSb3V0ZXJLZXkiLCJjaGFuZ2VkUGF0aCIsInNwbGl0IiwiY3VycmVudFRyZWUiLCJwYXJhbXMiLCJwYXJhbGxlbFJvdXRlIiwidmFsdWVzIiwiaXNEeW5hbWljUGFyYW1ldGVyIiwic2VnbWVudFZhbHVlIiwiaXNDYXRjaEFsbCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js ***! \********************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createHrefFromUrl\", ({\n enumerable: true,\n get: function() {\n return createHrefFromUrl;\n }\n}));\nfunction createHrefFromUrl(url, includeHash) {\n if (includeHash === void 0) includeHash = true;\n return url.pathname + url.search + (includeHash ? url.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=create-href-from-url.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLWhyZWYtZnJvbS11cmwuanMiLCJtYXBwaW5ncyI6Ijs7OztxREFBZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGtCQUNkQyxHQUE4QyxFQUM5Q0MsV0FBMkI7SUFBM0JBLElBQUFBLGdCQUFBQSxLQUFBQSxHQUFBQSxjQUF1QjtJQUV2QixPQUFPRCxJQUFJRSxRQUFRLEdBQUdGLElBQUlHLE1BQU0sR0FBSUYsQ0FBQUEsY0FBY0QsSUFBSUksSUFBSSxHQUFHLEdBQUM7QUFDaEUiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9jcmVhdGUtaHJlZi1mcm9tLXVybC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY3JlYXRlSHJlZkZyb21VcmwoXG4gIHVybDogUGljazxVUkwsICdwYXRobmFtZScgfCAnc2VhcmNoJyB8ICdoYXNoJz4sXG4gIGluY2x1ZGVIYXNoOiBib29sZWFuID0gdHJ1ZVxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIHVybC5wYXRobmFtZSArIHVybC5zZWFyY2ggKyAoaW5jbHVkZUhhc2ggPyB1cmwuaGFzaCA6ICcnKVxufVxuIl0sIm5hbWVzIjpbImNyZWF0ZUhyZWZGcm9tVXJsIiwidXJsIiwiaW5jbHVkZUhhc2giLCJwYXRobmFtZSIsInNlYXJjaCIsImhhc2giXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js": /*!***************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js ***! \***************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createInitialRouterState\", ({\n enumerable: true,\n get: function() {\n return createInitialRouterState;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ./create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ./fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _computechangedpath = __webpack_require__(/*! ./compute-changed-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ./prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ./refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nfunction createInitialRouterState(param) {\n let { navigatedAt, initialFlightData, initialCanonicalUrlParts, initialParallelRoutes, location, couldBeIntercepted, postponed, prerendered } = param;\n // When initialized on the server, the canonical URL is provided as an array of parts.\n // This is to ensure that when the RSC payload streamed to the client, crawlers don't interpret it\n // as a URL that should be crawled.\n const initialCanonicalUrl = initialCanonicalUrlParts.join('/');\n const normalizedFlightData = (0, _flightdatahelpers.getFlightDataPartsFromPath)(initialFlightData[0]);\n const { tree: initialTree, seedData: initialSeedData, head: initialHead } = normalizedFlightData;\n // For the SSR render, seed data should always be available (we only send back a `null` response\n // in the case of a `loading` segment, pre-PPR.)\n const rsc = initialSeedData == null ? void 0 : initialSeedData[1];\n var _initialSeedData_;\n const loading = (_initialSeedData_ = initialSeedData == null ? void 0 : initialSeedData[3]) != null ? _initialSeedData_ : null;\n const cache = {\n lazyData: null,\n rsc,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n // The cache gets seeded during the first render. `initialParallelRoutes` ensures the cache from the first render is there during the second render.\n parallelRoutes: initialParallelRoutes,\n loading,\n navigatedAt\n };\n const canonicalUrl = // This is safe to do as canonicalUrl can't be rendered, it's only used to control the history updates in the useEffect further down in this file.\n location ? (0, _createhreffromurl.createHrefFromUrl)(location) : initialCanonicalUrl;\n (0, _refetchinactiveparallelsegments.addRefreshMarkerToActiveParallelSegments)(initialTree, canonicalUrl);\n const prefetchCache = new Map();\n // When the cache hasn't been seeded yet we fill the cache with the head.\n if (initialParallelRoutes === null || initialParallelRoutes.size === 0) {\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, undefined, initialTree, initialSeedData, initialHead, undefined);\n }\n var _ref;\n const initialState = {\n tree: initialTree,\n cache,\n prefetchCache,\n pushRef: {\n pendingPush: false,\n mpaNavigation: false,\n // First render needs to preserve the previous window.history.state\n // to avoid it being overwritten on navigation back/forward with MPA Navigation.\n preserveCustomHistoryState: true\n },\n focusAndScrollRef: {\n apply: false,\n onlyHashChange: false,\n hashFragment: null,\n segmentPaths: []\n },\n canonicalUrl,\n nextUrl: (_ref = (0, _computechangedpath.extractPathFromFlightRouterState)(initialTree) || (location == null ? void 0 : location.pathname)) != null ? _ref : null\n };\n if (false) {}\n return initialState;\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=create-initial-router-state.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLWluaXRpYWwtcm91dGVyLXN0YXRlLmpzIiwibWFwcGluZ3MiOiI7Ozs7NERBeUJnQkE7OztlQUFBQTs7OytDQXRCa0I7MkRBQ1k7Z0RBQ0c7Z0RBSTFDO2dEQUMrQzs2REFDRzsrQ0FDZDtBQWFwQyxTQUFTQSx5QkFBeUIsS0FTVjtJQVRVLE1BQ3ZDQyxXQUFXLEVBQ1hDLGlCQUFpQixFQUNqQkMsd0JBQXdCLEVBQ3hCQyxxQkFBcUIsRUFDckJDLFFBQVEsRUFDUkMsa0JBQWtCLEVBQ2xCQyxTQUFTLEVBQ1RDLFdBQVcsRUFDa0IsR0FUVTtJQVV2QyxzRkFBc0Y7SUFDdEYsa0dBQWtHO0lBQ2xHLG1DQUFtQztJQUNuQyxNQUFNQyxzQkFBc0JOLHlCQUF5Qk8sSUFBSSxDQUFDO0lBRTFELE1BQU1DLHVCQUF1QkMsQ0FBQUEsR0FBQUEsbUJBQUFBLDBCQUFBQSxFQUEyQlYsaUJBQWlCLENBQUMsRUFBRTtJQUM1RSxNQUFNLEVBQ0pXLE1BQU1DLFdBQVcsRUFDakJDLFVBQVVDLGVBQWUsRUFDekJDLE1BQU1DLFdBQVcsRUFDbEIsR0FBR1A7SUFDSixnR0FBZ0c7SUFDaEcsZ0RBQWdEO0lBQ2hELE1BQU1RLE1BQU1ILG1CQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSxlQUFpQixDQUFDLEVBQUU7UUFDaEJBO0lBQWhCLE1BQU1JLFVBQVVKLENBQUFBLG9CQUFBQSxtQkFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsZUFBaUIsQ0FBQyxPQUFFLE9BQXBCQSxvQkFBd0I7SUFFeEMsTUFBTUssUUFBbUI7UUFDdkJDLFVBQVU7UUFDVkg7UUFDQUksYUFBYTtRQUNiTixNQUFNO1FBQ05PLGNBQWM7UUFDZCxvSkFBb0o7UUFDcEpDLGdCQUFnQnJCO1FBQ2hCZ0I7UUFDQW5CO0lBQ0Y7SUFFQSxNQUFNeUIsZUFDSiw2RUFBNkUscUVBQ3FFO0lBQ2xKckIsV0FFSXNCLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBaUIsRUFBQ3RCLFlBQ2xCSTtJQUVObUIsQ0FBQUEsR0FBQUEsaUNBQUFBLHdDQUFBQSxFQUF5Q2QsYUFBYVk7SUFFdEQsTUFBTUcsZ0JBQWdCLElBQUlDO0lBRTFCLHlFQUF5RTtJQUN6RSxJQUFJMUIsMEJBQTBCLFFBQVFBLHNCQUFzQjJCLElBQUksS0FBSyxHQUFHO1FBQ3RFQyxDQUFBQSxHQUFBQSwrQkFBQUEsNkJBQUFBLEVBQ0UvQixhQUNBb0IsT0FDQVksV0FDQW5CLGFBQ0FFLGlCQUNBRSxhQUNBZTtJQUVKO1FBc0JLQztJQXBCTCxNQUFNQyxlQUFlO1FBQ25CdEIsTUFBTUM7UUFDTk87UUFDQVE7UUFDQU8sU0FBUztZQUNQQyxhQUFhO1lBQ2JDLGVBQWU7WUFDZixtRUFBbUU7WUFDbkUsZ0ZBQWdGO1lBQ2hGQyw0QkFBNEI7UUFDOUI7UUFDQUMsbUJBQW1CO1lBQ2pCQyxPQUFPO1lBQ1BDLGdCQUFnQjtZQUNoQkMsY0FBYztZQUNkQyxjQUFjLEVBQUU7UUFDbEI7UUFDQWxCO1FBQ0FtQixTQUVFLENBQUNYLE9BQUFBLENBQUFBLEdBQUFBLG9CQUFBQSxnQ0FBZ0MsRUFBQ3BCLGlCQUFnQlQsWUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsU0FBVXlDLFFBQUFBLENBQVEsWUFBbkVaLE9BQ0Q7SUFDSjtJQUVBLElBQUlhLEtBQWtEMUMsRUFBRSxFQXVDdkQ7SUFFRCxPQUFPOEI7QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1pbml0aWFsLXJvdXRlci1zdGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHR5cGUgeyBGbGlnaHREYXRhUGF0aCB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5pbXBvcnQgeyBjcmVhdGVIcmVmRnJvbVVybCB9IGZyb20gJy4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCB9IGZyb20gJy4vZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQnXG5pbXBvcnQgeyBleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4vY29tcHV0ZS1jaGFuZ2VkLXBhdGgnXG5pbXBvcnQge1xuICBjcmVhdGVTZWVkZWRQcmVmZXRjaENhY2hlRW50cnksXG4gIFNUQVRJQ19TVEFMRVRJTUVfTVMsXG59IGZyb20gJy4vcHJlZmV0Y2gtY2FjaGUtdXRpbHMnXG5pbXBvcnQgeyBQcmVmZXRjaEtpbmQsIHR5cGUgUHJlZmV0Y2hDYWNoZUVudHJ5IH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMgfSBmcm9tICcuL3JlZmV0Y2gtaW5hY3RpdmUtcGFyYWxsZWwtc2VnbWVudHMnXG5pbXBvcnQgeyBnZXRGbGlnaHREYXRhUGFydHNGcm9tUGF0aCB9IGZyb20gJy4uLy4uL2ZsaWdodC1kYXRhLWhlbHBlcnMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhbFJvdXRlclN0YXRlUGFyYW1ldGVycyB7XG4gIG5hdmlnYXRlZEF0OiBudW1iZXJcbiAgaW5pdGlhbENhbm9uaWNhbFVybFBhcnRzOiBzdHJpbmdbXVxuICBpbml0aWFsUGFyYWxsZWxSb3V0ZXM6IENhY2hlTm9kZVsncGFyYWxsZWxSb3V0ZXMnXVxuICBpbml0aWFsRmxpZ2h0RGF0YTogRmxpZ2h0RGF0YVBhdGhbXVxuICBsb2NhdGlvbjogTG9jYXRpb24gfCBudWxsXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxuICBwb3N0cG9uZWQ6IGJvb2xlYW5cbiAgcHJlcmVuZGVyZWQ6IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxSb3V0ZXJTdGF0ZSh7XG4gIG5hdmlnYXRlZEF0LFxuICBpbml0aWFsRmxpZ2h0RGF0YSxcbiAgaW5pdGlhbENhbm9uaWNhbFVybFBhcnRzLFxuICBpbml0aWFsUGFyYWxsZWxSb3V0ZXMsXG4gIGxvY2F0aW9uLFxuICBjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gIHBvc3Rwb25lZCxcbiAgcHJlcmVuZGVyZWQsXG59OiBJbml0aWFsUm91dGVyU3RhdGVQYXJhbWV0ZXJzKSB7XG4gIC8vIFdoZW4gaW5pdGlhbGl6ZWQgb24gdGhlIHNlcnZlciwgdGhlIGNhbm9uaWNhbCBVUkwgaXMgcHJvdmlkZWQgYXMgYW4gYXJyYXkgb2YgcGFydHMuXG4gIC8vIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgd2hlbiB0aGUgUlNDIHBheWxvYWQgc3RyZWFtZWQgdG8gdGhlIGNsaWVudCwgY3Jhd2xlcnMgZG9uJ3QgaW50ZXJwcmV0IGl0XG4gIC8vIGFzIGEgVVJMIHRoYXQgc2hvdWxkIGJlIGNyYXdsZWQuXG4gIGNvbnN0IGluaXRpYWxDYW5vbmljYWxVcmwgPSBpbml0aWFsQ2Fub25pY2FsVXJsUGFydHMuam9pbignLycpXG5cbiAgY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgPSBnZXRGbGlnaHREYXRhUGFydHNGcm9tUGF0aChpbml0aWFsRmxpZ2h0RGF0YVswXSlcbiAgY29uc3Qge1xuICAgIHRyZWU6IGluaXRpYWxUcmVlLFxuICAgIHNlZWREYXRhOiBpbml0aWFsU2VlZERhdGEsXG4gICAgaGVhZDogaW5pdGlhbEhlYWQsXG4gIH0gPSBub3JtYWxpemVkRmxpZ2h0RGF0YVxuICAvLyBGb3IgdGhlIFNTUiByZW5kZXIsIHNlZWQgZGF0YSBzaG91bGQgYWx3YXlzIGJlIGF2YWlsYWJsZSAod2Ugb25seSBzZW5kIGJhY2sgYSBgbnVsbGAgcmVzcG9uc2VcbiAgLy8gaW4gdGhlIGNhc2Ugb2YgYSBgbG9hZGluZ2Agc2VnbWVudCwgcHJlLVBQUi4pXG4gIGNvbnN0IHJzYyA9IGluaXRpYWxTZWVkRGF0YT8uWzFdXG4gIGNvbnN0IGxvYWRpbmcgPSBpbml0aWFsU2VlZERhdGE/LlszXSA/PyBudWxsXG5cbiAgY29uc3QgY2FjaGU6IENhY2hlTm9kZSA9IHtcbiAgICBsYXp5RGF0YTogbnVsbCxcbiAgICByc2MsXG4gICAgcHJlZmV0Y2hSc2M6IG51bGwsXG4gICAgaGVhZDogbnVsbCxcbiAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgLy8gVGhlIGNhY2hlIGdldHMgc2VlZGVkIGR1cmluZyB0aGUgZmlyc3QgcmVuZGVyLiBgaW5pdGlhbFBhcmFsbGVsUm91dGVzYCBlbnN1cmVzIHRoZSBjYWNoZSBmcm9tIHRoZSBmaXJzdCByZW5kZXIgaXMgdGhlcmUgZHVyaW5nIHRoZSBzZWNvbmQgcmVuZGVyLlxuICAgIHBhcmFsbGVsUm91dGVzOiBpbml0aWFsUGFyYWxsZWxSb3V0ZXMsXG4gICAgbG9hZGluZyxcbiAgICBuYXZpZ2F0ZWRBdCxcbiAgfVxuXG4gIGNvbnN0IGNhbm9uaWNhbFVybCA9XG4gICAgLy8gbG9jYXRpb24uaHJlZiBpcyByZWFkIGFzIHRoZSBpbml0aWFsIHZhbHVlIGZvciBjYW5vbmljYWxVcmwgaW4gdGhlIGJyb3dzZXJcbiAgICAvLyBUaGlzIGlzIHNhZmUgdG8gZG8gYXMgY2Fub25pY2FsVXJsIGNhbid0IGJlIHJlbmRlcmVkLCBpdCdzIG9ubHkgdXNlZCB0byBjb250cm9sIHRoZSBoaXN0b3J5IHVwZGF0ZXMgaW4gdGhlIHVzZUVmZmVjdCBmdXJ0aGVyIGRvd24gaW4gdGhpcyBmaWxlLlxuICAgIGxvY2F0aW9uXG4gICAgICA/IC8vIHdpbmRvdy5sb2NhdGlvbiBkb2VzIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgVVJMIGJ1dCBoYXMgYWxsIHRoZSBmaWVsZHMgY3JlYXRlSHJlZkZyb21VcmwgbmVlZHMuXG4gICAgICAgIGNyZWF0ZUhyZWZGcm9tVXJsKGxvY2F0aW9uKVxuICAgICAgOiBpbml0aWFsQ2Fub25pY2FsVXJsXG5cbiAgYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cyhpbml0aWFsVHJlZSwgY2Fub25pY2FsVXJsKVxuXG4gIGNvbnN0IHByZWZldGNoQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgUHJlZmV0Y2hDYWNoZUVudHJ5PigpXG5cbiAgLy8gV2hlbiB0aGUgY2FjaGUgaGFzbid0IGJlZW4gc2VlZGVkIHlldCB3ZSBmaWxsIHRoZSBjYWNoZSB3aXRoIHRoZSBoZWFkLlxuICBpZiAoaW5pdGlhbFBhcmFsbGVsUm91dGVzID09PSBudWxsIHx8IGluaXRpYWxQYXJhbGxlbFJvdXRlcy5zaXplID09PSAwKSB7XG4gICAgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQoXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIGNhY2hlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgaW5pdGlhbFRyZWUsXG4gICAgICBpbml0aWFsU2VlZERhdGEsXG4gICAgICBpbml0aWFsSGVhZCxcbiAgICAgIHVuZGVmaW5lZFxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGluaXRpYWxTdGF0ZSA9IHtcbiAgICB0cmVlOiBpbml0aWFsVHJlZSxcbiAgICBjYWNoZSxcbiAgICBwcmVmZXRjaENhY2hlLFxuICAgIHB1c2hSZWY6IHtcbiAgICAgIHBlbmRpbmdQdXNoOiBmYWxzZSxcbiAgICAgIG1wYU5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgLy8gRmlyc3QgcmVuZGVyIG5lZWRzIHRvIHByZXNlcnZlIHRoZSBwcmV2aW91cyB3aW5kb3cuaGlzdG9yeS5zdGF0ZVxuICAgICAgLy8gdG8gYXZvaWQgaXQgYmVpbmcgb3ZlcndyaXR0ZW4gb24gbmF2aWdhdGlvbiBiYWNrL2ZvcndhcmQgd2l0aCBNUEEgTmF2aWdhdGlvbi5cbiAgICAgIHByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlOiB0cnVlLFxuICAgIH0sXG4gICAgZm9jdXNBbmRTY3JvbGxSZWY6IHtcbiAgICAgIGFwcGx5OiBmYWxzZSxcbiAgICAgIG9ubHlIYXNoQ2hhbmdlOiBmYWxzZSxcbiAgICAgIGhhc2hGcmFnbWVudDogbnVsbCxcbiAgICAgIHNlZ21lbnRQYXRoczogW10sXG4gICAgfSxcbiAgICBjYW5vbmljYWxVcmwsXG4gICAgbmV4dFVybDpcbiAgICAgIC8vIHRoZSB8fCBvcGVyYXRvciBpcyBpbnRlbnRpb25hbCwgdGhlIHBhdGhuYW1lIGNhbiBiZSBhbiBlbXB0eSBzdHJpbmdcbiAgICAgIChleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZShpbml0aWFsVHJlZSkgfHwgbG9jYXRpb24/LnBhdGhuYW1lKSA/P1xuICAgICAgbnVsbCxcbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ2RldmVsb3BtZW50JyAmJiBsb2NhdGlvbikge1xuICAgIC8vIFNlZWQgdGhlIHByZWZldGNoIGNhY2hlIHdpdGggdGhpcyBwYWdlJ3MgZGF0YS5cbiAgICAvLyBUaGlzIGlzIHRvIHByZXZlbnQgbmVlZGxlc3NseSByZS1wcmVmZXRjaGluZyBhIHBhZ2UgdGhhdCBpcyBhbHJlYWR5IHJldXNhYmxlLFxuICAgIC8vIGFuZCB3aWxsIGF2b2lkIHRyaWdnZXJpbmcgYSBsb2FkaW5nIHN0YXRlL2RhdGEgZmV0Y2ggc3RhbGwgd2hlbiBuYXZpZ2F0aW5nIGJhY2sgdG8gdGhlIHBhZ2UuXG4gICAgLy8gV2UgZG9uJ3QgY3VycmVudGx5IGRvIHRoaXMgaW4gZGV2ZWxvcG1lbnQgYmVjYXVzZSBsaW5rcyBhcmVuJ3QgcHJlZmV0Y2hlZCBpbiBkZXZlbG9wbWVudFxuICAgIC8vIHNvIGhhdmluZyBhIG1pc21hdGNoIGJldHdlZW4gcHJlZmV0Y2gvbm8gcHJlZmV0Y2ggcHJvdmlkZXMgaW5jb25zaXN0ZW50IGJlaGF2aW9yIGJhc2VkIG9uIHdoaWNoIHBhZ2VcbiAgICAvLyB3YXMgbG9hZGVkIGZpcnN0LlxuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoXG4gICAgICBgJHtsb2NhdGlvbi5wYXRobmFtZX0ke2xvY2F0aW9uLnNlYXJjaH1gLFxuICAgICAgbG9jYXRpb24ub3JpZ2luXG4gICAgKVxuXG4gICAgY3JlYXRlU2VlZGVkUHJlZmV0Y2hDYWNoZUVudHJ5KHtcbiAgICAgIHVybCxcbiAgICAgIGRhdGE6IHtcbiAgICAgICAgZmxpZ2h0RGF0YTogW25vcm1hbGl6ZWRGbGlnaHREYXRhXSxcbiAgICAgICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogISFjb3VsZEJlSW50ZXJjZXB0ZWQsXG4gICAgICAgIHByZXJlbmRlcmVkLFxuICAgICAgICBwb3N0cG9uZWQsXG4gICAgICAgIC8vIFRPRE86IFRoZSBpbml0aWFsIFJTQyBwYXlsb2FkIGluY2x1ZGVzIGJvdGggc3RhdGljIGFuZCBkeW5hbWljIGRhdGFcbiAgICAgICAgLy8gaW4gdGhlIHNhbWUgcmVzcG9uc2UsIGV2ZW4gaWYgUFBSIGlzIGVuYWJsZWQuIFNvIGlmIHRoZXJlJ3MgYW55XG4gICAgICAgIC8vIGR5bmFtaWMgZGF0YSBhdCBhbGwsIHdlIGNhbid0IHNldCBhIHN0YWxlIHRpbWUuIEluIHRoZSBmdXR1cmUgd2UgbWF5XG4gICAgICAgIC8vIGFkZCBhIHdheSB0byBzcGxpdCBhIHNpbmdsZSBGbGlnaHQgc3RyZWFtIGludG8gc3RhdGljIGFuZCBkeW5hbWljXG4gICAgICAgIC8vIHBhcnRzLiBCdXQgaW4gdGhlIG1lYW50aW1lIHdlIHNob3VsZCBhdCBsZWFzdCBtYWtlIHRoaXMgd29yayBmb3JcbiAgICAgICAgLy8gZnVsbHkgc3RhdGljIHBhZ2VzLlxuICAgICAgICBzdGFsZVRpbWU6XG4gICAgICAgICAgLy8gSW4gdGhlIG9sZCByb3V0ZXIsIHRoZXJlIHdhcyBvbmx5IGEgc2luZ2xlIGNvbmZpZ3VyYWJsZSBzdGFsZVRpbWUgKGV4cGVyaW1lbnRhbC5zdGFsZVRpbWVzKVxuICAgICAgICAgIC8vIEFzIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCB0aGlzIHdpbGwgb25seSBzZXQgdGhlIGluaXRpYWwgc3RhbGVUaW1lIHRvIHRoZSBjb25maWd1cmVkIHZhbHVlXG4gICAgICAgICAgLy8gaWYgd2UncmUgbm90IGxldmVyYWdpbmcgdGhlIHNlZ21lbnQgY2FjaGUsIHdoaWNoIGhhcyBpdHMgb3duIHByZWZldGNoaW5nIHNlbWFudGljcy5cbiAgICAgICAgICBwcmVyZW5kZXJlZCAmJiAhcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgICAgICAgICA/IFNUQVRJQ19TVEFMRVRJTUVfTVNcbiAgICAgICAgICAgIDogLTEsXG4gICAgICB9LFxuICAgICAgdHJlZTogaW5pdGlhbFN0YXRlLnRyZWUsXG4gICAgICBwcmVmZXRjaENhY2hlOiBpbml0aWFsU3RhdGUucHJlZmV0Y2hDYWNoZSxcbiAgICAgIG5leHRVcmw6IGluaXRpYWxTdGF0ZS5uZXh0VXJsLFxuICAgICAga2luZDogcHJlcmVuZGVyZWQgPyBQcmVmZXRjaEtpbmQuRlVMTCA6IFByZWZldGNoS2luZC5BVVRPLFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gaW5pdGlhbFN0YXRlXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlSW5pdGlhbFJvdXRlclN0YXRlIiwibmF2aWdhdGVkQXQiLCJpbml0aWFsRmxpZ2h0RGF0YSIsImluaXRpYWxDYW5vbmljYWxVcmxQYXJ0cyIsImluaXRpYWxQYXJhbGxlbFJvdXRlcyIsImxvY2F0aW9uIiwiY291bGRCZUludGVyY2VwdGVkIiwicG9zdHBvbmVkIiwicHJlcmVuZGVyZWQiLCJpbml0aWFsQ2Fub25pY2FsVXJsIiwiam9pbiIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwiZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgiLCJ0cmVlIiwiaW5pdGlhbFRyZWUiLCJzZWVkRGF0YSIsImluaXRpYWxTZWVkRGF0YSIsImhlYWQiLCJpbml0aWFsSGVhZCIsInJzYyIsImxvYWRpbmciLCJjYWNoZSIsImxhenlEYXRhIiwicHJlZmV0Y2hSc2MiLCJwcmVmZXRjaEhlYWQiLCJwYXJhbGxlbFJvdXRlcyIsImNhbm9uaWNhbFVybCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cyIsInByZWZldGNoQ2FjaGUiLCJNYXAiLCJzaXplIiwiZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQiLCJ1bmRlZmluZWQiLCJleHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSIsImluaXRpYWxTdGF0ZSIsInB1c2hSZWYiLCJwZW5kaW5nUHVzaCIsIm1wYU5hdmlnYXRpb24iLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsImZvY3VzQW5kU2Nyb2xsUmVmIiwiYXBwbHkiLCJvbmx5SGFzaENoYW5nZSIsImhhc2hGcmFnbWVudCIsInNlZ21lbnRQYXRocyIsIm5leHRVcmwiLCJwYXRobmFtZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVybCIsIlVSTCIsInNlYXJjaCIsIm9yaWdpbiIsImNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeSIsImRhdGEiLCJmbGlnaHREYXRhIiwic3RhbGVUaW1lIiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwiU1RBVElDX1NUQUxFVElNRV9NUyIsImtpbmQiLCJQcmVmZXRjaEtpbmQiLCJGVUxMIiwiQVVUTyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js": /*!***********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js ***! \***********************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"createRouterCacheKey\", ({\n enumerable: true,\n get: function() {\n return createRouterCacheKey;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nfunction createRouterCacheKey(segment, withoutSearchParameters) {\n if (withoutSearchParameters === void 0) withoutSearchParameters = false;\n // if the segment is an array, it means it's a dynamic segment\n // for example, ['lang', 'en', 'd']. We need to convert it to a string to store it as a cache node key.\n if (Array.isArray(segment)) {\n return segment[0] + \"|\" + segment[1] + \"|\" + segment[2];\n }\n // Page segments might have search parameters, ie __PAGE__?foo=bar\n // When `withoutSearchParameters` is true, we only want to return the page segment\n if (withoutSearchParameters && segment.startsWith(_segment.PAGE_SEGMENT_KEY)) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\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=create-router-cache-key.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvY3JlYXRlLXJvdXRlci1jYWNoZS1rZXkuanMiLCJtYXBwaW5ncyI6Ijs7Ozt3REFHZ0JBOzs7ZUFBQUE7OztxQ0FGaUI7QUFFMUIsU0FBU0EscUJBQ2RDLE9BQWdCLEVBQ2hCQyx1QkFBd0M7SUFBeENBLElBQUFBLDRCQUFBQSxLQUFBQSxHQUFBQSwwQkFBbUM7SUFFbkMsOERBQThEO0lBQzlELHVHQUF1RztJQUN2RyxJQUFJQyxNQUFNQyxPQUFPLENBQUNILFVBQVU7UUFDMUIsT0FBVUEsT0FBTyxDQUFDLEVBQUUsR0FBQyxNQUFHQSxPQUFPLENBQUMsRUFBRSxHQUFDLE1BQUdBLE9BQU8sQ0FBQyxFQUFFO0lBQ2xEO0lBRUEsa0VBQWtFO0lBQ2xFLGtGQUFrRjtJQUNsRixJQUFJQywyQkFBMkJELFFBQVFJLFVBQVUsQ0FBQ0MsU0FBQUEsZ0JBQWdCLEdBQUc7UUFDbkUsT0FBT0EsU0FBQUEsZ0JBQWdCO0lBQ3pCO0lBRUEsT0FBT0w7QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgUEFHRV9TRUdNRU5UX0tFWSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvc2VnbWVudCdcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlckNhY2hlS2V5KFxuICBzZWdtZW50OiBTZWdtZW50LFxuICB3aXRob3V0U2VhcmNoUGFyYW1ldGVyczogYm9vbGVhbiA9IGZhbHNlXG4pIHtcbiAgLy8gaWYgdGhlIHNlZ21lbnQgaXMgYW4gYXJyYXksIGl0IG1lYW5zIGl0J3MgYSBkeW5hbWljIHNlZ21lbnRcbiAgLy8gZm9yIGV4YW1wbGUsIFsnbGFuZycsICdlbicsICdkJ10uIFdlIG5lZWQgdG8gY29udmVydCBpdCB0byBhIHN0cmluZyB0byBzdG9yZSBpdCBhcyBhIGNhY2hlIG5vZGUga2V5LlxuICBpZiAoQXJyYXkuaXNBcnJheShzZWdtZW50KSkge1xuICAgIHJldHVybiBgJHtzZWdtZW50WzBdfXwke3NlZ21lbnRbMV19fCR7c2VnbWVudFsyXX1gXG4gIH1cblxuICAvLyBQYWdlIHNlZ21lbnRzIG1pZ2h0IGhhdmUgc2VhcmNoIHBhcmFtZXRlcnMsIGllIF9fUEFHRV9fP2Zvbz1iYXJcbiAgLy8gV2hlbiBgd2l0aG91dFNlYXJjaFBhcmFtZXRlcnNgIGlzIHRydWUsIHdlIG9ubHkgd2FudCB0byByZXR1cm4gdGhlIHBhZ2Ugc2VnbWVudFxuICBpZiAod2l0aG91dFNlYXJjaFBhcmFtZXRlcnMgJiYgc2VnbWVudC5zdGFydHNXaXRoKFBBR0VfU0VHTUVOVF9LRVkpKSB7XG4gICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVlcbiAgfVxuXG4gIHJldHVybiBzZWdtZW50XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJzZWdtZW50Iiwid2l0aG91dFNlYXJjaFBhcmFtZXRlcnMiLCJBcnJheSIsImlzQXJyYXkiLCJzdGFydHNXaXRoIiwiUEFHRV9TRUdNRU5UX0tFWSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js": /*!*********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js ***! \*********************************************************************************************************************************************************************/ /***/ ((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 createFetch: function() {\n return createFetch;\n },\n createFromNextReadableStream: function() {\n return createFromNextReadableStream;\n },\n fetchServerResponse: function() {\n return fetchServerResponse;\n }\n});\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js\");\nconst _appcallserver = __webpack_require__(/*! ../../app-call-server */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../app-find-source-map-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nconst _appbuildid = __webpack_require__(/*! ../../app-build-id */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-build-id.js\");\nconst _setcachebustingsearchparam = __webpack_require__(/*! ./set-cache-busting-search-param */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\");\nconst _routeparams = __webpack_require__(/*! ../../route-params */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/route-params.js\");\nconst createFromReadableStream = _client.createFromReadableStream;\nfunction doMpaNavigation(url) {\n return {\n flightData: (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(url, location.origin)).toString(),\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n staleTime: -1\n };\n}\nlet abortController = new AbortController();\nif (true) {\n // Abort any in-flight requests when the page is unloaded, e.g. due to\n // reloading the page or performing hard navigations. This allows us to ignore\n // what would otherwise be a thrown TypeError when the browser cancels the\n // requests.\n window.addEventListener('pagehide', ()=>{\n abortController.abort();\n });\n // Use a fresh AbortController instance on pageshow, e.g. when navigating back\n // and the JavaScript execution context is restored by the browser.\n window.addEventListener('pageshow', ()=>{\n abortController = new AbortController();\n });\n}\nasync function fetchServerResponse(url, options) {\n const { flightRouterState, nextUrl, prefetchKind } = options;\n const headers = {\n // Enable flight response\n [_approuterheaders.RSC_HEADER]: '1',\n // Provide the current router state\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(flightRouterState, options.isHmrRefresh)\n };\n /**\n * Three cases:\n * - `prefetchKind` is `undefined`, it means it's a normal navigation, so we want to prefetch the page data fully\n * - `prefetchKind` is `full` - we want to prefetch the whole page so same as above\n * - `prefetchKind` is `auto` - if the page is dynamic, prefetch the page data partially, if static prefetch the page data fully\n */ if (prefetchKind === _routerreducertypes.PrefetchKind.AUTO) {\n headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '1';\n }\n if ( true && options.isHmrRefresh) {\n headers[_approuterheaders.NEXT_HMR_REFRESH_HEADER] = '1';\n }\n if (nextUrl) {\n headers[_approuterheaders.NEXT_URL] = nextUrl;\n }\n try {\n var _res_headers_get;\n // When creating a \"temporary\" prefetch (the \"on-demand\" prefetch that gets created on navigation, if one doesn't exist)\n // we send the request with a \"high\" priority as it's in response to a user interaction that could be blocking a transition.\n // Otherwise, all other prefetches are sent with a \"low\" priority.\n // We use \"auto\" for in all other cases to match the existing default, as this function is shared outside of prefetching.\n const fetchPriority = prefetchKind ? prefetchKind === _routerreducertypes.PrefetchKind.TEMPORARY ? 'high' : 'low' : 'auto';\n if (false) {}\n const res = await createFetch(url, headers, fetchPriority, abortController.signal);\n const responseUrl = (0, _routeparams.urlToUrlWithoutFlightMarker)(new URL(res.url));\n const canonicalUrl = res.redirected ? responseUrl : undefined;\n const contentType = res.headers.get('content-type') || '';\n const interception = !!((_res_headers_get = res.headers.get('vary')) == null ? void 0 : _res_headers_get.includes(_approuterheaders.NEXT_URL));\n const postponed = !!res.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER);\n const staleTimeHeaderSeconds = res.headers.get(_approuterheaders.NEXT_ROUTER_STALE_TIME_HEADER);\n const staleTime = staleTimeHeaderSeconds !== null ? parseInt(staleTimeHeaderSeconds, 10) * 1000 : -1;\n let isFlightResponse = contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER);\n if (false) {}\n // If fetch returns something different than flight response handle it like a mpa navigation\n // If the fetch was not 200, we also handle it like a mpa navigation\n if (!isFlightResponse || !res.ok || !res.body) {\n // in case the original URL came with a hash, preserve it before redirecting to the new URL\n if (url.hash) {\n responseUrl.hash = url.hash;\n }\n return doMpaNavigation(responseUrl.toString());\n }\n // We may navigate to a page that requires a different Webpack runtime.\n // In prod, every page will have the same Webpack runtime.\n // In dev, the Webpack runtime is minimal for each page.\n // We need to ensure the Webpack runtime is updated before executing client-side JS of the new page.\n if (true) {\n await (__webpack_require__(/*! ../../dev/hot-reloader/app/hot-reloader-app */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\").waitForWebpackRuntimeHotUpdate)();\n }\n // Handle the `fetch` readable stream that can be unwrapped by `React.use`.\n const flightStream = postponed ? createUnclosingPrefetchStream(res.body) : res.body;\n const response = await createFromNextReadableStream(flightStream);\n if ((0, _appbuildid.getAppBuildId)() !== response.b) {\n return doMpaNavigation(res.url);\n }\n return {\n flightData: (0, _flightdatahelpers.normalizeFlightData)(response.f),\n canonicalUrl: canonicalUrl,\n couldBeIntercepted: interception,\n prerendered: response.S,\n postponed,\n staleTime\n };\n } catch (err) {\n if (!abortController.signal.aborted) {\n console.error(\"Failed to fetch RSC payload for \" + url + \". Falling back to browser navigation.\", err);\n }\n // If fetch fails handle it like a mpa navigation\n // TODO-APP: Add a test for the case where a CORS request fails, e.g. external url redirect coming from the response.\n // See https://github.com/vercel/next.js/issues/43605#issuecomment-1451617521 for a reproduction.\n return {\n flightData: url.toString(),\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n staleTime: -1\n };\n }\n}\nasync function createFetch(url, headers, fetchPriority, signal) {\n // TODO: In output: \"export\" mode, the headers do nothing. Omit them (and the\n // cache busting search param) from the request so they're\n // maximally cacheable.\n if (false) {}\n if (false) {}\n const fetchOptions = {\n // Backwards compat for older browsers. `same-origin` is the default in modern browsers.\n credentials: 'same-origin',\n headers,\n priority: fetchPriority || undefined,\n signal\n };\n // `fetchUrl` is slightly different from `url` because we add a cache-busting\n // search param to it. This should not leak outside of this function, so we\n // track them separately.\n let fetchUrl = new URL(url);\n (0, _setcachebustingsearchparam.setCacheBustingSearchParam)(fetchUrl, headers);\n let browserResponse = await fetch(fetchUrl, fetchOptions);\n // If the server responds with a redirect (e.g. 307), and the redirected\n // location does not contain the cache busting search param set in the\n // original request, the response is likely invalid — when following the\n // redirect, the browser forwards the request headers, but since the cache\n // busting search param is missing, the server will reject the request due to\n // a mismatch.\n //\n // Ideally, we would be able to intercept the redirect response and perform it\n // manually, instead of letting the browser automatically follow it, but this\n // is not allowed by the fetch API.\n //\n // So instead, we must \"replay\" the redirect by fetching the new location\n // again, but this time we'll append the cache busting search param to prevent\n // a mismatch.\n //\n // TODO: We can optimize Next.js's built-in middleware APIs by returning a\n // custom status code, to prevent the browser from automatically following it.\n //\n // This does not affect Server Action-based redirects; those are encoded\n // differently, as part of the Flight body. It only affects redirects that\n // occur in a middleware or a third-party proxy.\n let redirected = browserResponse.redirected;\n if (false) {}\n // Remove the cache busting search param from the response URL, to prevent it\n // from leaking outside of this function.\n const responseUrl = new URL(browserResponse.url, fetchUrl);\n responseUrl.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n const rscResponse = {\n url: responseUrl.href,\n // This is true if any redirects occurred, either automatically by the\n // browser, or manually by us. So it's different from\n // `browserResponse.redirected`, which only tells us whether the browser\n // followed a redirect, and only for the last response in the chain.\n redirected,\n // These can be copied from the last browser response we received. We\n // intentionally only expose the subset of fields that are actually used\n // elsewhere in the codebase.\n ok: browserResponse.ok,\n headers: browserResponse.headers,\n body: browserResponse.body,\n status: browserResponse.status\n };\n return rscResponse;\n}\nfunction createFromNextReadableStream(flightStream) {\n return createFromReadableStream(flightStream, {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL\n });\n}\nfunction createUnclosingPrefetchStream(originalFlightStream) {\n // When PPR is enabled, prefetch streams may contain references that never\n // resolve, because that's how we encode dynamic data access. In the decoded\n // object returned by the Flight client, these are reified into hanging\n // promises that suspend during render, which is effectively what we want.\n // The UI resolves when it switches to the dynamic data stream\n // (via useDeferredValue(dynamic, static)).\n //\n // However, the Flight implementation currently errors if the server closes\n // the response before all the references are resolved. As a cheat to work\n // around this, we wrap the original stream in a new stream that never closes,\n // and therefore doesn't error.\n const reader = originalFlightStream.getReader();\n return new ReadableStream({\n async pull (controller) {\n while(true){\n const { done, value } = await reader.read();\n if (!done) {\n // Pass to the target stream and keep consuming the Flight response\n // from the server.\n controller.enqueue(value);\n continue;\n }\n // The server stream has closed. Exit, but intentionally do not close\n // the target stream.\n return;\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=fetch-server-response.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmV0Y2gtc2VydmVyLXJlc3BvbnNlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTJRc0JBLFdBQVc7ZUFBWEE7O0lBcUhOQyw0QkFBNEI7ZUFBNUJBOztJQTNSTUMsbUJBQW1CO2VBQW5CQTs7O29DQWpHc0Q7OENBa0JyRTsyQ0FDb0I7aURBQ007Z0RBQ0o7K0NBS3RCO3dDQUN1Qjt3REFDYTt5Q0FDQztBQUU1QyxNQUFNQywyQkFDSkMsUUFBQUEsd0JBQStCO0FBOEJqQyxTQUFTQyxnQkFBZ0JDLEdBQVc7SUFDbEMsT0FBTztRQUNMQyxZQUFZQyxDQUFBQSxHQUFBQSxhQUFBQSwyQkFBQUEsRUFDVixJQUFJQyxJQUFJSCxLQUFLSSxTQUFTQyxNQUFNLEdBQzVCQyxRQUFRO1FBQ1ZDLGNBQWNDO1FBQ2RDLG9CQUFvQjtRQUNwQkMsYUFBYTtRQUNiQyxXQUFXO1FBQ1hDLFdBQVcsQ0FBQztJQUNkO0FBQ0Y7QUFFQSxJQUFJQyxrQkFBa0IsSUFBSUM7QUFFMUIsSUFBSSxJQUE2QixFQUFFO0lBQ2pDLHNFQUFzRTtJQUN0RSw4RUFBOEU7SUFDOUUsMEVBQTBFO0lBQzFFLFlBQVk7SUFDWkMsT0FBT0MsZ0JBQWdCLENBQUMsWUFBWTtRQUNsQ0gsZ0JBQWdCSSxLQUFLO0lBQ3ZCO0lBRUEsOEVBQThFO0lBQzlFLG1FQUFtRTtJQUNuRUYsT0FBT0MsZ0JBQWdCLENBQUMsWUFBWTtRQUNsQ0gsa0JBQWtCLElBQUlDO0lBQ3hCO0FBQ0Y7QUFNTyxlQUFlbEIsb0JBQ3BCSSxHQUFRLEVBQ1JrQixPQUFtQztJQUVuQyxNQUFNLEVBQUVDLGlCQUFpQixFQUFFQyxPQUFPLEVBQUVDLFlBQVksRUFB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QUFTRCxxQkFBcUJFLFNBQVM7SUFDN0MsT0FBTyxJQUFJQyxlQUFlO1FBQ3hCLE1BQU1DLE1BQUtDLFVBQVU7WUFDbkIsTUFBTyxLQUFNO2dCQUNYLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUUsR0FBRyxNQUFNTixPQUFPTyxJQUFJO2dCQUN6QyxJQUFJLENBQUNGLE1BQU07b0JBQ1QsbUVBQW1FO29CQUNuRSxtQkFBbUI7b0JBQ25CRCxXQUFXSSxPQUFPLENBQUNGO29CQUNuQjtnQkFDRjtnQkFDQSxxRUFBcUU7Z0JBQ3JFLHFCQUFxQjtnQkFDckI7WUFDRjtRQUNGO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuLy8gVE9ETzogRXhwbGljaXRseSBpbXBvcnQgZnJvbSBjbGllbnQuYnJvd3NlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgY3JlYXRlRnJvbVJlYWRhYmxlU3RyZWFtIGFzIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIgfSBmcm9tICdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50J1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBOYXZpZ2F0aW9uRmxpZ2h0UmVzcG9uc2UsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5pbXBvcnQgdHlwZSB7IE5FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSIH0gZnJvbSAnLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHtcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9SU0NfVU5JT05fUVVFUlksXG4gIE5FWFRfVVJMLFxuICBSU0NfSEVBREVSLFxuICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUixcbiAgTkVYVF9ITVJfUkVGUkVTSF9IRUFERVIsXG4gIE5FWFRfRElEX1BPU1RQT05FX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIsXG59IGZyb20gJy4uL2FwcC1yb3V0ZXItaGVhZGVycydcbmltcG9ydCB7IGNhbGxTZXJ2ZXIgfSBmcm9tICcuLi8uLi9hcHAtY2FsbC1zZXJ2ZXInXG5pbXBvcnQgeyBmaW5kU291cmNlTWFwVVJMIH0gZnJvbSAnLi4vLi4vYXBwLWZpbmQtc291cmNlLW1hcC11cmwnXG5pbXBvcnQgeyBQcmVmZXRjaEtpbmQgfSBmcm9tICcuL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHtcbiAgbm9ybWFsaXplRmxpZ2h0RGF0YSxcbiAgcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCxcbiAgdHlwZSBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbn0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcbmltcG9ydCB7IGdldEFwcEJ1aWxkSWQgfSBmcm9tICcuLi8uLi9hcHAtYnVpbGQtaWQnXG5pbXBvcnQgeyBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSB9IGZyb20gJy4vc2V0LWNhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtJ1xuaW1wb3J0IHsgdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIH0gZnJvbSAnLi4vLi4vcm91dGUtcGFyYW1zJ1xuXG5jb25zdCBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0gPVxuICBjcmVhdGVGcm9tUmVhZGFibGVTdHJlYW1Ccm93c2VyIGFzICh0eXBlb2YgaW1wb3J0KCdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50LmJyb3dzZXInKSlbJ2NyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSddXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hTZXJ2ZXJSZXNwb25zZU9wdGlvbnMge1xuICByZWFkb25seSBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgcmVhZG9ubHkgbmV4dFVybDogc3RyaW5nIHwgbnVsbFxuICByZWFkb25seSBwcmVmZXRjaEtpbmQ/OiBQcmVmZXRjaEtpbmRcbiAgcmVhZG9ubHkgaXNIbXJSZWZyZXNoPzogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0ID0ge1xuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdIHwgc3RyaW5nXG4gIGNhbm9uaWNhbFVybDogVVJMIHwgdW5kZWZpbmVkXG4gIGNvdWxkQmVJbnRlcmNlcHRlZDogYm9vbGVhblxuICBwcmVyZW5kZXJlZDogYm9vbGVhblxuICBwb3N0cG9uZWQ6IGJvb2xlYW5cbiAgc3RhbGVUaW1lOiBudW1iZXJcbn1cblxuZXhwb3J0IHR5cGUgUmVxdWVzdEhlYWRlcnMgPSB7XG4gIFtSU0NfSEVBREVSXT86ICcxJ1xuICBbTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdPzogc3RyaW5nXG4gIFtORVhUX1VSTF0/OiBzdHJpbmdcbiAgW05FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUl0/OiAnMScgfCAnMidcbiAgW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXT86IHN0cmluZ1xuICAneC1kZXBsb3ltZW50LWlkJz86IHN0cmluZ1xuICBbTkVYVF9ITVJfUkVGUkVTSF9IRUFERVJdPzogJzEnXG4gIC8vIEEgaGVhZGVyIHRoYXQgaXMgb25seSBhZGRlZCBpbiB0ZXN0IG1vZGUgdG8gYXNzZXJ0IG9uIGZldGNoIHByaW9yaXR5XG4gICdOZXh0LVRlc3QtRmV0Y2gtUHJpb3JpdHknPzogUmVxdWVzdEluaXRbJ3ByaW9yaXR5J11cbn1cblxuZnVuY3Rpb24gZG9NcGFOYXZpZ2F0aW9uKHVybDogc3RyaW5nKTogRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB7XG4gIHJldHVybiB7XG4gICAgZmxpZ2h0RGF0YTogdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKFxuICAgICAgbmV3IFVSTCh1cmwsIGxvY2F0aW9uLm9yaWdpbilcbiAgICApLnRvU3RyaW5nKCksXG4gICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgY291bGRCZUludGVyY2VwdGVkOiBmYWxzZSxcbiAgICBwcmVyZW5kZXJlZDogZmFsc2UsXG4gICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICBzdGFsZVRpbWU6IC0xLFxuICB9XG59XG5cbmxldCBhYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcblxuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIEFib3J0IGFueSBpbi1mbGlnaHQgcmVxdWVzdHMgd2hlbiB0aGUgcGFnZSBpcyB1bmxvYWRlZCwgZS5nLiBkdWUgdG9cbiAgLy8gcmVsb2FkaW5nIHRoZSBwYWdlIG9yIHBlcmZvcm1pbmcgaGFyZCBuYXZpZ2F0aW9ucy4gVGhpcyBhbGxvd3MgdXMgdG8gaWdub3JlXG4gIC8vIHdoYXQgd291bGQgb3RoZXJ3aXNlIGJlIGEgdGhyb3duIFR5cGVFcnJvciB3aGVuIHRoZSBicm93c2VyIGNhbmNlbHMgdGhlXG4gIC8vIHJlcXVlc3RzLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCAoKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyLmFib3J0KClcbiAgfSlcblxuICAvLyBVc2UgYSBmcmVzaCBBYm9ydENvbnRyb2xsZXIgaW5zdGFuY2Ugb24gcGFnZXNob3csIGUuZy4gd2hlbiBuYXZpZ2F0aW5nIGJhY2tcbiAgLy8gYW5kIHRoZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0IGlzIHJlc3RvcmVkIGJ5IHRoZSBicm93c2VyLlxuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZXNob3cnLCAoKSA9PiB7XG4gICAgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gIH0pXG59XG5cbi8qKlxuICogRmV0Y2ggdGhlIGZsaWdodCBkYXRhIGZvciB0aGUgcHJvdmlkZWQgdXJsLiBUYWtlcyBpbiB0aGUgY3VycmVudCByb3V0ZXIgc3RhdGVcbiAqIHRvIGRlY2lkZSB3aGF0IHRvIHJlbmRlciBzZXJ2ZXItc2lkZS5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoU2VydmVyUmVzcG9uc2UoXG4gIHVybDogVVJMLFxuICBvcHRpb25zOiBGZXRjaFNlcnZlclJlc3BvbnNlT3B0aW9uc1xuKTogUHJvbWlzZTxGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0PiB7XG4gIGNvbnN0IHsgZmxpZ2h0Um91dGVyU3RhdGUsIG5leHRVcmwsIHByZWZldGNoS2luZCB9ID0gb3B0aW9uc1xuXG4gIGNvbnN0IGhlYWRlcnM6IFJlcXVlc3RIZWFkZXJzID0ge1xuICAgIC8vIEVuYWJsZSBmbGlnaHQgcmVzcG9uc2VcbiAgICBbUlNDX0hFQURFUl06ICcxJyxcbiAgICAvLyBQcm92aWRlIHRoZSBjdXJyZW50IHJvdXRlciBzdGF0ZVxuICAgIFtORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl06IHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gICAgICBmbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgICAgIG9wdGlvbnMuaXNIbXJSZWZyZXNoXG4gICAgKSxcbiAgfVxuXG4gIC8qKlxuICAgKiBUaHJlZSBjYXNlczpcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgdW5kZWZpbmVkYCwgaXQgbWVhbnMgaXQncyBhIG5vcm1hbCBuYXZpZ2F0aW9uLCBzbyB3ZSB3YW50IHRvIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHlcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgZnVsbGAgLSB3ZSB3YW50IHRvIHByZWZldGNoIHRoZSB3aG9sZSBwYWdlIHNvIHNhbWUgYXMgYWJvdmVcbiAgICogLSBgcHJlZmV0Y2hLaW5kYCBpcyBgYXV0b2AgLSBpZiB0aGUgcGFnZSBpcyBkeW5hbWljLCBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIHBhcnRpYWxseSwgaWYgc3RhdGljIHByZWZldGNoIHRoZSBwYWdlIGRhdGEgZnVsbHlcbiAgICovXG4gIGlmIChwcmVmZXRjaEtpbmQgPT09IFByZWZldGNoS2luZC5BVVRPKSB7XG4gICAgaGVhZGVyc1tORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdID0gJzEnXG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgb3B0aW9ucy5pc0htclJlZnJlc2gpIHtcbiAgICBoZWFkZXJzW05FWFRfSE1SX1JFRlJFU0hfSEVBREVSXSA9ICcxJ1xuICB9XG5cbiAgaWYgKG5leHRVcmwpIHtcbiAgICBoZWFkZXJzW05FWFRfVVJMXSA9IG5leHRVcmxcbiAgfVxuXG4gIHRyeSB7XG4gICAgLy8gV2hlbiBjcmVhdGluZyBhIFwidGVtcG9yYXJ5XCIgcHJlZmV0Y2ggKHRoZSBcIm9uLWRlbWFuZFwiIHByZWZldGNoIHRoYXQgZ2V0cyBjcmVhdGVkIG9uIG5hdmlnYXRpb24sIGlmIG9uZSBkb2Vzbid0IGV4aXN0KVxuICAgIC8vIHdlIHNlbmQgdGhlIHJlcXVlc3Qgd2l0aCBhIFwiaGlnaFwiIHByaW9yaXR5IGFzIGl0J3MgaW4gcmVzcG9uc2UgdG8gYSB1c2VyIGludGVyYWN0aW9uIHRoYXQgY291bGQgYmUgYmxvY2tpbmcgYSB0cmFuc2l0aW9uLlxuICAgIC8vIE90aGVyd2lzZSwgYWxsIG90aGVyIHByZWZldGNoZXMgYXJlIHNlbnQgd2l0aCBhIFwibG93XCIgcHJpb3JpdHkuXG4gICAgLy8gV2UgdXNlIFwiYXV0b1wiIGZvciBpbiBhbGwgb3RoZXIgY2FzZXMgdG8gbWF0Y2ggdGhlIGV4aXN0aW5nIGRlZmF1bHQsIGFzIHRoaXMgZnVuY3Rpb24gaXMgc2hhcmVkIG91dHNpZGUgb2YgcHJlZmV0Y2hpbmcuXG4gICAgY29uc3QgZmV0Y2hQcmlvcml0eSA9IHByZWZldGNoS2luZFxuICAgICAgPyBwcmVmZXRjaEtpbmQgPT09IFByZWZldGNoS2luZC5URU1QT1JBUllcbiAgICAgICAgPyAnaGlnaCdcbiAgICAgICAgOiAnbG93J1xuICAgICAgOiAnYXV0bydcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIC8vIEluIFwib3V0cHV0OiBleHBvcnRcIiBtb2RlLCB3ZSBjYW4ndCByZWx5IG9uIGhlYWRlcnMgdG8gZGlzdGluZ3Vpc2hcbiAgICAgICAgLy8gYmV0d2VlbiBIVE1MIGFuZCBSU0MgcmVxdWVzdHMuIEluc3RlYWQsIHdlIGFwcGVuZCBhbiBleHRyYSBwcmVmaXhcbiAgICAgICAgLy8gdG8gdGhlIHJlcXVlc3QuXG4gICAgICAgIHVybCA9IG5ldyBVUkwodXJsKVxuICAgICAgICBpZiAodXJsLnBhdGhuYW1lLmVuZHNXaXRoKCcvJykpIHtcbiAgICAgICAgICB1cmwucGF0aG5hbWUgKz0gJ2luZGV4LnR4dCdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cmwucGF0aG5hbWUgKz0gJy50eHQnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjcmVhdGVGZXRjaChcbiAgICAgIHVybCxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBmZXRjaFByaW9yaXR5LFxuICAgICAgYWJvcnRDb250cm9sbGVyLnNpZ25hbFxuICAgIClcblxuICAgIGNvbnN0IHJlc3BvbnNlVXJsID0gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwocmVzLnVybCkpXG4gICAgY29uc3QgY2Fub25pY2FsVXJsID0gcmVzLnJlZGlyZWN0ZWQgPyByZXNwb25zZVVybCA6IHVuZGVmaW5lZFxuXG4gICAgY29uc3QgY29udGVudFR5cGUgPSByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8ICcnXG4gICAgY29uc3QgaW50ZXJjZXB0aW9uID0gISFyZXMuaGVhZGVycy5nZXQoJ3ZhcnknKT8uaW5jbHVkZXMoTkVYVF9VUkwpXG4gICAgY29uc3QgcG9zdHBvbmVkID0gISFyZXMuaGVhZGVycy5nZXQoTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSKVxuICAgIGNvbnN0IHN0YWxlVGltZUhlYWRlclNlY29uZHMgPSByZXMuaGVhZGVycy5nZXQoXG4gICAgICBORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUlxuICAgIClcbiAgICBjb25zdCBzdGFsZVRpbWUgPVxuICAgICAgc3RhbGVUaW1lSGVhZGVyU2Vjb25kcyAhPT0gbnVsbFxuICAgICAgICA/IHBhcnNlSW50KHN0YWxlVGltZUhlYWRlclNlY29uZHMsIDEwKSAqIDEwMDBcbiAgICAgICAgOiAtMVxuICAgIGxldCBpc0ZsaWdodFJlc3BvbnNlID0gY29udGVudFR5cGUuc3RhcnRzV2l0aChSU0NfQ09OVEVOVF9UWVBFX0hFQURFUilcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NPTkZJR19PVVRQVVQgPT09ICdleHBvcnQnKSB7XG4gICAgICAgIGlmICghaXNGbGlnaHRSZXNwb25zZSkge1xuICAgICAgICAgIGlzRmxpZ2h0UmVzcG9uc2UgPSBjb250ZW50VHlwZS5zdGFydHNXaXRoKCd0ZXh0L3BsYWluJylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIHJldHVybnMgc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGZsaWdodCByZXNwb25zZSBoYW5kbGUgaXQgbGlrZSBhIG1wYSBuYXZpZ2F0aW9uXG4gICAgLy8gSWYgdGhlIGZldGNoIHdhcyBub3QgMjAwLCB3ZSBhbHNvIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICBpZiAoIWlzRmxpZ2h0UmVzcG9uc2UgfHwgIXJlcy5vayB8fCAhcmVzLmJvZHkpIHtcbiAgICAgIC8vIGluIGNhc2UgdGhlIG9yaWdpbmFsIFVSTCBjYW1lIHdpdGggYSBoYXNoLCBwcmVzZXJ2ZSBpdCBiZWZvcmUgcmVkaXJlY3RpbmcgdG8gdGhlIG5ldyBVUkxcbiAgICAgIGlmICh1cmwuaGFzaCkge1xuICAgICAgICByZXNwb25zZVVybC5oYXNoID0gdXJsLmhhc2hcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRvTXBhTmF2aWdhdGlvbihyZXNwb25zZVVybC50b1N0cmluZygpKVxuICAgIH1cblxuICAgIC8vIFdlIG1heSBuYXZpZ2F0ZSB0byBhIHBhZ2UgdGhhdCByZXF1aXJlcyBhIGRpZmZlcmVudCBXZWJwYWNrIHJ1bnRpbWUuXG4gICAgLy8gSW4gcHJvZCwgZXZlcnkgcGFnZSB3aWxsIGhhdmUgdGhlIHNhbWUgV2VicGFjayBydW50aW1lLlxuICAgIC8vIEluIGRldiwgdGhlIFdlYnBhY2sgcnVudGltZSBpcyBtaW5pbWFsIGZvciBlYWNoIHBhZ2UuXG4gICAgLy8gV2UgbmVlZCB0byBlbnN1cmUgdGhlIFdlYnBhY2sgcnVudGltZSBpcyB1cGRhdGVkIGJlZm9yZSBleGVjdXRpbmcgY2xpZW50LXNpZGUgSlMgb2YgdGhlIG5ldyBwYWdlLlxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nICYmICFwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgIGF3YWl0IChcbiAgICAgICAgcmVxdWlyZSgnLi4vLi4vZGV2L2hvdC1yZWxvYWRlci9hcHAvaG90LXJlbG9hZGVyLWFwcCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAnKVxuICAgICAgKS53YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUoKVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgYGZldGNoYCByZWFkYWJsZSBzdHJlYW0gdGhhdCBjYW4gYmUgdW53cmFwcGVkIGJ5IGBSZWFjdC51c2VgLlxuICAgIGNvbnN0IGZsaWdodFN0cmVhbSA9IHBvc3Rwb25lZFxuICAgICAgPyBjcmVhdGVVbmNsb3NpbmdQcmVmZXRjaFN0cmVhbShyZXMuYm9keSlcbiAgICAgIDogcmVzLmJvZHlcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IChjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtKFxuICAgICAgZmxpZ2h0U3RyZWFtXG4gICAgKSBhcyBQcm9taXNlPE5hdmlnYXRpb25GbGlnaHRSZXNwb25zZT4pXG5cbiAgICBpZiAoZ2V0QXBwQnVpbGRJZCgpICE9PSByZXNwb25zZS5iKSB7XG4gICAgICByZXR1cm4gZG9NcGFOYXZpZ2F0aW9uKHJlcy51cmwpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZsaWdodERhdGE6IG5vcm1hbGl6ZUZsaWdodERhdGEocmVzcG9uc2UuZiksXG4gICAgICBjYW5vbmljYWxVcmw6IGNhbm9uaWNhbFVybCxcbiAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogaW50ZXJjZXB0aW9uLFxuICAgICAgcHJlcmVuZGVyZWQ6IHJlc3BvbnNlLlMsXG4gICAgICBwb3N0cG9uZWQsXG4gICAgICBzdGFsZVRpbWUsXG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoIWFib3J0Q29udHJvbGxlci5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBmZXRjaCBSU0MgcGF5bG9hZCBmb3IgJHt1cmx9LiBGYWxsaW5nIGJhY2sgdG8gYnJvd3NlciBuYXZpZ2F0aW9uLmAsXG4gICAgICAgIGVyclxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIElmIGZldGNoIGZhaWxzIGhhbmRsZSBpdCBsaWtlIGEgbXBhIG5hdmlnYXRpb25cbiAgICAvLyBUT0RPLUFQUDogQWRkIGEgdGVzdCBmb3IgdGhlIGNhc2Ugd2hlcmUgYSBDT1JTIHJlcXVlc3QgZmFpbHMsIGUuZy4gZXh0ZXJuYWwgdXJsIHJlZGlyZWN0IGNvbWluZyBmcm9tIHRoZSByZXNwb25zZS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2lzc3Vlcy80MzYwNSNpc3N1ZWNvbW1lbnQtMTQ1MTYxNzUyMSBmb3IgYSByZXByb2R1Y3Rpb24uXG4gICAgcmV0dXJuIHtcbiAgICAgIGZsaWdodERhdGE6IHVybC50b1N0cmluZygpLFxuICAgICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgICBjb3VsZEJlSW50ZXJjZXB0ZWQ6IGZhbHNlLFxuICAgICAgcHJlcmVuZGVyZWQ6IGZhbHNlLFxuICAgICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICAgIHN0YWxlVGltZTogLTEsXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgaXMgYSBzdWJzZXQgb2YgdGhlIHN0YW5kYXJkIFJlc3BvbnNlIHR5cGUuIFdlIHVzZSBhIGN1c3RvbSB0eXBlIGZvclxuLy8gdGhpcyBzbyB3ZSBjYW4gbGltaXQgd2hpY2ggZGV0YWlscyBhYm91dCB0aGUgcmVzcG9uc2UgbGVhayBpbnRvIHRoZSByZXN0IG9mXG4vLyB0aGUgY29kZWJhc2UuIEZvciBleGFtcGxlLCB0aGVyZSdzIHNvbWUgY3VzdG9tIGxvZ2ljIGZvciBtYW51YWxseSBmb2xsb3dpbmdcbi8vIHJlZGlyZWN0cywgc28gXCJyZWRpcmVjdGVkXCIgaW4gdGhpcyB0eXBlIGNvdWxkIGJlIGEgY29tcG9zaXRlIG9mIG11bHRpcGxlXG4vLyBicm93c2VyIGZldGNoIGNhbGxzOyBob3dldmVyLCB0aGlzIGZhY3Qgc2hvdWxkIG5vdCBsZWFrIHRvIHRoZSBjYWxsZXIuXG5leHBvcnQgdHlwZSBSU0NSZXNwb25zZSA9IHtcbiAgb2s6IGJvb2xlYW5cbiAgcmVkaXJlY3RlZDogYm9vbGVhblxuICBoZWFkZXJzOiBIZWFkZXJzXG4gIGJvZHk6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHwgbnVsbFxuICBzdGF0dXM6IG51bWJlclxuICB1cmw6IHN0cmluZ1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlRmV0Y2goXG4gIHVybDogVVJMLFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVycyxcbiAgZmV0Y2hQcmlvcml0eTogJ2F1dG8nIHwgJ2hpZ2gnIHwgJ2xvdycgfCBudWxsLFxuICBzaWduYWw/OiBBYm9ydFNpZ25hbFxuKTogUHJvbWlzZTxSU0NSZXNwb25zZT4ge1xuICAvLyBUT0RPOiBJbiBvdXRwdXQ6IFwiZXhwb3J0XCIgbW9kZSwgdGhlIGhlYWRlcnMgZG8gbm90aGluZy4gT21pdCB0aGVtIChhbmQgdGhlXG4gIC8vIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtKSBmcm9tIHRoZSByZXF1ZXN0IHNvIHRoZXkncmVcbiAgLy8gbWF4aW1hbGx5IGNhY2hlYWJsZS5cblxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSAmJiBmZXRjaFByaW9yaXR5ICE9PSBudWxsKSB7XG4gICAgaGVhZGVyc1snTmV4dC1UZXN0LUZldGNoLVByaW9yaXR5J10gPSBmZXRjaFByaW9yaXR5XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEKSB7XG4gICAgaGVhZGVyc1sneC1kZXBsb3ltZW50LWlkJ10gPSBwcm9jZXNzLmVudi5ORVhUX0RFUExPWU1FTlRfSURcbiAgfVxuXG4gIGNvbnN0IGZldGNoT3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdCBmb3Igb2xkZXIgYnJvd3NlcnMuIGBzYW1lLW9yaWdpbmAgaXMgdGhlIGRlZmF1bHQgaW4gbW9kZXJuIGJyb3dzZXJzLlxuICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLFxuICAgIGhlYWRlcnMsXG4gICAgcHJpb3JpdHk6IGZldGNoUHJpb3JpdHkgfHwgdW5kZWZpbmVkLFxuICAgIHNpZ25hbCxcbiAgfVxuICAvLyBgZmV0Y2hVcmxgIGlzIHNsaWdodGx5IGRpZmZlcmVudCBmcm9tIGB1cmxgIGJlY2F1c2Ugd2UgYWRkIGEgY2FjaGUtYnVzdGluZ1xuICAvLyBzZWFyY2ggcGFyYW0gdG8gaXQuIFRoaXMgc2hvdWxkIG5vdCBsZWFrIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbiwgc28gd2VcbiAgLy8gdHJhY2sgdGhlbSBzZXBhcmF0ZWx5LlxuICBsZXQgZmV0Y2hVcmwgPSBuZXcgVVJMKHVybClcbiAgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0oZmV0Y2hVcmwsIGhlYWRlcnMpXG4gIGxldCBicm93c2VyUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmZXRjaFVybCwgZmV0Y2hPcHRpb25zKVxuXG4gIC8vIElmIHRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCBhIHJlZGlyZWN0IChlLmcuIDMwNyksIGFuZCB0aGUgcmVkaXJlY3RlZFxuICAvLyBsb2NhdGlvbiBkb2VzIG5vdCBjb250YWluIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSBzZXQgaW4gdGhlXG4gIC8vIG9yaWdpbmFsIHJlcXVlc3QsIHRoZSByZXNwb25zZSBpcyBsaWtlbHkgaW52YWxpZCDigJQgd2hlbiBmb2xsb3dpbmcgdGhlXG4gIC8vIHJlZGlyZWN0LCB0aGUgYnJvd3NlciBmb3J3YXJkcyB0aGUgcmVxdWVzdCBoZWFkZXJzLCBidXQgc2luY2UgdGhlIGNhY2hlXG4gIC8vIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtIGlzIG1pc3NpbmcsIHRoZSBzZXJ2ZXIgd2lsbCByZWplY3QgdGhlIHJlcXVlc3QgZHVlIHRvXG4gIC8vIGEgbWlzbWF0Y2guXG4gIC8vXG4gIC8vIElkZWFsbHksIHdlIHdvdWxkIGJlIGFibGUgdG8gaW50ZXJjZXB0IHRoZSByZWRpcmVjdCByZXNwb25zZSBhbmQgcGVyZm9ybSBpdFxuICAvLyBtYW51YWxseSwgaW5zdGVhZCBvZiBsZXR0aW5nIHRoZSBicm93c2VyIGF1dG9tYXRpY2FsbHkgZm9sbG93IGl0LCBidXQgdGhpc1xuICAvLyBpcyBub3QgYWxsb3dlZCBieSB0aGUgZmV0Y2ggQVBJLlxuICAvL1xuICAvLyBTbyBpbnN0ZWFkLCB3ZSBtdXN0IFwicmVwbGF5XCIgdGhlIHJlZGlyZWN0IGJ5IGZldGNoaW5nIHRoZSBuZXcgbG9jYXRpb25cbiAgLy8gYWdhaW4sIGJ1dCB0aGlzIHRpbWUgd2UnbGwgYXBwZW5kIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSB0byBwcmV2ZW50XG4gIC8vIGEgbWlzbWF0Y2guXG4gIC8vXG4gIC8vIFRPRE86IFdlIGNhbiBvcHRpbWl6ZSBOZXh0LmpzJ3MgYnVpbHQtaW4gbWlkZGxld2FyZSBBUElzIGJ5IHJldHVybmluZyBhXG4gIC8vIGN1c3RvbSBzdGF0dXMgY29kZSwgdG8gcHJldmVudCB0aGUgYnJvd3NlciBmcm9tIGF1dG9tYXRpY2FsbHkgZm9sbG93aW5nIGl0LlxuICAvL1xuICAvLyBUaGlzIGRvZXMgbm90IGFmZmVjdCBTZXJ2ZXIgQWN0aW9uLWJhc2VkIHJlZGlyZWN0czsgdGhvc2UgYXJlIGVuY29kZWRcbiAgLy8gZGlmZmVyZW50bHksIGFzIHBhcnQgb2YgdGhlIEZsaWdodCBib2R5LiBJdCBvbmx5IGFmZmVjdHMgcmVkaXJlY3RzIHRoYXRcbiAgLy8gb2NjdXIgaW4gYSBtaWRkbGV3YXJlIG9yIGEgdGhpcmQtcGFydHkgcHJveHkuXG5cbiAgbGV0IHJlZGlyZWN0ZWQgPSBicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZFxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTKSB7XG4gICAgLy8gVGhpcyBpcyB0byBwcmV2ZW50IGEgcmVkaXJlY3QgbG9vcC4gU2FtZSBsaW1pdCB1c2VkIGJ5IENocm9tZS5cbiAgICBjb25zdCBNQVhfUkVESVJFQ1RTID0gMjBcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IE1BWF9SRURJUkVDVFM7IG4rKykge1xuICAgICAgaWYgKCFicm93c2VyUmVzcG9uc2UucmVkaXJlY3RlZCkge1xuICAgICAgICAvLyBUaGUgc2VydmVyIGRpZCBub3QgcGVyZm9ybSBhIHJlZGlyZWN0LlxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2VVcmwgPSBuZXcgVVJMKGJyb3dzZXJSZXNwb25zZS51cmwsIGZldGNoVXJsKVxuICAgICAgaWYgKHJlc3BvbnNlVXJsLm9yaWdpbiAhPT0gZmV0Y2hVcmwub3JpZ2luKSB7XG4gICAgICAgIC8vIFRoZSBzZXJ2ZXIgcmVkaXJlY3RlZCB0byBhbiBleHRlcm5hbCBVUkwuIFRoZSByZXN0IG9mIHRoZSBsb2dpYyBiZWxvd1xuICAgICAgICAvLyBpcyBub3QgcmVsZXZhbnQsIGJlY2F1c2UgaXQgb25seSBhcHBsaWVzIHRvIGludGVybmFsIHJlZGlyZWN0cy5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgcmVzcG9uc2VVcmwuc2VhcmNoUGFyYW1zLmdldChORVhUX1JTQ19VTklPTl9RVUVSWSkgPT09XG4gICAgICAgIGZldGNoVXJsLnNlYXJjaFBhcmFtcy5nZXQoTkVYVF9SU0NfVU5JT05fUVVFUlkpXG4gICAgICApIHtcbiAgICAgICAgLy8gVGhlIHJlZGlyZWN0ZWQgVVJMIGFscmVhZHkgaW5jbHVkZXMgdGhlIGNhY2hlIGJ1c3Rpbmcgc2VhcmNoIHBhcmFtLlxuICAgICAgICAvLyBUaGlzIHdhcyBwcm9iYWJseSBpbnRlbnRpb25hbC4gUmVnYXJkbGVzcywgdGhlcmUncyBubyByZWFzb24gdG9cbiAgICAgICAgLy8gaXNzdWUgYW5vdGhlciByZXF1ZXN0IHRvIHRoaXMgVVJMIGJlY2F1c2UgaXQgYWxyZWFkeSBoYXMgdGhlIHBhcmFtXG4gICAgICAgIC8vIHZhbHVlIHRoYXQgd2Ugd291bGQgaGF2ZSBhZGRlZCBiZWxvdy5cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIC8vIFRoZSBSU0MgcmVxdWVzdCB3YXMgcmVkaXJlY3RlZC4gQXNzdW1lIHRoZSByZXNwb25zZSBpcyBpbnZhbGlkLlxuICAgICAgLy9cbiAgICAgIC8vIEFwcGVuZCB0aGUgY2FjaGUgYnVzdGluZyBzZWFyY2ggcGFyYW0gdG8gdGhlIHJlZGlyZWN0ZWQgVVJMIGFuZFxuICAgICAgLy8gZmV0Y2ggYWdhaW4uXG4gICAgICBmZXRjaFVybCA9IG5ldyBVUkwocmVzcG9uc2VVcmwpXG4gICAgICBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbShmZXRjaFVybCwgaGVhZGVycylcbiAgICAgIGJyb3dzZXJSZXNwb25zZSA9IGF3YWl0IGZldGNoKGZldGNoVXJsLCBmZXRjaE9wdGlvbnMpXG4gICAgICAvLyBXZSBqdXN0IHBlcmZvcm1lZCBhIG1hbnVhbCByZWRpcmVjdCwgc28gdGhpcyBpcyBub3cgdHJ1ZS5cbiAgICAgIHJlZGlyZWN0ZWQgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgLy8gUmVtb3ZlIHRoZSBjYWNoZSBidXN0aW5nIHNlYXJjaCBwYXJhbSBmcm9tIHRoZSByZXNwb25zZSBVUkwsIHRvIHByZXZlbnQgaXRcbiAgLy8gZnJvbSBsZWFraW5nIG91dHNpZGUgb2YgdGhpcyBmdW5jdGlvbi5cbiAgY29uc3QgcmVzcG9uc2VVcmwgPSBuZXcgVVJMKGJyb3dzZXJSZXNwb25zZS51cmwsIGZldGNoVXJsKVxuICByZXNwb25zZVVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKE5FWFRfUlNDX1VOSU9OX1FVRVJZKVxuXG4gIGNvbnN0IHJzY1Jlc3BvbnNlOiBSU0NSZXNwb25zZSA9IHtcbiAgICB1cmw6IHJlc3BvbnNlVXJsLmhyZWYsXG5cbiAgICAvLyBUaGlzIGlzIHRydWUgaWYgYW55IHJlZGlyZWN0cyBvY2N1cnJlZCwgZWl0aGVyIGF1dG9tYXRpY2FsbHkgYnkgdGhlXG4gICAgLy8gYnJvd3Nlciwgb3IgbWFudWFsbHkgYnkgdXMuIFNvIGl0J3MgZGlmZmVyZW50IGZyb21cbiAgICAvLyBgYnJvd3NlclJlc3BvbnNlLnJlZGlyZWN0ZWRgLCB3aGljaCBvbmx5IHRlbGxzIHVzIHdoZXRoZXIgdGhlIGJyb3dzZXJcbiAgICAvLyBmb2xsb3dlZCBhIHJlZGlyZWN0LCBhbmQgb25seSBmb3IgdGhlIGxhc3QgcmVzcG9uc2UgaW4gdGhlIGNoYWluLlxuICAgIHJlZGlyZWN0ZWQsXG5cbiAgICAvLyBUaGVzZSBjYW4gYmUgY29waWVkIGZyb20gdGhlIGxhc3QgYnJvd3NlciByZXNwb25zZSB3ZSByZWNlaXZlZC4gV2VcbiAgICAvLyBpbnRlbnRpb25hbGx5IG9ubHkgZXhwb3NlIHRoZSBzdWJzZXQgb2YgZmllbGRzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWRcbiAgICAvLyBlbHNld2hlcmUgaW4gdGhlIGNvZGViYXNlLlxuICAgIG9rOiBicm93c2VyUmVzcG9uc2Uub2ssXG4gICAgaGVhZGVyczogYnJvd3NlclJlc3BvbnNlLmhlYWRlcnMsXG4gICAgYm9keTogYnJvd3NlclJlc3BvbnNlLmJvZHksXG4gICAgc3RhdHVzOiBicm93c2VyUmVzcG9uc2Uuc3RhdHVzLFxuICB9XG5cbiAgcmV0dXJuIHJzY1Jlc3BvbnNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtKFxuICBmbGlnaHRTdHJlYW06IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+XG4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgcmV0dXJuIGNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbShmbGlnaHRTdHJlYW0sIHtcbiAgICBjYWxsU2VydmVyLFxuICAgIGZpbmRTb3VyY2VNYXBVUkwsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVVuY2xvc2luZ1ByZWZldGNoU3RyZWFtKFxuICBvcmlnaW5hbEZsaWdodFN0cmVhbTogUmVhZGFibGVTdHJlYW08VWludDhBcnJheT5cbik6IFJlYWRhYmxlU3RyZWFtPFVpbnQ4QXJyYXk+IHtcbiAgLy8gV2hlbiBQUFIgaXMgZW5hYmxlZCwgcHJlZmV0Y2ggc3RyZWFtcyBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRoYXQgbmV2ZXJcbiAgLy8gcmVzb2x2ZSwgYmVjYXVzZSB0aGF0J3MgaG93IHdlIGVuY29kZSBkeW5hbWljIGRhdGEgYWNjZXNzLiBJbiB0aGUgZGVjb2RlZFxuICAvLyBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIEZsaWdodCBjbGllbnQsIHRoZXNlIGFyZSByZWlmaWVkIGludG8gaGFuZ2luZ1xuICAvLyBwcm9taXNlcyB0aGF0IHN1c3BlbmQgZHVyaW5nIHJlbmRlciwgd2hpY2ggaXMgZWZmZWN0aXZlbHkgd2hhdCB3ZSB3YW50LlxuICAvLyBUaGUgVUkgcmVzb2x2ZXMgd2hlbiBpdCBzd2l0Y2hlcyB0byB0aGUgZHluYW1pYyBkYXRhIHN0cmVhbVxuICAvLyAodmlhIHVzZURlZmVycmVkVmFsdWUoZHluYW1pYywgc3RhdGljKSkuXG4gIC8vXG4gIC8vIEhvd2V2ZXIsIHRoZSBGbGlnaHQgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IGVycm9ycyBpZiB0aGUgc2VydmVyIGNsb3Nlc1xuICAvLyB0aGUgcmVzcG9uc2UgYmVmb3JlIGFsbCB0aGUgcmVmZXJlbmNlcyBhcmUgcmVzb2x2ZWQuIEFzIGEgY2hlYXQgdG8gd29ya1xuICAvLyBhcm91bmQgdGhpcywgd2Ugd3JhcCB0aGUgb3JpZ2luYWwgc3RyZWFtIGluIGEgbmV3IHN0cmVhbSB0aGF0IG5ldmVyIGNsb3NlcyxcbiAgLy8gYW5kIHRoZXJlZm9yZSBkb2Vzbid0IGVycm9yLlxuICBjb25zdCByZWFkZXIgPSBvcmlnaW5hbEZsaWdodFN0cmVhbS5nZXRSZWFkZXIoKVxuICByZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtcbiAgICBhc3luYyBwdWxsKGNvbnRyb2xsZXIpIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgLy8gUGFzcyB0byB0aGUgdGFyZ2V0IHN0cmVhbSBhbmQga2VlcCBjb25zdW1pbmcgdGhlIEZsaWdodCByZXNwb25zZVxuICAgICAgICAgIC8vIGZyb20gdGhlIHNlcnZlci5cbiAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUodmFsdWUpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgc2VydmVyIHN0cmVhbSBoYXMgY2xvc2VkLiBFeGl0LCBidXQgaW50ZW50aW9uYWxseSBkbyBub3QgY2xvc2VcbiAgICAgICAgLy8gdGhlIHRhcmdldCBzdHJlYW0uXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH0sXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiY3JlYXRlRmV0Y2giLCJjcmVhdGVGcm9tTmV4dFJlYWRhYmxlU3RyZWFtIiwiZmV0Y2hTZXJ2ZXJSZXNwb25zZSIsImNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbSIsImNyZWF0ZUZyb21SZWFkYWJsZVN0cmVhbUJyb3dzZXIiLCJkb01wYU5hdmlnYXRpb24iLCJ1cmwiLCJmbGlnaHREYXRhIiwidXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIiwiVVJMIiwibG9jYXRpb24iLCJvcmlnaW4iLCJ0b1N0cmluZyIsImNhbm9uaWNhbFVybCIsInVuZGVmaW5lZCIsImNvdWxkQmVJbnRlcmNlcHRlZCIsInByZXJlbmRlcmVkIiwicG9zdHBvbmVkIiwic3RhbGVUaW1lIiwiYWJvcnRDb250cm9sbGVyIiwiQWJvcnRDb250cm9sbGVyIiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsImFib3J0Iiwib3B0aW9ucyIsImZsaWdodFJvdXRlclN0YXRlIiwibmV4dFVybCIsInByZWZldGNoS2luZCIsImhlYWRlcnMiLCJSU0NfSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIiLCJwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0IiwiaXNIbXJSZWZyZXNoIiwiUHJlZmV0Y2hLaW5kIiwiQVVUTyIsIk5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUiIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIk5FWFRfSE1SX1JFRlJFU0hfSEVBREVSIiwiTkVYVF9VUkwiLCJyZXMiLCJmZXRjaFByaW9yaXR5IiwiVEVNUE9SQVJZIiwiX19ORVhUX0NPTkZJR19PVVRQVVQiLCJwYXRobmFtZSIsImVuZHNXaXRoIiwic2lnbmFsIiwicmVzcG9uc2VVcmwiLCJyZWRpcmVjdGVkIiwiY29udGVudFR5cGUiLCJnZXQiLCJpbnRlcmNlcHRpb24iLCJpbmNsdWRlcyIsIk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiIsInN0YWxlVGltZUhlYWRlclNlY29uZHMiLCJORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUiIsInBhcnNlSW50IiwiaXNGbGlnaHRSZXNwb25zZSIsInN0YXJ0c1dpdGgiLCJSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiIsIm9rIiwiYm9keSIsImhhc2giLCJUVVJCT1BBQ0siLCJyZXF1aXJlIiwid2FpdEZvcldlYnBhY2tSdW50aW1lSG90VXBkYXRlIiwiZmxpZ2h0U3RyZWFtIiwiY3JlYXRlVW5jbG9zaW5nUHJlZmV0Y2hTdHJlYW0iLCJyZXNwb25zZSIsImdldEFwcEJ1aWxkSWQiLCJiIiwibm9ybWFsaXplRmxpZ2h0RGF0YSIsImYiLCJTIiwiZXJyIiwiYWJvcnRlZCIsImNvbnNvbGUiLCJlcnJvciIsIl9fTkVYVF9URVNUX01PREUiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJmZXRjaE9wdGlvbnMiLCJjcmVkZW50aWFscyIsInByaW9yaXR5IiwiZmV0Y2hVcmwiLCJzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSIsImJyb3dzZXJSZXNwb25zZSIsImZldGNoIiwiX19ORVhUX0NMSUVOVF9WQUxJREFURV9SU0NfUkVRVUVTVF9IRUFERVJTIiwiTUFYX1JFRElSRUNUUyIsIm4iLCJzZWFyY2hQYXJhbXMiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsImRlbGV0ZSIsInJzY1Jlc3BvbnNlIiwiaHJlZiIsInN0YXR1cyIsImNhbGxTZXJ2ZXIiLCJmaW5kU291cmNlTWFwVVJMIiwib3JpZ2luYWxGbGlnaHRTdHJlYW0iLCJyZWFkZXIiLCJnZXRSZWFkZXIiLCJSZWFkYWJsZVN0cmVhbSIsInB1bGwiLCJjb250cm9sbGVyIiwiZG9uZSIsInZhbHVlIiwicmVhZCIsImVucXVldWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js": /*!********************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js ***! \********************************************************************************************************************************************************************************/ /***/ ((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 fillCacheWithNewSubTreeData: function() {\n return fillCacheWithNewSubTreeData;\n },\n fillCacheWithNewSubTreeDataButOnlyLoading: function() {\n return fillCacheWithNewSubTreeDataButOnlyLoading;\n }\n});\nconst _invalidatecachebyrouterstate = __webpack_require__(/*! ./invalidate-cache-by-router-state */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ./fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\n/**\n * Common logic for filling cache with new sub tree data.\n */ function fillCacheHelper(navigatedAt, newCache, existingCache, flightData, prefetchEntry, fillLazyItems) {\n const { segmentPath, seedData: cacheNodeSeedData, tree: treePatch, head } = flightData;\n let newCacheNode = newCache;\n let existingCacheNode = existingCache;\n for(let i = 0; i < segmentPath.length; i += 2){\n const parallelRouteKey = segmentPath[i];\n const segment = segmentPath[i + 1];\n // segmentPath is a repeating tuple of parallelRouteKey and segment\n // we know we've hit the last entry we've reached our final pair\n const isLastEntry = i === segmentPath.length - 2;\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const existingChildSegmentMap = existingCacheNode.parallelRoutes.get(parallelRouteKey);\n if (!existingChildSegmentMap) {\n continue;\n }\n let childSegmentMap = newCacheNode.parallelRoutes.get(parallelRouteKey);\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap);\n newCacheNode.parallelRoutes.set(parallelRouteKey, childSegmentMap);\n }\n const existingChildCacheNode = existingChildSegmentMap.get(cacheKey);\n let childCacheNode = childSegmentMap.get(cacheKey);\n if (isLastEntry) {\n if (cacheNodeSeedData && (!childCacheNode || !childCacheNode.lazyData || childCacheNode === existingChildCacheNode)) {\n const incomingSegment = cacheNodeSeedData[0];\n const rsc = cacheNodeSeedData[1];\n const loading = cacheNodeSeedData[3];\n childCacheNode = {\n lazyData: null,\n // When `fillLazyItems` is false, we only want to fill the RSC data for the layout,\n // not the page segment.\n rsc: fillLazyItems || incomingSegment !== _segment.PAGE_SEGMENT_KEY ? rsc : null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n loading,\n parallelRoutes: fillLazyItems && existingChildCacheNode ? new Map(existingChildCacheNode.parallelRoutes) : new Map(),\n navigatedAt\n };\n if (existingChildCacheNode && fillLazyItems) {\n (0, _invalidatecachebyrouterstate.invalidateCacheByRouterState)(childCacheNode, existingChildCacheNode, treePatch);\n }\n if (fillLazyItems) {\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, childCacheNode, existingChildCacheNode, treePatch, cacheNodeSeedData, head, prefetchEntry);\n }\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n continue;\n }\n if (!childCacheNode || !existingChildCacheNode) {\n continue;\n }\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes),\n loading: childCacheNode.loading\n };\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n // Move deeper into the cache nodes\n newCacheNode = childCacheNode;\n existingCacheNode = existingChildCacheNode;\n }\n}\nfunction fillCacheWithNewSubTreeData(navigatedAt, newCache, existingCache, flightData, prefetchEntry) {\n fillCacheHelper(navigatedAt, newCache, existingCache, flightData, prefetchEntry, true);\n}\nfunction fillCacheWithNewSubTreeDataButOnlyLoading(navigatedAt, newCache, existingCache, flightData, prefetchEntry) {\n fillCacheHelper(navigatedAt, newCache, existingCache, flightData, prefetchEntry, 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=fill-cache-with-new-subtree-data.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmlsbC1jYWNoZS13aXRoLW5ldy1zdWJ0cmVlLWRhdGEuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBd0lnQkEsMkJBQTJCO2VBQTNCQTs7SUFpQkFDLHlDQUF5QztlQUF6Q0E7OzswREF2SjZCOzJEQUNDO2tEQUNUO3FDQUVKO0FBR2pDOztDQUVDLEdBQ0QsU0FBU0MsZ0JBQ1BDLFdBQW1CLEVBQ25CQyxRQUFtQixFQUNuQkMsYUFBd0IsRUFDeEJDLFVBQWdDLEVBQ2hDQyxhQUE2QyxFQUM3Q0MsYUFBc0I7SUFFdEIsTUFBTSxFQUNKQyxXQUFXLEVBQ1hDLFVBQVVDLGlCQUFpQixFQUMzQkMsTUFBTUMsU0FBUyxFQUNmQyxJQUFJLEVBQ0wsR0FBR1I7SUFDSixJQUFJUyxlQUFlWDtJQUNuQixJQUFJWSxvQkFBb0JYO0lBRXhCLElBQUssSUFBSVksSUFBSSxHQUFHQSxJQUFJUixZQUFZUyxNQUFNLEVBQUVELEtBQUssRUFBRztRQUM5QyxNQUFNRSxtQkFBMkJWLFdBQVcsQ0FBQ1EsRUFBRTtRQUMvQyxNQUFNRyxVQUFtQlgsV0FBVyxDQUFDUSxJQUFJLEVBQUU7UUFFM0MsbUVBQW1FO1FBQ25FLGdFQUFnRTtRQUNoRSxNQUFNSSxjQUFjSixNQUFNUixZQUFZUyxNQUFNLEdBQUc7UUFDL0MsTUFBTUksV0FBV0MsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQkg7UUFFdEMsTUFBTUksMEJBQ0pSLGtCQUFrQlMsY0FBYyxDQUFDQyxHQUFHLENBQUNQO1FBRXZDLElBQUksQ0FBQ0sseUJBQXlCO1lBRzVCO1FBQ0Y7UUFFQSxJQUFJRyxrQkFBa0JaLGFBQWFVLGNBQWMsQ0FBQ0MsR0FBRyxDQUFDUDtRQUN0RCxJQUFJLENBQUNRLG1CQUFtQkEsb0JBQW9CSCx5QkFBeUI7WUFDbkVHLGtCQUFrQixJQUFJQyxJQUFJSjtZQUMxQlQsYUFBYVUsY0FBYyxDQUFDSSxHQUFHLENBQUNWLGtCQUFrQlE7UUFDcEQ7UUFFQSxNQUFNRyx5QkFBeUJOLHdCQUF3QkUsR0FBRyxDQUFDSjtRQUMzRCxJQUFJUyxpQkFBaUJKLGdCQUFnQkQsR0FBRyxDQUFDSjtRQUV6QyxJQUFJRCxhQUFhO1lBQ2YsSUFDRVYscUJBQ0MsRUFBQ29CLGtCQUNBLENBQUNBLGVBQWVDLFFBQVEsSUFDeEJELG1CQUFtQkQsc0JBQUFBLENBQXFCLEVBQzFDO2dCQUNBLE1BQU1HLGtCQUFrQnRCLGlCQUFpQixDQUFDLEVBQUU7Z0JBQzVDLE1BQU11QixNQUFNdkIsaUJBQWlCLENBQUMsRUFBRTtnQkFDaEMsTUFBTXdCLFVBQVV4QixpQkFBaUIsQ0FBQyxFQUFFO2dCQUVwQ29CLGlCQUFpQjtvQkFDZkMsVUFBVTtvQkFDVixtRkFBbUY7b0JBQ25GLHdCQUF3QjtvQkFDeEJFLEtBQ0UxQixpQkFBaUJ5QixvQkFBb0JHLFNBQUFBLGdCQUFnQixHQUFHRixNQUFNO29CQUNoRUcsYUFBYTtvQkFDYnZCLE1BQU07b0JBQ053QixjQUFjO29CQUNkSDtvQkFDQVYsZ0JBQ0VqQixpQkFBaUJzQix5QkFDYixJQUFJRixJQUFJRSx1QkFBdUJMLGNBQWMsSUFDN0MsSUFBSUc7b0JBQ1Z6QjtnQkFDRjtnQkFFQSxJQUFJMkIsMEJBQTBCdEIsZUFBZTtvQkFDM0MrQixDQUFBQSxHQUFBQSw4QkFBQUEsNEJBQUFBLEVBQ0VSLGdCQUNBRCx3QkFDQWpCO2dCQUVKO2dCQUNBLElBQUlMLGVBQWU7b0JBQ2pCZ0MsQ0FBQUEsR0FBQUEsK0JBQUFBLDZCQUFBQSxFQUNFckMsYUFDQTRCLGdCQUNBRCx3QkFDQWpCLFdBQ0FGLG1CQUNBRyxNQUNBUDtnQkFFSjtnQkFFQW9CLGdCQUFnQkUsR0FBRyxDQUFDUCxVQUFVUztZQUNoQztZQUNBO1FBQ0Y7UUFFQSxJQUFJLENBQUNBLGtCQUFrQixDQUFDRCx3QkFBd0I7WUFHOUM7UUFDRjtRQUVBLElBQUlDLG1CQUFtQkQsd0JBQXdCO1lBQzdDQyxpQkFBaUI7Z0JBQ2ZDLFVBQVVELGVBQWVDLFFBQVE7Z0JBQ2pDRSxLQUFLSCxlQUFlRyxHQUFHO2dCQUN2QkcsYUFBYU4sZUFBZU0sV0FBVztnQkFDdkN2QixNQUFNaUIsZUFBZWpCLElBQUk7Z0JBQ3pCd0IsY0FBY1AsZUFBZU8sWUFBWTtnQkFDekNiLGdCQUFnQixJQUFJRyxJQUFJRyxlQUFlTixjQUFjO2dCQUNyRFUsU0FBU0osZUFBZUksT0FBTztZQUNqQztZQUNBUixnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVVM7UUFDaEM7UUFFQSxtQ0FBbUM7UUFDbkNoQixlQUFlZ0I7UUFDZmYsb0JBQW9CYztJQUN0QjtBQUNGO0FBS08sU0FBUzlCLDRCQUNkRyxXQUFtQixFQUNuQkMsUUFBbUIsRUFDbkJDLGFBQXdCLEVBQ3hCQyxVQUFnQyxFQUNoQ0MsYUFBa0M7SUFFbENMLGdCQUNFQyxhQUNBQyxVQUNBQyxlQUNBQyxZQUNBQyxlQUNBO0FBRUo7QUFFTyxTQUFTTiwwQ0FDZEUsV0FBbUIsRUFDbkJDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsVUFBZ0MsRUFDaENDLGFBQWtDO0lBRWxDTCxnQkFDRUMsYUFDQUMsVUFDQUMsZUFDQUMsWUFDQUMsZUFDQTtBQUVKIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmlsbC1jYWNoZS13aXRoLW5ldy1zdWJ0cmVlLWRhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgaW52YWxpZGF0ZUNhY2hlQnlSb3V0ZXJTdGF0ZSB9IGZyb20gJy4vaW52YWxpZGF0ZS1jYWNoZS1ieS1yb3V0ZXItc3RhdGUnXG5pbXBvcnQgeyBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCB9IGZyb20gJy4vZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQnXG5pbXBvcnQgeyBjcmVhdGVSb3V0ZXJDYWNoZUtleSB9IGZyb20gJy4vY3JlYXRlLXJvdXRlci1jYWNoZS1rZXknXG5pbXBvcnQgdHlwZSB7IFByZWZldGNoQ2FjaGVFbnRyeSB9IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBQQUdFX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkRmxpZ2h0RGF0YSB9IGZyb20gJy4uLy4uL2ZsaWdodC1kYXRhLWhlbHBlcnMnXG5cbi8qKlxuICogQ29tbW9uIGxvZ2ljIGZvciBmaWxsaW5nIGNhY2hlIHdpdGggbmV3IHN1YiB0cmVlIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGZpbGxDYWNoZUhlbHBlcihcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlLFxuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbiAgcHJlZmV0Y2hFbnRyeTogUHJlZmV0Y2hDYWNoZUVudHJ5IHwgdW5kZWZpbmVkLFxuICBmaWxsTGF6eUl0ZW1zOiBib29sZWFuXG4pOiB2b2lkIHtcbiAgY29uc3Qge1xuICAgIHNlZ21lbnRQYXRoLFxuICAgIHNlZWREYXRhOiBjYWNoZU5vZGVTZWVkRGF0YSxcbiAgICB0cmVlOiB0cmVlUGF0Y2gsXG4gICAgaGVhZCxcbiAgfSA9IGZsaWdodERhdGFcbiAgbGV0IG5ld0NhY2hlTm9kZSA9IG5ld0NhY2hlXG4gIGxldCBleGlzdGluZ0NhY2hlTm9kZSA9IGV4aXN0aW5nQ2FjaGVcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRQYXRoLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgY29uc3QgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nID0gc2VnbWVudFBhdGhbaV1cbiAgICBjb25zdCBzZWdtZW50OiBTZWdtZW50ID0gc2VnbWVudFBhdGhbaSArIDFdXG5cbiAgICAvLyBzZWdtZW50UGF0aCBpcyBhIHJlcGVhdGluZyB0dXBsZSBvZiBwYXJhbGxlbFJvdXRlS2V5IGFuZCBzZWdtZW50XG4gICAgLy8gd2Uga25vdyB3ZSd2ZSBoaXQgdGhlIGxhc3QgZW50cnkgd2UndmUgcmVhY2hlZCBvdXIgZmluYWwgcGFpclxuICAgIGNvbnN0IGlzTGFzdEVudHJ5ID0gaSA9PT0gc2VnbWVudFBhdGgubGVuZ3RoIC0gMlxuICAgIGNvbnN0IGNhY2hlS2V5ID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudClcblxuICAgIGNvbnN0IGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwID1cbiAgICAgIGV4aXN0aW5nQ2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuXG4gICAgaWYgKCFleGlzdGluZ0NoaWxkU2VnbWVudE1hcCkge1xuICAgICAgLy8gQmFpbG91dCBiZWNhdXNlIHRoZSBleGlzdGluZyBjYWNoZSBkb2VzIG5vdCBoYXZlIHRoZSBwYXRoIHRvIHRoZSBsZWFmIG5vZGVcbiAgICAgIC8vIFdpbGwgdHJpZ2dlciBsYXp5IGZldGNoIGluIGxheW91dC1yb3V0ZXIgYmVjYXVzZSBvZiBtaXNzaW5nIHNlZ21lbnRcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgbGV0IGNoaWxkU2VnbWVudE1hcCA9IG5ld0NhY2hlTm9kZS5wYXJhbGxlbFJvdXRlcy5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICBpZiAoIWNoaWxkU2VnbWVudE1hcCB8fCBjaGlsZFNlZ21lbnRNYXAgPT09IGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwKSB7XG4gICAgICBjaGlsZFNlZ21lbnRNYXAgPSBuZXcgTWFwKGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwKVxuICAgICAgbmV3Q2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzLnNldChwYXJhbGxlbFJvdXRlS2V5LCBjaGlsZFNlZ21lbnRNYXApXG4gICAgfVxuXG4gICAgY29uc3QgZXhpc3RpbmdDaGlsZENhY2hlTm9kZSA9IGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwLmdldChjYWNoZUtleSlcbiAgICBsZXQgY2hpbGRDYWNoZU5vZGUgPSBjaGlsZFNlZ21lbnRNYXAuZ2V0KGNhY2hlS2V5KVxuXG4gICAgaWYgKGlzTGFzdEVudHJ5KSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNhY2hlTm9kZVNlZWREYXRhICYmXG4gICAgICAgICghY2hpbGRDYWNoZU5vZGUgfHxcbiAgICAgICAgICAhY2hpbGRDYWNoZU5vZGUubGF6eURhdGEgfHxcbiAgICAgICAgICBjaGlsZENhY2hlTm9kZSA9PT0gZXhpc3RpbmdDaGlsZENhY2hlTm9kZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBpbmNvbWluZ1NlZ21lbnQgPSBjYWNoZU5vZGVTZWVkRGF0YVswXVxuICAgICAgICBjb25zdCByc2MgPSBjYWNoZU5vZGVTZWVkRGF0YVsxXVxuICAgICAgICBjb25zdCBsb2FkaW5nID0gY2FjaGVOb2RlU2VlZERhdGFbM11cblxuICAgICAgICBjaGlsZENhY2hlTm9kZSA9IHtcbiAgICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgICAvLyBXaGVuIGBmaWxsTGF6eUl0ZW1zYCBpcyBmYWxzZSwgd2Ugb25seSB3YW50IHRvIGZpbGwgdGhlIFJTQyBkYXRhIGZvciB0aGUgbGF5b3V0LFxuICAgICAgICAgIC8vIG5vdCB0aGUgcGFnZSBzZWdtZW50LlxuICAgICAgICAgIHJzYzpcbiAgICAgICAgICAgIGZpbGxMYXp5SXRlbXMgfHwgaW5jb21pbmdTZWdtZW50ICE9PSBQQUdFX1NFR01FTlRfS0VZID8gcnNjIDogbnVsbCxcbiAgICAgICAgICBwcmVmZXRjaFJzYzogbnVsbCxcbiAgICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICAgIHByZWZldGNoSGVhZDogbnVsbCxcbiAgICAgICAgICBsb2FkaW5nLFxuICAgICAgICAgIHBhcmFsbGVsUm91dGVzOlxuICAgICAgICAgICAgZmlsbExhenlJdGVtcyAmJiBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlXG4gICAgICAgICAgICAgID8gbmV3IE1hcChleGlzdGluZ0NoaWxkQ2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzKVxuICAgICAgICAgICAgICA6IG5ldyBNYXAoKSxcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleGlzdGluZ0NoaWxkQ2FjaGVOb2RlICYmIGZpbGxMYXp5SXRlbXMpIHtcbiAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVCeVJvdXRlclN0YXRlKFxuICAgICAgICAgICAgY2hpbGRDYWNoZU5vZGUsXG4gICAgICAgICAgICBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlLFxuICAgICAgICAgICAgdHJlZVBhdGNoXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGlmIChmaWxsTGF6eUl0ZW1zKSB7XG4gICAgICAgICAgZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQoXG4gICAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICAgIGNoaWxkQ2FjaGVOb2RlLFxuICAgICAgICAgICAgZXhpc3RpbmdDaGlsZENhY2hlTm9kZSxcbiAgICAgICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgICAgIGNhY2hlTm9kZVNlZWREYXRhLFxuICAgICAgICAgICAgaGVhZCxcbiAgICAgICAgICAgIHByZWZldGNoRW50cnlcbiAgICAgICAgICApXG4gICAgICAgIH1cblxuICAgICAgICBjaGlsZFNlZ21lbnRNYXAuc2V0KGNhY2hlS2V5LCBjaGlsZENhY2hlTm9kZSlcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKCFjaGlsZENhY2hlTm9kZSB8fCAhZXhpc3RpbmdDaGlsZENhY2hlTm9kZSkge1xuICAgICAgLy8gQmFpbG91dCBiZWNhdXNlIHRoZSBleGlzdGluZyBjYWNoZSBkb2VzIG5vdCBoYXZlIHRoZSBwYXRoIHRvIHRoZSBsZWFmIG5vZGVcbiAgICAgIC8vIFdpbGwgdHJpZ2dlciBsYXp5IGZldGNoIGluIGxheW91dC1yb3V0ZXIgYmVjYXVzZSBvZiBtaXNzaW5nIHNlZ21lbnRcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGNoaWxkQ2FjaGVOb2RlID09PSBleGlzdGluZ0NoaWxkQ2FjaGVOb2RlKSB7XG4gICAgICBjaGlsZENhY2hlTm9kZSA9IHtcbiAgICAgICAgbGF6eURhdGE6IGNoaWxkQ2FjaGVOb2RlLmxhenlEYXRhLFxuICAgICAgICByc2M6IGNoaWxkQ2FjaGVOb2RlLnJzYyxcbiAgICAgICAgcHJlZmV0Y2hSc2M6IGNoaWxkQ2FjaGVOb2RlLnByZWZldGNoUnNjLFxuICAgICAgICBoZWFkOiBjaGlsZENhY2hlTm9kZS5oZWFkLFxuICAgICAgICBwcmVmZXRjaEhlYWQ6IGNoaWxkQ2FjaGVOb2RlLnByZWZldGNoSGVhZCxcbiAgICAgICAgcGFyYWxsZWxSb3V0ZXM6IG5ldyBNYXAoY2hpbGRDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXMpLFxuICAgICAgICBsb2FkaW5nOiBjaGlsZENhY2hlTm9kZS5sb2FkaW5nLFxuICAgICAgfSBhcyBDYWNoZU5vZGVcbiAgICAgIGNoaWxkU2VnbWVudE1hcC5zZXQoY2FjaGVLZXksIGNoaWxkQ2FjaGVOb2RlKVxuICAgIH1cblxuICAgIC8vIE1vdmUgZGVlcGVyIGludG8gdGhlIGNhY2hlIG5vZGVzXG4gICAgbmV3Q2FjaGVOb2RlID0gY2hpbGRDYWNoZU5vZGVcbiAgICBleGlzdGluZ0NhY2hlTm9kZSA9IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGVcbiAgfVxufVxuXG4vKipcbiAqIEZpbGwgY2FjaGUgd2l0aCByc2MgYmFzZWQgb24gZmxpZ2h0RGF0YVBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YShcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgbmV3Q2FjaGU6IENhY2hlTm9kZSxcbiAgZXhpc3RpbmdDYWNoZTogQ2FjaGVOb2RlLFxuICBmbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YSxcbiAgcHJlZmV0Y2hFbnRyeT86IFByZWZldGNoQ2FjaGVFbnRyeVxuKTogdm9pZCB7XG4gIGZpbGxDYWNoZUhlbHBlcihcbiAgICBuYXZpZ2F0ZWRBdCxcbiAgICBuZXdDYWNoZSxcbiAgICBleGlzdGluZ0NhY2hlLFxuICAgIGZsaWdodERhdGEsXG4gICAgcHJlZmV0Y2hFbnRyeSxcbiAgICB0cnVlXG4gIClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YUJ1dE9ubHlMb2FkaW5nKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICBuZXdDYWNoZTogQ2FjaGVOb2RlLFxuICBleGlzdGluZ0NhY2hlOiBDYWNoZU5vZGUsXG4gIGZsaWdodERhdGE6IE5vcm1hbGl6ZWRGbGlnaHREYXRhLFxuICBwcmVmZXRjaEVudHJ5PzogUHJlZmV0Y2hDYWNoZUVudHJ5XG4pOiB2b2lkIHtcbiAgZmlsbENhY2hlSGVscGVyKFxuICAgIG5hdmlnYXRlZEF0LFxuICAgIG5ld0NhY2hlLFxuICAgIGV4aXN0aW5nQ2FjaGUsXG4gICAgZmxpZ2h0RGF0YSxcbiAgICBwcmVmZXRjaEVudHJ5LFxuICAgIGZhbHNlXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJmaWxsQ2FjaGVXaXRoTmV3U3ViVHJlZURhdGEiLCJmaWxsQ2FjaGVXaXRoTmV3U3ViVHJlZURhdGFCdXRPbmx5TG9hZGluZyIsImZpbGxDYWNoZUhlbHBlciIsIm5hdmlnYXRlZEF0IiwibmV3Q2FjaGUiLCJleGlzdGluZ0NhY2hlIiwiZmxpZ2h0RGF0YSIsInByZWZldGNoRW50cnkiLCJmaWxsTGF6eUl0ZW1zIiwic2VnbWVudFBhdGgiLCJzZWVkRGF0YSIsImNhY2hlTm9kZVNlZWREYXRhIiwidHJlZSIsInRyZWVQYXRjaCIsImhlYWQiLCJuZXdDYWNoZU5vZGUiLCJleGlzdGluZ0NhY2hlTm9kZSIsImkiLCJsZW5ndGgiLCJwYXJhbGxlbFJvdXRlS2V5Iiwic2VnbWVudCIsImlzTGFzdEVudHJ5IiwiY2FjaGVLZXkiLCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIsImV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwIiwicGFyYWxsZWxSb3V0ZXMiLCJnZXQiLCJjaGlsZFNlZ21lbnRNYXAiLCJNYXAiLCJzZXQiLCJleGlzdGluZ0NoaWxkQ2FjaGVOb2RlIiwiY2hpbGRDYWNoZU5vZGUiLCJsYXp5RGF0YSIsImluY29taW5nU2VnbWVudCIsInJzYyIsImxvYWRpbmciLCJQQUdFX1NFR01FTlRfS0VZIiwicHJlZmV0Y2hSc2MiLCJwcmVmZXRjaEhlYWQiLCJpbnZhbGlkYXRlQ2FjaGVCeVJvdXRlclN0YXRlIiwiZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js": /*!***********************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js ***! \***********************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"fillLazyItemsTillLeafWithHead\", ({\n enumerable: true,\n get: function() {\n return fillLazyItemsTillLeafWithHead;\n }\n}));\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nfunction fillLazyItemsTillLeafWithHead(navigatedAt, newCache, existingCache, routerState, cacheNodeSeedData, head, prefetchEntry) {\n const isLastSegment = Object.keys(routerState[1]).length === 0;\n if (isLastSegment) {\n newCache.head = head;\n return;\n }\n // Remove segment that we got data for so that it is filled in during rendering of rsc.\n for(const key in routerState[1]){\n const parallelRouteState = routerState[1][key];\n const segmentForParallelRoute = parallelRouteState[0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segmentForParallelRoute);\n // TODO: We should traverse the cacheNodeSeedData tree instead of the router\n // state tree. Ideally, they would always be the same shape, but because of\n // the loading.js pattern, cacheNodeSeedData sometimes only represents a\n // partial tree. That's why this node is sometimes null. Once PPR lands,\n // loading.js will no longer have special behavior and we can traverse the\n // data tree instead.\n //\n // We should also consider merging the router state tree and the data tree\n // in the response format, so that we don't have to send the keys twice.\n // Then the client can convert them into separate representations.\n const parallelSeedData = cacheNodeSeedData !== null && cacheNodeSeedData[2][key] !== undefined ? cacheNodeSeedData[2][key] : null;\n if (existingCache) {\n const existingParallelRoutesCacheNode = existingCache.parallelRoutes.get(key);\n if (existingParallelRoutesCacheNode) {\n const hasReusablePrefetch = (prefetchEntry == null ? void 0 : prefetchEntry.kind) === 'auto' && prefetchEntry.status === _routerreducertypes.PrefetchCacheEntryStatus.reusable;\n let parallelRouteCacheNode = new Map(existingParallelRoutesCacheNode);\n const existingCacheNode = parallelRouteCacheNode.get(cacheKey);\n let newCacheNode;\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const seedNode = parallelSeedData[1];\n const loading = parallelSeedData[3];\n newCacheNode = {\n lazyData: null,\n rsc: seedNode,\n // This is a PPR-only field. When PPR is enabled, we shouldn't hit\n // this path during a navigation, but until PPR is fully implemented\n // yet it's possible the existing node does have a non-null\n // `prefetchRsc`. As an incremental step, we'll just de-opt to the\n // old behavior — no PPR value.\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n loading,\n parallelRoutes: new Map(existingCacheNode == null ? void 0 : existingCacheNode.parallelRoutes),\n navigatedAt\n };\n } else if (hasReusablePrefetch && existingCacheNode) {\n // No new data was sent from the server, but the existing cache node\n // was prefetched, so we should reuse that.\n newCacheNode = {\n lazyData: existingCacheNode.lazyData,\n rsc: existingCacheNode.rsc,\n // This is a PPR-only field. Unlike the previous branch, since we're\n // just cloning the existing cache node, we might as well keep the\n // PPR value, if it exists.\n prefetchRsc: existingCacheNode.prefetchRsc,\n head: existingCacheNode.head,\n prefetchHead: existingCacheNode.prefetchHead,\n parallelRoutes: new Map(existingCacheNode.parallelRoutes),\n loading: existingCacheNode.loading\n };\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(existingCacheNode == null ? void 0 : existingCacheNode.parallelRoutes),\n loading: null,\n navigatedAt\n };\n }\n // Overrides the cache key with the new cache node.\n parallelRouteCacheNode.set(cacheKey, newCacheNode);\n // Traverse deeper to apply the head / fill lazy items till the head.\n fillLazyItemsTillLeafWithHead(navigatedAt, newCacheNode, existingCacheNode, parallelRouteState, parallelSeedData ? parallelSeedData : null, head, prefetchEntry);\n newCache.parallelRoutes.set(key, parallelRouteCacheNode);\n continue;\n }\n }\n let newCacheNode;\n if (parallelSeedData !== null) {\n // New data was sent from the server.\n const seedNode = parallelSeedData[1];\n const loading = parallelSeedData[3];\n newCacheNode = {\n lazyData: null,\n rsc: seedNode,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading,\n navigatedAt\n };\n } else {\n // No data available for this node. This will trigger a lazy fetch\n // during render.\n newCacheNode = {\n lazyData: null,\n rsc: null,\n prefetchRsc: null,\n head: null,\n prefetchHead: null,\n parallelRoutes: new Map(),\n loading: null,\n navigatedAt\n };\n }\n const existingParallelRoutes = newCache.parallelRoutes.get(key);\n if (existingParallelRoutes) {\n existingParallelRoutes.set(cacheKey, newCacheNode);\n } else {\n newCache.parallelRoutes.set(key, new Map([\n [\n cacheKey,\n newCacheNode\n ]\n ]));\n }\n fillLazyItemsTillLeafWithHead(navigatedAt, newCacheNode, undefined, parallelRouteState, parallelSeedData, head, prefetchEntry);\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=fill-lazy-items-till-leaf-with-head.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQuanMiLCJtYXBwaW5ncyI6Ijs7OztpRUFXZ0JBOzs7ZUFBQUE7OztrREFOcUI7Z0RBSTlCO0FBRUEsU0FBU0EsOEJBQ2RDLFdBQW1CLEVBQ25CQyxRQUFtQixFQUNuQkMsYUFBb0MsRUFDcENDLFdBQThCLEVBQzlCQyxpQkFBMkMsRUFDM0NDLElBQXFCLEVBQ3JCQyxhQUE2QztJQUU3QyxNQUFNQyxnQkFBZ0JDLE9BQU9DLElBQUksQ0FBQ04sV0FBVyxDQUFDLEVBQUUsRUFBRU8sTUFBTSxLQUFLO0lBQzdELElBQUlILGVBQWU7UUFDakJOLFNBQVNJLElBQUksR0FBR0E7UUFDaEI7SUFDRjtJQUNBLHVGQUF1RjtJQUN2RixJQUFLLE1BQU1NLE9BQU9SLFdBQVcsQ0FBQyxFQUFFLENBQUU7UUFDaEMsTUFBTVMscUJBQXFCVCxXQUFXLENBQUMsRUFBRSxDQUFDUSxJQUFJO1FBQzlDLE1BQU1FLDBCQUEwQkQsa0JBQWtCLENBQUMsRUFBRTtRQUNyRCxNQUFNRSxXQUFXQyxDQUFBQSxHQUFBQSxzQkFBQUEsb0JBQUFBLEVBQXFCRjtRQUV0Qyw0RUFBNEU7UUFDNUUsMkVBQTJFO1FBQzNFLHdFQUF3RTtRQUN4RSx3RUFBd0U7UUFDeEUsMEVBQTBFO1FBQzFFLHFCQUFxQjtRQUNyQixFQUFFO1FBQ0YsMEVBQTBFO1FBQzFFLHdFQUF3RTtRQUN4RSxrRUFBa0U7UUFDbEUsTUFBTUcsbUJBQ0paLHNCQUFzQixRQUFRQSxpQkFBaUIsQ0FBQyxFQUFFLENBQUNPLElBQUksS0FBS00sWUFDeERiLGlCQUFpQixDQUFDLEVBQUUsQ0FBQ08sSUFB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QUFjLENBQUNDLEdBQUcsQ0FBQ1Q7UUFDM0QsSUFBSTBCLHdCQUF3QjtZQUMxQkEsdUJBQXVCRCxHQUFHLENBQUN0QixVQUFVZTtRQUN2QyxPQUFPO1lBQ0w1QixTQUFTa0IsY0FBYyxDQUFDaUIsR0FBRyxDQUFDekIsS0FBSyxJQUFJZ0IsSUFBSTtnQkFBQztvQkFBQ2I7b0JBQVVlO2lCQUFhO2FBQUM7UUFDckU7UUFFQTlCLDhCQUNFQyxhQUNBNkIsY0FDQVosV0FDQUwsb0JBQ0FJLGtCQUNBWCxNQUNBQztJQUVKO0FBQ0YiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9maWxsLWxhenktaXRlbXMtdGlsbC1sZWFmLXdpdGgtaGVhZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHR5cGUge1xuICBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgQ2FjaGVOb2RlU2VlZERhdGEsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5J1xuaW1wb3J0IHtcbiAgUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLFxuICB0eXBlIFByZWZldGNoQ2FjaGVFbnRyeSxcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci10eXBlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICBuZXdDYWNoZTogQ2FjaGVOb2RlLFxuICBleGlzdGluZ0NhY2hlOiBDYWNoZU5vZGUgfCB1bmRlZmluZWQsXG4gIHJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgY2FjaGVOb2RlU2VlZERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgaGVhZDogUmVhY3QuUmVhY3ROb2RlLFxuICBwcmVmZXRjaEVudHJ5OiBQcmVmZXRjaENhY2hlRW50cnkgfCB1bmRlZmluZWRcbik6IHZvaWQge1xuICBjb25zdCBpc0xhc3RTZWdtZW50ID0gT2JqZWN0LmtleXMocm91dGVyU3RhdGVbMV0pLmxlbmd0aCA9PT0gMFxuICBpZiAoaXNMYXN0U2VnbWVudCkge1xuICAgIG5ld0NhY2hlLmhlYWQgPSBoZWFkXG4gICAgcmV0dXJuXG4gIH1cbiAgLy8gUmVtb3ZlIHNlZ21lbnQgdGhhdCB3ZSBnb3QgZGF0YSBmb3Igc28gdGhhdCBpdCBpcyBmaWxsZWQgaW4gZHVyaW5nIHJlbmRlcmluZyBvZiByc2MuXG4gIGZvciAoY29uc3Qga2V5IGluIHJvdXRlclN0YXRlWzFdKSB7XG4gICAgY29uc3QgcGFyYWxsZWxSb3V0ZVN0YXRlID0gcm91dGVyU3RhdGVbMV1ba2V5XVxuICAgIGNvbnN0IHNlZ21lbnRGb3JQYXJhbGxlbFJvdXRlID0gcGFyYWxsZWxSb3V0ZVN0YXRlWzBdXG4gICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShzZWdtZW50Rm9yUGFyYWxsZWxSb3V0ZSlcblxuICAgIC8vIFRPRE86IFdlIHNob3VsZCB0cmF2ZXJzZSB0aGUgY2FjaGVOb2RlU2VlZERhdGEgdHJlZSBpbnN0ZWFkIG9mIHRoZSByb3V0ZXJcbiAgICAvLyBzdGF0ZSB0cmVlLiBJZGVhbGx5LCB0aGV5IHdvdWxkIGFsd2F5cyBiZSB0aGUgc2FtZSBzaGFwZSwgYnV0IGJlY2F1c2Ugb2ZcbiAgICAvLyB0aGUgbG9hZGluZy5qcyBwYXR0ZXJuLCBjYWNoZU5vZGVTZWVkRGF0YSBzb21ldGltZXMgb25seSByZXByZXNlbnRzIGFcbiAgICAvLyBwYXJ0aWFsIHRyZWUuIFRoYXQncyB3aHkgdGhpcyBub2RlIGlzIHNvbWV0aW1lcyBudWxsLiBPbmNlIFBQUiBsYW5kcyxcbiAgICAvLyBsb2FkaW5nLmpzIHdpbGwgbm8gbG9uZ2VyIGhhdmUgc3BlY2lhbCBiZWhhdmlvciBhbmQgd2UgY2FuIHRyYXZlcnNlIHRoZVxuICAgIC8vIGRhdGEgdHJlZSBpbnN0ZWFkLlxuICAgIC8vXG4gICAgLy8gV2Ugc2hvdWxkIGFsc28gY29uc2lkZXIgbWVyZ2luZyB0aGUgcm91dGVyIHN0YXRlIHRyZWUgYW5kIHRoZSBkYXRhIHRyZWVcbiAgICAvLyBpbiB0aGUgcmVzcG9uc2UgZm9ybWF0LCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gc2VuZCB0aGUga2V5cyB0d2ljZS5cbiAgICAvLyBUaGVuIHRoZSBjbGllbnQgY2FuIGNvbnZlcnQgdGhlbSBpbnRvIHNlcGFyYXRlIHJlcHJlc2VudGF0aW9ucy5cbiAgICBjb25zdCBwYXJhbGxlbFNlZWREYXRhID1cbiAgICAgIGNhY2hlTm9kZVNlZWREYXRhICE9PSBudWxsICYmIGNhY2hlTm9kZVNlZWREYXRhWzJdW2tleV0gIT09IHVuZGVmaW5lZFxuICAgICAgICA/IGNhY2hlTm9kZVNlZWREYXRhWzJdW2tleV1cbiAgICAgICAgOiBudWxsXG4gICAgaWYgKGV4aXN0aW5nQ2FjaGUpIHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUgPVxuICAgICAgICBleGlzdGluZ0NhY2hlLnBhcmFsbGVsUm91dGVzLmdldChrZXkpXG4gICAgICBpZiAoZXhpc3RpbmdQYXJhbGxlbFJvdXRlc0NhY2hlTm9kZSkge1xuICAgICAgICBjb25zdCBoYXNSZXVzYWJsZVByZWZldGNoID1cbiAgICAgICAgICBwcmVmZXRjaEVudHJ5Py5raW5kID09PSAnYXV0bycgJiZcbiAgICAgICAgICBwcmVmZXRjaEVudHJ5LnN0YXR1cyA9PT0gUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLnJldXNhYmxlXG5cbiAgICAgICAgbGV0IHBhcmFsbGVsUm91dGVDYWNoZU5vZGUgPSBuZXcgTWFwKGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUpXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ2FjaGVOb2RlID0gcGFyYWxsZWxSb3V0ZUNhY2hlTm9kZS5nZXQoY2FjaGVLZXkpXG4gICAgICAgIGxldCBuZXdDYWNoZU5vZGU6IENhY2hlTm9kZVxuICAgICAgICBpZiAocGFyYWxsZWxTZWVkRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIE5ldyBkYXRhIHdhcyBzZW50IGZyb20gdGhlIHNlcnZlci5cbiAgICAgICAgICBjb25zdCBzZWVkTm9kZSA9IHBhcmFsbGVsU2VlZERhdGFbMV1cbiAgICAgICAgICBjb25zdCBsb2FkaW5nID0gcGFyYWxsZWxTZWVkRGF0YVszXVxuICAgICAgICAgIG5ld0NhY2hlTm9kZSA9IHtcbiAgICAgICAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgICAgICAgcnNjOiBzZWVkTm9kZSxcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBQUFItb25seSBmaWVsZC4gV2hlbiBQUFIgaXMgZW5hYmxlZCwgd2Ugc2hvdWxkbid0IGhpdFxuICAgICAgICAgICAgLy8gdGhpcyBwYXRoIGR1cmluZyBhIG5hdmlnYXRpb24sIGJ1dCB1bnRpbCBQUFIgaXMgZnVsbHkgaW1wbGVtZW50ZWRcbiAgICAgICAgICAgIC8vIHlldCBpdCdzIHBvc3NpYmxlIHRoZSBleGlzdGluZyBub2RlIGRvZXMgaGF2ZSBhIG5vbi1udWxsXG4gICAgICAgICAgICAvLyBgcHJlZmV0Y2hSc2NgLiBBcyBhbiBpbmNyZW1lbnRhbCBzdGVwLCB3ZSdsbCBqdXN0IGRlLW9wdCB0byB0aGVcbiAgICAgICAgICAgIC8vIG9sZCBiZWhhdmlvciDigJQgbm8gUFBSIHZhbHVlLlxuICAgICAgICAgICAgcHJlZmV0Y2hSc2M6IG51bGwsXG4gICAgICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgICAgICAgbG9hZGluZyxcbiAgICAgICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKGV4aXN0aW5nQ2FjaGVOb2RlPy5wYXJhbGxlbFJvdXRlcyksXG4gICAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoaGFzUmV1c2FibGVQcmVmZXRjaCAmJiBleGlzdGluZ0NhY2hlTm9kZSkge1xuICAgICAgICAgIC8vIE5vIG5ldyBkYXRhIHdhcyBzZW50IGZyb20gdGhlIHNlcnZlciwgYnV0IHRoZSBleGlzdGluZyBjYWNoZSBub2RlXG4gICAgICAgICAgLy8gd2FzIHByZWZldGNoZWQsIHNvIHdlIHNob3VsZCByZXVzZSB0aGF0LlxuICAgICAgICAgIG5ld0NhY2hlTm9kZSA9IHtcbiAgICAgICAgICAgIGxhenlEYXRhOiBleGlzdGluZ0NhY2hlTm9kZS5sYXp5RGF0YSxcbiAgICAgICAgICAgIHJzYzogZXhpc3RpbmdDYWNoZU5vZGUucnNjLFxuICAgICAgICAgICAgLy8gVGhpcyBpcyBhIFBQUi1vbmx5IGZpZWxkLiBVbmxpa2UgdGhlIHByZXZpb3VzIGJyYW5jaCwgc2luY2Ugd2UncmVcbiAgICAgICAgICAgIC8vIGp1c3QgY2xvbmluZyB0aGUgZXhpc3RpbmcgY2FjaGUgbm9kZSwgd2UgbWlnaHQgYXMgd2VsbCBrZWVwIHRoZVxuICAgICAgICAgICAgLy8gUFBSIHZhbHVlLCBpZiBpdCBleGlzdHMuXG4gICAgICAgICAgICBwcmVmZXRjaFJzYzogZXhpc3RpbmdDYWNoZU5vZGUucHJlZmV0Y2hSc2MsXG4gICAgICAgICAgICBoZWFkOiBleGlzdGluZ0NhY2hlTm9kZS5oZWFkLFxuICAgICAgICAgICAgcHJlZmV0Y2hIZWFkOiBleGlzdGluZ0NhY2hlTm9kZS5wcmVmZXRjaEhlYWQsXG4gICAgICAgICAgICBwYXJhbGxlbFJvdXRlczogbmV3IE1hcChleGlzdGluZ0NhY2hlTm9kZS5wYXJhbGxlbFJvdXRlcyksXG4gICAgICAgICAgICBsb2FkaW5nOiBleGlzdGluZ0NhY2hlTm9kZS5sb2FkaW5nLFxuICAgICAgICAgIH0gYXMgQ2FjaGVOb2RlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gZGF0YSBhdmFpbGFibGUgZm9yIHRoaXMgbm9kZS4gVGhpcyB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoXG4gICAgICAgICAgLy8gZHVyaW5nIHJlbmRlci5cbiAgICAgICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgICAgICBsYXp5RGF0YTogbnVsbCxcbiAgICAgICAgICAgIHJzYzogbnVsbCxcbiAgICAgICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICAgICAgaGVhZDogbnVsbCxcbiAgICAgICAgICAgIHByZWZldGNoSGVhZDogbnVsbCxcbiAgICAgICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKGV4aXN0aW5nQ2FjaGVOb2RlPy5wYXJhbGxlbFJvdXRlcyksXG4gICAgICAgICAgICBsb2FkaW5nOiBudWxsLFxuICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT3ZlcnJpZGVzIHRoZSBjYWNoZSBrZXkgd2l0aCB0aGUgbmV3IGNhY2hlIG5vZGUuXG4gICAgICAgIHBhcmFsbGVsUm91dGVDYWNoZU5vZGUuc2V0KGNhY2hlS2V5LCBuZXdDYWNoZU5vZGUpXG4gICAgICAgIC8vIFRyYXZlcnNlIGRlZXBlciB0byBhcHBseSB0aGUgaGVhZCAvIGZpbGwgbGF6eSBpdGVtcyB0aWxsIHRoZSBoZWFkLlxuICAgICAgICBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZChcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBuZXdDYWNoZU5vZGUsXG4gICAgICAgICAgZXhpc3RpbmdDYWNoZU5vZGUsXG4gICAgICAgICAgcGFyYWxsZWxSb3V0ZVN0YXRlLFxuICAgICAgICAgIHBhcmFsbGVsU2VlZERhdGEgPyBwYXJhbGxlbFNlZWREYXRhIDogbnVsbCxcbiAgICAgICAgICBoZWFkLFxuICAgICAgICAgIHByZWZldGNoRW50cnlcbiAgICAgICAgKVxuXG4gICAgICAgIG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLnNldChrZXksIHBhcmFsbGVsUm91dGVDYWNoZU5vZGUpXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IG5ld0NhY2hlTm9kZTogQ2FjaGVOb2RlXG4gICAgaWYgKHBhcmFsbGVsU2VlZERhdGEgIT09IG51bGwpIHtcbiAgICAgIC8vIE5ldyBkYXRhIHdhcyBzZW50IGZyb20gdGhlIHNlcnZlci5cbiAgICAgIGNvbnN0IHNlZWROb2RlID0gcGFyYWxsZWxTZWVkRGF0YVsxXVxuICAgICAgY29uc3QgbG9hZGluZyA9IHBhcmFsbGVsU2VlZERhdGFbM11cbiAgICAgIG5ld0NhY2hlTm9kZSA9IHtcbiAgICAgICAgbGF6eURhdGE6IG51bGwsXG4gICAgICAgIHJzYzogc2VlZE5vZGUsXG4gICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgICAgIGxvYWRpbmcsXG4gICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBObyBkYXRhIGF2YWlsYWJsZSBmb3IgdGhpcyBub2RlLiBUaGlzIHdpbGwgdHJpZ2dlciBhIGxhenkgZmV0Y2hcbiAgICAgIC8vIGR1cmluZyByZW5kZXIuXG4gICAgICBuZXdDYWNoZU5vZGUgPSB7XG4gICAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgICByc2M6IG51bGwsXG4gICAgICAgIHByZWZldGNoUnNjOiBudWxsLFxuICAgICAgICBoZWFkOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQ6IG51bGwsXG4gICAgICAgIHBhcmFsbGVsUm91dGVzOiBuZXcgTWFwKCksXG4gICAgICAgIGxvYWRpbmc6IG51bGwsXG4gICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXMgPSBuZXdDYWNoZS5wYXJhbGxlbFJvdXRlcy5nZXQoa2V5KVxuICAgIGlmIChleGlzdGluZ1BhcmFsbGVsUm91dGVzKSB7XG4gICAgICBleGlzdGluZ1BhcmFsbGVsUm91dGVzLnNldChjYWNoZUtleSwgbmV3Q2FjaGVOb2RlKVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdDYWNoZS5wYXJhbGxlbFJvdXRlcy5zZXQoa2V5LCBuZXcgTWFwKFtbY2FjaGVLZXksIG5ld0NhY2hlTm9kZV1dKSlcbiAgICB9XG5cbiAgICBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZChcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgbmV3Q2FjaGVOb2RlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgcGFyYWxsZWxSb3V0ZVN0YXRlLFxuICAgICAgcGFyYWxsZWxTZWVkRGF0YSxcbiAgICAgIGhlYWQsXG4gICAgICBwcmVmZXRjaEVudHJ5XG4gICAgKVxuICB9XG59XG4iXSwibmFtZXMiOlsiZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQiLCJuYXZpZ2F0ZWRBdCIsIm5ld0NhY2hlIiwiZXhpc3RpbmdDYWNoZSIsInJvdXRlclN0YXRlIiwiY2FjaGVOb2RlU2VlZERhdGEiLCJoZWFkIiwicHJlZmV0Y2hFbnRyeSIsImlzTGFzdFNlZ21lbnQiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwia2V5IiwicGFyYWxsZWxSb3V0ZVN0YXRlIiwic2VnbWVudEZvclBhcmFsbGVsUm91dGUiLCJjYWNoZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwicGFyYWxsZWxTZWVkRGF0YSIsInVuZGVmaW5lZCIsImV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUiLCJwYXJhbGxlbFJvdXRlcyIsImdldCIsImhhc1JldXNhYmxlUHJlZmV0Y2giLCJraW5kIiwic3RhdHVzIiwiUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzIiwicmV1c2FibGUiLCJwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlIiwiTWFwIiwiZXhpc3RpbmdDYWNoZU5vZGUiLCJuZXdDYWNoZU5vZGUiLCJzZWVkTm9kZSIsImxvYWRpbmciLCJsYXp5RGF0YSIsInJzYyIsInByZWZldGNoUnNjIiwicHJlZmV0Y2hIZWFkIiwic2V0IiwiZXhpc3RpbmdQYXJhbGxlbFJvdXRlcyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js": /*!**************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js ***! \**************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"handleMutable\", ({\n enumerable: true,\n get: function() {\n return handleMutable;\n }\n}));\nconst _computechangedpath = __webpack_require__(/*! ./compute-changed-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nfunction isNotUndefined(value) {\n return typeof value !== 'undefined';\n}\nfunction handleMutable(state, mutable) {\n var _mutable_shouldScroll;\n // shouldScroll is true by default, can override to false.\n const shouldScroll = (_mutable_shouldScroll = mutable.shouldScroll) != null ? _mutable_shouldScroll : true;\n let nextUrl = state.nextUrl;\n if (isNotUndefined(mutable.patchedTree)) {\n // If we received a patched tree, we need to compute the changed path.\n const changedPath = (0, _computechangedpath.computeChangedPath)(state.tree, mutable.patchedTree);\n if (changedPath) {\n // If the tree changed, we need to update the nextUrl\n nextUrl = changedPath;\n } else if (!nextUrl) {\n // if the tree ends up being the same (ie, no changed path), and we don't have a nextUrl, then we should use the canonicalUrl\n nextUrl = state.canonicalUrl;\n }\n // otherwise this will be a no-op and continue to use the existing nextUrl\n }\n var _mutable_scrollableSegments;\n return {\n // Set href.\n canonicalUrl: isNotUndefined(mutable.canonicalUrl) ? mutable.canonicalUrl === state.canonicalUrl ? state.canonicalUrl : mutable.canonicalUrl : state.canonicalUrl,\n pushRef: {\n pendingPush: isNotUndefined(mutable.pendingPush) ? mutable.pendingPush : state.pushRef.pendingPush,\n mpaNavigation: isNotUndefined(mutable.mpaNavigation) ? mutable.mpaNavigation : state.pushRef.mpaNavigation,\n preserveCustomHistoryState: isNotUndefined(mutable.preserveCustomHistoryState) ? mutable.preserveCustomHistoryState : state.pushRef.preserveCustomHistoryState\n },\n // All navigation requires scroll and focus management to trigger.\n focusAndScrollRef: {\n apply: shouldScroll ? isNotUndefined(mutable == null ? void 0 : mutable.scrollableSegments) ? true : state.focusAndScrollRef.apply : false,\n onlyHashChange: mutable.onlyHashChange || false,\n hashFragment: shouldScroll ? mutable.hashFragment && mutable.hashFragment !== '' ? decodeURIComponent(mutable.hashFragment.slice(1)) : state.focusAndScrollRef.hashFragment : null,\n segmentPaths: shouldScroll ? (_mutable_scrollableSegments = mutable == null ? void 0 : mutable.scrollableSegments) != null ? _mutable_scrollableSegments : state.focusAndScrollRef.segmentPaths : []\n },\n // Apply cache.\n cache: mutable.cache ? mutable.cache : state.cache,\n prefetchCache: mutable.prefetchCache ? mutable.prefetchCache : state.prefetchCache,\n // Apply patched router state.\n tree: isNotUndefined(mutable.patchedTree) ? mutable.patchedTree : state.tree,\n nextUrl\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=handle-mutable.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaGFuZGxlLW11dGFibGUuanMiLCJtYXBwaW5ncyI6Ijs7OztpREFXZ0JBOzs7ZUFBQUE7OztnREFYbUI7QUFPbkMsU0FBU0MsZUFBa0JDLEtBQVE7SUFDakMsT0FBTyxPQUFPQSxVQUFVO0FBQzFCO0FBRU8sU0FBU0YsY0FDZEcsS0FBMkIsRUFDM0JDLE9BQWdCO1FBR0tBO0lBRHJCLDBEQUEwRDtJQUMxRCxNQUFNQyxlQUFlRCxDQUFBQSx3QkFBQUEsUUFBUUMsWUFBQUEsS0FBWSxPQUFwQkQsd0JBQXdCO0lBRTdDLElBQUlFLFVBQVVILE1BQU1HLE9BQU87SUFFM0IsSUFBSUwsZUFBZUcsUUFBUUcsV0FBVyxHQUFHO1FBQ3ZDLHNFQUFzRTtRQUN0RSxNQUFNQyxjQUFjQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQUFBLEVBQW1CTixNQUFNTyxJQUFJLEVBQUVOLFFBQVFHLFdBQVc7UUFDdEUsSUFBSUMsYUFBYTtZQUNmLHFEQUFxRDtZQUNyREYsVUFBVUU7UUFDWixPQUFPLElBQUksQ0FBQ0YsU0FBUztZQUNuQiw2SEFBNkg7WUFDN0hBLFVBQVVILE1BQU1RLFlBQVk7UUFDOUI7SUFDQSwwRUFBMEU7SUFDNUU7UUF5Q1FQO0lBdkNSLE9BQU87UUFDTCxZQUFZO1FBQ1pPLGNBQWNWLGVBQWVHLFFBQVFPLFlBQVksSUFDN0NQLFFBQVFPLFlBQVksS0FBS1IsTUFBTVEsWUFBWSxHQUN6Q1IsTUFBTVEsWUFBWSxHQUNsQlAsUUFBUU8sWUFBWSxHQUN0QlIsTUFBTVEsWUFBWTtRQUN0QkMsU0FBUztZQUNQQyxhQUFhWixlQUFlRyxRQUFRUyxXQUFXLElBQzNDVCxRQUFRUyxXQUFXLEdBQ25CVixNQUFNUyxPQUFPLENBQUNDLFdBQVc7WUFDN0JDLGVBQWViLGVBQWVHLFFBQVFVLGFBQWEsSUFDL0NWLFFBQVFVLGFBQWEsR0FDckJYLE1BQU1TLE9BQU8sQ0FBQ0UsYUFBYTtZQUMvQkMsNEJBQTRCZCxlQUMxQkcsUUFBUVcsMEJBQTBCLElBRWhDWCxRQUFRVywwQkFBMEIsR0FDbENaLE1BQU1TLE9BQU8sQ0FBQ0csMEJBQTBCO1FBQzlDO1FBQ0Esa0VBQWtFO1FBQ2xFQyxtQkFBbUI7WUFDakJDLE9BQU9aLGVBQ0hKLGVBQWVHLFdBQUFBLE9BQUFBLEtBQUFBLElBQUFBLFFBQVNjLGtCQUFrQixJQUN4QyxPQUNBZixNQUFNYSxpQkFBaUIsQ0FBQ0MsS0FBSyxHQUUvQjtZQUNKRSxnQkFBZ0JmLFFBQVFlLGNBQWMsSUFBSTtZQUMxQ0MsY0FBY2YsZUFFVixRQUNRZSxZQUFZLElBQUloQixRQUFRZ0IsSUFESSxRQUNRLEtBQUssS0FFL0NDLG1CQUFtQmpCLFFBQVFnQixZQUFZLENBQUNFLEtBQUssQ0FBQyxNQUM5Q25CLE1BQU1hLGlCQUFpQixDQUFDSSxZQUFZLEdBRXRDO1lBQ0pHLGNBQWNsQixlQUNWRCxDQUFBQSw4QkFBQUEsV0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsUUFBU2Msa0JBQUFBLEtBQWtCLE9BQTNCZCw4QkFBK0JELE1BQU1hLGlCQUFpQixDQUFDTyxZQUFZLEdBRW5FLEVBQUU7UUFDUjtRQUNBLGVBQWU7UUFDZkMsT0FBT3BCLFFBQVFvQixLQUFLLEdBQUdwQixRQUFRb0IsS0FBSyxHQUFHckIsTUFBTXFCLEtBQUs7UUFDbERDLGVBQWVyQixRQUFRcUIsYUFBYSxHQUNoQ3JCLFFBQVFxQixhQUFhLEdBQ3JCdEIsTUFBTXNCLGFBQWE7UUFDdkIsOEJBQThCO1FBQzlCZixNQUFNVCxlQUFlRyxRQUFRRyxXQUFXLElBQ3BDSCxRQUFRRyxXQUFXLEdBQ25CSixNQUFNTyxJQUFJO1FBQ2RKO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2hhbmRsZS1tdXRhYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXB1dGVDaGFuZ2VkUGF0aCB9IGZyb20gJy4vY29tcHV0ZS1jaGFuZ2VkLXBhdGgnXG5pbXBvcnQgdHlwZSB7XG4gIE11dGFibGUsXG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbmZ1bmN0aW9uIGlzTm90VW5kZWZpbmVkPFQ+KHZhbHVlOiBUKTogdmFsdWUgaXMgRXhjbHVkZTxULCB1bmRlZmluZWQ+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSAhPT0gJ3VuZGVmaW5lZCdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZU11dGFibGUoXG4gIHN0YXRlOiBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgbXV0YWJsZTogTXV0YWJsZVxuKTogUmVkdWNlclN0YXRlIHtcbiAgLy8gc2hvdWxkU2Nyb2xsIGlzIHRydWUgYnkgZGVmYXVsdCwgY2FuIG92ZXJyaWRlIHRvIGZhbHNlLlxuICBjb25zdCBzaG91bGRTY3JvbGwgPSBtdXRhYmxlLnNob3VsZFNjcm9sbCA/PyB0cnVlXG5cbiAgbGV0IG5leHRVcmwgPSBzdGF0ZS5uZXh0VXJsXG5cbiAgaWYgKGlzTm90VW5kZWZpbmVkKG11dGFibGUucGF0Y2hlZFRyZWUpKSB7XG4gICAgLy8gSWYgd2UgcmVjZWl2ZWQgYSBwYXRjaGVkIHRyZWUsIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGUgY2hhbmdlZCBwYXRoLlxuICAgIGNvbnN0IGNoYW5nZWRQYXRoID0gY29tcHV0ZUNoYW5nZWRQYXRoKHN0YXRlLnRyZWUsIG11dGFibGUucGF0Y2hlZFRyZWUpXG4gICAgaWYgKGNoYW5nZWRQYXRoKSB7XG4gICAgICAvLyBJZiB0aGUgdHJlZSBjaGFuZ2VkLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbmV4dFVybFxuICAgICAgbmV4dFVybCA9IGNoYW5nZWRQYXRoXG4gICAgfSBlbHNlIGlmICghbmV4dFVybCkge1xuICAgICAgLy8gaWYgdGhlIHRyZWUgZW5kcyB1cCBiZWluZyB0aGUgc2FtZSAoaWUsIG5vIGNoYW5nZWQgcGF0aCksIGFuZCB3ZSBkb24ndCBoYXZlIGEgbmV4dFVybCwgdGhlbiB3ZSBzaG91bGQgdXNlIHRoZSBjYW5vbmljYWxVcmxcbiAgICAgIG5leHRVcmwgPSBzdGF0ZS5jYW5vbmljYWxVcmxcbiAgICB9XG4gICAgLy8gb3RoZXJ3aXNlIHRoaXMgd2lsbCBiZSBhIG5vLW9wIGFuZCBjb250aW51ZSB0byB1c2UgdGhlIGV4aXN0aW5nIG5leHRVcmxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gU2V0IGhyZWYuXG4gICAgY2Fub25pY2FsVXJsOiBpc05vdFVuZGVmaW5lZChtdXRhYmxlLmNhbm9uaWNhbFVybClcbiAgICAgID8gbXV0YWJsZS5jYW5vbmljYWxVcmwgPT09IHN0YXRlLmNhbm9uaWNhbFVybFxuICAgICAgICA/IHN0YXRlLmNhbm9uaWNhbFVybFxuICAgICAgICA6IG11dGFibGUuY2Fub25pY2FsVXJsXG4gICAgICA6IHN0YXRlLmNhbm9uaWNhbFVybCxcbiAgICBwdXNoUmVmOiB7XG4gICAgICBwZW5kaW5nUHVzaDogaXNOb3RVbmRlZmluZWQobXV0YWJsZS5wZW5kaW5nUHVzaClcbiAgICAgICAgPyBtdXRhYmxlLnBlbmRpbmdQdXNoXG4gICAgICAgIDogc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaCxcbiAgICAgIG1wYU5hdmlnYXRpb246IGlzTm90VW5kZWZpbmVkKG11dGFibGUubXBhTmF2aWdhdGlvbilcbiAgICAgICAgPyBtdXRhYmxlLm1wYU5hdmlnYXRpb25cbiAgICAgICAgOiBzdGF0ZS5wdXNoUmVmLm1wYU5hdmlnYXRpb24sXG4gICAgICBwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTogaXNOb3RVbmRlZmluZWQoXG4gICAgICAgIG11dGFibGUucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGVcbiAgICAgIClcbiAgICAgICAgPyBtdXRhYmxlLnByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlXG4gICAgICAgIDogc3RhdGUucHVzaFJlZi5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSxcbiAgICB9LFxuICAgIC8vIEFsbCBuYXZpZ2F0aW9uIHJlcXVpcmVzIHNjcm9sbCBhbmQgZm9jdXMgbWFuYWdlbWVudCB0byB0cmlnZ2VyLlxuICAgIGZvY3VzQW5kU2Nyb2xsUmVmOiB7XG4gICAgICBhcHBseTogc2hvdWxkU2Nyb2xsXG4gICAgICAgID8gaXNOb3RVbmRlZmluZWQobXV0YWJsZT8uc2Nyb2xsYWJsZVNlZ21lbnRzKVxuICAgICAgICAgID8gdHJ1ZVxuICAgICAgICAgIDogc3RhdGUuZm9jdXNBbmRTY3JvbGxSZWYuYXBwbHlcbiAgICAgICAgOiAvLyBJZiBzaG91bGRTY3JvbGwgaXMgZmFsc2UgdGhlbiB3ZSBzaG91bGQgbm90IGFwcGx5IHNjcm9sbCBhbmQgZm9jdXMgbWFuYWdlbWVudC5cbiAgICAgICAgICBmYWxzZSxcbiAgICAgIG9ubHlIYXNoQ2hhbmdlOiBtdXRhYmxlLm9ubHlIYXNoQ2hhbmdlIHx8IGZhbHNlLFxuICAgICAgaGFzaEZyYWdtZW50OiBzaG91bGRTY3JvbGxcbiAgICAgICAgPyAvLyBFbXB0eSBoYXNoIHNob3VsZCB0cmlnZ2VyIGRlZmF1bHQgYmVoYXZpb3Igb2Ygc2Nyb2xsaW5nIGxheW91dCBpbnRvIHZpZXcuXG4gICAgICAgICAgLy8gI3RvcCBpcyBoYW5kbGVkIGluIGxheW91dC1yb3V0ZXIuXG4gICAgICAgICAgbXV0YWJsZS5oYXNoRnJhZ21lbnQgJiYgbXV0YWJsZS5oYXNoRnJhZ21lbnQgIT09ICcnXG4gICAgICAgICAgPyAvLyBSZW1vdmUgbGVhZGluZyAjIGFuZCBkZWNvZGUgaGFzaCB0byBtYWtlIG5vbi1sYXRpbiBoYXNoZXMgd29yay5cbiAgICAgICAgICAgIGRlY29kZVVSSUNvbXBvbmVudChtdXRhYmxlLmhhc2hGcmFnbWVudC5zbGljZSgxKSlcbiAgICAgICAgICA6IHN0YXRlLmZvY3VzQW5kU2Nyb2xsUmVmLmhhc2hGcmFnbWVudFxuICAgICAgICA6IC8vIElmIHNob3VsZFNjcm9sbCBpcyBmYWxzZSB0aGVuIHdlIHNob3VsZCBub3QgYXBwbHkgc2Nyb2xsIGFuZCBmb2N1cyBtYW5hZ2VtZW50LlxuICAgICAgICAgIG51bGwsXG4gICAgICBzZWdtZW50UGF0aHM6IHNob3VsZFNjcm9sbFxuICAgICAgICA/IG11dGFibGU/LnNjcm9sbGFibGVTZWdtZW50cyA/PyBzdGF0ZS5mb2N1c0FuZFNjcm9sbFJlZi5zZWdtZW50UGF0aHNcbiAgICAgICAgOiAvLyBJZiBzaG91bGRTY3JvbGwgaXMgZmFsc2UgdGhlbiB3ZSBzaG91bGQgbm90IGFwcGx5IHNjcm9sbCBhbmQgZm9jdXMgbWFuYWdlbWVudC5cbiAgICAgICAgICBbXSxcbiAgICB9LFxuICAgIC8vIEFwcGx5IGNhY2hlLlxuICAgIGNhY2hlOiBtdXRhYmxlLmNhY2hlID8gbXV0YWJsZS5jYWNoZSA6IHN0YXRlLmNhY2hlLFxuICAgIHByZWZldGNoQ2FjaGU6IG11dGFibGUucHJlZmV0Y2hDYWNoZVxuICAgICAgPyBtdXRhYmxlLnByZWZldGNoQ2FjaGVcbiAgICAgIDogc3RhdGUucHJlZmV0Y2hDYWNoZSxcbiAgICAvLyBBcHBseSBwYXRjaGVkIHJvdXRlciBzdGF0ZS5cbiAgICB0cmVlOiBpc05vdFVuZGVmaW5lZChtdXRhYmxlLnBhdGNoZWRUcmVlKVxuICAgICAgPyBtdXRhYmxlLnBhdGNoZWRUcmVlXG4gICAgICA6IHN0YXRlLnRyZWUsXG4gICAgbmV4dFVybCxcbiAgfVxufVxuIl0sIm5hbWVzIjpbImhhbmRsZU11dGFibGUiLCJpc05vdFVuZGVmaW5lZCIsInZhbHVlIiwic3RhdGUiLCJtdXRhYmxlIiwic2hvdWxkU2Nyb2xsIiwibmV4dFVybCIsInBhdGNoZWRUcmVlIiwiY2hhbmdlZFBhdGgiLCJjb21wdXRlQ2hhbmdlZFBhdGgiLCJ0cmVlIiwiY2Fub25pY2FsVXJsIiwicHVzaFJlZiIsInBlbmRpbmdQdXNoIiwibXBhTmF2aWdhdGlvbiIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiZm9jdXNBbmRTY3JvbGxSZWYiLCJhcHBseSIsInNjcm9sbGFibGVTZWdtZW50cyIsIm9ubHlIYXNoQ2hhbmdlIiwiaGFzaEZyYWdtZW50IiwiZGVjb2RlVVJJQ29tcG9uZW50Iiwic2xpY2UiLCJzZWdtZW50UGF0aHMiLCJjYWNoZSIsInByZWZldGNoQ2FjaGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js": /*!***********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js ***! \***********************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"handleSegmentMismatch\", ({\n enumerable: true,\n get: function() {\n return handleSegmentMismatch;\n }\n}));\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nfunction handleSegmentMismatch(state, action, treePatch) {\n if (true) {\n console.warn('Performing hard navigation because your application experienced an unrecoverable error. If this keeps occurring, please file a Next.js issue.\\n\\n' + 'Reason: Segment mismatch\\n' + (\"Last Action: \" + action.type + \"\\n\\n\") + (\"Current Tree: \" + JSON.stringify(state.tree) + \"\\n\\n\") + (\"Tree Patch Payload: \" + JSON.stringify(treePatch)));\n }\n return (0, _navigatereducer.handleExternalUrl)(state, {}, state.canonicalUrl, true);\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=handle-segment-mismatch.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaGFuZGxlLXNlZ21lbnQtbWlzbWF0Y2guanMiLCJtYXBwaW5ncyI6Ijs7Ozt5REFXZ0JBOzs7ZUFBQUE7Ozs2Q0FWa0I7QUFVM0IsU0FBU0Esc0JBQ2RDLEtBQTJCLEVBQzNCQyxNQUFzQixFQUN0QkMsU0FBNEI7SUFFNUIsSUFBSUMsSUFBb0IsRUFBb0I7UUFDMUNHLFFBQVFDLElBQUksQ0FDVixzSkFDRSwrQkFDQSxDQUFDLGtCQUFlTixPQUFPTyxJQUFJLEdBQUMsT0FBSSxJQUNoQyxtQkFBaUJDLEtBQUtDLFNBQVMsQ0FBQ1YsTUFBTVcsSUFBSSxJQUFFLE9BQUksSUFDaEQseUJBQXVCRixLQUFLQyxTQUFTLENBQUNSLFVBQUFBLENBQVc7SUFFdkQ7SUFFQSxPQUFPVSxDQUFBQSxHQUFBQSxpQkFBQUEsaUJBQUFBLEVBQWtCWixPQUFPLENBQUMsR0FBR0EsTUFBTWEsWUFBWSxFQUFFO0FBQzFEIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaGFuZGxlLXNlZ21lbnQtbWlzbWF0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgaGFuZGxlRXh0ZXJuYWxVcmwgfSBmcm9tICcuL3JlZHVjZXJzL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgdHlwZSB7XG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBSZWR1Y2VyQWN0aW9ucyxcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci10eXBlcydcblxuLyoqXG4gKiBIYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBjbGllbnQgcm91dGVyIGF0dGVtcHRlZCB0byBwYXRjaCB0aGUgdHJlZSBidXQsIGR1ZSB0byBhIG1pc21hdGNoLCB0aGUgcGF0Y2ggZmFpbGVkLlxuICogVGhpcyB3aWxsIHBlcmZvcm0gYW4gTVBBIG5hdmlnYXRpb24gdG8gcmV0dXJuIHRoZSByb3V0ZXIgdG8gYSB2YWxpZCBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVNlZ21lbnRNaXNtYXRjaChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFJlZHVjZXJBY3Rpb25zLFxuICB0cmVlUGF0Y2g6IEZsaWdodFJvdXRlclN0YXRlXG4pIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgJ1BlcmZvcm1pbmcgaGFyZCBuYXZpZ2F0aW9uIGJlY2F1c2UgeW91ciBhcHBsaWNhdGlvbiBleHBlcmllbmNlZCBhbiB1bnJlY292ZXJhYmxlIGVycm9yLiBJZiB0aGlzIGtlZXBzIG9jY3VycmluZywgcGxlYXNlIGZpbGUgYSBOZXh0LmpzIGlzc3VlLlxcblxcbicgK1xuICAgICAgICAnUmVhc29uOiBTZWdtZW50IG1pc21hdGNoXFxuJyArXG4gICAgICAgIGBMYXN0IEFjdGlvbjogJHthY3Rpb24udHlwZX1cXG5cXG5gICtcbiAgICAgICAgYEN1cnJlbnQgVHJlZTogJHtKU09OLnN0cmluZ2lmeShzdGF0ZS50cmVlKX1cXG5cXG5gICtcbiAgICAgICAgYFRyZWUgUGF0Y2ggUGF5bG9hZDogJHtKU09OLnN0cmluZ2lmeSh0cmVlUGF0Y2gpfWBcbiAgICApXG4gIH1cblxuICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoc3RhdGUsIHt9LCBzdGF0ZS5jYW5vbmljYWxVcmwsIHRydWUpXG59XG4iXSwibmFtZXMiOlsiaGFuZGxlU2VnbWVudE1pc21hdGNoIiwic3RhdGUiLCJhY3Rpb24iLCJ0cmVlUGF0Y2giLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIiwid2FybiIsInR5cGUiLCJKU09OIiwic3RyaW5naWZ5IiwidHJlZSIsImhhbmRsZUV4dGVybmFsVXJsIiwiY2Fub25pY2FsVXJsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js": /*!*****************************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js ***! \*****************************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"invalidateCacheBelowFlightSegmentPath\", ({\n enumerable: true,\n get: function() {\n return invalidateCacheBelowFlightSegmentPath;\n }\n}));\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nfunction invalidateCacheBelowFlightSegmentPath(newCache, existingCache, flightSegmentPath) {\n const isLastEntry = flightSegmentPath.length <= 2;\n const [parallelRouteKey, segment] = flightSegmentPath;\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const existingChildSegmentMap = existingCache.parallelRoutes.get(parallelRouteKey);\n if (!existingChildSegmentMap) {\n // Bailout because the existing cache does not have the path to the leaf node\n // Will trigger lazy fetch in layout-router because of missing segment\n return;\n }\n let childSegmentMap = newCache.parallelRoutes.get(parallelRouteKey);\n if (!childSegmentMap || childSegmentMap === existingChildSegmentMap) {\n childSegmentMap = new Map(existingChildSegmentMap);\n newCache.parallelRoutes.set(parallelRouteKey, childSegmentMap);\n }\n // In case of last entry don't copy further down.\n if (isLastEntry) {\n childSegmentMap.delete(cacheKey);\n return;\n }\n const existingChildCacheNode = existingChildSegmentMap.get(cacheKey);\n let childCacheNode = childSegmentMap.get(cacheKey);\n if (!childCacheNode || !existingChildCacheNode) {\n // Bailout because the existing cache does not have the path to the leaf node\n // Will trigger lazy fetch in layout-router because of missing segment\n return;\n }\n if (childCacheNode === existingChildCacheNode) {\n childCacheNode = {\n lazyData: childCacheNode.lazyData,\n rsc: childCacheNode.rsc,\n prefetchRsc: childCacheNode.prefetchRsc,\n head: childCacheNode.head,\n prefetchHead: childCacheNode.prefetchHead,\n parallelRoutes: new Map(childCacheNode.parallelRoutes)\n };\n childSegmentMap.set(cacheKey, childCacheNode);\n }\n invalidateCacheBelowFlightSegmentPath(childCacheNode, existingChildCacheNode, (0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath));\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=invalidate-cache-below-flight-segmentpath.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaW52YWxpZGF0ZS1jYWNoZS1iZWxvdy1mbGlnaHQtc2VnbWVudHBhdGguanMiLCJtYXBwaW5ncyI6Ijs7Ozt5RUFRZ0JBOzs7ZUFBQUE7OztrREFOcUI7K0NBQ0k7QUFLbEMsU0FBU0Esc0NBQ2RDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsaUJBQW9DO0lBRXBDLE1BQU1DLGNBQWNELGtCQUFrQkUsTUFBTSxJQUFJO0lBQ2hELE1BQU0sQ0FBQ0Msa0JBQWtCQyxRQUFRLEdBQUdKO0lBRXBDLE1BQU1LLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJGO0lBRXRDLE1BQU1HLDBCQUNKUixjQUFjUyxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFFbkMsSUFBSSxDQUFDSSx5QkFBeUI7UUFDNUIsNkVBQTZFO1FBQzdFLHNFQUFzRTtRQUN0RTtJQUNGO0lBRUEsSUFBSUcsa0JBQWtCWixTQUFTVSxjQUFjLENBQUNDLEdBQUcsQ0FBQ047SUFDbEQsSUFBSSxDQUFDTyxtQkFBbUJBLG9CQUFvQkgseUJBQXlCO1FBQ25FRyxrQkFBa0IsSUFBSUMsSUFBSUo7UUFDMUJULFNBQVNVLGNBQWMsQ0FBQ0ksR0FBRyxDQUFDVCxrQkFBa0JPO0lBQ2hEO0lBRUEsaURBQWlEO0lBQ2pELElBQUlULGFBQWE7UUFDZlMsZ0JBQWdCRyxNQUFNLENBQUNSO1FBQ3ZCO0lBQ0Y7SUFFQSxNQUFNUyx5QkFBeUJQLHdCQUF3QkUsR0FBRyxDQUFDSjtJQUMzRCxJQUFJVSxpQkFBaUJMLGdCQUFnQkQsR0FBRyxDQUFDSjtJQUV6QyxJQUFJLENBQUNVLGtCQUFrQixDQUFDRCx3QkFBd0I7UUFDOUMsNkVBQTZFO1FBQzdFLHNFQUFzRTtRQUN0RTtJQUNGO0lBRUEsSUFBSUMsbUJBQW1CRCx3QkFBd0I7UUFDN0NDLGlCQUFpQjtZQUNmQyxVQUFVRCxlQUFlQyxRQUFRO1lBQ2pDQyxLQUFLRixlQUFlRSxHQUFHO1lBQ3ZCQyxhQUFhSCxlQUFlRyxXQUFXO1lBQ3ZDQyxNQUFNSixlQUFlSSxJQUFJO1lBQ3pCQyxjQUFjTCxlQUFlSyxZQUFZO1lBQ3pDWixnQkFBZ0IsSUFBSUcsSUFBSUksZUFBZVAsY0FBYztRQUN2RDtRQUNBRSxnQkFBZ0JFLEdBQUcsQ0FBQ1AsVUFBVVU7SUFDaEM7SUFFQWxCLHNDQUNFa0IsZ0JBQ0FELHdCQUNBTyxDQUFBQSxHQUFBQSxtQkFBQUEsd0JBQUFBLEVBQXlCckI7QUFFN0IiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9pbnZhbGlkYXRlLWNhY2hlLWJlbG93LWZsaWdodC1zZWdtZW50cGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENhY2hlTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvYXBwLXJvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lJ1xuaW1wb3J0IHR5cGUgeyBGbGlnaHRTZWdtZW50UGF0aCB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuL2NyZWF0ZS1yb3V0ZXItY2FjaGUta2V5J1xuaW1wb3J0IHsgZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIH0gZnJvbSAnLi4vLi4vZmxpZ2h0LWRhdGEtaGVscGVycydcblxuLyoqXG4gKiBGaWxsIGNhY2hlIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGZsaWdodFNlZ21lbnRQYXRoLCBpbnZhbGlkYXRpbmcgYW55dGhpbmcgYmVsb3cgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnZhbGlkYXRlQ2FjaGVCZWxvd0ZsaWdodFNlZ21lbnRQYXRoKFxuICBuZXdDYWNoZTogQ2FjaGVOb2RlLFxuICBleGlzdGluZ0NhY2hlOiBDYWNoZU5vZGUsXG4gIGZsaWdodFNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aFxuKTogdm9pZCB7XG4gIGNvbnN0IGlzTGFzdEVudHJ5ID0gZmxpZ2h0U2VnbWVudFBhdGgubGVuZ3RoIDw9IDJcbiAgY29uc3QgW3BhcmFsbGVsUm91dGVLZXksIHNlZ21lbnRdID0gZmxpZ2h0U2VnbWVudFBhdGhcblxuICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnQpXG5cbiAgY29uc3QgZXhpc3RpbmdDaGlsZFNlZ21lbnRNYXAgPVxuICAgIGV4aXN0aW5nQ2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG5cbiAgaWYgKCFleGlzdGluZ0NoaWxkU2VnbWVudE1hcCkge1xuICAgIC8vIEJhaWxvdXQgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGUgZG9lcyBub3QgaGF2ZSB0aGUgcGF0aCB0byB0aGUgbGVhZiBub2RlXG4gICAgLy8gV2lsbCB0cmlnZ2VyIGxhenkgZmV0Y2ggaW4gbGF5b3V0LXJvdXRlciBiZWNhdXNlIG9mIG1pc3Npbmcgc2VnbWVudFxuICAgIHJldHVyblxuICB9XG5cbiAgbGV0IGNoaWxkU2VnbWVudE1hcCA9IG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICBpZiAoIWNoaWxkU2VnbWVudE1hcCB8fCBjaGlsZFNlZ21lbnRNYXAgPT09IGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwKSB7XG4gICAgY2hpbGRTZWdtZW50TWFwID0gbmV3IE1hcChleGlzdGluZ0NoaWxkU2VnbWVudE1hcClcbiAgICBuZXdDYWNoZS5wYXJhbGxlbFJvdXRlcy5zZXQocGFyYWxsZWxSb3V0ZUtleSwgY2hpbGRTZWdtZW50TWFwKVxuICB9XG5cbiAgLy8gSW4gY2FzZSBvZiBsYXN0IGVudHJ5IGRvbid0IGNvcHkgZnVydGhlciBkb3duLlxuICBpZiAoaXNMYXN0RW50cnkpIHtcbiAgICBjaGlsZFNlZ21lbnRNYXAuZGVsZXRlKGNhY2hlS2V5KVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgZXhpc3RpbmdDaGlsZENhY2hlTm9kZSA9IGV4aXN0aW5nQ2hpbGRTZWdtZW50TWFwLmdldChjYWNoZUtleSlcbiAgbGV0IGNoaWxkQ2FjaGVOb2RlID0gY2hpbGRTZWdtZW50TWFwLmdldChjYWNoZUtleSlcblxuICBpZiAoIWNoaWxkQ2FjaGVOb2RlIHx8ICFleGlzdGluZ0NoaWxkQ2FjaGVOb2RlKSB7XG4gICAgLy8gQmFpbG91dCBiZWNhdXNlIHRoZSBleGlzdGluZyBjYWNoZSBkb2VzIG5vdCBoYXZlIHRoZSBwYXRoIHRvIHRoZSBsZWFmIG5vZGVcbiAgICAvLyBXaWxsIHRyaWdnZXIgbGF6eSBmZXRjaCBpbiBsYXlvdXQtcm91dGVyIGJlY2F1c2Ugb2YgbWlzc2luZyBzZWdtZW50XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoY2hpbGRDYWNoZU5vZGUgPT09IGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUpIHtcbiAgICBjaGlsZENhY2hlTm9kZSA9IHtcbiAgICAgIGxhenlEYXRhOiBjaGlsZENhY2hlTm9kZS5sYXp5RGF0YSxcbiAgICAgIHJzYzogY2hpbGRDYWNoZU5vZGUucnNjLFxuICAgICAgcHJlZmV0Y2hSc2M6IGNoaWxkQ2FjaGVOb2RlLnByZWZldGNoUnNjLFxuICAgICAgaGVhZDogY2hpbGRDYWNoZU5vZGUuaGVhZCxcbiAgICAgIHByZWZldGNoSGVhZDogY2hpbGRDYWNoZU5vZGUucHJlZmV0Y2hIZWFkLFxuICAgICAgcGFyYWxsZWxSb3V0ZXM6IG5ldyBNYXAoY2hpbGRDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXMpLFxuICAgIH0gYXMgQ2FjaGVOb2RlXG4gICAgY2hpbGRTZWdtZW50TWFwLnNldChjYWNoZUtleSwgY2hpbGRDYWNoZU5vZGUpXG4gIH1cblxuICBpbnZhbGlkYXRlQ2FjaGVCZWxvd0ZsaWdodFNlZ21lbnRQYXRoKFxuICAgIGNoaWxkQ2FjaGVOb2RlLFxuICAgIGV4aXN0aW5nQ2hpbGRDYWNoZU5vZGUsXG4gICAgZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoKGZsaWdodFNlZ21lbnRQYXRoKVxuICApXG59XG4iXSwibmFtZXMiOlsiaW52YWxpZGF0ZUNhY2hlQmVsb3dGbGlnaHRTZWdtZW50UGF0aCIsIm5ld0NhY2hlIiwiZXhpc3RpbmdDYWNoZSIsImZsaWdodFNlZ21lbnRQYXRoIiwiaXNMYXN0RW50cnkiLCJsZW5ndGgiLCJwYXJhbGxlbFJvdXRlS2V5Iiwic2VnbWVudCIsImNhY2hlS2V5IiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJleGlzdGluZ0NoaWxkU2VnbWVudE1hcCIsInBhcmFsbGVsUm91dGVzIiwiZ2V0IiwiY2hpbGRTZWdtZW50TWFwIiwiTWFwIiwic2V0IiwiZGVsZXRlIiwiZXhpc3RpbmdDaGlsZENhY2hlTm9kZSIsImNoaWxkQ2FjaGVOb2RlIiwibGF6eURhdGEiLCJyc2MiLCJwcmVmZXRjaFJzYyIsImhlYWQiLCJwcmVmZXRjaEhlYWQiLCJnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js": /*!********************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js ***! \********************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"invalidateCacheByRouterState\", ({\n enumerable: true,\n get: function() {\n return invalidateCacheByRouterState;\n }\n}));\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nfunction invalidateCacheByRouterState(newCache, existingCache, routerState) {\n // Remove segment that we got data for so that it is filled in during rendering of rsc.\n for(const key in routerState[1]){\n const segmentForParallelRoute = routerState[1][key][0];\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segmentForParallelRoute);\n const existingParallelRoutesCacheNode = existingCache.parallelRoutes.get(key);\n if (existingParallelRoutesCacheNode) {\n let parallelRouteCacheNode = new Map(existingParallelRoutesCacheNode);\n parallelRouteCacheNode.delete(cacheKey);\n newCache.parallelRoutes.set(key, parallelRouteCacheNode);\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=invalidate-cache-by-router-state.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaW52YWxpZGF0ZS1jYWNoZS1ieS1yb3V0ZXItc3RhdGUuanMiLCJtYXBwaW5ncyI6Ijs7OztnRUFPZ0JBOzs7ZUFBQUE7OztrREFMcUI7QUFLOUIsU0FBU0EsNkJBQ2RDLFFBQW1CLEVBQ25CQyxhQUF3QixFQUN4QkMsV0FBOEI7SUFFOUIsdUZBQXVGO0lBQ3ZGLElBQUssTUFBTUMsT0FBT0QsV0FBVyxDQUFDLEVBQUUsQ0FBRTtRQUNoQyxNQUFNRSwwQkFBMEJGLFdBQVcsQ0FBQyxFQUFFLENBQUNDLElBQUksQ0FBQyxFQUFFO1FBQ3RELE1BQU1FLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJGO1FBQ3RDLE1BQU1HLGtDQUNKTixjQUFjTyxjQUFjLENBQUNDLEdBQUcsQ0FBQ047UUFDbkMsSUFBSUksaUNBQWlDO1lBQ25DLElBQUlHLHlCQUF5QixJQUFJQyxJQUFJSjtZQUNyQ0csdUJBQXVCRSxNQUFNLENBQUNQO1lBQzlCTCxTQUFTUSxjQUFjLENBQUNLLEdBQUcsQ0FBQ1YsS0FBS087UUFDbkM7SUFDRjtBQUNGIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaW52YWxpZGF0ZS1jYWNoZS1ieS1yb3V0ZXItc3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcblxuLyoqXG4gKiBJbnZhbGlkYXRlIGNhY2hlIG9uZSBsZXZlbCBkb3duIGZyb20gdGhlIHJvdXRlciBzdGF0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGludmFsaWRhdGVDYWNoZUJ5Um91dGVyU3RhdGUoXG4gIG5ld0NhY2hlOiBDYWNoZU5vZGUsXG4gIGV4aXN0aW5nQ2FjaGU6IENhY2hlTm9kZSxcbiAgcm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlXG4pOiB2b2lkIHtcbiAgLy8gUmVtb3ZlIHNlZ21lbnQgdGhhdCB3ZSBnb3QgZGF0YSBmb3Igc28gdGhhdCBpdCBpcyBmaWxsZWQgaW4gZHVyaW5nIHJlbmRlcmluZyBvZiByc2MuXG4gIGZvciAoY29uc3Qga2V5IGluIHJvdXRlclN0YXRlWzFdKSB7XG4gICAgY29uc3Qgc2VnbWVudEZvclBhcmFsbGVsUm91dGUgPSByb3V0ZXJTdGF0ZVsxXVtrZXldWzBdXG4gICAgY29uc3QgY2FjaGVLZXkgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShzZWdtZW50Rm9yUGFyYWxsZWxSb3V0ZSlcbiAgICBjb25zdCBleGlzdGluZ1BhcmFsbGVsUm91dGVzQ2FjaGVOb2RlID1cbiAgICAgIGV4aXN0aW5nQ2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KGtleSlcbiAgICBpZiAoZXhpc3RpbmdQYXJhbGxlbFJvdXRlc0NhY2hlTm9kZSkge1xuICAgICAgbGV0IHBhcmFsbGVsUm91dGVDYWNoZU5vZGUgPSBuZXcgTWFwKGV4aXN0aW5nUGFyYWxsZWxSb3V0ZXNDYWNoZU5vZGUpXG4gICAgICBwYXJhbGxlbFJvdXRlQ2FjaGVOb2RlLmRlbGV0ZShjYWNoZUtleSlcbiAgICAgIG5ld0NhY2hlLnBhcmFsbGVsUm91dGVzLnNldChrZXksIHBhcmFsbGVsUm91dGVDYWNoZU5vZGUpXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiaW52YWxpZGF0ZUNhY2hlQnlSb3V0ZXJTdGF0ZSIsIm5ld0NhY2hlIiwiZXhpc3RpbmdDYWNoZSIsInJvdXRlclN0YXRlIiwia2V5Iiwic2VnbWVudEZvclBhcmFsbGVsUm91dGUiLCJjYWNoZUtleSIsImNyZWF0ZVJvdXRlckNhY2hlS2V5IiwiZXhpc3RpbmdQYXJhbGxlbFJvdXRlc0NhY2hlTm9kZSIsInBhcmFsbGVsUm91dGVzIiwiZ2V0IiwicGFyYWxsZWxSb3V0ZUNhY2hlTm9kZSIsIk1hcCIsImRlbGV0ZSIsInNldCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js": /*!********************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js ***! \********************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"isNavigatingToNewRootLayout\", ({\n enumerable: true,\n get: function() {\n return isNavigatingToNewRootLayout;\n }\n}));\nfunction isNavigatingToNewRootLayout(currentTree, nextTree) {\n // Compare segments\n const currentTreeSegment = currentTree[0];\n const nextTreeSegment = nextTree[0];\n // If any segment is different before we find the root layout, the root layout has changed.\n // E.g. /same/(group1)/layout.js -> /same/(group2)/layout.js\n // First segment is 'same' for both, keep looking. (group1) changed to (group2) before the root layout was found, it must have changed.\n if (Array.isArray(currentTreeSegment) && Array.isArray(nextTreeSegment)) {\n // Compare dynamic param name and type but ignore the value, different values would not affect the current root layout\n // /[name] - /slug1 and /slug2, both values (slug1 & slug2) still has the same layout /[name]/layout.js\n if (currentTreeSegment[0] !== nextTreeSegment[0] || currentTreeSegment[2] !== nextTreeSegment[2]) {\n return true;\n }\n } else if (currentTreeSegment !== nextTreeSegment) {\n return true;\n }\n // Current tree root layout found\n if (currentTree[4]) {\n // If the next tree doesn't have the root layout flag, it must have changed.\n return !nextTree[4];\n }\n // Current tree didn't have its root layout here, must have changed.\n if (nextTree[4]) {\n return true;\n }\n // We can't assume it's `parallelRoutes.children` here in case the root layout is `app/@something/layout.js`\n // But it's not possible to be more than one parallelRoutes before the root layout is found\n // TODO-APP: change to traverse all parallel routes\n const currentTreeChild = Object.values(currentTree[1])[0];\n const nextTreeChild = Object.values(nextTree[1])[0];\n if (!currentTreeChild || !nextTreeChild) return true;\n return isNavigatingToNewRootLayout(currentTreeChild, nextTreeChild);\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=is-navigating-to-new-root-layout.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQuanMiLCJtYXBwaW5ncyI6Ijs7OzsrREFFZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLDRCQUNkQyxXQUE4QixFQUM5QkMsUUFBMkI7SUFFM0IsbUJBQW1CO0lBQ25CLE1BQU1DLHFCQUFxQkYsV0FBVyxDQUFDLEVBQUU7SUFDekMsTUFBTUcsa0JBQWtCRixRQUFRLENBQUMsRUFBRTtJQUVuQywyRkFBMkY7SUFDM0YsNERBQTREO0lBQzVELHVJQUF1STtJQUN2SSxJQUFJRyxNQUFNQyxPQUFPLENBQUNILHVCQUF1QkUsTUFBTUMsT0FBTyxDQUFDRixrQkFBa0I7UUFDdkUsc0hBQXNIO1FBQ3RILHVHQUF1RztRQUN2RyxJQUNFRCxrQkFBa0IsQ0FBQyxFQUFFLEtBQUtDLGVBQWUsQ0FBQyxFQUFFLElBQzVDRCxrQkFBa0IsQ0FBQyxFQUFFLEtBQUtDLGVBQWUsQ0FBQyxFQUFFLEVBQzVDO1lBQ0EsT0FBTztRQUNUO0lBQ0YsT0FBTyxJQUFJRCx1QkFBdUJDLGlCQUFpQjtRQUNqRCxPQUFPO0lBQ1Q7SUFFQSxpQ0FBaUM7SUFDakMsSUFBSUgsV0FBVyxDQUFDLEVBQUUsRUFBRTtRQUNsQiw0RUFBNEU7UUFDNUUsT0FBTyxDQUFDQyxRQUFRLENBQUMsRUFBRTtJQUNyQjtJQUNBLG9FQUFvRTtJQUNwRSxJQUFJQSxRQUFRLENBQUMsRUFBRSxFQUFFO1FBQ2YsT0FBTztJQUNUO0lBQ0EsNEdBQTRHO0lBQzVHLDJGQUEyRjtJQUMzRixtREFBbUQ7SUFDbkQsTUFBTUssbUJBQW1CQyxPQUFPQyxNQUFNLENBQUNSLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pELE1BQU1TLGdCQUFnQkYsT0FBT0MsTUFBTSxDQUFDUCxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNuRCxJQUFJLENBQUNLLG9CQUFvQixDQUFDRyxlQUFlLE9BQU87SUFDaEQsT0FBT1YsNEJBQTRCTyxrQkFBa0JHO0FBQ3ZEIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGbGlnaHRSb3V0ZXJTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KFxuICBjdXJyZW50VHJlZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIG5leHRUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuKTogYm9vbGVhbiB7XG4gIC8vIENvbXBhcmUgc2VnbWVudHNcbiAgY29uc3QgY3VycmVudFRyZWVTZWdtZW50ID0gY3VycmVudFRyZWVbMF1cbiAgY29uc3QgbmV4dFRyZWVTZWdtZW50ID0gbmV4dFRyZWVbMF1cblxuICAvLyBJZiBhbnkgc2VnbWVudCBpcyBkaWZmZXJlbnQgYmVmb3JlIHdlIGZpbmQgdGhlIHJvb3QgbGF5b3V0LCB0aGUgcm9vdCBsYXlvdXQgaGFzIGNoYW5nZWQuXG4gIC8vIEUuZy4gL3NhbWUvKGdyb3VwMSkvbGF5b3V0LmpzIC0+IC9zYW1lLyhncm91cDIpL2xheW91dC5qc1xuICAvLyBGaXJzdCBzZWdtZW50IGlzICdzYW1lJyBmb3IgYm90aCwga2VlcCBsb29raW5nLiAoZ3JvdXAxKSBjaGFuZ2VkIHRvIChncm91cDIpIGJlZm9yZSB0aGUgcm9vdCBsYXlvdXQgd2FzIGZvdW5kLCBpdCBtdXN0IGhhdmUgY2hhbmdlZC5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFRyZWVTZWdtZW50KSAmJiBBcnJheS5pc0FycmF5KG5leHRUcmVlU2VnbWVudCkpIHtcbiAgICAvLyBDb21wYXJlIGR5bmFtaWMgcGFyYW0gbmFtZSBhbmQgdHlwZSBidXQgaWdub3JlIHRoZSB2YWx1ZSwgZGlmZmVyZW50IHZhbHVlcyB3b3VsZCBub3QgYWZmZWN0IHRoZSBjdXJyZW50IHJvb3QgbGF5b3V0XG4gICAgLy8gL1tuYW1lXSAtIC9zbHVnMSBhbmQgL3NsdWcyLCBib3RoIHZhbHVlcyAoc2x1ZzEgJiBzbHVnMikgc3RpbGwgaGFzIHRoZSBzYW1lIGxheW91dCAvW25hbWVdL2xheW91dC5qc1xuICAgIGlmIChcbiAgICAgIGN1cnJlbnRUcmVlU2VnbWVudFswXSAhPT0gbmV4dFRyZWVTZWdtZW50WzBdIHx8XG4gICAgICBjdXJyZW50VHJlZVNlZ21lbnRbMl0gIT09IG5leHRUcmVlU2VnbWVudFsyXVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH0gZWxzZSBpZiAoY3VycmVudFRyZWVTZWdtZW50ICE9PSBuZXh0VHJlZVNlZ21lbnQpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gQ3VycmVudCB0cmVlIHJvb3QgbGF5b3V0IGZvdW5kXG4gIGlmIChjdXJyZW50VHJlZVs0XSkge1xuICAgIC8vIElmIHRoZSBuZXh0IHRyZWUgZG9lc24ndCBoYXZlIHRoZSByb290IGxheW91dCBmbGFnLCBpdCBtdXN0IGhhdmUgY2hhbmdlZC5cbiAgICByZXR1cm4gIW5leHRUcmVlWzRdXG4gIH1cbiAgLy8gQ3VycmVudCB0cmVlIGRpZG4ndCBoYXZlIGl0cyByb290IGxheW91dCBoZXJlLCBtdXN0IGhhdmUgY2hhbmdlZC5cbiAgaWYgKG5leHRUcmVlWzRdKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICAvLyBXZSBjYW4ndCBhc3N1bWUgaXQncyBgcGFyYWxsZWxSb3V0ZXMuY2hpbGRyZW5gIGhlcmUgaW4gY2FzZSB0aGUgcm9vdCBsYXlvdXQgaXMgYGFwcC9Ac29tZXRoaW5nL2xheW91dC5qc2BcbiAgLy8gQnV0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIGJlIG1vcmUgdGhhbiBvbmUgcGFyYWxsZWxSb3V0ZXMgYmVmb3JlIHRoZSByb290IGxheW91dCBpcyBmb3VuZFxuICAvLyBUT0RPLUFQUDogY2hhbmdlIHRvIHRyYXZlcnNlIGFsbCBwYXJhbGxlbCByb3V0ZXNcbiAgY29uc3QgY3VycmVudFRyZWVDaGlsZCA9IE9iamVjdC52YWx1ZXMoY3VycmVudFRyZWVbMV0pWzBdXG4gIGNvbnN0IG5leHRUcmVlQ2hpbGQgPSBPYmplY3QudmFsdWVzKG5leHRUcmVlWzFdKVswXVxuICBpZiAoIWN1cnJlbnRUcmVlQ2hpbGQgfHwgIW5leHRUcmVlQ2hpbGQpIHJldHVybiB0cnVlXG4gIHJldHVybiBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQoY3VycmVudFRyZWVDaGlsZCwgbmV4dFRyZWVDaGlsZClcbn1cbiJdLCJuYW1lcyI6WyJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJjdXJyZW50VHJlZSIsIm5leHRUcmVlIiwiY3VycmVudFRyZWVTZWdtZW50IiwibmV4dFRyZWVTZWdtZW50IiwiQXJyYXkiLCJpc0FycmF5IiwiY3VycmVudFRyZWVDaGlsZCIsIk9iamVjdCIsInZhbHVlcyIsIm5leHRUcmVlQ2hpbGQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js": /*!***************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js ***! \***************************************************************************************************************************************************************/ /***/ ((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 abortTask: function() {\n return abortTask;\n },\n listenForDynamicRequest: function() {\n return listenForDynamicRequest;\n },\n startPPRNavigation: function() {\n return startPPRNavigation;\n },\n updateCacheNodeOnPopstateRestoration: function() {\n return updateCacheNodeOnPopstateRestoration;\n }\n});\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js\");\nconst _createroutercachekey = __webpack_require__(/*! ./create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ./is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ./prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst MPA_NAVIGATION_TASK = {\n route: null,\n node: null,\n dynamicRequestTree: null,\n children: null\n};\nfunction startPPRNavigation(navigatedAt, oldCacheNode, oldRouterState, newRouterState, prefetchData, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, scrollableSegmentsResult) {\n const segmentPath = [];\n return updateCacheNodeOnNavigation(navigatedAt, oldCacheNode, oldRouterState, newRouterState, false, prefetchData, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, segmentPath, scrollableSegmentsResult);\n}\nfunction updateCacheNodeOnNavigation(navigatedAt, oldCacheNode, oldRouterState, newRouterState, didFindRootLayout, prefetchData, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, segmentPath, scrollableSegmentsResult) {\n // Diff the old and new trees to reuse the shared layouts.\n const oldRouterStateChildren = oldRouterState[1];\n const newRouterStateChildren = newRouterState[1];\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null;\n if (!didFindRootLayout) {\n // We're currently traversing the part of the tree that was also part of\n // the previous route. If we discover a root layout, then we don't need to\n // trigger an MPA navigation. See beginRenderingNewRouteTree for context.\n const isRootLayout = newRouterState[4] === true;\n if (isRootLayout) {\n // Found a matching root layout.\n didFindRootLayout = true;\n }\n }\n const oldParallelRoutes = oldCacheNode.parallelRoutes;\n // Clone the current set of segment children, even if they aren't active in\n // the new tree.\n // TODO: We currently retain all the inactive segments indefinitely, until\n // there's an explicit refresh, or a parent layout is lazily refreshed. We\n // rely on this for popstate navigations, which update the Router State Tree\n // but do not eagerly perform a data fetch, because they expect the segment\n // data to already be in the Cache Node tree. For highly static sites that\n // are mostly read-only, this may happen only rarely, causing memory to\n // leak. We should figure out a better model for the lifetime of inactive\n // segments, so we can maintain instant back/forward navigations without\n // leaking memory indefinitely.\n const prefetchParallelRoutes = new Map(oldParallelRoutes);\n // As we diff the trees, we may sometimes modify (copy-on-write, not mutate)\n // the Route Tree that was returned by the server — for example, in the case\n // of default parallel routes, we preserve the currently active segment. To\n // avoid mutating the original tree, we clone the router state children along\n // the return path.\n let patchedRouterStateChildren = {};\n let taskChildren = null;\n // Most navigations require a request to fetch additional data from the\n // server, either because the data was not already prefetched, or because the\n // target route contains dynamic data that cannot be prefetched.\n //\n // However, if the target route is fully static, and it's already completely\n // loaded into the segment cache, then we can skip the server request.\n //\n // This starts off as `false`, and is set to `true` if any of the child\n // routes requires a dynamic request.\n let needsDynamicRequest = false;\n // As we traverse the children, we'll construct a FlightRouterState that can\n // be sent to the server to request the dynamic data. If it turns out that\n // nothing in the subtree is dynamic (i.e. needsDynamicRequest is false at the\n // end), then this will be discarded.\n // TODO: We can probably optimize the format of this data structure to only\n // include paths that are dynamic. Instead of reusing the\n // FlightRouterState type.\n let dynamicRequestTreeChildren = {};\n for(let parallelRouteKey in newRouterStateChildren){\n const newRouterStateChild = newRouterStateChildren[parallelRouteKey];\n const oldRouterStateChild = oldRouterStateChildren[parallelRouteKey];\n const oldSegmentMapChild = oldParallelRoutes.get(parallelRouteKey);\n const prefetchDataChild = prefetchDataChildren !== null ? prefetchDataChildren[parallelRouteKey] : null;\n const newSegmentChild = newRouterStateChild[0];\n const newSegmentPathChild = segmentPath.concat([\n parallelRouteKey,\n newSegmentChild\n ]);\n const newSegmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(newSegmentChild);\n const oldSegmentChild = oldRouterStateChild !== undefined ? oldRouterStateChild[0] : undefined;\n const oldCacheNodeChild = oldSegmentMapChild !== undefined ? oldSegmentMapChild.get(newSegmentKeyChild) : undefined;\n let taskChild;\n if (newSegmentChild === _segment.DEFAULT_SEGMENT_KEY) {\n // This is another kind of leaf segment — a default route.\n //\n // Default routes have special behavior. When there's no matching segment\n // for a parallel route, Next.js preserves the currently active segment\n // during a client navigation — but not for initial render. The server\n // leaves it to the client to account for this. So we need to handle\n // it here.\n if (oldRouterStateChild !== undefined) {\n // Reuse the existing Router State for this segment. We spawn a \"task\"\n // just to keep track of the updated router state; unlike most, it's\n // already fulfilled and won't be affected by the dynamic response.\n taskChild = spawnReusedTask(oldRouterStateChild);\n } else {\n // There's no currently active segment. Switch to the \"create\" path.\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n }\n } else if (isSamePageNavigation && // Check if this is a page segment.\n // TODO: We're not consistent about how we do this check. Some places\n // check if the segment starts with PAGE_SEGMENT_KEY, but most seem to\n // check if there any any children, which is why I'm doing it here. We\n // should probably encode an empty children set as `null` though. Either\n // way, we should update all the checks to be consistent.\n Object.keys(newRouterStateChild[1]).length === 0) {\n // We special case navigations to the exact same URL as the current\n // location. It's a common UI pattern for apps to refresh when you click a\n // link to the current page. So when this happens, we refresh the dynamic\n // data in the page segments.\n //\n // Note that this does not apply if the any part of the hash or search\n // query has changed. This might feel a bit weird but it makes more sense\n // when you consider that the way to trigger this behavior is to click\n // the same link multiple times.\n //\n // TODO: We should probably refresh the *entire* route when this case\n // occurs, not just the page segments. Essentially treating it the same as\n // a refresh() triggered by an action, which is the more explicit way of\n // modeling the UI pattern described above.\n //\n // Also note that this only refreshes the dynamic data, not static/\n // cached data. If the page segment is fully static and prefetched, the\n // request is skipped. (This is also how refresh() works.)\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n } else if (oldRouterStateChild !== undefined && oldSegmentChild !== undefined && (0, _matchsegments.matchSegment)(newSegmentChild, oldSegmentChild)) {\n if (oldCacheNodeChild !== undefined && oldRouterStateChild !== undefined) {\n // This segment exists in both the old and new trees. Recursively update\n // the children.\n taskChild = updateCacheNodeOnNavigation(navigatedAt, oldCacheNodeChild, oldRouterStateChild, newRouterStateChild, didFindRootLayout, prefetchDataChild, prefetchHead, isPrefetchHeadPartial, isSamePageNavigation, newSegmentPathChild, scrollableSegmentsResult);\n } else {\n // There's no existing Cache Node for this segment. Switch to the\n // \"create\" path.\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n }\n } else {\n // This is a new tree. Switch to the \"create\" path.\n taskChild = beginRenderingNewRouteTree(navigatedAt, oldRouterStateChild, newRouterStateChild, oldCacheNodeChild, didFindRootLayout, prefetchDataChild !== undefined ? prefetchDataChild : null, prefetchHead, isPrefetchHeadPartial, newSegmentPathChild, scrollableSegmentsResult);\n }\n if (taskChild !== null) {\n // Recursively propagate up the child tasks.\n if (taskChild.route === null) {\n // One of the child tasks discovered a change to the root layout.\n // Immediately unwind from this recursive traversal.\n return MPA_NAVIGATION_TASK;\n }\n if (taskChildren === null) {\n taskChildren = new Map();\n }\n taskChildren.set(parallelRouteKey, taskChild);\n const newCacheNodeChild = taskChild.node;\n if (newCacheNodeChild !== null) {\n const newSegmentMapChild = new Map(oldSegmentMapChild);\n newSegmentMapChild.set(newSegmentKeyChild, newCacheNodeChild);\n prefetchParallelRoutes.set(parallelRouteKey, newSegmentMapChild);\n }\n // The child tree's route state may be different from the prefetched\n // route sent by the server. We need to clone it as we traverse back up\n // the tree.\n const taskChildRoute = taskChild.route;\n patchedRouterStateChildren[parallelRouteKey] = taskChildRoute;\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree;\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n needsDynamicRequest = true;\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild;\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = taskChildRoute;\n }\n } else {\n // The child didn't change. We can use the prefetched router state.\n patchedRouterStateChildren[parallelRouteKey] = newRouterStateChild;\n dynamicRequestTreeChildren[parallelRouteKey] = newRouterStateChild;\n }\n }\n if (taskChildren === null) {\n // No new tasks were spawned.\n return null;\n }\n const newCacheNode = {\n lazyData: null,\n rsc: oldCacheNode.rsc,\n // We intentionally aren't updating the prefetchRsc field, since this node\n // is already part of the current tree, because it would be weird for\n // prefetch data to be newer than the final data. It probably won't ever be\n // observable anyway, but it could happen if the segment is unmounted then\n // mounted again, because LayoutRouter will momentarily switch to rendering\n // prefetchRsc, via useDeferredValue.\n prefetchRsc: oldCacheNode.prefetchRsc,\n head: oldCacheNode.head,\n prefetchHead: oldCacheNode.prefetchHead,\n loading: oldCacheNode.loading,\n // Everything is cloned except for the children, which we computed above.\n parallelRoutes: prefetchParallelRoutes,\n navigatedAt\n };\n return {\n // Return a cloned copy of the router state with updated children.\n route: patchRouterStateWithNewChildren(newRouterState, patchedRouterStateChildren),\n node: newCacheNode,\n dynamicRequestTree: needsDynamicRequest ? patchRouterStateWithNewChildren(newRouterState, dynamicRequestTreeChildren) : null,\n children: taskChildren\n };\n}\nfunction beginRenderingNewRouteTree(navigatedAt, oldRouterState, newRouterState, existingCacheNode, didFindRootLayout, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n if (!didFindRootLayout) {\n // The route tree changed before we reached a layout. (The highest-level\n // layout in a route tree is referred to as the \"root\" layout.) This could\n // mean that we're navigating between two different root layouts. When this\n // happens, we perform a full-page (MPA-style) navigation.\n //\n // However, the algorithm for deciding where to start rendering a route\n // (i.e. the one performed in order to reach this function) is stricter\n // than the one used to detect a change in the root layout. So just because\n // we're re-rendering a segment outside of the root layout does not mean we\n // should trigger a full-page navigation.\n //\n // Specifically, we handle dynamic parameters differently: two segments are\n // considered the same even if their parameter values are different.\n //\n // Refer to isNavigatingToNewRootLayout for details.\n //\n // Note that we only have to perform this extra traversal if we didn't\n // already discover a root layout in the part of the tree that is unchanged.\n // In the common case, this branch is skipped completely.\n if (oldRouterState === undefined || (0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(oldRouterState, newRouterState)) {\n // The root layout changed. Perform a full-page navigation.\n return MPA_NAVIGATION_TASK;\n }\n }\n return createCacheNodeOnNavigation(navigatedAt, newRouterState, existingCacheNode, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult);\n}\nfunction createCacheNodeOnNavigation(navigatedAt, routerState, existingCacheNode, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n // Same traversal as updateCacheNodeNavigation, but we switch to this path\n // once we reach the part of the tree that was not in the previous route. We\n // don't need to diff against the old tree, we just need to create a new one.\n // The head is assigned to every leaf segment delivered by the server. Based\n // on corresponding logic in fill-lazy-items-till-leaf-with-head.ts\n const routerStateChildren = routerState[1];\n const isLeafSegment = Object.keys(routerStateChildren).length === 0;\n // Even we're rendering inside the \"new\" part of the target tree, we may have\n // a locally cached segment that we can reuse. This may come from either 1)\n // the CacheNode tree, which lives in React state and is populated by previous\n // navigations; or 2) the prefetch cache, which is a separate cache that is\n // populated by prefetches.\n let rsc;\n let loading;\n let head;\n let cacheNodeNavigatedAt;\n if (existingCacheNode !== undefined && // DYNAMIC_STALETIME_MS defaults to 0, but it can be increased using\n // the experimental.staleTimes.dynamic config. When set, we'll avoid\n // refetching dynamic data if it was fetched within the given threshold.\n existingCacheNode.navigatedAt + _prefetchcacheutils.DYNAMIC_STALETIME_MS > navigatedAt) {\n // We have an existing CacheNode for this segment, and it's not stale. We\n // should reuse it rather than request a new one.\n rsc = existingCacheNode.rsc;\n loading = existingCacheNode.loading;\n head = existingCacheNode.head;\n // Don't update the navigatedAt timestamp, since we're reusing stale data.\n cacheNodeNavigatedAt = existingCacheNode.navigatedAt;\n } else if (prefetchData !== null) {\n // There's no existing CacheNode for this segment, but we do have prefetch\n // data. If the prefetch data is fully static (i.e. does not contain any\n // dynamic holes), we don't need to request it from the server.\n rsc = prefetchData[1];\n loading = prefetchData[3];\n head = isLeafSegment ? possiblyPartialPrefetchHead : null;\n // Even though we're accessing the data from the prefetch cache, this is\n // conceptually a new segment, not a reused one. So we should update the\n // navigatedAt timestamp.\n cacheNodeNavigatedAt = navigatedAt;\n const isPrefetchRscPartial = prefetchData[4];\n if (isPrefetchRscPartial || // Check if the head is partial (only relevant if this is a leaf segment)\n isPrefetchHeadPartial && isLeafSegment) {\n // We only have partial data from this segment. Like missing segments, we\n // must request the full data from the server.\n return spawnPendingTask(navigatedAt, routerState, prefetchData, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult);\n } else {\n // The prefetch data is fully static, so we can omit it from the\n // navigation request.\n }\n } else {\n // There's no prefetch for this segment. Everything from this point will be\n // requested from the server, even if there are static children below it.\n // Create a terminal task node that will later be fulfilled by\n // server response.\n return spawnPendingTask(navigatedAt, routerState, null, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult);\n }\n // We already have a full segment we can render, so we don't need to request a\n // new one from the server. Keep traversing down the tree until we reach\n // something that requires a dynamic request.\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null;\n const taskChildren = new Map();\n const existingCacheNodeChildren = existingCacheNode !== undefined ? existingCacheNode.parallelRoutes : null;\n const cacheNodeChildren = new Map(existingCacheNodeChildren);\n let dynamicRequestTreeChildren = {};\n let needsDynamicRequest = false;\n if (isLeafSegment) {\n // The segment path of every leaf segment (i.e. page) is collected into\n // a result array. This is used by the LayoutRouter to scroll to ensure that\n // new pages are visible after a navigation.\n // TODO: We should use a string to represent the segment path instead of\n // an array. We already use a string representation for the path when\n // accessing the Segment Cache, so we can use the same one.\n scrollableSegmentsResult.push(segmentPath);\n } else {\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const prefetchDataChild = prefetchDataChildren !== null ? prefetchDataChildren[parallelRouteKey] : null;\n const existingSegmentMapChild = existingCacheNodeChildren !== null ? existingCacheNodeChildren.get(parallelRouteKey) : undefined;\n const segmentChild = routerStateChild[0];\n const segmentPathChild = segmentPath.concat([\n parallelRouteKey,\n segmentChild\n ]);\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const existingCacheNodeChild = existingSegmentMapChild !== undefined ? existingSegmentMapChild.get(segmentKeyChild) : undefined;\n const taskChild = createCacheNodeOnNavigation(navigatedAt, routerStateChild, existingCacheNodeChild, prefetchDataChild, possiblyPartialPrefetchHead, isPrefetchHeadPartial, segmentPathChild, scrollableSegmentsResult);\n taskChildren.set(parallelRouteKey, taskChild);\n const dynamicRequestTreeChild = taskChild.dynamicRequestTree;\n if (dynamicRequestTreeChild !== null) {\n // Something in the child tree is dynamic.\n needsDynamicRequest = true;\n dynamicRequestTreeChildren[parallelRouteKey] = dynamicRequestTreeChild;\n } else {\n dynamicRequestTreeChildren[parallelRouteKey] = routerStateChild;\n }\n const newCacheNodeChild = taskChild.node;\n if (newCacheNodeChild !== null) {\n const newSegmentMapChild = new Map();\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild);\n cacheNodeChildren.set(parallelRouteKey, newSegmentMapChild);\n }\n }\n }\n return {\n // Since we're inside a new route tree, unlike the\n // `updateCacheNodeOnNavigation` path, the router state on the children\n // tasks is always the same as the router state we pass in. So we don't need\n // to clone/modify it.\n route: routerState,\n node: {\n lazyData: null,\n // Since this segment is already full, we don't need to use the\n // `prefetchRsc` field.\n rsc,\n prefetchRsc: null,\n head,\n prefetchHead: null,\n loading,\n parallelRoutes: cacheNodeChildren,\n navigatedAt: cacheNodeNavigatedAt\n },\n dynamicRequestTree: needsDynamicRequest ? patchRouterStateWithNewChildren(routerState, dynamicRequestTreeChildren) : null,\n children: taskChildren\n };\n}\nfunction patchRouterStateWithNewChildren(baseRouterState, newChildren) {\n const clone = [\n baseRouterState[0],\n newChildren\n ];\n // Based on equivalent logic in apply-router-state-patch-to-tree, but should\n // confirm whether we need to copy all of these fields. Not sure the server\n // ever sends, e.g. the refetch marker.\n if (2 in baseRouterState) {\n clone[2] = baseRouterState[2];\n }\n if (3 in baseRouterState) {\n clone[3] = baseRouterState[3];\n }\n if (4 in baseRouterState) {\n clone[4] = baseRouterState[4];\n }\n return clone;\n}\nfunction spawnPendingTask(navigatedAt, routerState, prefetchData, prefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n // Create a task that will later be fulfilled by data from the server.\n // Clone the prefetched route tree and the `refetch` marker to it. We'll send\n // this to the server so it knows where to start rendering.\n const dynamicRequestTree = patchRouterStateWithNewChildren(routerState, routerState[1]);\n dynamicRequestTree[3] = 'refetch';\n const newTask = {\n route: routerState,\n // Corresponds to the part of the route that will be rendered on the server.\n node: createPendingCacheNode(navigatedAt, routerState, prefetchData, prefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult),\n // Because this is non-null, and it gets propagated up through the parent\n // tasks, the root task will know that it needs to perform a server request.\n dynamicRequestTree,\n children: null\n };\n return newTask;\n}\nfunction spawnReusedTask(reusedRouterState) {\n // Create a task that reuses an existing segment, e.g. when reusing\n // the current active segment in place of a default route.\n return {\n route: reusedRouterState,\n node: null,\n dynamicRequestTree: null,\n children: null\n };\n}\nfunction listenForDynamicRequest(task, responsePromise) {\n responsePromise.then((param)=>{\n let { flightData } = param;\n if (typeof flightData === 'string') {\n // Happens when navigating to page in `pages` from `app`. We shouldn't\n // get here because should have already handled this during\n // the prefetch.\n return;\n }\n for (const normalizedFlightData of flightData){\n const { segmentPath, tree: serverRouterState, seedData: dynamicData, head: dynamicHead } = normalizedFlightData;\n if (!dynamicData) {\n continue;\n }\n writeDynamicDataIntoPendingTask(task, segmentPath, serverRouterState, dynamicData, dynamicHead);\n }\n // Now that we've exhausted all the data we received from the server, if\n // there are any remaining pending tasks in the tree, abort them now.\n // If there's any missing data, it will trigger a lazy fetch.\n abortTask(task, null);\n }, (error)=>{\n // This will trigger an error during render\n abortTask(task, error);\n });\n}\nfunction writeDynamicDataIntoPendingTask(rootTask, segmentPath, serverRouterState, dynamicData, dynamicHead) {\n // The data sent by the server represents only a subtree of the app. We need\n // to find the part of the task tree that matches the server response, and\n // fulfill it using the dynamic data.\n //\n // segmentPath represents the parent path of subtree. It's a repeating pattern\n // of parallel route key and segment:\n //\n // [string, Segment, string, Segment, string, Segment, ...]\n //\n // Iterate through the path and finish any tasks that match this payload.\n let task = rootTask;\n for(let i = 0; i < segmentPath.length; i += 2){\n const parallelRouteKey = segmentPath[i];\n const segment = segmentPath[i + 1];\n const taskChildren = task.children;\n if (taskChildren !== null) {\n const taskChild = taskChildren.get(parallelRouteKey);\n if (taskChild !== undefined) {\n const taskSegment = taskChild.route[0];\n if ((0, _matchsegments.matchSegment)(segment, taskSegment)) {\n // Found a match for this task. Keep traversing down the task tree.\n task = taskChild;\n continue;\n }\n }\n }\n // We didn't find a child task that matches the server data. Exit. We won't\n // abort the task, though, because a different FlightDataPath may be able to\n // fulfill it (see loop in listenForDynamicRequest). We only abort tasks\n // once we've run out of data.\n return;\n }\n finishTaskUsingDynamicDataPayload(task, serverRouterState, dynamicData, dynamicHead);\n}\nfunction finishTaskUsingDynamicDataPayload(task, serverRouterState, dynamicData, dynamicHead) {\n if (task.dynamicRequestTree === null) {\n // Everything in this subtree is already complete. Bail out.\n return;\n }\n // dynamicData may represent a larger subtree than the task. Before we can\n // finish the task, we need to line them up.\n const taskChildren = task.children;\n const taskNode = task.node;\n if (taskChildren === null) {\n // We've reached the leaf node of the pending task. The server data tree\n // lines up the pending Cache Node tree. We can now switch to the\n // normal algorithm.\n if (taskNode !== null) {\n finishPendingCacheNode(taskNode, task.route, serverRouterState, dynamicData, dynamicHead);\n // Set this to null to indicate that this task is now complete.\n task.dynamicRequestTree = null;\n }\n return;\n }\n // The server returned more data than we need to finish the task. Skip over\n // the extra segments until we reach the leaf task node.\n const serverChildren = serverRouterState[1];\n const dynamicDataChildren = dynamicData[2];\n for(const parallelRouteKey in serverRouterState){\n const serverRouterStateChild = serverChildren[parallelRouteKey];\n const dynamicDataChild = dynamicDataChildren[parallelRouteKey];\n const taskChild = taskChildren.get(parallelRouteKey);\n if (taskChild !== undefined) {\n const taskSegment = taskChild.route[0];\n if ((0, _matchsegments.matchSegment)(serverRouterStateChild[0], taskSegment) && dynamicDataChild !== null && dynamicDataChild !== undefined) {\n // Found a match for this task. Keep traversing down the task tree.\n return finishTaskUsingDynamicDataPayload(taskChild, serverRouterStateChild, dynamicDataChild, dynamicHead);\n }\n }\n // We didn't find a child task that matches the server data. We won't abort\n // the task, though, because a different FlightDataPath may be able to\n // fulfill it (see loop in listenForDynamicRequest). We only abort tasks\n // once we've run out of data.\n }\n}\nfunction createPendingCacheNode(navigatedAt, routerState, prefetchData, prefetchHead, isPrefetchHeadPartial, segmentPath, scrollableSegmentsResult) {\n const routerStateChildren = routerState[1];\n const prefetchDataChildren = prefetchData !== null ? prefetchData[2] : null;\n const parallelRoutes = new Map();\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const prefetchDataChild = prefetchDataChildren !== null ? prefetchDataChildren[parallelRouteKey] : null;\n const segmentChild = routerStateChild[0];\n const segmentPathChild = segmentPath.concat([\n parallelRouteKey,\n segmentChild\n ]);\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const newCacheNodeChild = createPendingCacheNode(navigatedAt, routerStateChild, prefetchDataChild === undefined ? null : prefetchDataChild, prefetchHead, isPrefetchHeadPartial, segmentPathChild, scrollableSegmentsResult);\n const newSegmentMapChild = new Map();\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild);\n parallelRoutes.set(parallelRouteKey, newSegmentMapChild);\n }\n // The head is assigned to every leaf segment delivered by the server. Based\n // on corresponding logic in fill-lazy-items-till-leaf-with-head.ts\n const isLeafSegment = parallelRoutes.size === 0;\n if (isLeafSegment) {\n // The segment path of every leaf segment (i.e. page) is collected into\n // a result array. This is used by the LayoutRouter to scroll to ensure that\n // new pages are visible after a navigation.\n // TODO: We should use a string to represent the segment path instead of\n // an array. We already use a string representation for the path when\n // accessing the Segment Cache, so we can use the same one.\n scrollableSegmentsResult.push(segmentPath);\n }\n const maybePrefetchRsc = prefetchData !== null ? prefetchData[1] : null;\n const maybePrefetchLoading = prefetchData !== null ? prefetchData[3] : null;\n return {\n lazyData: null,\n parallelRoutes: parallelRoutes,\n prefetchRsc: maybePrefetchRsc !== undefined ? maybePrefetchRsc : null,\n prefetchHead: isLeafSegment ? prefetchHead : [\n null,\n null\n ],\n // TODO: Technically, a loading boundary could contain dynamic data. We must\n // have separate `loading` and `prefetchLoading` fields to handle this, like\n // we do for the segment data and head.\n loading: maybePrefetchLoading !== undefined ? maybePrefetchLoading : null,\n // Create a deferred promise. This will be fulfilled once the dynamic\n // response is received from the server.\n rsc: createDeferredRsc(),\n head: isLeafSegment ? createDeferredRsc() : null,\n navigatedAt\n };\n}\nfunction finishPendingCacheNode(cacheNode, taskState, serverState, dynamicData, dynamicHead) {\n // Writes a dynamic response into an existing Cache Node tree. This does _not_\n // create a new tree, it updates the existing tree in-place. So it must follow\n // the Suspense rules of cache safety — it can resolve pending promises, but\n // it cannot overwrite existing data. It can add segments to the tree (because\n // a missing segment will cause the layout router to suspend).\n // but it cannot delete them.\n //\n // We must resolve every promise in the tree, or else it will suspend\n // indefinitely. If we did not receive data for a segment, we will resolve its\n // data promise to `null` to trigger a lazy fetch during render.\n const taskStateChildren = taskState[1];\n const serverStateChildren = serverState[1];\n const dataChildren = dynamicData[2];\n // The router state that we traverse the tree with (taskState) is the same one\n // that we used to construct the pending Cache Node tree. That way we're sure\n // to resolve all the pending promises.\n const parallelRoutes = cacheNode.parallelRoutes;\n for(let parallelRouteKey in taskStateChildren){\n const taskStateChild = taskStateChildren[parallelRouteKey];\n const serverStateChild = serverStateChildren[parallelRouteKey];\n const dataChild = dataChildren[parallelRouteKey];\n const segmentMapChild = parallelRoutes.get(parallelRouteKey);\n const taskSegmentChild = taskStateChild[0];\n const taskSegmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(taskSegmentChild);\n const cacheNodeChild = segmentMapChild !== undefined ? segmentMapChild.get(taskSegmentKeyChild) : undefined;\n if (cacheNodeChild !== undefined) {\n if (serverStateChild !== undefined && (0, _matchsegments.matchSegment)(taskSegmentChild, serverStateChild[0])) {\n if (dataChild !== undefined && dataChild !== null) {\n // This is the happy path. Recursively update all the children.\n finishPendingCacheNode(cacheNodeChild, taskStateChild, serverStateChild, dataChild, dynamicHead);\n } else {\n // The server never returned data for this segment. Trigger a lazy\n // fetch during render. This shouldn't happen because the Route Tree\n // and the Seed Data tree sent by the server should always be the same\n // shape when part of the same server response.\n abortPendingCacheNode(taskStateChild, cacheNodeChild, null);\n }\n } else {\n // The server never returned data for this segment. Trigger a lazy\n // fetch during render.\n abortPendingCacheNode(taskStateChild, cacheNodeChild, null);\n }\n } else {\n // The server response matches what was expected to receive, but there's\n // no matching Cache Node in the task tree. This is a bug in the\n // implementation because we should have created a node for every\n // segment in the tree that's associated with this task.\n }\n }\n // Use the dynamic data from the server to fulfill the deferred RSC promise\n // on the Cache Node.\n const rsc = cacheNode.rsc;\n const dynamicSegmentData = dynamicData[1];\n if (rsc === null) {\n // This is a lazy cache node. We can overwrite it. This is only safe\n // because we know that the LayoutRouter suspends if `rsc` is `null`.\n cacheNode.rsc = dynamicSegmentData;\n } else if (isDeferredRsc(rsc)) {\n // This is a deferred RSC promise. We can fulfill it with the data we just\n // received from the server. If it was already resolved by a different\n // navigation, then this does nothing because we can't overwrite data.\n rsc.resolve(dynamicSegmentData);\n } else {\n // This is not a deferred RSC promise, nor is it empty, so it must have\n // been populated by a different navigation. We must not overwrite it.\n }\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved with the dynamic head from\n // the server.\n const head = cacheNode.head;\n if (isDeferredRsc(head)) {\n head.resolve(dynamicHead);\n }\n}\nfunction abortTask(task, error) {\n const cacheNode = task.node;\n if (cacheNode === null) {\n // This indicates the task is already complete.\n return;\n }\n const taskChildren = task.children;\n if (taskChildren === null) {\n // Reached the leaf task node. This is the root of a pending cache\n // node tree.\n abortPendingCacheNode(task.route, cacheNode, error);\n } else {\n // This is an intermediate task node. Keep traversing until we reach a\n // task node with no children. That will be the root of the cache node tree\n // that needs to be resolved.\n for (const taskChild of taskChildren.values()){\n abortTask(taskChild, error);\n }\n }\n // Set this to null to indicate that this task is now complete.\n task.dynamicRequestTree = null;\n}\nfunction abortPendingCacheNode(routerState, cacheNode, error) {\n // For every pending segment in the tree, resolve its `rsc` promise to `null`\n // to trigger a lazy fetch during render.\n //\n // Or, if an error object is provided, it will error instead.\n const routerStateChildren = routerState[1];\n const parallelRoutes = cacheNode.parallelRoutes;\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const segmentMapChild = parallelRoutes.get(parallelRouteKey);\n if (segmentMapChild === undefined) {\n continue;\n }\n const segmentChild = routerStateChild[0];\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const cacheNodeChild = segmentMapChild.get(segmentKeyChild);\n if (cacheNodeChild !== undefined) {\n abortPendingCacheNode(routerStateChild, cacheNodeChild, error);\n } else {\n // This shouldn't happen because we're traversing the same tree that was\n // used to construct the cache nodes in the first place.\n }\n }\n const rsc = cacheNode.rsc;\n if (isDeferredRsc(rsc)) {\n if (error === null) {\n // This will trigger a lazy fetch during render.\n rsc.resolve(null);\n } else {\n // This will trigger an error during rendering.\n rsc.reject(error);\n }\n }\n // Check if this is a leaf segment. If so, it will have a `head` property with\n // a pending promise that needs to be resolved. If an error was provided, we\n // will not resolve it with an error, since this is rendered at the root of\n // the app. We want the segment to error, not the entire app.\n const head = cacheNode.head;\n if (isDeferredRsc(head)) {\n head.resolve(null);\n }\n}\nfunction updateCacheNodeOnPopstateRestoration(oldCacheNode, routerState) {\n // A popstate navigation reads data from the local cache. It does not issue\n // new network requests (unless the cache entries have been evicted). So, we\n // update the cache to drop the prefetch data for any segment whose dynamic\n // data was already received. This prevents an unnecessary flash back to PPR\n // state during a back/forward navigation.\n //\n // This function clones the entire cache node tree and sets the `prefetchRsc`\n // field to `null` to prevent it from being rendered. We can't mutate the node\n // in place because this is a concurrent data structure.\n const routerStateChildren = routerState[1];\n const oldParallelRoutes = oldCacheNode.parallelRoutes;\n const newParallelRoutes = new Map(oldParallelRoutes);\n for(let parallelRouteKey in routerStateChildren){\n const routerStateChild = routerStateChildren[parallelRouteKey];\n const segmentChild = routerStateChild[0];\n const segmentKeyChild = (0, _createroutercachekey.createRouterCacheKey)(segmentChild);\n const oldSegmentMapChild = oldParallelRoutes.get(parallelRouteKey);\n if (oldSegmentMapChild !== undefined) {\n const oldCacheNodeChild = oldSegmentMapChild.get(segmentKeyChild);\n if (oldCacheNodeChild !== undefined) {\n const newCacheNodeChild = updateCacheNodeOnPopstateRestoration(oldCacheNodeChild, routerStateChild);\n const newSegmentMapChild = new Map(oldSegmentMapChild);\n newSegmentMapChild.set(segmentKeyChild, newCacheNodeChild);\n newParallelRoutes.set(parallelRouteKey, newSegmentMapChild);\n }\n }\n }\n // Only show prefetched data if the dynamic data is still pending.\n //\n // Tehnically, what we're actually checking is whether the dynamic network\n // response was received. But since it's a streaming response, this does not\n // mean that all the dynamic data has fully streamed in. It just means that\n // _some_ of the dynamic data was received. But as a heuristic, we assume that\n // the rest dynamic data will stream in quickly, so it's still better to skip\n // the prefetch state.\n const rsc = oldCacheNode.rsc;\n const shouldUsePrefetch = isDeferredRsc(rsc) && rsc.status === 'pending';\n return {\n lazyData: null,\n rsc,\n head: oldCacheNode.head,\n prefetchHead: shouldUsePrefetch ? oldCacheNode.prefetchHead : [\n null,\n null\n ],\n prefetchRsc: shouldUsePrefetch ? oldCacheNode.prefetchRsc : null,\n loading: oldCacheNode.loading,\n // These are the cloned children we computed above\n parallelRoutes: newParallelRoutes,\n navigatedAt: oldCacheNode.navigatedAt\n };\n}\nconst DEFERRED = Symbol();\n// This type exists to distinguish a DeferredRsc from a Flight promise. It's a\n// compromise to avoid adding an extra field on every Cache Node, which would be\n// awkward because the pre-PPR parts of codebase would need to account for it,\n// too. We can remove it once type Cache Node type is more settled.\nfunction isDeferredRsc(value) {\n return value && value.tag === DEFERRED;\n}\nfunction createDeferredRsc() {\n let resolve;\n let reject;\n const pendingRsc = new Promise((res, rej)=>{\n resolve = res;\n reject = rej;\n });\n pendingRsc.status = 'pending';\n pendingRsc.resolve = (value)=>{\n if (pendingRsc.status === 'pending') {\n const fulfilledRsc = pendingRsc;\n fulfilledRsc.status = 'fulfilled';\n fulfilledRsc.value = value;\n resolve(value);\n }\n };\n pendingRsc.reject = (error)=>{\n if (pendingRsc.status === 'pending') {\n const rejectedRsc = pendingRsc;\n rejectedRsc.status = 'rejected';\n rejectedRsc.reason = error;\n reject(error);\n }\n };\n pendingRsc.tag = DEFERRED;\n return pendingRsc;\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=ppr-navigations.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcHByLW5hdmlnYXRpb25zLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTBrQ2dCQSxTQUFTO2VBQVRBOztJQTFWQUMsdUJBQXVCO2VBQXZCQTs7SUF2cEJBQyxrQkFBa0I7ZUFBbEJBOztJQTZqQ0FDLG9DQUFvQztlQUFwQ0E7OztxQ0F6b0NvQjsyQ0FDUDtrREFDUTt5REFFTztnREFDUDtBQWlDckMsTUFBTUMsc0JBQXlDO0lBQzdDQyxPQUFPO0lBQ1BDLE1BQU07SUFDTkMsb0JBQW9CO0lBQ3BCQyxVQUFVO0FBQ1o7QUFpQ08sU0FBU04sbUJBQ2RPLFdBQW1CLEVBQ25CQyxZQUF1QixFQUN2QkMsY0FBaUMsRUFDakNDLGNBQWlDLEVBQ2pDQyxZQUFzQyxFQUN0Q0MsWUFBNkIsRUFDN0JDLHFCQUE4QixFQUM5QkMsb0JBQTZCLEVBQzdCQyx3QkFBa0Q7SUFFbEQsTUFBTUMsY0FBd0MsRUFBRTtJQUNoRCxPQUFPQyw0QkFDTFYsYUFDQUMsY0FDQUMsZ0JBQ0FDLGdCQUNBLE9BQ0FDLGNBQ0FDLGNBQ0FDLHVCQUNBQyxzQkFDQUUsYUFDQUQ7QUFFSjtBQUVBLFNBQVNFLDRCQUNQVixXQUFtQixFQUNuQkMsWUFBdUIsRUFDdkJDLGNBQWlDLEVBQ2pDQyxjQUFpQyxFQUNqQ1EsaUJBQTBCLEVBQzFCUCxZQUFzQyxFQUN0Q0MsWUFBNkIsRUFDN0JDLHFCQUE4QixFQUM5QkMsb0JBQTZCLEVBQzdCRSxXQUE4QixFQUM5QkQsd0JBQWtEO0lBRWxELDBEQUEwRDtJQUMxRCxNQUFNSSx5QkFBeUJWLGNBQWMsQ0FBQyxFQUFFO0lBQ2hELE1BQU1XLHlCQUF5QlYsY0FBYyxDQUFDLEVBQUU7SUFD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ZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcHByLW5hdmlnYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQ2FjaGVOb2RlU2VlZERhdGEsXG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbiAgU2VnbWVudCxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgdHlwZSB7XG4gIENhY2hlTm9kZSxcbiAgQ2hpbGRTZWdtZW50TWFwLFxuICBIZWFkRGF0YSxcbiAgTG9hZGluZ01vZHVsZURhdGEsXG4gIFJlYWR5Q2FjaGVOb2RlLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IERFRkFVTFRfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBtYXRjaFNlZ21lbnQgfSBmcm9tICcuLi9tYXRjaC1zZWdtZW50cydcbmltcG9ydCB7IGNyZWF0ZVJvdXRlckNhY2hlS2V5IH0gZnJvbSAnLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcbmltcG9ydCB0eXBlIHsgRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IH0gZnJvbSAnLi9pcy1uYXZpZ2F0aW5nLXRvLW5ldy1yb290LWxheW91dCdcbmltcG9ydCB7IERZTkFNSUNfU1RBTEVUSU1FX01TIH0gZnJvbSAnLi9wcmVmZXRjaC1jYWNoZS11dGlscydcblxuLy8gVGhpcyBpcyB5ZXQgYW5vdGhlciB0cmVlIHR5cGUgdGhhdCBpcyB1c2VkIHRvIHRyYWNrIHBlbmRpbmcgcHJvbWlzZXMgdGhhdFxuLy8gbmVlZCB0byBiZSBmdWxmaWxsZWQgb25jZSB0aGUgZHluYW1pYyBkYXRhIGlzIHJlY2VpdmVkLiBUaGUgdGVybWluYWwgbm9kZXMgb2Zcbi8vIHRoaXMgdHJlZSByZXByZXNlbnQgdGhlIG5ldyBDYWNoZSBOb2RlIHRyZWVzIHRoYXQgd2VyZSBjcmVhdGVkIGR1cmluZyB0aGlzXG4vLyByZXF1ZXN0LiBXZSBjYW4ndCB1c2UgdGhlIENhY2hlIE5vZGUgdHJlZSBvciBSb3V0ZSBTdGF0ZSB0cmVlIGRpcmVjdGx5XG4vLyBiZWNhdXNlIHRob3NlIGluY2x1ZGUgcmV1c2VkIG5vZGVzLCB0b28uIFRoaXMgdHJlZSBpcyBkaXNjYXJkZWQgYXMgc29vbiBhc1xuLy8gdGhlIG5hdmlnYXRpb24gcmVzcG9uc2UgaXMgcmVjZWl2ZWQuXG50eXBlIFNQQU5hdmlnYXRpb25UYXNrID0ge1xuICAvLyBUaGUgcm91dGVyIHN0YXRlIHRoYXQgY29ycmVzcG9uZHMgdG8gdGhlIHRyZWUgdGhhdCB0aGlzIFRhc2sgcmVwcmVzZW50cy5cbiAgcm91dGU6IEZsaWdodFJvdXRlclN0YXRlXG4gIC8vIFRoZSBDYWNoZU5vZGUgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgdHJlZSB0aGF0IHRoaXMgVGFzayByZXByZXNlbnRzLiBJZlxuICAvLyBgY2hpbGRyZW5gIGlzIG51bGwgKGkuZS4gaWYgdGhpcyBpcyBhIHRlcm1pbmFsIHRhc2sgbm9kZSksIHRoZW4gYG5vZGVgXG4gIC8vIHJlcHJlc2VudHMgYSBicmFuZCBuZXcgQ2FjaGUgTm9kZSB0cmVlLCB3aGljaCB3YXkgb3IgbWF5IG5vdCBuZWVkIHRvIGJlXG4gIC8vIGZpbGxlZCB3aXRoIGR5bmFtaWMgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuXG4gIG5vZGU6IENhY2hlTm9kZSB8IG51bGxcbiAgLy8gVGhlIHRyZWUgc2VudCB0byB0aGUgc2VydmVyIGR1cmluZyB0aGUgZHluYW1pYyByZXF1ZXN0LiBUaGlzIGlzIHRoZVxuICAvLyBzYW1lIGFzIGByb3V0ZWAsIGV4Y2VwdCB3aXRoIHRoZSBgcmVmZXRjaGAgbWFya2VyIHNldCBvbiBkeW5hbWljIHNlZ21lbnRzLlxuICAvLyBJZiBhbGwgdGhlIHNlZ21lbnRzIGFyZSBzdGF0aWMsIHRoZW4gdGhpcyB3aWxsIGJlIG51bGwsIGFuZCBubyBzZXJ2ZXJcbiAgLy8gcmVxdWVzdCBpcyByZXF1aXJlZC5cbiAgZHluYW1pY1JlcXVlc3RUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IG51bGxcbiAgY2hpbGRyZW46IE1hcDxzdHJpbmcsIFNQQU5hdmlnYXRpb25UYXNrPiB8IG51bGxcbn1cblxuLy8gQSBzcGVjaWFsIHR5cGUgdXNlZCB0byBiYWlsIG91dCBhbmQgdHJpZ2dlciBhIGZ1bGwtcGFnZSBuYXZpZ2F0aW9uLlxudHlwZSBNUEFOYXZpZ2F0aW9uVGFzayA9IHtcbiAgLy8gTVBBIHRhc2tzIGFyZSBkaXN0aW5ndWlzZWQgZnJvbSBTUEEgdGFza3MgYnkgaGF2aW5nIGEgbnVsbCBgcm91dGVgLlxuICByb3V0ZTogbnVsbFxuICBub2RlOiBudWxsXG4gIGR5bmFtaWNSZXF1ZXN0VHJlZTogbnVsbFxuICBjaGlsZHJlbjogbnVsbFxufVxuXG5jb25zdCBNUEFfTkFWSUdBVElPTl9UQVNLOiBNUEFOYXZpZ2F0aW9uVGFzayA9IHtcbiAgcm91dGU6IG51bGwsXG4gIG5vZGU6IG51bGwsXG4gIGR5bmFtaWNSZXF1ZXN0VHJlZTogbnVsbCxcbiAgY2hpbGRyZW46IG51bGwsXG59XG5cbmV4cG9ydCB0eXBlIFRhc2sgPSBTUEFOYXZpZ2F0aW9uVGFzayB8IE1QQU5hdmlnYXRpb25UYXNrXG5cbi8vIENyZWF0ZXMgYSBuZXcgQ2FjaGUgTm9kZSB0cmVlIChpLmUuIGNvcHktb24td3JpdGUpIHRoYXQgcmVwcmVzZW50cyB0aGVcbi8vIG9wdGltaXN0aWMgcmVzdWx0IG9mIGEgbmF2aWdhdGlvbiwgdXNpbmcgYm90aCB0aGUgY3VycmVudCBDYWNoZSBOb2RlIHRyZWUgYW5kXG4vLyBkYXRhIHRoYXQgd2FzIHByZWZldGNoZWQgcHJpb3IgdG8gbmF2aWdhdGlvbi5cbi8vXG4vLyBBdCB0aGUgbW9tZW50IHdlIGNhbGwgdGhpcyBmdW5jdGlvbiwgd2UgaGF2ZW4ndCB5ZXQgcmVjZWl2ZWQgdGhlIG5hdmlnYXRpb25cbi8vIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4gSXQgY291bGQgc2VuZCBiYWNrIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxuLy8gZnJvbSB0aGUgdHJlZSB0aGF0IHdhcyBwcmVmZXRjaGVkIOKAlCBkdWUgdG8gcmV3cml0ZXMsIGRlZmF1bHQgcm91dGVzLCBwYXJhbGxlbFxuLy8gcm91dGVzLCBldGMuXG4vL1xuLy8gQnV0IGluIG1vc3QgY2FzZXMsIGl0IHdpbGwgcmV0dXJuIHRoZSBzYW1lIHRyZWUgdGhhdCB3ZSBwcmVmZXRjaGVkLCBqdXN0IHdpdGhcbi8vIHRoZSBkeW5hbWljIGhvbGVzIGZpbGxlZCBpbi4gU28gd2Ugb3B0aW1pc3RpY2FsbHkgYXNzdW1lIHRoaXMgd2lsbCBoYXBwZW4sXG4vLyBhbmQgYWNjZXB0IHRoYXQgdGhlIHJlYWwgcmVzdWx0IGNvdWxkIGJlIGFyYml0cmFyaWx5IGRpZmZlcmVudC5cbi8vXG4vLyBXZSdsbCByZXVzZSBhbnl0aGluZyB0aGF0IHdhcyBhbHJlYWR5IGluIHRoZSBwcmV2aW91cyB0cmVlLCBzaW5jZSB0aGF0J3Mgd2hhdFxuLy8gdGhlIHNlcnZlciBkb2VzLlxuLy9cbi8vIE5ldyBzZWdtZW50cyAob25lcyB0aGF0IGRvbid0IGFwcGVhciBpbiB0aGUgb2xkIHRyZWUpIGFyZSBhc3NpZ25lZCBhblxuLy8gdW5yZXNvbHZlZCBwcm9taXNlLiBUaGUgZGF0YSBmb3IgdGhlc2UgcHJvbWlzZXMgd2lsbCBiZSBmdWxmaWxsZWQgbGF0ZXIsIHdoZW5cbi8vIHRoZSBuYXZpZ2F0aW9uIHJlc3BvbnNlIGlzIHJlY2VpdmVkLlxuLy9cbi8vIFRoZSB0cmVlIGNhbiBiZSByZW5kZXJlZCBpbW1lZGlhdGVseSBhZnRlciBpdCBpcyBjcmVhdGVkICh0aGF0J3Mgd2h5IHRoaXMgaXNcbi8vIGEgc3luY2hyb25vdXMgZnVuY3Rpb24pLiBBbnkgbmV3IHRyZWVzIHRoYXQgZG8gbm90IGhhdmUgcHJlZmV0Y2ggZGF0YSB3aWxsXG4vLyBzdXNwZW5kIGR1cmluZyByZW5kZXJpbmcsIHVudGlsIHRoZSBkeW5hbWljIGRhdGEgc3RyZWFtcyBpbi5cbi8vXG4vLyBSZXR1cm5zIGEgVGFzayBvYmplY3QsIHdoaWNoIGNvbnRhaW5zIGJvdGggdGhlIHVwZGF0ZWQgQ2FjaGUgTm9kZSBhbmQgYSBwYXRoXG4vLyB0byB0aGUgcGVuZGluZyBzdWJ0cmVlcyB0aGF0IG5lZWQgdG8gYmUgcmVzb2x2ZWQgYnkgdGhlIG5hdmlnYXRpb24gcmVzcG9uc2UuXG4vL1xuLy8gQSByZXR1cm4gdmFsdWUgb2YgYG51bGxgIG1lYW5zIHRoZXJlIHdlcmUgbm8gY2hhbmdlcywgYW5kIHRoZSBwcmV2aW91cyB0cmVlXG4vLyBjYW4gYmUgcmV1c2VkIHdpdGhvdXQgaW5pdGlhdGluZyBhIHNlcnZlciByZXF1ZXN0LlxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0UFBSTmF2aWdhdGlvbihcbiAgbmF2aWdhdGVkQXQ6IG51bWJlcixcbiAgb2xkQ2FjaGVOb2RlOiBDYWNoZU5vZGUsXG4gIG9sZFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgbmV3Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwcmVmZXRjaERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgcHJlZmV0Y2hIZWFkOiBIZWFkRGF0YSB8IG51bGwsXG4gIGlzUHJlZmV0Y2hIZWFkUGFydGlhbDogYm9vbGVhbixcbiAgaXNTYW1lUGFnZU5hdmlnYXRpb246IGJvb2xlYW4sXG4gIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdDogQXJyYXk8RmxpZ2h0U2VnbWVudFBhdGg+XG4pOiBUYXNrIHwgbnVsbCB7XG4gIGNvbnN0IHNlZ21lbnRQYXRoOiBBcnJheTxGbGlnaHRTZWdtZW50UGF0aD4gPSBbXVxuICByZXR1cm4gdXBkYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICAgIG5hdmlnYXRlZEF0LFxuICAgIG9sZENhY2hlTm9kZSxcbiAgICBvbGRSb3V0ZXJTdGF0ZSxcbiAgICBuZXdSb3V0ZXJTdGF0ZSxcbiAgICBmYWxzZSxcbiAgICBwcmVmZXRjaERhdGEsXG4gICAgcHJlZmV0Y2hIZWFkLFxuICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICBpc1NhbWVQYWdlTmF2aWdhdGlvbixcbiAgICBzZWdtZW50UGF0aCxcbiAgICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHRcbiAgKVxufVxuXG5mdW5jdGlvbiB1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24oXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG9sZENhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICBvbGRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIG5ld1JvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZGlkRmluZFJvb3RMYXlvdXQ6IGJvb2xlYW4sXG4gIHByZWZldGNoRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsLFxuICBwcmVmZXRjaEhlYWQ6IEhlYWREYXRhIHwgbnVsbCxcbiAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsOiBib29sZWFuLFxuICBpc1NhbWVQYWdlTmF2aWdhdGlvbjogYm9vbGVhbixcbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoLFxuICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHQ6IEFycmF5PEZsaWdodFNlZ21lbnRQYXRoPlxuKTogVGFzayB8IG51bGwge1xuICAvLyBEaWZmIHRoZSBvbGQgYW5kIG5ldyB0cmVlcyB0byByZXVzZSB0aGUgc2hhcmVkIGxheW91dHMuXG4gIGNvbnN0IG9sZFJvdXRlclN0YXRlQ2hpbGRyZW4gPSBvbGRSb3V0ZXJTdGF0ZVsxXVxuICBjb25zdCBuZXdSb3V0ZXJTdGF0ZUNoaWxkcmVuID0gbmV3Um91dGVyU3RhdGVbMV1cbiAgY29uc3QgcHJlZmV0Y2hEYXRhQ2hpbGRyZW4gPSBwcmVmZXRjaERhdGEgIT09IG51bGwgPyBwcmVmZXRjaERhdGFbMl0gOiBudWxsXG5cbiAgaWYgKCFkaWRGaW5kUm9vdExheW91dCkge1xuICAgIC8vIFdlJ3JlIGN1cnJlbnRseSB0cmF2ZXJzaW5nIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXQgd2FzIGFsc28gcGFydCBvZlxuICAgIC8vIHRoZSBwcmV2aW91cyByb3V0ZS4gSWYgd2UgZGlzY292ZXIgYSByb290IGxheW91dCwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvXG4gICAgLy8gdHJpZ2dlciBhbiBNUEEgbmF2aWdhdGlvbi4gU2VlIGJlZ2luUmVuZGVyaW5nTmV3Um91dGVUcmVlIGZvciBjb250ZXh0LlxuICAgIGNvbnN0IGlzUm9vdExheW91dCA9IG5ld1JvdXRlclN0YXRlWzRdID09PSB0cnVlXG4gICAgaWYgKGlzUm9vdExheW91dCkge1xuICAgICAgLy8gRm91bmQgYSBtYXRjaGluZyByb290IGxheW91dC5cbiAgICAgIGRpZEZpbmRSb290TGF5b3V0ID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9sZFBhcmFsbGVsUm91dGVzID0gb2xkQ2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzXG5cbiAgLy8gQ2xvbmUgdGhlIGN1cnJlbnQgc2V0IG9mIHNlZ21lbnQgY2hpbGRyZW4sIGV2ZW4gaWYgdGhleSBhcmVuJ3QgYWN0aXZlIGluXG4gIC8vIHRoZSBuZXcgdHJlZS5cbiAgLy8gVE9ETzogV2UgY3VycmVudGx5IHJldGFpbiBhbGwgdGhlIGluYWN0aXZlIHNlZ21lbnRzIGluZGVmaW5pdGVseSwgdW50aWxcbiAgLy8gdGhlcmUncyBhbiBleHBsaWNpdCByZWZyZXNoLCBvciBhIHBhcmVudCBsYXlvdXQgaXMgbGF6aWx5IHJlZnJlc2hlZC4gV2VcbiAgLy8gcmVseSBvbiB0aGlzIGZvciBwb3BzdGF0ZSBuYXZpZ2F0aW9ucywgd2hpY2ggdXBkYXRlIHRoZSBSb3V0ZXIgU3RhdGUgVHJlZVxuICAvLyBidXQgZG8gbm90IGVhZ2VybHkgcGVyZm9ybSBhIGRhdGEgZmV0Y2gsIGJlY2F1c2UgdGhleSBleHBlY3QgdGhlIHNlZ21lbnRcbiAgLy8gZGF0YSB0byBhbHJlYWR5IGJlIGluIHRoZSBDYWNoZSBOb2RlIHRyZWUuIEZvciBoaWdobHkgc3RhdGljIHNpdGVzIHRoYXRcbiAgLy8gYXJlIG1vc3RseSByZWFkLW9ubHksIHRoaXMgbWF5IGhhcHBlbiBvbmx5IHJhcmVseSwgY2F1c2luZyBtZW1vcnkgdG9cbiAgLy8gbGVhay4gV2Ugc2hvdWxkIGZpZ3VyZSBvdXQgYSBiZXR0ZXIgbW9kZWwgZm9yIHRoZSBsaWZldGltZSBvZiBpbmFjdGl2ZVxuICAvLyBzZWdtZW50cywgc28gd2UgY2FuIG1haW50YWluIGluc3RhbnQgYmFjay9mb3J3YXJkIG5hdmlnYXRpb25zIHdpdGhvdXRcbiAgLy8gbGVha2luZyBtZW1vcnkgaW5kZWZpbml0ZWx5LlxuICBjb25zdCBwcmVmZXRjaFBhcmFsbGVsUm91dGVzID0gbmV3IE1hcChvbGRQYXJhbGxlbFJvdXRlcylcblxuICAvLyBBcyB3ZSBkaWZmIHRoZSB0cmVlcywgd2UgbWF5IHNvbWV0aW1lcyBtb2RpZnkgKGNvcHktb24td3JpdGUsIG5vdCBtdXRhdGUpXG4gIC8vIHRoZSBSb3V0ZSBUcmVlIHRoYXQgd2FzIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIg4oCUIGZvciBleGFtcGxlLCBpbiB0aGUgY2FzZVxuICAvLyBvZiBkZWZhdWx0IHBhcmFsbGVsIHJvdXRlcywgd2UgcHJlc2VydmUgdGhlIGN1cnJlbnRseSBhY3RpdmUgc2VnbWVudC4gVG9cbiAgLy8gYXZvaWQgbXV0YXRpbmcgdGhlIG9yaWdpbmFsIHRyZWUsIHdlIGNsb25lIHRoZSByb3V0ZXIgc3RhdGUgY2hpbGRyZW4gYWxvbmdcbiAgLy8gdGhlIHJldHVybiBwYXRoLlxuICBsZXQgcGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW46IHtcbiAgICBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgfSA9IHt9XG4gIGxldCB0YXNrQ2hpbGRyZW4gPSBudWxsXG5cbiAgLy8gTW9zdCBuYXZpZ2F0aW9ucyByZXF1aXJlIGEgcmVxdWVzdCB0byBmZXRjaCBhZGRpdGlvbmFsIGRhdGEgZnJvbSB0aGVcbiAgLy8gc2VydmVyLCBlaXRoZXIgYmVjYXVzZSB0aGUgZGF0YSB3YXMgbm90IGFscmVhZHkgcHJlZmV0Y2hlZCwgb3IgYmVjYXVzZSB0aGVcbiAgLy8gdGFyZ2V0IHJvdXRlIGNvbnRhaW5zIGR5bmFtaWMgZGF0YSB0aGF0IGNhbm5vdCBiZSBwcmVmZXRjaGVkLlxuICAvL1xuICAvLyBIb3dldmVyLCBpZiB0aGUgdGFyZ2V0IHJvdXRlIGlzIGZ1bGx5IHN0YXRpYywgYW5kIGl0J3MgYWxyZWFkeSBjb21wbGV0ZWx5XG4gIC8vIGxvYWRlZCBpbnRvIHRoZSBzZWdtZW50IGNhY2hlLCB0aGVuIHdlIGNhbiBza2lwIHRoZSBzZXJ2ZXIgcmVxdWVzdC5cbiAgLy9cbiAgLy8gVGhpcyBzdGFydHMgb2ZmIGFzIGBmYWxzZWAsIGFuZCBpcyBzZXQgdG8gYHRydWVgIGlmIGFueSBvZiB0aGUgY2hpbGRcbiAgLy8gcm91dGVzIHJlcXVpcmVzIGEgZHluYW1pYyByZXF1ZXN0LlxuICBsZXQgbmVlZHNEeW5hbWljUmVxdWVzdCA9IGZhbHNlXG4gIC8vIEFzIHdlIHRyYXZlcnNlIHRoZSBjaGlsZHJlbiwgd2UnbGwgY29uc3RydWN0IGEgRmxpZ2h0Um91dGVyU3RhdGUgdGhhdCBjYW5cbiAgLy8gYmUgc2VudCB0byB0aGUgc2VydmVyIHRvIHJlcXVlc3QgdGhlIGR5bmFtaWMgZGF0YS4gSWYgaXQgdHVybnMgb3V0IHRoYXRcbiAgLy8gbm90aGluZyBpbiB0aGUgc3VidHJlZSBpcyBkeW5hbWljIChpLmUuIG5lZWRzRHluYW1pY1JlcXVlc3QgaXMgZmFsc2UgYXQgdGhlXG4gIC8vIGVuZCksIHRoZW4gdGhpcyB3aWxsIGJlIGRpc2NhcmRlZC5cbiAgLy8gVE9ETzogV2UgY2FuIHByb2JhYmx5IG9wdGltaXplIHRoZSBmb3JtYXQgb2YgdGhpcyBkYXRhIHN0cnVjdHVyZSB0byBvbmx5XG4gIC8vIGluY2x1ZGUgcGF0aHMgdGhhdCBhcmUgZHluYW1pYy4gSW5zdGVhZCBvZiByZXVzaW5nIHRoZVxuICAvLyBGbGlnaHRSb3V0ZXJTdGF0ZSB0eXBlLlxuICBsZXQgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW46IHtcbiAgICBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgfSA9IHt9XG5cbiAgZm9yIChsZXQgcGFyYWxsZWxSb3V0ZUtleSBpbiBuZXdSb3V0ZXJTdGF0ZUNoaWxkcmVuKSB7XG4gICAgY29uc3QgbmV3Um91dGVyU3RhdGVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgPVxuICAgICAgbmV3Um91dGVyU3RhdGVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IG9sZFJvdXRlclN0YXRlQ2hpbGQ6IEZsaWdodFJvdXRlclN0YXRlIHwgdm9pZCA9XG4gICAgICBvbGRSb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgY29uc3Qgb2xkU2VnbWVudE1hcENoaWxkID0gb2xkUGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG4gICAgY29uc3QgcHJlZmV0Y2hEYXRhQ2hpbGQ6IENhY2hlTm9kZVNlZWREYXRhIHwgdm9pZCB8IG51bGwgPVxuICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGRyZW4gIT09IG51bGxcbiAgICAgICAgPyBwcmVmZXRjaERhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgICAgICA6IG51bGxcblxuICAgIGNvbnN0IG5ld1NlZ21lbnRDaGlsZCA9IG5ld1JvdXRlclN0YXRlQ2hpbGRbMF1cbiAgICBjb25zdCBuZXdTZWdtZW50UGF0aENoaWxkID0gc2VnbWVudFBhdGguY29uY2F0KFtcbiAgICAgIHBhcmFsbGVsUm91dGVLZXksXG4gICAgICBuZXdTZWdtZW50Q2hpbGQsXG4gICAgXSlcbiAgICBjb25zdCBuZXdTZWdtZW50S2V5Q2hpbGQgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleShuZXdTZWdtZW50Q2hpbGQpXG5cbiAgICBjb25zdCBvbGRTZWdtZW50Q2hpbGQgPVxuICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCAhPT0gdW5kZWZpbmVkID8gb2xkUm91dGVyU3RhdGVDaGlsZFswXSA6IHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2xkQ2FjaGVOb2RlQ2hpbGQgPVxuICAgICAgb2xkU2VnbWVudE1hcENoaWxkICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBvbGRTZWdtZW50TWFwQ2hpbGQuZ2V0KG5ld1NlZ21lbnRLZXlDaGlsZClcbiAgICAgICAgOiB1bmRlZmluZWRcblxuICAgIGxldCB0YXNrQ2hpbGQ6IFRhc2sgfCBudWxsXG4gICAgaWYgKG5ld1NlZ21lbnRDaGlsZCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSkge1xuICAgICAgLy8gVGhpcyBpcyBhbm90aGVyIGtpbmQgb2YgbGVhZiBzZWdtZW50IOKAlCBhIGRlZmF1bHQgcm91dGUuXG4gICAgICAvL1xuICAgICAgLy8gRGVmYXVsdCByb3V0ZXMgaGF2ZSBzcGVjaWFsIGJlaGF2aW9yLiBXaGVuIHRoZXJlJ3Mgbm8gbWF0Y2hpbmcgc2VnbWVudFxuICAgICAgLy8gZm9yIGEgcGFyYWxsZWwgcm91dGUsIE5leHQuanMgcHJlc2VydmVzIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNlZ21lbnRcbiAgICAgIC8vIGR1cmluZyBhIGNsaWVudCBuYXZpZ2F0aW9uIOKAlCBidXQgbm90IGZvciBpbml0aWFsIHJlbmRlci4gVGhlIHNlcnZlclxuICAgICAgLy8gbGVhdmVzIGl0IHRvIHRoZSBjbGllbnQgdG8gYWNjb3VudCBmb3IgdGhpcy4gU28gd2UgbmVlZCB0byBoYW5kbGVcbiAgICAgIC8vIGl0IGhlcmUuXG4gICAgICBpZiAob2xkUm91dGVyU3RhdGVDaGlsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIFJldXNlIHRoZSBleGlzdGluZyBSb3V0ZXIgU3RhdGUgZm9yIHRoaXMgc2VnbWVudC4gV2Ugc3Bhd24gYSBcInRhc2tcIlxuICAgICAgICAvLyBqdXN0IHRvIGtlZXAgdHJhY2sgb2YgdGhlIHVwZGF0ZWQgcm91dGVyIHN0YXRlOyB1bmxpa2UgbW9zdCwgaXQnc1xuICAgICAgICAvLyBhbHJlYWR5IGZ1bGZpbGxlZCBhbmQgd29uJ3QgYmUgYWZmZWN0ZWQgYnkgdGhlIGR5bmFtaWMgcmVzcG9uc2UuXG4gICAgICAgIHRhc2tDaGlsZCA9IHNwYXduUmV1c2VkVGFzayhvbGRSb3V0ZXJTdGF0ZUNoaWxkKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlcmUncyBubyBjdXJyZW50bHkgYWN0aXZlIHNlZ21lbnQuIFN3aXRjaCB0byB0aGUgXCJjcmVhdGVcIiBwYXRoLlxuICAgICAgICB0YXNrQ2hpbGQgPSBiZWdpblJlbmRlcmluZ05ld1JvdXRlVHJlZShcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBvbGRSb3V0ZXJTdGF0ZUNoaWxkLFxuICAgICAgICAgIG5ld1JvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgICAgb2xkQ2FjaGVOb2RlQ2hpbGQsXG4gICAgICAgICAgZGlkRmluZFJvb3RMYXlvdXQsXG4gICAgICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGQgIT09IHVuZGVmaW5lZCA/IHByZWZldGNoRGF0YUNoaWxkIDogbnVsbCxcbiAgICAgICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICAgICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgICAgICAgIG5ld1NlZ21lbnRQYXRoQ2hpbGQsXG4gICAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaXNTYW1lUGFnZU5hdmlnYXRpb24gJiZcbiAgICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBwYWdlIHNlZ21lbnQuXG4gICAgICAvLyBUT0RPOiBXZSdyZSBub3QgY29uc2lzdGVudCBhYm91dCBob3cgd2UgZG8gdGhpcyBjaGVjay4gU29tZSBwbGFjZXNcbiAgICAgIC8vIGNoZWNrIGlmIHRoZSBzZWdtZW50IHN0YXJ0cyB3aXRoIFBBR0VfU0VHTUVOVF9LRVksIGJ1dCBtb3N0IHNlZW0gdG9cbiAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFueSBhbnkgY2hpbGRyZW4sIHdoaWNoIGlzIHdoeSBJJ20gZG9pbmcgaXQgaGVyZS4gV2VcbiAgICAgIC8vIHNob3VsZCBwcm9iYWJseSBlbmNvZGUgYW4gZW1wdHkgY2hpbGRyZW4gc2V0IGFzIGBudWxsYCB0aG91Z2guIEVpdGhlclxuICAgICAgLy8gd2F5LCB3ZSBzaG91bGQgdXBkYXRlIGFsbCB0aGUgY2hlY2tzIHRvIGJlIGNvbnNpc3RlbnQuXG4gICAgICBPYmplY3Qua2V5cyhuZXdSb3V0ZXJTdGF0ZUNoaWxkWzFdKS5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIC8vIFdlIHNwZWNpYWwgY2FzZSBuYXZpZ2F0aW9ucyB0byB0aGUgZXhhY3Qgc2FtZSBVUkwgYXMgdGhlIGN1cnJlbnRcbiAgICAgIC8vIGxvY2F0aW9uLiBJdCdzIGEgY29tbW9uIFVJIHBhdHRlcm4gZm9yIGFwcHMgdG8gcmVmcmVzaCB3aGVuIHlvdSBjbGljayBhXG4gICAgICAvLyBsaW5rIHRvIHRoZSBjdXJyZW50IHBhZ2UuIFNvIHdoZW4gdGhpcyBoYXBwZW5zLCB3ZSByZWZyZXNoIHRoZSBkeW5hbWljXG4gICAgICAvLyBkYXRhIGluIHRoZSBwYWdlIHNlZ21lbnRzLlxuICAgICAgLy9cbiAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFwcGx5IGlmIHRoZSBhbnkgcGFydCBvZiB0aGUgaGFzaCBvciBzZWFyY2hcbiAgICAgIC8vIHF1ZXJ5IGhhcyBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGZlZWwgYSBiaXQgd2VpcmQgYnV0IGl0IG1ha2VzIG1vcmUgc2Vuc2VcbiAgICAgIC8vIHdoZW4geW91IGNvbnNpZGVyIHRoYXQgdGhlIHdheSB0byB0cmlnZ2VyIHRoaXMgYmVoYXZpb3IgaXMgdG8gY2xpY2tcbiAgICAgIC8vIHRoZSBzYW1lIGxpbmsgbXVsdGlwbGUgdGltZXMuXG4gICAgICAvL1xuICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHByb2JhYmx5IHJlZnJlc2ggdGhlICplbnRpcmUqIHJvdXRlIHdoZW4gdGhpcyBjYXNlXG4gICAgICAvLyBvY2N1cnMsIG5vdCBqdXN0IHRoZSBwYWdlIHNlZ21lbnRzLiBFc3NlbnRpYWxseSB0cmVhdGluZyBpdCB0aGUgc2FtZSBhc1xuICAgICAgLy8gYSByZWZyZXNoKCkgdHJpZ2dlcmVkIGJ5IGFuIGFjdGlvbiwgd2hpY2ggaXMgdGhlIG1vcmUgZXhwbGljaXQgd2F5IG9mXG4gICAgICAvLyBtb2RlbGluZyB0aGUgVUkgcGF0dGVybiBkZXNjcmliZWQgYWJvdmUuXG4gICAgICAvL1xuICAgICAgLy8gQWxzbyBub3RlIHRoYXQgdGhpcyBvbmx5IHJlZnJlc2hlcyB0aGUgZHluYW1pYyBkYXRhLCBub3Qgc3RhdGljL1xuICAgICAgLy8gY2FjaGVkIGRhdGEuIElmIHRoZSBwYWdlIHNlZ21lbnQgaXMgZnVsbHkgc3RhdGljIGFuZCBwcmVmZXRjaGVkLCB0aGVcbiAgICAgIC8vIHJlcXVlc3QgaXMgc2tpcHBlZC4gKFRoaXMgaXMgYWxzbyBob3cgcmVmcmVzaCgpIHdvcmtzLilcbiAgICAgIHRhc2tDaGlsZCA9IGJlZ2luUmVuZGVyaW5nTmV3Um91dGVUcmVlKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgbmV3Um91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgb2xkQ2FjaGVOb2RlQ2hpbGQsXG4gICAgICAgIGRpZEZpbmRSb290TGF5b3V0LFxuICAgICAgICBwcmVmZXRjaERhdGFDaGlsZCAhPT0gdW5kZWZpbmVkID8gcHJlZmV0Y2hEYXRhQ2hpbGQgOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICAgICAgbmV3U2VnbWVudFBhdGhDaGlsZCxcbiAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgICApXG4gICAgfSBlbHNlIGlmIChcbiAgICAgIG9sZFJvdXRlclN0YXRlQ2hpbGQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb2xkU2VnbWVudENoaWxkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIG1hdGNoU2VnbWVudChuZXdTZWdtZW50Q2hpbGQsIG9sZFNlZ21lbnRDaGlsZClcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgb2xkQ2FjaGVOb2RlQ2hpbGQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBvbGRSb3V0ZXJTdGF0ZUNoaWxkICE9PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICAvLyBUaGlzIHNlZ21lbnQgZXhpc3RzIGluIGJvdGggdGhlIG9sZCBhbmQgbmV3IHRyZWVzLiBSZWN1cnNpdmVseSB1cGRhdGVcbiAgICAgICAgLy8gdGhlIGNoaWxkcmVuLlxuICAgICAgICB0YXNrQ2hpbGQgPSB1cGRhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24oXG4gICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgb2xkQ2FjaGVOb2RlQ2hpbGQsXG4gICAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgICBuZXdSb3V0ZXJTdGF0ZUNoaWxkLFxuICAgICAgICAgIGRpZEZpbmRSb290TGF5b3V0LFxuICAgICAgICAgIHByZWZldGNoRGF0YUNoaWxkLFxuICAgICAgICAgIHByZWZldGNoSGVhZCxcbiAgICAgICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICAgICAgaXNTYW1lUGFnZU5hdmlnYXRpb24sXG4gICAgICAgICAgbmV3U2VnbWVudFBhdGhDaGlsZCxcbiAgICAgICAgICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHRcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlcmUncyBubyBleGlzdGluZyBDYWNoZSBOb2RlIGZvciB0aGlzIHNlZ21lbnQuIFN3aXRjaCB0byB0aGVcbiAgICAgICAgLy8gXCJjcmVhdGVcIiBwYXRoLlxuICAgICAgICB0YXNrQ2hpbGQgPSBiZWdpblJlbmRlcmluZ05ld1JvdXRlVHJlZShcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBvbGRSb3V0ZXJTdGF0ZUNoaWxkLFxuICAgICAgICAgIG5ld1JvdXRlclN0YXRlQ2hpbGQsXG4gICAgICAgICAgb2xkQ2FjaGVOb2RlQ2hpbGQsXG4gICAgICAgICAgZGlkRmluZFJvb3RMYXlvdXQsXG4gICAgICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGQgIT09IHVuZGVmaW5lZCA/IHByZWZldGNoRGF0YUNoaWxkIDogbnVsbCxcbiAgICAgICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICAgICAgaXNQcmVmZXRjaEhlYWRQYXJ0aWFsLFxuICAgICAgICAgIG5ld1NlZ21lbnRQYXRoQ2hpbGQsXG4gICAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhpcyBpcyBhIG5ldyB0cmVlLiBTd2l0Y2ggdG8gdGhlIFwiY3JlYXRlXCIgcGF0aC5cbiAgICAgIHRhc2tDaGlsZCA9IGJlZ2luUmVuZGVyaW5nTmV3Um91dGVUcmVlKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgb2xkUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgbmV3Um91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgb2xkQ2FjaGVOb2RlQ2hpbGQsXG4gICAgICAgIGRpZEZpbmRSb290TGF5b3V0LFxuICAgICAgICBwcmVmZXRjaERhdGFDaGlsZCAhPT0gdW5kZWZpbmVkID8gcHJlZmV0Y2hEYXRhQ2hpbGQgOiBudWxsLFxuICAgICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICAgICAgbmV3U2VnbWVudFBhdGhDaGlsZCxcbiAgICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgICApXG4gICAgfVxuXG4gICAgaWYgKHRhc2tDaGlsZCAhPT0gbnVsbCkge1xuICAgICAgLy8gUmVjdXJzaXZlbHkgcHJvcGFnYXRlIHVwIHRoZSBjaGlsZCB0YXNrcy5cblxuICAgICAgaWYgKHRhc2tDaGlsZC5yb3V0ZSA9PT0gbnVsbCkge1xuICAgICAgICAvLyBPbmUgb2YgdGhlIGNoaWxkIHRhc2tzIGRpc2NvdmVyZWQgYSBjaGFuZ2UgdG8gdGhlIHJvb3QgbGF5b3V0LlxuICAgICAgICAvLyBJbW1lZGlhdGVseSB1bndpbmQgZnJvbSB0aGlzIHJlY3Vyc2l2ZSB0cmF2ZXJzYWwuXG4gICAgICAgIHJldHVybiBNUEFfTkFWSUdBVElPTl9UQVNLXG4gICAgICB9XG5cbiAgICAgIGlmICh0YXNrQ2hpbGRyZW4gPT09IG51bGwpIHtcbiAgICAgICAgdGFza0NoaWxkcmVuID0gbmV3IE1hcCgpXG4gICAgICB9XG4gICAgICB0YXNrQ2hpbGRyZW4uc2V0KHBhcmFsbGVsUm91dGVLZXksIHRhc2tDaGlsZClcbiAgICAgIGNvbnN0IG5ld0NhY2hlTm9kZUNoaWxkID0gdGFza0NoaWxkLm5vZGVcbiAgICAgIGlmIChuZXdDYWNoZU5vZGVDaGlsZCAhPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBuZXdTZWdtZW50TWFwQ2hpbGQ6IENoaWxkU2VnbWVudE1hcCA9IG5ldyBNYXAob2xkU2VnbWVudE1hcENoaWxkKVxuICAgICAgICBuZXdTZWdtZW50TWFwQ2hpbGQuc2V0KG5ld1NlZ21lbnRLZXlDaGlsZCwgbmV3Q2FjaGVOb2RlQ2hpbGQpXG4gICAgICAgIHByZWZldGNoUGFyYWxsZWxSb3V0ZXMuc2V0KHBhcmFsbGVsUm91dGVLZXksIG5ld1NlZ21lbnRNYXBDaGlsZClcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNoaWxkIHRyZWUncyByb3V0ZSBzdGF0ZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIHByZWZldGNoZWRcbiAgICAgIC8vIHJvdXRlIHNlbnQgYnkgdGhlIHNlcnZlci4gV2UgbmVlZCB0byBjbG9uZSBpdCBhcyB3ZSB0cmF2ZXJzZSBiYWNrIHVwXG4gICAgICAvLyB0aGUgdHJlZS5cbiAgICAgIGNvbnN0IHRhc2tDaGlsZFJvdXRlID0gdGFza0NoaWxkLnJvdXRlXG4gICAgICBwYXRjaGVkUm91dGVyU3RhdGVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IHRhc2tDaGlsZFJvdXRlXG5cbiAgICAgIGNvbnN0IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkID0gdGFza0NoaWxkLmR5bmFtaWNSZXF1ZXN0VHJlZVxuICAgICAgaWYgKGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkICE9PSBudWxsKSB7XG4gICAgICAgIC8vIFNvbWV0aGluZyBpbiB0aGUgY2hpbGQgdHJlZSBpcyBkeW5hbWljLlxuICAgICAgICBuZWVkc0R5bmFtaWNSZXF1ZXN0ID0gdHJ1ZVxuICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IGR5bmFtaWNSZXF1ZXN0VHJlZUNoaWxkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XSA9IHRhc2tDaGlsZFJvdXRlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBjaGlsZCBkaWRuJ3QgY2hhbmdlLiBXZSBjYW4gdXNlIHRoZSBwcmVmZXRjaGVkIHJvdXRlciBzdGF0ZS5cbiAgICAgIHBhdGNoZWRSb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldID0gbmV3Um91dGVyU3RhdGVDaGlsZFxuICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSBuZXdSb3V0ZXJTdGF0ZUNoaWxkXG4gICAgfVxuICB9XG5cbiAgaWYgKHRhc2tDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIC8vIE5vIG5ldyB0YXNrcyB3ZXJlIHNwYXduZWQuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IG5ld0NhY2hlTm9kZTogUmVhZHlDYWNoZU5vZGUgPSB7XG4gICAgbGF6eURhdGE6IG51bGwsXG4gICAgcnNjOiBvbGRDYWNoZU5vZGUucnNjLFxuICAgIC8vIFdlIGludGVudGlvbmFsbHkgYXJlbid0IHVwZGF0aW5nIHRoZSBwcmVmZXRjaFJzYyBmaWVsZCwgc2luY2UgdGhpcyBub2RlXG4gICAgLy8gaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZSBjdXJyZW50IHRyZWUsIGJlY2F1c2UgaXQgd291bGQgYmUgd2VpcmQgZm9yXG4gICAgLy8gcHJlZmV0Y2ggZGF0YSB0byBiZSBuZXdlciB0aGFuIHRoZSBmaW5hbCBkYXRhLiBJdCBwcm9iYWJseSB3b24ndCBldmVyIGJlXG4gICAgLy8gb2JzZXJ2YWJsZSBhbnl3YXksIGJ1dCBpdCBjb3VsZCBoYXBwZW4gaWYgdGhlIHNlZ21lbnQgaXMgdW5tb3VudGVkIHRoZW5cbiAgICAvLyBtb3VudGVkIGFnYWluLCBiZWNhdXNlIExheW91dFJvdXRlciB3aWxsIG1vbWVudGFyaWx5IHN3aXRjaCB0byByZW5kZXJpbmdcbiAgICAvLyBwcmVmZXRjaFJzYywgdmlhIHVzZURlZmVycmVkVmFsdWUuXG4gICAgcHJlZmV0Y2hSc2M6IG9sZENhY2hlTm9kZS5wcmVmZXRjaFJzYyxcbiAgICBoZWFkOiBvbGRDYWNoZU5vZGUuaGVhZCxcbiAgICBwcmVmZXRjaEhlYWQ6IG9sZENhY2hlTm9kZS5wcmVmZXRjaEhlYWQsXG4gICAgbG9hZGluZzogb2xkQ2FjaGVOb2RlLmxvYWRpbmcsXG5cbiAgICAvLyBFdmVyeXRoaW5nIGlzIGNsb25lZCBleGNlcHQgZm9yIHRoZSBjaGlsZHJlbiwgd2hpY2ggd2UgY29tcHV0ZWQgYWJvdmUuXG4gICAgcGFyYWxsZWxSb3V0ZXM6IHByZWZldGNoUGFyYWxsZWxSb3V0ZXMsXG5cbiAgICBuYXZpZ2F0ZWRBdCxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gUmV0dXJuIGEgY2xvbmVkIGNvcHkgb2YgdGhlIHJvdXRlciBzdGF0ZSB3aXRoIHVwZGF0ZWQgY2hpbGRyZW4uXG4gICAgcm91dGU6IHBhdGNoUm91dGVyU3RhdGVXaXRoTmV3Q2hpbGRyZW4oXG4gICAgICBuZXdSb3V0ZXJTdGF0ZSxcbiAgICAgIHBhdGNoZWRSb3V0ZXJTdGF0ZUNoaWxkcmVuXG4gICAgKSxcbiAgICBub2RlOiBuZXdDYWNoZU5vZGUsXG4gICAgZHluYW1pY1JlcXVlc3RUcmVlOiBuZWVkc0R5bmFtaWNSZXF1ZXN0XG4gICAgICA/IHBhdGNoUm91dGVyU3RhdGVXaXRoTmV3Q2hpbGRyZW4oXG4gICAgICAgICAgbmV3Um91dGVyU3RhdGUsXG4gICAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5cbiAgICAgICAgKVxuICAgICAgOiBudWxsLFxuICAgIGNoaWxkcmVuOiB0YXNrQ2hpbGRyZW4sXG4gIH1cbn1cblxuZnVuY3Rpb24gYmVnaW5SZW5kZXJpbmdOZXdSb3V0ZVRyZWUoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIG9sZFJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHZvaWQsXG4gIG5ld1JvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZXhpc3RpbmdDYWNoZU5vZGU6IENhY2hlTm9kZSB8IHZvaWQsXG4gIGRpZEZpbmRSb290TGF5b3V0OiBib29sZWFuLFxuICBwcmVmZXRjaERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgcG9zc2libHlQYXJ0aWFsUHJlZmV0Y2hIZWFkOiBIZWFkRGF0YSB8IG51bGwsXG4gIGlzUHJlZmV0Y2hIZWFkUGFydGlhbDogYm9vbGVhbixcbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoLFxuICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHQ6IEFycmF5PEZsaWdodFNlZ21lbnRQYXRoPlxuKTogVGFzayB7XG4gIGlmICghZGlkRmluZFJvb3RMYXlvdXQpIHtcbiAgICAvLyBUaGUgcm91dGUgdHJlZSBjaGFuZ2VkIGJlZm9yZSB3ZSByZWFjaGVkIGEgbGF5b3V0LiAoVGhlIGhpZ2hlc3QtbGV2ZWxcbiAgICAvLyBsYXlvdXQgaW4gYSByb3V0ZSB0cmVlIGlzIHJlZmVycmVkIHRvIGFzIHRoZSBcInJvb3RcIiBsYXlvdXQuKSBUaGlzIGNvdWxkXG4gICAgLy8gbWVhbiB0aGF0IHdlJ3JlIG5hdmlnYXRpbmcgYmV0d2VlbiB0d28gZGlmZmVyZW50IHJvb3QgbGF5b3V0cy4gV2hlbiB0aGlzXG4gICAgLy8gaGFwcGVucywgd2UgcGVyZm9ybSBhIGZ1bGwtcGFnZSAoTVBBLXN0eWxlKSBuYXZpZ2F0aW9uLlxuICAgIC8vXG4gICAgLy8gSG93ZXZlciwgdGhlIGFsZ29yaXRobSBmb3IgZGVjaWRpbmcgd2hlcmUgdG8gc3RhcnQgcmVuZGVyaW5nIGEgcm91dGVcbiAgICAvLyAoaS5lLiB0aGUgb25lIHBlcmZvcm1lZCBpbiBvcmRlciB0byByZWFjaCB0aGlzIGZ1bmN0aW9uKSBpcyBzdHJpY3RlclxuICAgIC8vIHRoYW4gdGhlIG9uZSB1c2VkIHRvIGRldGVjdCBhIGNoYW5nZSBpbiB0aGUgcm9vdCBsYXlvdXQuIFNvIGp1c3QgYmVjYXVzZVxuICAgIC8vIHdlJ3JlIHJlLXJlbmRlcmluZyBhIHNlZ21lbnQgb3V0c2lkZSBvZiB0aGUgcm9vdCBsYXlvdXQgZG9lcyBub3QgbWVhbiB3ZVxuICAgIC8vIHNob3VsZCB0cmlnZ2VyIGEgZnVsbC1wYWdlIG5hdmlnYXRpb24uXG4gICAgLy9cbiAgICAvLyBTcGVjaWZpY2FsbHksIHdlIGhhbmRsZSBkeW5hbWljIHBhcmFtZXRlcnMgZGlmZmVyZW50bHk6IHR3byBzZWdtZW50cyBhcmVcbiAgICAvLyBjb25zaWRlcmVkIHRoZSBzYW1lIGV2ZW4gaWYgdGhlaXIgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICAgIC8vXG4gICAgLy8gUmVmZXIgdG8gaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IGZvciBkZXRhaWxzLlxuICAgIC8vXG4gICAgLy8gTm90ZSB0aGF0IHdlIG9ubHkgaGF2ZSB0byBwZXJmb3JtIHRoaXMgZXh0cmEgdHJhdmVyc2FsIGlmIHdlIGRpZG4ndFxuICAgIC8vIGFscmVhZHkgZGlzY292ZXIgYSByb290IGxheW91dCBpbiB0aGUgcGFydCBvZiB0aGUgdHJlZSB0aGF0IGlzIHVuY2hhbmdlZC5cbiAgICAvLyBJbiB0aGUgY29tbW9uIGNhc2UsIHRoaXMgYnJhbmNoIGlzIHNraXBwZWQgY29tcGxldGVseS5cbiAgICBpZiAoXG4gICAgICBvbGRSb3V0ZXJTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQob2xkUm91dGVyU3RhdGUsIG5ld1JvdXRlclN0YXRlKVxuICAgICkge1xuICAgICAgLy8gVGhlIHJvb3QgbGF5b3V0IGNoYW5nZWQuIFBlcmZvcm0gYSBmdWxsLXBhZ2UgbmF2aWdhdGlvbi5cbiAgICAgIHJldHVybiBNUEFfTkFWSUdBVElPTl9UQVNLXG4gICAgfVxuICB9XG4gIHJldHVybiBjcmVhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24oXG4gICAgbmF2aWdhdGVkQXQsXG4gICAgbmV3Um91dGVyU3RhdGUsXG4gICAgZXhpc3RpbmdDYWNoZU5vZGUsXG4gICAgcHJlZmV0Y2hEYXRhLFxuICAgIHBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZCxcbiAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgc2VnbWVudFBhdGgsXG4gICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gIClcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uKFxuICBuYXZpZ2F0ZWRBdDogbnVtYmVyLFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGV4aXN0aW5nQ2FjaGVOb2RlOiBDYWNoZU5vZGUgfCB2b2lkLFxuICBwcmVmZXRjaERhdGE6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCxcbiAgcG9zc2libHlQYXJ0aWFsUHJlZmV0Y2hIZWFkOiBIZWFkRGF0YSB8IG51bGwsXG4gIGlzUHJlZmV0Y2hIZWFkUGFydGlhbDogYm9vbGVhbixcbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoLFxuICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHQ6IEFycmF5PEZsaWdodFNlZ21lbnRQYXRoPlxuKTogU1BBTmF2aWdhdGlvblRhc2sge1xuICAvLyBTYW1lIHRyYXZlcnNhbCBhcyB1cGRhdGVDYWNoZU5vZGVOYXZpZ2F0aW9uLCBidXQgd2Ugc3dpdGNoIHRvIHRoaXMgcGF0aFxuICAvLyBvbmNlIHdlIHJlYWNoIHRoZSBwYXJ0IG9mIHRoZSB0cmVlIHRoYXQgd2FzIG5vdCBpbiB0aGUgcHJldmlvdXMgcm91dGUuIFdlXG4gIC8vIGRvbid0IG5lZWQgdG8gZGlmZiBhZ2FpbnN0IHRoZSBvbGQgdHJlZSwgd2UganVzdCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBvbmUuXG5cbiAgLy8gVGhlIGhlYWQgaXMgYXNzaWduZWQgdG8gZXZlcnkgbGVhZiBzZWdtZW50IGRlbGl2ZXJlZCBieSB0aGUgc2VydmVyLiBCYXNlZFxuICAvLyBvbiBjb3JyZXNwb25kaW5nIGxvZ2ljIGluIGZpbGwtbGF6eS1pdGVtcy10aWxsLWxlYWYtd2l0aC1oZWFkLnRzXG4gIGNvbnN0IHJvdXRlclN0YXRlQ2hpbGRyZW4gPSByb3V0ZXJTdGF0ZVsxXVxuICBjb25zdCBpc0xlYWZTZWdtZW50ID0gT2JqZWN0LmtleXMocm91dGVyU3RhdGVDaGlsZHJlbikubGVuZ3RoID09PSAwXG5cbiAgLy8gRXZlbiB3ZSdyZSByZW5kZXJpbmcgaW5zaWRlIHRoZSBcIm5ld1wiIHBhcnQgb2YgdGhlIHRhcmdldCB0cmVlLCB3ZSBtYXkgaGF2ZVxuICAvLyBhIGxvY2FsbHkgY2FjaGVkIHNlZ21lbnQgdGhhdCB3ZSBjYW4gcmV1c2UuIFRoaXMgbWF5IGNvbWUgZnJvbSBlaXRoZXIgMSlcbiAgLy8gdGhlIENhY2hlTm9kZSB0cmVlLCB3aGljaCBsaXZlcyBpbiBSZWFjdCBzdGF0ZSBhbmQgaXMgcG9wdWxhdGVkIGJ5IHByZXZpb3VzXG4gIC8vIG5hdmlnYXRpb25zOyBvciAyKSB0aGUgcHJlZmV0Y2ggY2FjaGUsIHdoaWNoIGlzIGEgc2VwYXJhdGUgY2FjaGUgdGhhdCBpc1xuICAvLyBwb3B1bGF0ZWQgYnkgcHJlZmV0Y2hlcy5cbiAgbGV0IHJzYzogUmVhY3QuUmVhY3ROb2RlXG4gIGxldCBsb2FkaW5nOiBMb2FkaW5nTW9kdWxlRGF0YSB8IFByb21pc2U8TG9hZGluZ01vZHVsZURhdGE+XG4gIGxldCBoZWFkOiBIZWFkRGF0YSB8IG51bGxcbiAgbGV0IGNhY2hlTm9kZU5hdmlnYXRlZEF0OiBudW1iZXJcbiAgaWYgKFxuICAgIGV4aXN0aW5nQ2FjaGVOb2RlICE9PSB1bmRlZmluZWQgJiZcbiAgICAvLyBEWU5BTUlDX1NUQUxFVElNRV9NUyBkZWZhdWx0cyB0byAwLCBidXQgaXQgY2FuIGJlIGluY3JlYXNlZCB1c2luZ1xuICAgIC8vIHRoZSBleHBlcmltZW50YWwuc3RhbGVUaW1lcy5keW5hbWljIGNvbmZpZy4gV2hlbiBzZXQsIHdlJ2xsIGF2b2lkXG4gICAgLy8gcmVmZXRjaGluZyBkeW5hbWljIGRhdGEgaWYgaXQgd2FzIGZldGNoZWQgd2l0aGluIHRoZSBnaXZlbiB0aHJlc2hvbGQuXG4gICAgZXhpc3RpbmdDYWNoZU5vZGUubmF2aWdhdGVkQXQgKyBEWU5BTUlDX1NUQUxFVElNRV9NUyA+IG5hdmlnYXRlZEF0XG4gICkge1xuICAgIC8vIFdlIGhhdmUgYW4gZXhpc3RpbmcgQ2FjaGVOb2RlIGZvciB0aGlzIHNlZ21lbnQsIGFuZCBpdCdzIG5vdCBzdGFsZS4gV2VcbiAgICAvLyBzaG91bGQgcmV1c2UgaXQgcmF0aGVyIHRoYW4gcmVxdWVzdCBhIG5ldyBvbmUuXG4gICAgcnNjID0gZXhpc3RpbmdDYWNoZU5vZGUucnNjXG4gICAgbG9hZGluZyA9IGV4aXN0aW5nQ2FjaGVOb2RlLmxvYWRpbmdcbiAgICBoZWFkID0gZXhpc3RpbmdDYWNoZU5vZGUuaGVhZFxuXG4gICAgLy8gRG9uJ3QgdXBkYXRlIHRoZSBuYXZpZ2F0ZWRBdCB0aW1lc3RhbXAsIHNpbmNlIHdlJ3JlIHJldXNpbmcgc3RhbGUgZGF0YS5cbiAgICBjYWNoZU5vZGVOYXZpZ2F0ZWRBdCA9IGV4aXN0aW5nQ2FjaGVOb2RlLm5hdmlnYXRlZEF0XG4gIH0gZWxzZSBpZiAocHJlZmV0Y2hEYXRhICE9PSBudWxsKSB7XG4gICAgLy8gVGhlcmUncyBubyBleGlzdGluZyBDYWNoZU5vZGUgZm9yIHRoaXMgc2VnbWVudCwgYnV0IHdlIGRvIGhhdmUgcHJlZmV0Y2hcbiAgICAvLyBkYXRhLiBJZiB0aGUgcHJlZmV0Y2ggZGF0YSBpcyBmdWxseSBzdGF0aWMgKGkuZS4gZG9lcyBub3QgY29udGFpbiBhbnlcbiAgICAvLyBkeW5hbWljIGhvbGVzKSwgd2UgZG9uJ3QgbmVlZCB0byByZXF1ZXN0IGl0IGZyb20gdGhlIHNlcnZlci5cbiAgICByc2MgPSBwcmVmZXRjaERhdGFbMV1cbiAgICBsb2FkaW5nID0gcHJlZmV0Y2hEYXRhWzNdXG4gICAgaGVhZCA9IGlzTGVhZlNlZ21lbnQgPyBwb3NzaWJseVBhcnRpYWxQcmVmZXRjaEhlYWQgOiBudWxsXG4gICAgLy8gRXZlbiB0aG91Z2ggd2UncmUgYWNjZXNzaW5nIHRoZSBkYXRhIGZyb20gdGhlIHByZWZldGNoIGNhY2hlLCB0aGlzIGlzXG4gICAgLy8gY29uY2VwdHVhbGx5IGEgbmV3IHNlZ21lbnQsIG5vdCBhIHJldXNlZCBvbmUuIFNvIHdlIHNob3VsZCB1cGRhdGUgdGhlXG4gICAgLy8gbmF2aWdhdGVkQXQgdGltZXN0YW1wLlxuICAgIGNhY2hlTm9kZU5hdmlnYXRlZEF0ID0gbmF2aWdhdGVkQXRcbiAgICBjb25zdCBpc1ByZWZldGNoUnNjUGFydGlhbCA9IHByZWZldGNoRGF0YVs0XVxuICAgIGlmIChcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBzZWdtZW50IGRhdGEgaXMgcGFydGlhbFxuICAgICAgaXNQcmVmZXRjaFJzY1BhcnRpYWwgfHxcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBoZWFkIGlzIHBhcnRpYWwgKG9ubHkgcmVsZXZhbnQgaWYgdGhpcyBpcyBhIGxlYWYgc2VnbWVudClcbiAgICAgIChpc1ByZWZldGNoSGVhZFBhcnRpYWwgJiYgaXNMZWFmU2VnbWVudClcbiAgICApIHtcbiAgICAgIC8vIFdlIG9ubHkgaGF2ZSBwYXJ0aWFsIGRhdGEgZnJvbSB0aGlzIHNlZ21lbnQuIExpa2UgbWlzc2luZyBzZWdtZW50cywgd2VcbiAgICAgIC8vIG11c3QgcmVxdWVzdCB0aGUgZnVsbCBkYXRhIGZyb20gdGhlIHNlcnZlci5cbiAgICAgIHJldHVybiBzcGF3blBlbmRpbmdUYXNrKFxuICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgcm91dGVyU3RhdGUsXG4gICAgICAgIHByZWZldGNoRGF0YSxcbiAgICAgICAgcG9zc2libHlQYXJ0aWFsUHJlZmV0Y2hIZWFkLFxuICAgICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICAgIHNlZ21lbnRQYXRoLFxuICAgICAgICBzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHRcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIHByZWZldGNoIGRhdGEgaXMgZnVsbHkgc3RhdGljLCBzbyB3ZSBjYW4gb21pdCBpdCBmcm9tIHRoZVxuICAgICAgLy8gbmF2aWdhdGlvbiByZXF1ZXN0LlxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBUaGVyZSdzIG5vIHByZWZldGNoIGZvciB0aGlzIHNlZ21lbnQuIEV2ZXJ5dGhpbmcgZnJvbSB0aGlzIHBvaW50IHdpbGwgYmVcbiAgICAvLyByZXF1ZXN0ZWQgZnJvbSB0aGUgc2VydmVyLCBldmVuIGlmIHRoZXJlIGFyZSBzdGF0aWMgY2hpbGRyZW4gYmVsb3cgaXQuXG4gICAgLy8gQ3JlYXRlIGEgdGVybWluYWwgdGFzayBub2RlIHRoYXQgd2lsbCBsYXRlciBiZSBmdWxmaWxsZWQgYnlcbiAgICAvLyBzZXJ2ZXIgcmVzcG9uc2UuXG4gICAgcmV0dXJuIHNwYXduUGVuZGluZ1Rhc2soXG4gICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgIHJvdXRlclN0YXRlLFxuICAgICAgbnVsbCxcbiAgICAgIHBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZCxcbiAgICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICAgIHNlZ21lbnRQYXRoLFxuICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgKVxuICB9XG5cbiAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgZnVsbCBzZWdtZW50IHdlIGNhbiByZW5kZXIsIHNvIHdlIGRvbid0IG5lZWQgdG8gcmVxdWVzdCBhXG4gIC8vIG5ldyBvbmUgZnJvbSB0aGUgc2VydmVyLiBLZWVwIHRyYXZlcnNpbmcgZG93biB0aGUgdHJlZSB1bnRpbCB3ZSByZWFjaFxuICAvLyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBhIGR5bmFtaWMgcmVxdWVzdC5cbiAgY29uc3QgcHJlZmV0Y2hEYXRhQ2hpbGRyZW4gPSBwcmVmZXRjaERhdGEgIT09IG51bGwgPyBwcmVmZXRjaERhdGFbMl0gOiBudWxsXG4gIGNvbnN0IHRhc2tDaGlsZHJlbiA9IG5ldyBNYXAoKVxuICBjb25zdCBleGlzdGluZ0NhY2hlTm9kZUNoaWxkcmVuID1cbiAgICBleGlzdGluZ0NhY2hlTm9kZSAhPT0gdW5kZWZpbmVkID8gZXhpc3RpbmdDYWNoZU5vZGUucGFyYWxsZWxSb3V0ZXMgOiBudWxsXG4gIGNvbnN0IGNhY2hlTm9kZUNoaWxkcmVuID0gbmV3IE1hcChleGlzdGluZ0NhY2hlTm9kZUNoaWxkcmVuKVxuICBsZXQgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW46IHtcbiAgICBbcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nXTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgfSA9IHt9XG4gIGxldCBuZWVkc0R5bmFtaWNSZXF1ZXN0ID0gZmFsc2VcbiAgaWYgKGlzTGVhZlNlZ21lbnQpIHtcbiAgICAvLyBUaGUgc2VnbWVudCBwYXRoIG9mIGV2ZXJ5IGxlYWYgc2VnbWVudCAoaS5lLiBwYWdlKSBpcyBjb2xsZWN0ZWQgaW50b1xuICAgIC8vIGEgcmVzdWx0IGFycmF5LiBUaGlzIGlzIHVzZWQgYnkgdGhlIExheW91dFJvdXRlciB0byBzY3JvbGwgdG8gZW5zdXJlIHRoYXRcbiAgICAvLyBuZXcgcGFnZXMgYXJlIHZpc2libGUgYWZ0ZXIgYSBuYXZpZ2F0aW9uLlxuICAgIC8vIFRPRE86IFdlIHNob3VsZCB1c2UgYSBzdHJpbmcgdG8gcmVwcmVzZW50IHRoZSBzZWdtZW50IHBhdGggaW5zdGVhZCBvZlxuICAgIC8vIGFuIGFycmF5LiBXZSBhbHJlYWR5IHVzZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBmb3IgdGhlIHBhdGggd2hlblxuICAgIC8vIGFjY2Vzc2luZyB0aGUgU2VnbWVudCBDYWNoZSwgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSBvbmUuXG4gICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0LnB1c2goc2VnbWVudFBhdGgpXG4gIH0gZWxzZSB7XG4gICAgZm9yIChsZXQgcGFyYWxsZWxSb3V0ZUtleSBpbiByb3V0ZXJTdGF0ZUNoaWxkcmVuKSB7XG4gICAgICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9XG4gICAgICAgIHJvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICAgIGNvbnN0IHByZWZldGNoRGF0YUNoaWxkOiBDYWNoZU5vZGVTZWVkRGF0YSB8IHZvaWQgfCBudWxsID1cbiAgICAgICAgcHJlZmV0Y2hEYXRhQ2hpbGRyZW4gIT09IG51bGxcbiAgICAgICAgICA/IHByZWZldGNoRGF0YUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICAgICAgOiBudWxsXG4gICAgICBjb25zdCBleGlzdGluZ1NlZ21lbnRNYXBDaGlsZCA9XG4gICAgICAgIGV4aXN0aW5nQ2FjaGVOb2RlQ2hpbGRyZW4gIT09IG51bGxcbiAgICAgICAgICA/IGV4aXN0aW5nQ2FjaGVOb2RlQ2hpbGRyZW4uZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHNlZ21lbnRDaGlsZCA9IHJvdXRlclN0YXRlQ2hpbGRbMF1cbiAgICAgIGNvbnN0IHNlZ21lbnRQYXRoQ2hpbGQgPSBzZWdtZW50UGF0aC5jb25jYXQoW1xuICAgICAgICBwYXJhbGxlbFJvdXRlS2V5LFxuICAgICAgICBzZWdtZW50Q2hpbGQsXG4gICAgICBdKVxuICAgICAgY29uc3Qgc2VnbWVudEtleUNoaWxkID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudENoaWxkKVxuXG4gICAgICBjb25zdCBleGlzdGluZ0NhY2hlTm9kZUNoaWxkID1cbiAgICAgICAgZXhpc3RpbmdTZWdtZW50TWFwQ2hpbGQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gZXhpc3RpbmdTZWdtZW50TWFwQ2hpbGQuZ2V0KHNlZ21lbnRLZXlDaGlsZClcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICBjb25zdCB0YXNrQ2hpbGQgPSBjcmVhdGVDYWNoZU5vZGVPbk5hdmlnYXRpb24oXG4gICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICByb3V0ZXJTdGF0ZUNoaWxkLFxuICAgICAgICBleGlzdGluZ0NhY2hlTm9kZUNoaWxkLFxuICAgICAgICBwcmVmZXRjaERhdGFDaGlsZCxcbiAgICAgICAgcG9zc2libHlQYXJ0aWFsUHJlZmV0Y2hIZWFkLFxuICAgICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICAgIHNlZ21lbnRQYXRoQ2hpbGQsXG4gICAgICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdFxuICAgICAgKVxuICAgICAgdGFza0NoaWxkcmVuLnNldChwYXJhbGxlbFJvdXRlS2V5LCB0YXNrQ2hpbGQpXG4gICAgICBjb25zdCBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCA9IHRhc2tDaGlsZC5keW5hbWljUmVxdWVzdFRyZWVcbiAgICAgIGlmIChkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCAhPT0gbnVsbCkge1xuICAgICAgICAvLyBTb21ldGhpbmcgaW4gdGhlIGNoaWxkIHRyZWUgaXMgZHluYW1pYy5cbiAgICAgICAgbmVlZHNEeW5hbWljUmVxdWVzdCA9IHRydWVcbiAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV0gPSByb3V0ZXJTdGF0ZUNoaWxkXG4gICAgICB9XG4gICAgICBjb25zdCBuZXdDYWNoZU5vZGVDaGlsZCA9IHRhc2tDaGlsZC5ub2RlXG4gICAgICBpZiAobmV3Q2FjaGVOb2RlQ2hpbGQgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgbmV3U2VnbWVudE1hcENoaWxkOiBDaGlsZFNlZ21lbnRNYXAgPSBuZXcgTWFwKClcbiAgICAgICAgbmV3U2VnbWVudE1hcENoaWxkLnNldChzZWdtZW50S2V5Q2hpbGQsIG5ld0NhY2hlTm9kZUNoaWxkKVxuICAgICAgICBjYWNoZU5vZGVDaGlsZHJlbi5zZXQocGFyYWxsZWxSb3V0ZUtleSwgbmV3U2VnbWVudE1hcENoaWxkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gU2luY2Ugd2UncmUgaW5zaWRlIGEgbmV3IHJvdXRlIHRyZWUsIHVubGlrZSB0aGVcbiAgICAvLyBgdXBkYXRlQ2FjaGVOb2RlT25OYXZpZ2F0aW9uYCBwYXRoLCB0aGUgcm91dGVyIHN0YXRlIG9uIHRoZSBjaGlsZHJlblxuICAgIC8vIHRhc2tzIGlzIGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgcm91dGVyIHN0YXRlIHdlIHBhc3MgaW4uIFNvIHdlIGRvbid0IG5lZWRcbiAgICAvLyB0byBjbG9uZS9tb2RpZnkgaXQuXG4gICAgcm91dGU6IHJvdXRlclN0YXRlLFxuICAgIG5vZGU6IHtcbiAgICAgIGxhenlEYXRhOiBudWxsLFxuICAgICAgLy8gU2luY2UgdGhpcyBzZWdtZW50IGlzIGFscmVhZHkgZnVsbCwgd2UgZG9uJ3QgbmVlZCB0byB1c2UgdGhlXG4gICAgICAvLyBgcHJlZmV0Y2hSc2NgIGZpZWxkLlxuICAgICAgcnNjLFxuICAgICAgcHJlZmV0Y2hSc2M6IG51bGwsXG4gICAgICBoZWFkLFxuICAgICAgcHJlZmV0Y2hIZWFkOiBudWxsLFxuICAgICAgbG9hZGluZyxcbiAgICAgIHBhcmFsbGVsUm91dGVzOiBjYWNoZU5vZGVDaGlsZHJlbixcbiAgICAgIG5hdmlnYXRlZEF0OiBjYWNoZU5vZGVOYXZpZ2F0ZWRBdCxcbiAgICB9LFxuICAgIGR5bmFtaWNSZXF1ZXN0VHJlZTogbmVlZHNEeW5hbWljUmVxdWVzdFxuICAgICAgPyBwYXRjaFJvdXRlclN0YXRlV2l0aE5ld0NoaWxkcmVuKHJvdXRlclN0YXRlLCBkeW5hbWljUmVxdWVzdFRyZWVDaGlsZHJlbilcbiAgICAgIDogbnVsbCxcbiAgICBjaGlsZHJlbjogdGFza0NoaWxkcmVuLFxuICB9XG59XG5cbmZ1bmN0aW9uIHBhdGNoUm91dGVyU3RhdGVXaXRoTmV3Q2hpbGRyZW4oXG4gIGJhc2VSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIG5ld0NoaWxkcmVuOiB7IFtwYXJhbGxlbFJvdXRlS2V5OiBzdHJpbmddOiBGbGlnaHRSb3V0ZXJTdGF0ZSB9XG4pOiBGbGlnaHRSb3V0ZXJTdGF0ZSB7XG4gIGNvbnN0IGNsb25lOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9IFtiYXNlUm91dGVyU3RhdGVbMF0sIG5ld0NoaWxkcmVuXVxuICAvLyBCYXNlZCBvbiBlcXVpdmFsZW50IGxvZ2ljIGluIGFwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlLCBidXQgc2hvdWxkXG4gIC8vIGNvbmZpcm0gd2hldGhlciB3ZSBuZWVkIHRvIGNvcHkgYWxsIG9mIHRoZXNlIGZpZWxkcy4gTm90IHN1cmUgdGhlIHNlcnZlclxuICAvLyBldmVyIHNlbmRzLCBlLmcuIHRoZSByZWZldGNoIG1hcmtlci5cbiAgaWYgKDIgaW4gYmFzZVJvdXRlclN0YXRlKSB7XG4gICAgY2xvbmVbMl0gPSBiYXNlUm91dGVyU3RhdGVbMl1cbiAgfVxuICBpZiAoMyBpbiBiYXNlUm91dGVyU3RhdGUpIHtcbiAgICBjbG9uZVszXSA9IGJhc2VSb3V0ZXJTdGF0ZVszXVxuICB9XG4gIGlmICg0IGluIGJhc2VSb3V0ZXJTdGF0ZSkge1xuICAgIGNsb25lWzRdID0gYmFzZVJvdXRlclN0YXRlWzRdXG4gIH1cbiAgcmV0dXJuIGNsb25lXG59XG5cbmZ1bmN0aW9uIHNwYXduUGVuZGluZ1Rhc2soXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIHJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcHJlZmV0Y2hEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIHByZWZldGNoSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBpc1ByZWZldGNoSGVhZFBhcnRpYWw6IGJvb2xlYW4sXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0OiBBcnJheTxGbGlnaHRTZWdtZW50UGF0aD5cbik6IFNQQU5hdmlnYXRpb25UYXNrIHtcbiAgLy8gQ3JlYXRlIGEgdGFzayB0aGF0IHdpbGwgbGF0ZXIgYmUgZnVsZmlsbGVkIGJ5IGRhdGEgZnJvbSB0aGUgc2VydmVyLlxuXG4gIC8vIENsb25lIHRoZSBwcmVmZXRjaGVkIHJvdXRlIHRyZWUgYW5kIHRoZSBgcmVmZXRjaGAgbWFya2VyIHRvIGl0LiBXZSdsbCBzZW5kXG4gIC8vIHRoaXMgdG8gdGhlIHNlcnZlciBzbyBpdCBrbm93cyB3aGVyZSB0byBzdGFydCByZW5kZXJpbmcuXG4gIGNvbnN0IGR5bmFtaWNSZXF1ZXN0VHJlZSA9IHBhdGNoUm91dGVyU3RhdGVXaXRoTmV3Q2hpbGRyZW4oXG4gICAgcm91dGVyU3RhdGUsXG4gICAgcm91dGVyU3RhdGVbMV1cbiAgKVxuICBkeW5hbWljUmVxdWVzdFRyZWVbM10gPSAncmVmZXRjaCdcblxuICBjb25zdCBuZXdUYXNrOiBUYXNrID0ge1xuICAgIHJvdXRlOiByb3V0ZXJTdGF0ZSxcblxuICAgIC8vIENvcnJlc3BvbmRzIHRvIHRoZSBwYXJ0IG9mIHRoZSByb3V0ZSB0aGF0IHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlIHNlcnZlci5cbiAgICBub2RlOiBjcmVhdGVQZW5kaW5nQ2FjaGVOb2RlKFxuICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICByb3V0ZXJTdGF0ZSxcbiAgICAgIHByZWZldGNoRGF0YSxcbiAgICAgIHByZWZldGNoSGVhZCxcbiAgICAgIGlzUHJlZmV0Y2hIZWFkUGFydGlhbCxcbiAgICAgIHNlZ21lbnRQYXRoLFxuICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgKSxcbiAgICAvLyBCZWNhdXNlIHRoaXMgaXMgbm9uLW51bGwsIGFuZCBpdCBnZXRzIHByb3BhZ2F0ZWQgdXAgdGhyb3VnaCB0aGUgcGFyZW50XG4gICAgLy8gdGFza3MsIHRoZSByb290IHRhc2sgd2lsbCBrbm93IHRoYXQgaXQgbmVlZHMgdG8gcGVyZm9ybSBhIHNlcnZlciByZXF1ZXN0LlxuICAgIGR5bmFtaWNSZXF1ZXN0VHJlZSxcbiAgICBjaGlsZHJlbjogbnVsbCxcbiAgfVxuICByZXR1cm4gbmV3VGFza1xufVxuXG5mdW5jdGlvbiBzcGF3blJldXNlZFRhc2socmV1c2VkUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlKTogVGFzayB7XG4gIC8vIENyZWF0ZSBhIHRhc2sgdGhhdCByZXVzZXMgYW4gZXhpc3Rpbmcgc2VnbWVudCwgZS5nLiB3aGVuIHJldXNpbmdcbiAgLy8gdGhlIGN1cnJlbnQgYWN0aXZlIHNlZ21lbnQgaW4gcGxhY2Ugb2YgYSBkZWZhdWx0IHJvdXRlLlxuICByZXR1cm4ge1xuICAgIHJvdXRlOiByZXVzZWRSb3V0ZXJTdGF0ZSxcbiAgICBub2RlOiBudWxsLFxuICAgIGR5bmFtaWNSZXF1ZXN0VHJlZTogbnVsbCxcbiAgICBjaGlsZHJlbjogbnVsbCxcbiAgfVxufVxuXG4vLyBXcml0ZXMgYSBkeW5hbWljIHNlcnZlciByZXNwb25zZSBpbnRvIHRoZSB0cmVlIGNyZWF0ZWQgYnlcbi8vIHVwZGF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbi4gQWxsIHBlbmRpbmcgcHJvbWlzZXMgdGhhdCB3ZXJlIHNwYXduZWQgYnkgdGhlXG4vLyBuYXZpZ2F0aW9uIHdpbGwgYmUgcmVzb2x2ZWQsIGVpdGhlciB3aXRoIGR5bmFtaWMgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIsIG9yXG4vLyBgbnVsbGAgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZGF0YSBpcyBtaXNzaW5nLlxuLy9cbi8vIEEgYG51bGxgIHZhbHVlIHdpbGwgdHJpZ2dlciBhIGxhenkgZmV0Y2ggZHVyaW5nIHJlbmRlciwgd2hpY2ggd2lsbCB0aGVuIHBhdGNoXG4vLyB1cCB0aGUgdHJlZSB1c2luZyB0aGUgc2FtZSBtZWNoYW5pc20gYXMgdGhlIG5vbi1QUFIgaW1wbGVtZW50YXRpb25cbi8vIChzZXJ2ZXJQYXRjaFJlZHVjZXIpLlxuLy9cbi8vIFVzdWFsbHksIHRoZSBzZXJ2ZXIgd2lsbCByZXNwb25kIHdpdGggZXhhY3RseSB0aGUgc3Vic2V0IG9mIGRhdGEgdGhhdCB3ZSdyZVxuLy8gd2FpdGluZyBmb3Ig4oCUIGV2ZXJ5dGhpbmcgYmVsb3cgdGhlIG5lYXJlc3Qgc2hhcmVkIGxheW91dC4gQnV0IHRlY2huaWNhbGx5LFxuLy8gdGhlIHNlcnZlciBjYW4gcmV0dXJuIGFueXRoaW5nIGl0IHdhbnRzLlxuLy9cbi8vIFRoaXMgZG9lcyBfbm90XyBjcmVhdGUgYSBuZXcgdHJlZTsgaXQgbW9kaWZpZXMgdGhlIGV4aXN0aW5nIG9uZSBpbiBwbGFjZS5cbi8vIFdoaWNoIG1lYW5zIGl0IG11c3QgZm9sbG93IHRoZSBTdXNwZW5zZSBydWxlcyBvZiBjYWNoZSBzYWZldHkuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuRm9yRHluYW1pY1JlcXVlc3QoXG4gIHRhc2s6IFNQQU5hdmlnYXRpb25UYXNrLFxuICByZXNwb25zZVByb21pc2U6IFByb21pc2U8RmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdD5cbikge1xuICByZXNwb25zZVByb21pc2UudGhlbihcbiAgICAoeyBmbGlnaHREYXRhIH06IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHQpID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gSGFwcGVucyB3aGVuIG5hdmlnYXRpbmcgdG8gcGFnZSBpbiBgcGFnZXNgIGZyb20gYGFwcGAuIFdlIHNob3VsZG4ndFxuICAgICAgICAvLyBnZXQgaGVyZSBiZWNhdXNlIHNob3VsZCBoYXZlIGFscmVhZHkgaGFuZGxlZCB0aGlzIGR1cmluZ1xuICAgICAgICAvLyB0aGUgcHJlZmV0Y2guXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBub3JtYWxpemVkRmxpZ2h0RGF0YSBvZiBmbGlnaHREYXRhKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzZWdtZW50UGF0aCxcbiAgICAgICAgICB0cmVlOiBzZXJ2ZXJSb3V0ZXJTdGF0ZSxcbiAgICAgICAgICBzZWVkRGF0YTogZHluYW1pY0RhdGEsXG4gICAgICAgICAgaGVhZDogZHluYW1pY0hlYWQsXG4gICAgICAgIH0gPSBub3JtYWxpemVkRmxpZ2h0RGF0YVxuXG4gICAgICAgIGlmICghZHluYW1pY0RhdGEpIHtcbiAgICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4uIFBQUiBzaG91bGQgYWx3YXlzIHNlbmQgYmFjayBhIHJlc3BvbnNlLlxuICAgICAgICAgIC8vIEhvd2V2ZXIsIGBGbGlnaHREYXRhUGF0aGAgaXMgYSBzaGFyZWQgdHlwZSBhbmQgdGhlIHByZS1QUFIgaGFuZGxpbmcgb2ZcbiAgICAgICAgICAvLyB0aGlzIG1pZ2h0IHJldHVybiBudWxsLlxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICB3cml0ZUR5bmFtaWNEYXRhSW50b1BlbmRpbmdUYXNrKFxuICAgICAgICAgIHRhc2ssXG4gICAgICAgICAgc2VnbWVudFBhdGgsXG4gICAgICAgICAgc2VydmVyUm91dGVyU3RhdGUsXG4gICAgICAgICAgZHluYW1pY0RhdGEsXG4gICAgICAgICAgZHluYW1pY0hlYWRcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBleGhhdXN0ZWQgYWxsIHRoZSBkYXRhIHdlIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlciwgaWZcbiAgICAgIC8vIHRoZXJlIGFyZSBhbnkgcmVtYWluaW5nIHBlbmRpbmcgdGFza3MgaW4gdGhlIHRyZWUsIGFib3J0IHRoZW0gbm93LlxuICAgICAgLy8gSWYgdGhlcmUncyBhbnkgbWlzc2luZyBkYXRhLCBpdCB3aWxsIHRyaWdnZXIgYSBsYXp5IGZldGNoLlxuICAgICAgYWJvcnRUYXNrKHRhc2ssIG51bGwpXG4gICAgfSxcbiAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgYW4gZXJyb3IgZHVyaW5nIHJlbmRlclxuICAgICAgYWJvcnRUYXNrKHRhc2ssIGVycm9yKVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZUR5bmFtaWNEYXRhSW50b1BlbmRpbmdUYXNrKFxuICByb290VGFzazogU1BBTmF2aWdhdGlvblRhc2ssXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgc2VydmVyUm91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBkeW5hbWljRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEsXG4gIGR5bmFtaWNIZWFkOiBIZWFkRGF0YVxuKSB7XG4gIC8vIFRoZSBkYXRhIHNlbnQgYnkgdGhlIHNlcnZlciByZXByZXNlbnRzIG9ubHkgYSBzdWJ0cmVlIG9mIHRoZSBhcHAuIFdlIG5lZWRcbiAgLy8gdG8gZmluZCB0aGUgcGFydCBvZiB0aGUgdGFzayB0cmVlIHRoYXQgbWF0Y2hlcyB0aGUgc2VydmVyIHJlc3BvbnNlLCBhbmRcbiAgLy8gZnVsZmlsbCBpdCB1c2luZyB0aGUgZHluYW1pYyBkYXRhLlxuICAvL1xuICAvLyBzZWdtZW50UGF0aCByZXByZXNlbnRzIHRoZSBwYXJlbnQgcGF0aCBvZiBzdWJ0cmVlLiBJdCdzIGEgcmVwZWF0aW5nIHBhdHRlcm5cbiAgLy8gb2YgcGFyYWxsZWwgcm91dGUga2V5IGFuZCBzZWdtZW50OlxuICAvL1xuICAvLyAgIFtzdHJpbmcsIFNlZ21lbnQsIHN0cmluZywgU2VnbWVudCwgc3RyaW5nLCBTZWdtZW50LCAuLi5dXG4gIC8vXG4gIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgcGF0aCBhbmQgZmluaXNoIGFueSB0YXNrcyB0aGF0IG1hdGNoIHRoaXMgcGF5bG9hZC5cbiAgbGV0IHRhc2sgPSByb290VGFza1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlZ21lbnRQYXRoLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgY29uc3QgcGFyYWxsZWxSb3V0ZUtleTogc3RyaW5nID0gc2VnbWVudFBhdGhbaV1cbiAgICBjb25zdCBzZWdtZW50OiBTZWdtZW50ID0gc2VnbWVudFBhdGhbaSArIDFdXG4gICAgY29uc3QgdGFza0NoaWxkcmVuID0gdGFzay5jaGlsZHJlblxuICAgIGlmICh0YXNrQ2hpbGRyZW4gIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHRhc2tDaGlsZCA9IHRhc2tDaGlsZHJlbi5nZXQocGFyYWxsZWxSb3V0ZUtleSlcbiAgICAgIGlmICh0YXNrQ2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCB0YXNrU2VnbWVudCA9IHRhc2tDaGlsZC5yb3V0ZVswXVxuICAgICAgICBpZiAobWF0Y2hTZWdtZW50KHNlZ21lbnQsIHRhc2tTZWdtZW50KSkge1xuICAgICAgICAgIC8vIEZvdW5kIGEgbWF0Y2ggZm9yIHRoaXMgdGFzay4gS2VlcCB0cmF2ZXJzaW5nIGRvd24gdGhlIHRhc2sgdHJlZS5cbiAgICAgICAgICB0YXNrID0gdGFza0NoaWxkXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBXZSBkaWRuJ3QgZmluZCBhIGNoaWxkIHRhc2sgdGhhdCBtYXRjaGVzIHRoZSBzZXJ2ZXIgZGF0YS4gRXhpdC4gV2Ugd29uJ3RcbiAgICAvLyBhYm9ydCB0aGUgdGFzaywgdGhvdWdoLCBiZWNhdXNlIGEgZGlmZmVyZW50IEZsaWdodERhdGFQYXRoIG1heSBiZSBhYmxlIHRvXG4gICAgLy8gZnVsZmlsbCBpdCAoc2VlIGxvb3AgaW4gbGlzdGVuRm9yRHluYW1pY1JlcXVlc3QpLiBXZSBvbmx5IGFib3J0IHRhc2tzXG4gICAgLy8gb25jZSB3ZSd2ZSBydW4gb3V0IG9mIGRhdGEuXG4gICAgcmV0dXJuXG4gIH1cblxuICBmaW5pc2hUYXNrVXNpbmdEeW5hbWljRGF0YVBheWxvYWQoXG4gICAgdGFzayxcbiAgICBzZXJ2ZXJSb3V0ZXJTdGF0ZSxcbiAgICBkeW5hbWljRGF0YSxcbiAgICBkeW5hbWljSGVhZFxuICApXG59XG5cbmZ1bmN0aW9uIGZpbmlzaFRhc2tVc2luZ0R5bmFtaWNEYXRhUGF5bG9hZChcbiAgdGFzazogU1BBTmF2aWdhdGlvblRhc2ssXG4gIHNlcnZlclJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgZHluYW1pY0RhdGE6IENhY2hlTm9kZVNlZWREYXRhLFxuICBkeW5hbWljSGVhZDogSGVhZERhdGFcbikge1xuICBpZiAodGFzay5keW5hbWljUmVxdWVzdFRyZWUgPT09IG51bGwpIHtcbiAgICAvLyBFdmVyeXRoaW5nIGluIHRoaXMgc3VidHJlZSBpcyBhbHJlYWR5IGNvbXBsZXRlLiBCYWlsIG91dC5cbiAgICByZXR1cm5cbiAgfVxuXG4gIC8vIGR5bmFtaWNEYXRhIG1heSByZXByZXNlbnQgYSBsYXJnZXIgc3VidHJlZSB0aGFuIHRoZSB0YXNrLiBCZWZvcmUgd2UgY2FuXG4gIC8vIGZpbmlzaCB0aGUgdGFzaywgd2UgbmVlZCB0byBsaW5lIHRoZW0gdXAuXG4gIGNvbnN0IHRhc2tDaGlsZHJlbiA9IHRhc2suY2hpbGRyZW5cbiAgY29uc3QgdGFza05vZGUgPSB0YXNrLm5vZGVcbiAgaWYgKHRhc2tDaGlsZHJlbiA9PT0gbnVsbCkge1xuICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGxlYWYgbm9kZSBvZiB0aGUgcGVuZGluZyB0YXNrLiBUaGUgc2VydmVyIGRhdGEgdHJlZVxuICAgIC8vIGxpbmVzIHVwIHRoZSBwZW5kaW5nIENhY2hlIE5vZGUgdHJlZS4gV2UgY2FuIG5vdyBzd2l0Y2ggdG8gdGhlXG4gICAgLy8gbm9ybWFsIGFsZ29yaXRobS5cbiAgICBpZiAodGFza05vZGUgIT09IG51bGwpIHtcbiAgICAgIGZpbmlzaFBlbmRpbmdDYWNoZU5vZGUoXG4gICAgICAgIHRhc2tOb2RlLFxuICAgICAgICB0YXNrLnJvdXRlLFxuICAgICAgICBzZXJ2ZXJSb3V0ZXJTdGF0ZSxcbiAgICAgICAgZHluYW1pY0RhdGEsXG4gICAgICAgIGR5bmFtaWNIZWFkXG4gICAgICApXG4gICAgICAvLyBTZXQgdGhpcyB0byBudWxsIHRvIGluZGljYXRlIHRoYXQgdGhpcyB0YXNrIGlzIG5vdyBjb21wbGV0ZS5cbiAgICAgIHRhc2suZHluYW1pY1JlcXVlc3RUcmVlID0gbnVsbFxuICAgIH1cbiAgICByZXR1cm5cbiAgfVxuICAvLyBUaGUgc2VydmVyIHJldHVybmVkIG1vcmUgZGF0YSB0aGFuIHdlIG5lZWQgdG8gZmluaXNoIHRoZSB0YXNrLiBTa2lwIG92ZXJcbiAgLy8gdGhlIGV4dHJhIHNlZ21lbnRzIHVudGlsIHdlIHJlYWNoIHRoZSBsZWFmIHRhc2sgbm9kZS5cbiAgY29uc3Qgc2VydmVyQ2hpbGRyZW4gPSBzZXJ2ZXJSb3V0ZXJTdGF0ZVsxXVxuICBjb25zdCBkeW5hbWljRGF0YUNoaWxkcmVuID0gZHluYW1pY0RhdGFbMl1cblxuICBmb3IgKGNvbnN0IHBhcmFsbGVsUm91dGVLZXkgaW4gc2VydmVyUm91dGVyU3RhdGUpIHtcbiAgICBjb25zdCBzZXJ2ZXJSb3V0ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9XG4gICAgICBzZXJ2ZXJDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IGR5bmFtaWNEYXRhQ2hpbGQ6IENhY2hlTm9kZVNlZWREYXRhIHwgbnVsbCB8IHZvaWQgPVxuICAgICAgZHluYW1pY0RhdGFDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuXG4gICAgY29uc3QgdGFza0NoaWxkID0gdGFza0NoaWxkcmVuLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgIGlmICh0YXNrQ2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgdGFza1NlZ21lbnQgPSB0YXNrQ2hpbGQucm91dGVbMF1cbiAgICAgIGlmIChcbiAgICAgICAgbWF0Y2hTZWdtZW50KHNlcnZlclJvdXRlclN0YXRlQ2hpbGRbMF0sIHRhc2tTZWdtZW50KSAmJlxuICAgICAgICBkeW5hbWljRGF0YUNoaWxkICE9PSBudWxsICYmXG4gICAgICAgIGR5bmFtaWNEYXRhQ2hpbGQgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIC8vIEZvdW5kIGEgbWF0Y2ggZm9yIHRoaXMgdGFzay4gS2VlcCB0cmF2ZXJzaW5nIGRvd24gdGhlIHRhc2sgdHJlZS5cbiAgICAgICAgcmV0dXJuIGZpbmlzaFRhc2tVc2luZ0R5bmFtaWNEYXRhUGF5bG9hZChcbiAgICAgICAgICB0YXNrQ2hpbGQsXG4gICAgICAgICAgc2VydmVyUm91dGVyU3RhdGVDaGlsZCxcbiAgICAgICAgICBkeW5hbWljRGF0YUNoaWxkLFxuICAgICAgICAgIGR5bmFtaWNIZWFkXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gV2UgZGlkbid0IGZpbmQgYSBjaGlsZCB0YXNrIHRoYXQgbWF0Y2hlcyB0aGUgc2VydmVyIGRhdGEuIFdlIHdvbid0IGFib3J0XG4gICAgLy8gdGhlIHRhc2ssIHRob3VnaCwgYmVjYXVzZSBhIGRpZmZlcmVudCBGbGlnaHREYXRhUGF0aCBtYXkgYmUgYWJsZSB0b1xuICAgIC8vIGZ1bGZpbGwgaXQgKHNlZSBsb29wIGluIGxpc3RlbkZvckR5bmFtaWNSZXF1ZXN0KS4gV2Ugb25seSBhYm9ydCB0YXNrc1xuICAgIC8vIG9uY2Ugd2UndmUgcnVuIG91dCBvZiBkYXRhLlxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVBlbmRpbmdDYWNoZU5vZGUoXG4gIG5hdmlnYXRlZEF0OiBudW1iZXIsXG4gIHJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgcHJlZmV0Y2hEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSB8IG51bGwsXG4gIHByZWZldGNoSGVhZDogSGVhZERhdGEgfCBudWxsLFxuICBpc1ByZWZldGNoSGVhZFBhcnRpYWw6IGJvb2xlYW4sXG4gIHNlZ21lbnRQYXRoOiBGbGlnaHRTZWdtZW50UGF0aCxcbiAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0OiBBcnJheTxGbGlnaHRTZWdtZW50UGF0aD5cbik6IFJlYWR5Q2FjaGVOb2RlIHtcbiAgY29uc3Qgcm91dGVyU3RhdGVDaGlsZHJlbiA9IHJvdXRlclN0YXRlWzFdXG4gIGNvbnN0IHByZWZldGNoRGF0YUNoaWxkcmVuID0gcHJlZmV0Y2hEYXRhICE9PSBudWxsID8gcHJlZmV0Y2hEYXRhWzJdIDogbnVsbFxuXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gbmV3IE1hcCgpXG4gIGZvciAobGV0IHBhcmFsbGVsUm91dGVLZXkgaW4gcm91dGVyU3RhdGVDaGlsZHJlbikge1xuICAgIGNvbnN0IHJvdXRlclN0YXRlQ2hpbGQ6IEZsaWdodFJvdXRlclN0YXRlID1cbiAgICAgIHJvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICBjb25zdCBwcmVmZXRjaERhdGFDaGlsZDogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsIHwgdm9pZCA9XG4gICAgICBwcmVmZXRjaERhdGFDaGlsZHJlbiAhPT0gbnVsbFxuICAgICAgICA/IHByZWZldGNoRGF0YUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgICAgIDogbnVsbFxuXG4gICAgY29uc3Qgc2VnbWVudENoaWxkID0gcm91dGVyU3RhdGVDaGlsZFswXVxuICAgIGNvbnN0IHNlZ21lbnRQYXRoQ2hpbGQgPSBzZWdtZW50UGF0aC5jb25jYXQoW1xuICAgICAgcGFyYWxsZWxSb3V0ZUtleSxcbiAgICAgIHNlZ21lbnRDaGlsZCxcbiAgICBdKVxuICAgIGNvbnN0IHNlZ21lbnRLZXlDaGlsZCA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnRDaGlsZClcblxuICAgIGNvbnN0IG5ld0NhY2hlTm9kZUNoaWxkID0gY3JlYXRlUGVuZGluZ0NhY2hlTm9kZShcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgcm91dGVyU3RhdGVDaGlsZCxcbiAgICAgIHByZWZldGNoRGF0YUNoaWxkID09PSB1bmRlZmluZWQgPyBudWxsIDogcHJlZmV0Y2hEYXRhQ2hpbGQsXG4gICAgICBwcmVmZXRjaEhlYWQsXG4gICAgICBpc1ByZWZldGNoSGVhZFBhcnRpYWwsXG4gICAgICBzZWdtZW50UGF0aENoaWxkLFxuICAgICAgc2Nyb2xsYWJsZVNlZ21lbnRzUmVzdWx0XG4gICAgKVxuXG4gICAgY29uc3QgbmV3U2VnbWVudE1hcENoaWxkOiBDaGlsZFNlZ21lbnRNYXAgPSBuZXcgTWFwKClcbiAgICBuZXdTZWdtZW50TWFwQ2hpbGQuc2V0KHNlZ21lbnRLZXlDaGlsZCwgbmV3Q2FjaGVOb2RlQ2hpbGQpXG4gICAgcGFyYWxsZWxSb3V0ZXMuc2V0KHBhcmFsbGVsUm91dGVLZXksIG5ld1NlZ21lbnRNYXBDaGlsZClcbiAgfVxuXG4gIC8vIFRoZSBoZWFkIGlzIGFzc2lnbmVkIHRvIGV2ZXJ5IGxlYWYgc2VnbWVudCBkZWxpdmVyZWQgYnkgdGhlIHNlcnZlci4gQmFzZWRcbiAgLy8gb24gY29ycmVzcG9uZGluZyBsb2dpYyBpbiBmaWxsLWxhenktaXRlbXMtdGlsbC1sZWFmLXdpdGgtaGVhZC50c1xuICBjb25zdCBpc0xlYWZTZWdtZW50ID0gcGFyYWxsZWxSb3V0ZXMuc2l6ZSA9PT0gMFxuXG4gIGlmIChpc0xlYWZTZWdtZW50KSB7XG4gICAgLy8gVGhlIHNlZ21lbnQgcGF0aCBvZiBldmVyeSBsZWFmIHNlZ21lbnQgKGkuZS4gcGFnZSkgaXMgY29sbGVjdGVkIGludG9cbiAgICAvLyBhIHJlc3VsdCBhcnJheS4gVGhpcyBpcyB1c2VkIGJ5IHRoZSBMYXlvdXRSb3V0ZXIgdG8gc2Nyb2xsIHRvIGVuc3VyZSB0aGF0XG4gICAgLy8gbmV3IHBhZ2VzIGFyZSB2aXNpYmxlIGFmdGVyIGEgbmF2aWdhdGlvbi5cbiAgICAvLyBUT0RPOiBXZSBzaG91bGQgdXNlIGEgc3RyaW5nIHRvIHJlcHJlc2VudCB0aGUgc2VnbWVudCBwYXRoIGluc3RlYWQgb2ZcbiAgICAvLyBhbiBhcnJheS4gV2UgYWxyZWFkeSB1c2UgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gZm9yIHRoZSBwYXRoIHdoZW5cbiAgICAvLyBhY2Nlc3NpbmcgdGhlIFNlZ21lbnQgQ2FjaGUsIHNvIHdlIGNhbiB1c2UgdGhlIHNhbWUgb25lLlxuICAgIHNjcm9sbGFibGVTZWdtZW50c1Jlc3VsdC5wdXNoKHNlZ21lbnRQYXRoKVxuICB9XG5cbiAgY29uc3QgbWF5YmVQcmVmZXRjaFJzYyA9IHByZWZldGNoRGF0YSAhPT0gbnVsbCA/IHByZWZldGNoRGF0YVsxXSA6IG51bGxcbiAgY29uc3QgbWF5YmVQcmVmZXRjaExvYWRpbmcgPSBwcmVmZXRjaERhdGEgIT09IG51bGwgPyBwcmVmZXRjaERhdGFbM10gOiBudWxsXG4gIHJldHVybiB7XG4gICAgbGF6eURhdGE6IG51bGwsXG4gICAgcGFyYWxsZWxSb3V0ZXM6IHBhcmFsbGVsUm91dGVzLFxuXG4gICAgcHJlZmV0Y2hSc2M6IG1heWJlUHJlZmV0Y2hSc2MgIT09IHVuZGVmaW5lZCA/IG1heWJlUHJlZmV0Y2hSc2MgOiBudWxsLFxuICAgIHByZWZldGNoSGVhZDogaXNMZWFmU2VnbWVudCA/IHByZWZldGNoSGVhZCA6IFtudWxsLCBudWxsXSxcblxuICAgIC8vIFRPRE86IFRlY2huaWNhbGx5LCBhIGxvYWRpbmcgYm91bmRhcnkgY291bGQgY29udGFpbiBkeW5hbWljIGRhdGEuIFdlIG11c3RcbiAgICAvLyBoYXZlIHNlcGFyYXRlIGBsb2FkaW5nYCBhbmQgYHByZWZldGNoTG9hZGluZ2AgZmllbGRzIHRvIGhhbmRsZSB0aGlzLCBsaWtlXG4gICAgLy8gd2UgZG8gZm9yIHRoZSBzZWdtZW50IGRhdGEgYW5kIGhlYWQuXG4gICAgbG9hZGluZzogbWF5YmVQcmVmZXRjaExvYWRpbmcgIT09IHVuZGVmaW5lZCA/IG1heWJlUHJlZmV0Y2hMb2FkaW5nIDogbnVsbCxcblxuICAgIC8vIENyZWF0ZSBhIGRlZmVycmVkIHByb21pc2UuIFRoaXMgd2lsbCBiZSBmdWxmaWxsZWQgb25jZSB0aGUgZHluYW1pY1xuICAgIC8vIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlci5cbiAgICByc2M6IGNyZWF0ZURlZmVycmVkUnNjKCkgYXMgUmVhY3QuUmVhY3ROb2RlLFxuICAgIGhlYWQ6IGlzTGVhZlNlZ21lbnQgPyAoY3JlYXRlRGVmZXJyZWRSc2MoKSBhcyBSZWFjdC5SZWFjdE5vZGUpIDogbnVsbCxcblxuICAgIG5hdmlnYXRlZEF0LFxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaFBlbmRpbmdDYWNoZU5vZGUoXG4gIGNhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICB0YXNrU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBzZXJ2ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUsXG4gIGR5bmFtaWNEYXRhOiBDYWNoZU5vZGVTZWVkRGF0YSxcbiAgZHluYW1pY0hlYWQ6IEhlYWREYXRhXG4pOiB2b2lkIHtcbiAgLy8gV3JpdGVzIGEgZHluYW1pYyByZXNwb25zZSBpbnRvIGFuIGV4aXN0aW5nIENhY2hlIE5vZGUgdHJlZS4gVGhpcyBkb2VzIF9ub3RfXG4gIC8vIGNyZWF0ZSBhIG5ldyB0cmVlLCBpdCB1cGRhdGVzIHRoZSBleGlzdGluZyB0cmVlIGluLXBsYWNlLiBTbyBpdCBtdXN0IGZvbGxvd1xuICAvLyB0aGUgU3VzcGVuc2UgcnVsZXMgb2YgY2FjaGUgc2FmZXR5IOKAlCBpdCBjYW4gcmVzb2x2ZSBwZW5kaW5nIHByb21pc2VzLCBidXRcbiAgLy8gaXQgY2Fubm90IG92ZXJ3cml0ZSBleGlzdGluZyBkYXRhLiBJdCBjYW4gYWRkIHNlZ21lbnRzIHRvIHRoZSB0cmVlIChiZWNhdXNlXG4gIC8vIGEgbWlzc2luZyBzZWdtZW50IHdpbGwgY2F1c2UgdGhlIGxheW91dCByb3V0ZXIgdG8gc3VzcGVuZCkuXG4gIC8vIGJ1dCBpdCBjYW5ub3QgZGVsZXRlIHRoZW0uXG4gIC8vXG4gIC8vIFdlIG11c3QgcmVzb2x2ZSBldmVyeSBwcm9taXNlIGluIHRoZSB0cmVlLCBvciBlbHNlIGl0IHdpbGwgc3VzcGVuZFxuICAvLyBpbmRlZmluaXRlbHkuIElmIHdlIGRpZCBub3QgcmVjZWl2ZSBkYXRhIGZvciBhIHNlZ21lbnQsIHdlIHdpbGwgcmVzb2x2ZSBpdHNcbiAgLy8gZGF0YSBwcm9taXNlIHRvIGBudWxsYCB0byB0cmlnZ2VyIGEgbGF6eSBmZXRjaCBkdXJpbmcgcmVuZGVyLlxuICBjb25zdCB0YXNrU3RhdGVDaGlsZHJlbiA9IHRhc2tTdGF0ZVsxXVxuICBjb25zdCBzZXJ2ZXJTdGF0ZUNoaWxkcmVuID0gc2VydmVyU3RhdGVbMV1cbiAgY29uc3QgZGF0YUNoaWxkcmVuID0gZHluYW1pY0RhdGFbMl1cblxuICAvLyBUaGUgcm91dGVyIHN0YXRlIHRoYXQgd2UgdHJhdmVyc2UgdGhlIHRyZWUgd2l0aCAodGFza1N0YXRlKSBpcyB0aGUgc2FtZSBvbmVcbiAgLy8gdGhhdCB3ZSB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgcGVuZGluZyBDYWNoZSBOb2RlIHRyZWUuIFRoYXQgd2F5IHdlJ3JlIHN1cmVcbiAgLy8gdG8gcmVzb2x2ZSBhbGwgdGhlIHBlbmRpbmcgcHJvbWlzZXMuXG4gIGNvbnN0IHBhcmFsbGVsUm91dGVzID0gY2FjaGVOb2RlLnBhcmFsbGVsUm91dGVzXG4gIGZvciAobGV0IHBhcmFsbGVsUm91dGVLZXkgaW4gdGFza1N0YXRlQ2hpbGRyZW4pIHtcbiAgICBjb25zdCB0YXNrU3RhdGVDaGlsZDogRmxpZ2h0Um91dGVyU3RhdGUgPVxuICAgICAgdGFza1N0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICBjb25zdCBzZXJ2ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSB8IHZvaWQgPVxuICAgICAgc2VydmVyU3RhdGVDaGlsZHJlbltwYXJhbGxlbFJvdXRlS2V5XVxuICAgIGNvbnN0IGRhdGFDaGlsZDogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsIHwgdm9pZCA9XG4gICAgICBkYXRhQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cblxuICAgIGNvbnN0IHNlZ21lbnRNYXBDaGlsZCA9IHBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgIGNvbnN0IHRhc2tTZWdtZW50Q2hpbGQgPSB0YXNrU3RhdGVDaGlsZFswXVxuICAgIGNvbnN0IHRhc2tTZWdtZW50S2V5Q2hpbGQgPSBjcmVhdGVSb3V0ZXJDYWNoZUtleSh0YXNrU2VnbWVudENoaWxkKVxuXG4gICAgY29uc3QgY2FjaGVOb2RlQ2hpbGQgPVxuICAgICAgc2VnbWVudE1hcENoaWxkICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyBzZWdtZW50TWFwQ2hpbGQuZ2V0KHRhc2tTZWdtZW50S2V5Q2hpbGQpXG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICBpZiAoY2FjaGVOb2RlQ2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKFxuICAgICAgICBzZXJ2ZXJTdGF0ZUNoaWxkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgbWF0Y2hTZWdtZW50KHRhc2tTZWdtZW50Q2hpbGQsIHNlcnZlclN0YXRlQ2hpbGRbMF0pXG4gICAgICApIHtcbiAgICAgICAgaWYgKGRhdGFDaGlsZCAhPT0gdW5kZWZpbmVkICYmIGRhdGFDaGlsZCAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGhhcHB5IHBhdGguIFJlY3Vyc2l2ZWx5IHVwZGF0ZSBhbGwgdGhlIGNoaWxkcmVuLlxuICAgICAgICAgIGZpbmlzaFBlbmRpbmdDYWNoZU5vZGUoXG4gICAgICAgICAgICBjYWNoZU5vZGVDaGlsZCxcbiAgICAgICAgICAgIHRhc2tTdGF0ZUNoaWxkLFxuICAgICAgICAgICAgc2VydmVyU3RhdGVDaGlsZCxcbiAgICAgICAgICAgIGRhdGFDaGlsZCxcbiAgICAgICAgICAgIGR5bmFtaWNIZWFkXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZSBzZXJ2ZXIgbmV2ZXIgcmV0dXJuZWQgZGF0YSBmb3IgdGhpcyBzZWdtZW50LiBUcmlnZ2VyIGEgbGF6eVxuICAgICAgICAgIC8vIGZldGNoIGR1cmluZyByZW5kZXIuIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIHRoZSBSb3V0ZSBUcmVlXG4gICAgICAgICAgLy8gYW5kIHRoZSBTZWVkIERhdGEgdHJlZSBzZW50IGJ5IHRoZSBzZXJ2ZXIgc2hvdWxkIGFsd2F5cyBiZSB0aGUgc2FtZVxuICAgICAgICAgIC8vIHNoYXBlIHdoZW4gcGFydCBvZiB0aGUgc2FtZSBzZXJ2ZXIgcmVzcG9uc2UuXG4gICAgICAgICAgYWJvcnRQZW5kaW5nQ2FjaGVOb2RlKHRhc2tTdGF0ZUNoaWxkLCBjYWNoZU5vZGVDaGlsZCwgbnVsbClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIHNlcnZlciBuZXZlciByZXR1cm5lZCBkYXRhIGZvciB0aGlzIHNlZ21lbnQuIFRyaWdnZXIgYSBsYXp5XG4gICAgICAgIC8vIGZldGNoIGR1cmluZyByZW5kZXIuXG4gICAgICAgIGFib3J0UGVuZGluZ0NhY2hlTm9kZSh0YXNrU3RhdGVDaGlsZCwgY2FjaGVOb2RlQ2hpbGQsIG51bGwpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBzZXJ2ZXIgcmVzcG9uc2UgbWF0Y2hlcyB3aGF0IHdhcyBleHBlY3RlZCB0byByZWNlaXZlLCBidXQgdGhlcmUnc1xuICAgICAgLy8gbm8gbWF0Y2hpbmcgQ2FjaGUgTm9kZSBpbiB0aGUgdGFzayB0cmVlLiBUaGlzIGlzIGEgYnVnIGluIHRoZVxuICAgICAgLy8gaW1wbGVtZW50YXRpb24gYmVjYXVzZSB3ZSBzaG91bGQgaGF2ZSBjcmVhdGVkIGEgbm9kZSBmb3IgZXZlcnlcbiAgICAgIC8vIHNlZ21lbnQgaW4gdGhlIHRyZWUgdGhhdCdzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhc2suXG4gICAgfVxuICB9XG5cbiAgLy8gVXNlIHRoZSBkeW5hbWljIGRhdGEgZnJvbSB0aGUgc2VydmVyIHRvIGZ1bGZpbGwgdGhlIGRlZmVycmVkIFJTQyBwcm9taXNlXG4gIC8vIG9uIHRoZSBDYWNoZSBOb2RlLlxuICBjb25zdCByc2MgPSBjYWNoZU5vZGUucnNjXG4gIGNvbnN0IGR5bmFtaWNTZWdtZW50RGF0YSA9IGR5bmFtaWNEYXRhWzFdXG4gIGlmIChyc2MgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGlzIGEgbGF6eSBjYWNoZSBub2RlLiBXZSBjYW4gb3ZlcndyaXRlIGl0LiBUaGlzIGlzIG9ubHkgc2FmZVxuICAgIC8vIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBMYXlvdXRSb3V0ZXIgc3VzcGVuZHMgaWYgYHJzY2AgaXMgYG51bGxgLlxuICAgIGNhY2hlTm9kZS5yc2MgPSBkeW5hbWljU2VnbWVudERhdGFcbiAgfSBlbHNlIGlmIChpc0RlZmVycmVkUnNjKHJzYykpIHtcbiAgICAvLyBUaGlzIGlzIGEgZGVmZXJyZWQgUlNDIHByb21pc2UuIFdlIGNhbiBmdWxmaWxsIGl0IHdpdGggdGhlIGRhdGEgd2UganVzdFxuICAgIC8vIHJlY2VpdmVkIGZyb20gdGhlIHNlcnZlci4gSWYgaXQgd2FzIGFscmVhZHkgcmVzb2x2ZWQgYnkgYSBkaWZmZXJlbnRcbiAgICAvLyBuYXZpZ2F0aW9uLCB0aGVuIHRoaXMgZG9lcyBub3RoaW5nIGJlY2F1c2Ugd2UgY2FuJ3Qgb3ZlcndyaXRlIGRhdGEuXG4gICAgcnNjLnJlc29sdmUoZHluYW1pY1NlZ21lbnREYXRhKVxuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgbm90IGEgZGVmZXJyZWQgUlNDIHByb21pc2UsIG5vciBpcyBpdCBlbXB0eSwgc28gaXQgbXVzdCBoYXZlXG4gICAgLy8gYmVlbiBwb3B1bGF0ZWQgYnkgYSBkaWZmZXJlbnQgbmF2aWdhdGlvbi4gV2UgbXVzdCBub3Qgb3ZlcndyaXRlIGl0LlxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhpcyBpcyBhIGxlYWYgc2VnbWVudC4gSWYgc28sIGl0IHdpbGwgaGF2ZSBhIGBoZWFkYCBwcm9wZXJ0eSB3aXRoXG4gIC8vIGEgcGVuZGluZyBwcm9taXNlIHRoYXQgbmVlZHMgdG8gYmUgcmVzb2x2ZWQgd2l0aCB0aGUgZHluYW1pYyBoZWFkIGZyb21cbiAgLy8gdGhlIHNlcnZlci5cbiAgY29uc3QgaGVhZCA9IGNhY2hlTm9kZS5oZWFkXG4gIGlmIChpc0RlZmVycmVkUnNjKGhlYWQpKSB7XG4gICAgaGVhZC5yZXNvbHZlKGR5bmFtaWNIZWFkKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhYm9ydFRhc2sodGFzazogU1BBTmF2aWdhdGlvblRhc2ssIGVycm9yOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgY2FjaGVOb2RlID0gdGFzay5ub2RlXG4gIGlmIChjYWNoZU5vZGUgPT09IG51bGwpIHtcbiAgICAvLyBUaGlzIGluZGljYXRlcyB0aGUgdGFzayBpcyBhbHJlYWR5IGNvbXBsZXRlLlxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgdGFza0NoaWxkcmVuID0gdGFzay5jaGlsZHJlblxuICBpZiAodGFza0NoaWxkcmVuID09PSBudWxsKSB7XG4gICAgLy8gUmVhY2hlZCB0aGUgbGVhZiB0YXNrIG5vZGUuIFRoaXMgaXMgdGhlIHJvb3Qgb2YgYSBwZW5kaW5nIGNhY2hlXG4gICAgLy8gbm9kZSB0cmVlLlxuICAgIGFib3J0UGVuZGluZ0NhY2hlTm9kZSh0YXNrLnJvdXRlLCBjYWNoZU5vZGUsIGVycm9yKVxuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYW4gaW50ZXJtZWRpYXRlIHRhc2sgbm9kZS4gS2VlcCB0cmF2ZXJzaW5nIHVudGlsIHdlIHJlYWNoIGFcbiAgICAvLyB0YXNrIG5vZGUgd2l0aCBubyBjaGlsZHJlbi4gVGhhdCB3aWxsIGJlIHRoZSByb290IG9mIHRoZSBjYWNoZSBub2RlIHRyZWVcbiAgICAvLyB0aGF0IG5lZWRzIHRvIGJlIHJlc29sdmVkLlxuICAgIGZvciAoY29uc3QgdGFza0NoaWxkIG9mIHRhc2tDaGlsZHJlbi52YWx1ZXMoKSkge1xuICAgICAgYWJvcnRUYXNrKHRhc2tDaGlsZCwgZXJyb3IpXG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IHRoaXMgdG8gbnVsbCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgdGFzayBpcyBub3cgY29tcGxldGUuXG4gIHRhc2suZHluYW1pY1JlcXVlc3RUcmVlID0gbnVsbFxufVxuXG5mdW5jdGlvbiBhYm9ydFBlbmRpbmdDYWNoZU5vZGUoXG4gIHJvdXRlclN0YXRlOiBGbGlnaHRSb3V0ZXJTdGF0ZSxcbiAgY2FjaGVOb2RlOiBDYWNoZU5vZGUsXG4gIGVycm9yOiBhbnlcbik6IHZvaWQge1xuICAvLyBGb3IgZXZlcnkgcGVuZGluZyBzZWdtZW50IGluIHRoZSB0cmVlLCByZXNvbHZlIGl0cyBgcnNjYCBwcm9taXNlIHRvIGBudWxsYFxuICAvLyB0byB0cmlnZ2VyIGEgbGF6eSBmZXRjaCBkdXJpbmcgcmVuZGVyLlxuICAvL1xuICAvLyBPciwgaWYgYW4gZXJyb3Igb2JqZWN0IGlzIHByb3ZpZGVkLCBpdCB3aWxsIGVycm9yIGluc3RlYWQuXG4gIGNvbnN0IHJvdXRlclN0YXRlQ2hpbGRyZW4gPSByb3V0ZXJTdGF0ZVsxXVxuICBjb25zdCBwYXJhbGxlbFJvdXRlcyA9IGNhY2hlTm9kZS5wYXJhbGxlbFJvdXRlc1xuICBmb3IgKGxldCBwYXJhbGxlbFJvdXRlS2V5IGluIHJvdXRlclN0YXRlQ2hpbGRyZW4pIHtcbiAgICBjb25zdCByb3V0ZXJTdGF0ZUNoaWxkOiBGbGlnaHRSb3V0ZXJTdGF0ZSA9XG4gICAgICByb3V0ZXJTdGF0ZUNoaWxkcmVuW3BhcmFsbGVsUm91dGVLZXldXG4gICAgY29uc3Qgc2VnbWVudE1hcENoaWxkID0gcGFyYWxsZWxSb3V0ZXMuZ2V0KHBhcmFsbGVsUm91dGVLZXkpXG4gICAgaWYgKHNlZ21lbnRNYXBDaGlsZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBUaGlzIHNob3VsZG4ndCBoYXBwZW4gYmVjYXVzZSB3ZSdyZSB0cmF2ZXJzaW5nIHRoZSBzYW1lIHRyZWUgdGhhdCB3YXNcbiAgICAgIC8vIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjYWNoZSBub2RlcyBpbiB0aGUgZmlyc3QgcGxhY2UuXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCBzZWdtZW50Q2hpbGQgPSByb3V0ZXJTdGF0ZUNoaWxkWzBdXG4gICAgY29uc3Qgc2VnbWVudEtleUNoaWxkID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudENoaWxkKVxuICAgIGNvbnN0IGNhY2hlTm9kZUNoaWxkID0gc2VnbWVudE1hcENoaWxkLmdldChzZWdtZW50S2V5Q2hpbGQpXG4gICAgaWYgKGNhY2hlTm9kZUNoaWxkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFib3J0UGVuZGluZ0NhY2hlTm9kZShyb3V0ZXJTdGF0ZUNoaWxkLCBjYWNoZU5vZGVDaGlsZCwgZXJyb3IpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiBiZWNhdXNlIHdlJ3JlIHRyYXZlcnNpbmcgdGhlIHNhbWUgdHJlZSB0aGF0IHdhc1xuICAgICAgLy8gdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlIG5vZGVzIGluIHRoZSBmaXJzdCBwbGFjZS5cbiAgICB9XG4gIH1cbiAgY29uc3QgcnNjID0gY2FjaGVOb2RlLnJzY1xuICBpZiAoaXNEZWZlcnJlZFJzYyhyc2MpKSB7XG4gICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAvLyBUaGlzIHdpbGwgdHJpZ2dlciBhIGxhenkgZmV0Y2ggZHVyaW5nIHJlbmRlci5cbiAgICAgIHJzYy5yZXNvbHZlKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoaXMgd2lsbCB0cmlnZ2VyIGFuIGVycm9yIGR1cmluZyByZW5kZXJpbmcuXG4gICAgICByc2MucmVqZWN0KGVycm9yKVxuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBsZWFmIHNlZ21lbnQuIElmIHNvLCBpdCB3aWxsIGhhdmUgYSBgaGVhZGAgcHJvcGVydHkgd2l0aFxuICAvLyBhIHBlbmRpbmcgcHJvbWlzZSB0aGF0IG5lZWRzIHRvIGJlIHJlc29sdmVkLiBJZiBhbiBlcnJvciB3YXMgcHJvdmlkZWQsIHdlXG4gIC8vIHdpbGwgbm90IHJlc29sdmUgaXQgd2l0aCBhbiBlcnJvciwgc2luY2UgdGhpcyBpcyByZW5kZXJlZCBhdCB0aGUgcm9vdCBvZlxuICAvLyB0aGUgYXBwLiBXZSB3YW50IHRoZSBzZWdtZW50IHRvIGVycm9yLCBub3QgdGhlIGVudGlyZSBhcHAuXG4gIGNvbnN0IGhlYWQgPSBjYWNoZU5vZGUuaGVhZFxuICBpZiAoaXNEZWZlcnJlZFJzYyhoZWFkKSkge1xuICAgIGhlYWQucmVzb2x2ZShudWxsKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVDYWNoZU5vZGVPblBvcHN0YXRlUmVzdG9yYXRpb24oXG4gIG9sZENhY2hlTm9kZTogQ2FjaGVOb2RlLFxuICByb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IFJlYWR5Q2FjaGVOb2RlIHtcbiAgLy8gQSBwb3BzdGF0ZSBuYXZpZ2F0aW9uIHJlYWRzIGRhdGEgZnJvbSB0aGUgbG9jYWwgY2FjaGUuIEl0IGRvZXMgbm90IGlzc3VlXG4gIC8vIG5ldyBuZXR3b3JrIHJlcXVlc3RzICh1bmxlc3MgdGhlIGNhY2hlIGVudHJpZXMgaGF2ZSBiZWVuIGV2aWN0ZWQpLiBTbywgd2VcbiAgLy8gdXBkYXRlIHRoZSBjYWNoZSB0byBkcm9wIHRoZSBwcmVmZXRjaCBkYXRhIGZvciBhbnkgc2VnbWVudCB3aG9zZSBkeW5hbWljXG4gIC8vIGRhdGEgd2FzIGFscmVhZHkgcmVjZWl2ZWQuIFRoaXMgcHJldmVudHMgYW4gdW5uZWNlc3NhcnkgZmxhc2ggYmFjayB0byBQUFJcbiAgLy8gc3RhdGUgZHVyaW5nIGEgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24uXG4gIC8vXG4gIC8vIFRoaXMgZnVuY3Rpb24gY2xvbmVzIHRoZSBlbnRpcmUgY2FjaGUgbm9kZSB0cmVlIGFuZCBzZXRzIHRoZSBgcHJlZmV0Y2hSc2NgXG4gIC8vIGZpZWxkIHRvIGBudWxsYCB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcmVuZGVyZWQuIFdlIGNhbid0IG11dGF0ZSB0aGUgbm9kZVxuICAvLyBpbiBwbGFjZSBiZWNhdXNlIHRoaXMgaXMgYSBjb25jdXJyZW50IGRhdGEgc3RydWN0dXJlLlxuXG4gIGNvbnN0IHJvdXRlclN0YXRlQ2hpbGRyZW4gPSByb3V0ZXJTdGF0ZVsxXVxuICBjb25zdCBvbGRQYXJhbGxlbFJvdXRlcyA9IG9sZENhY2hlTm9kZS5wYXJhbGxlbFJvdXRlc1xuICBjb25zdCBuZXdQYXJhbGxlbFJvdXRlcyA9IG5ldyBNYXAob2xkUGFyYWxsZWxSb3V0ZXMpXG4gIGZvciAobGV0IHBhcmFsbGVsUm91dGVLZXkgaW4gcm91dGVyU3RhdGVDaGlsZHJlbikge1xuICAgIGNvbnN0IHJvdXRlclN0YXRlQ2hpbGQ6IEZsaWdodFJvdXRlclN0YXRlID1cbiAgICAgIHJvdXRlclN0YXRlQ2hpbGRyZW5bcGFyYWxsZWxSb3V0ZUtleV1cbiAgICBjb25zdCBzZWdtZW50Q2hpbGQgPSByb3V0ZXJTdGF0ZUNoaWxkWzBdXG4gICAgY29uc3Qgc2VnbWVudEtleUNoaWxkID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudENoaWxkKVxuICAgIGNvbnN0IG9sZFNlZ21lbnRNYXBDaGlsZCA9IG9sZFBhcmFsbGVsUm91dGVzLmdldChwYXJhbGxlbFJvdXRlS2V5KVxuICAgIGlmIChvbGRTZWdtZW50TWFwQ2hpbGQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb2xkQ2FjaGVOb2RlQ2hpbGQgPSBvbGRTZWdtZW50TWFwQ2hpbGQuZ2V0KHNlZ21lbnRLZXlDaGlsZClcbiAgICAgIGlmIChvbGRDYWNoZU5vZGVDaGlsZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG5ld0NhY2hlTm9kZUNoaWxkID0gdXBkYXRlQ2FjaGVOb2RlT25Qb3BzdGF0ZVJlc3RvcmF0aW9uKFxuICAgICAgICAgIG9sZENhY2hlTm9kZUNoaWxkLFxuICAgICAgICAgIHJvdXRlclN0YXRlQ2hpbGRcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBuZXdTZWdtZW50TWFwQ2hpbGQgPSBuZXcgTWFwKG9sZFNlZ21lbnRNYXBDaGlsZClcbiAgICAgICAgbmV3U2VnbWVudE1hcENoaWxkLnNldChzZWdtZW50S2V5Q2hpbGQsIG5ld0NhY2hlTm9kZUNoaWxkKVxuICAgICAgICBuZXdQYXJhbGxlbFJvdXRlcy5zZXQocGFyYWxsZWxSb3V0ZUtleSwgbmV3U2VnbWVudE1hcENoaWxkKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIE9ubHkgc2hvdyBwcmVmZXRjaGVkIGRhdGEgaWYgdGhlIGR5bmFtaWMgZGF0YSBpcyBzdGlsbCBwZW5kaW5nLlxuICAvL1xuICAvLyBUZWhuaWNhbGx5LCB3aGF0IHdlJ3JlIGFjdHVhbGx5IGNoZWNraW5nIGlzIHdoZXRoZXIgdGhlIGR5bmFtaWMgbmV0d29ya1xuICAvLyByZXNwb25zZSB3YXMgcmVjZWl2ZWQuIEJ1dCBzaW5jZSBpdCdzIGEgc3RyZWFtaW5nIHJlc3BvbnNlLCB0aGlzIGRvZXMgbm90XG4gIC8vIG1lYW4gdGhhdCBhbGwgdGhlIGR5bmFtaWMgZGF0YSBoYXMgZnVsbHkgc3RyZWFtZWQgaW4uIEl0IGp1c3QgbWVhbnMgdGhhdFxuICAvLyBfc29tZV8gb2YgdGhlIGR5bmFtaWMgZGF0YSB3YXMgcmVjZWl2ZWQuIEJ1dCBhcyBhIGhldXJpc3RpYywgd2UgYXNzdW1lIHRoYXRcbiAgLy8gdGhlIHJlc3QgZHluYW1pYyBkYXRhIHdpbGwgc3RyZWFtIGluIHF1aWNrbHksIHNvIGl0J3Mgc3RpbGwgYmV0dGVyIHRvIHNraXBcbiAgLy8gdGhlIHByZWZldGNoIHN0YXRlLlxuICBjb25zdCByc2MgPSBvbGRDYWNoZU5vZGUucnNjXG4gIGNvbnN0IHNob3VsZFVzZVByZWZldGNoID0gaXNEZWZlcnJlZFJzYyhyc2MpICYmIHJzYy5zdGF0dXMgPT09ICdwZW5kaW5nJ1xuXG4gIHJldHVybiB7XG4gICAgbGF6eURhdGE6IG51bGwsXG4gICAgcnNjLFxuICAgIGhlYWQ6IG9sZENhY2hlTm9kZS5oZWFkLFxuXG4gICAgcHJlZmV0Y2hIZWFkOiBzaG91bGRVc2VQcmVmZXRjaCA/IG9sZENhY2hlTm9kZS5wcmVmZXRjaEhlYWQgOiBbbnVsbCwgbnVsbF0sXG4gICAgcHJlZmV0Y2hSc2M6IHNob3VsZFVzZVByZWZldGNoID8gb2xkQ2FjaGVOb2RlLnByZWZldGNoUnNjIDogbnVsbCxcbiAgICBsb2FkaW5nOiBvbGRDYWNoZU5vZGUubG9hZGluZyxcblxuICAgIC8vIFRoZXNlIGFyZSB0aGUgY2xvbmVkIGNoaWxkcmVuIHdlIGNvbXB1dGVkIGFib3ZlXG4gICAgcGFyYWxsZWxSb3V0ZXM6IG5ld1BhcmFsbGVsUm91dGVzLFxuXG4gICAgbmF2aWdhdGVkQXQ6IG9sZENhY2hlTm9kZS5uYXZpZ2F0ZWRBdCxcbiAgfVxufVxuXG5jb25zdCBERUZFUlJFRCA9IFN5bWJvbCgpXG5cbnR5cGUgUGVuZGluZ0RlZmVycmVkUnNjID0gUHJvbWlzZTxSZWFjdC5SZWFjdE5vZGU+ICYge1xuICBzdGF0dXM6ICdwZW5kaW5nJ1xuICByZXNvbHZlOiAodmFsdWU6IFJlYWN0LlJlYWN0Tm9kZSkgPT4gdm9pZFxuICByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkXG4gIHRhZzogU3ltYm9sXG59XG5cbnR5cGUgRnVsZmlsbGVkRGVmZXJyZWRSc2MgPSBQcm9taXNlPFJlYWN0LlJlYWN0Tm9kZT4gJiB7XG4gIHN0YXR1czogJ2Z1bGZpbGxlZCdcbiAgdmFsdWU6IFJlYWN0LlJlYWN0Tm9kZVxuICByZXNvbHZlOiAodmFsdWU6IFJlYWN0LlJlYWN0Tm9kZSkgPT4gdm9pZFxuICByZWplY3Q6IChlcnJvcjogYW55KSA9PiB2b2lkXG4gIHRhZzogU3ltYm9sXG59XG5cbnR5cGUgUmVqZWN0ZWREZWZlcnJlZFJzYyA9IFByb21pc2U8UmVhY3QuUmVhY3ROb2RlPiAmIHtcbiAgc3RhdHVzOiAncmVqZWN0ZWQnXG4gIHJlYXNvbjogYW55XG4gIHJlc29sdmU6ICh2YWx1ZTogUmVhY3QuUmVhY3ROb2RlKSA9PiB2b2lkXG4gIHJlamVjdDogKGVycm9yOiBhbnkpID0+IHZvaWRcbiAgdGFnOiBTeW1ib2xcbn1cblxudHlwZSBEZWZlcnJlZFJzYyA9XG4gIHwgUGVuZGluZ0RlZmVycmVkUnNjXG4gIHwgRnVsZmlsbGVkRGVmZXJyZWRSc2NcbiAgfCBSZWplY3RlZERlZmVycmVkUnNjXG5cbi8vIFRoaXMgdHlwZSBleGlzdHMgdG8gZGlzdGluZ3Vpc2ggYSBEZWZlcnJlZFJzYyBmcm9tIGEgRmxpZ2h0IHByb21pc2UuIEl0J3MgYVxuLy8gY29tcHJvbWlzZSB0byBhdm9pZCBhZGRpbmcgYW4gZXh0cmEgZmllbGQgb24gZXZlcnkgQ2FjaGUgTm9kZSwgd2hpY2ggd291bGQgYmVcbi8vIGF3a3dhcmQgYmVjYXVzZSB0aGUgcHJlLVBQUiBwYXJ0cyBvZiBjb2RlYmFzZSB3b3VsZCBuZWVkIHRvIGFjY291bnQgZm9yIGl0LFxuLy8gdG9vLiBXZSBjYW4gcmVtb3ZlIGl0IG9uY2UgdHlwZSBDYWNoZSBOb2RlIHR5cGUgaXMgbW9yZSBzZXR0bGVkLlxuZnVuY3Rpb24gaXNEZWZlcnJlZFJzYyh2YWx1ZTogYW55KTogdmFsdWUgaXMgRGVmZXJyZWRSc2Mge1xuICByZXR1cm4gdmFsdWUgJiYgdmFsdWUudGFnID09PSBERUZFUlJFRFxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWZlcnJlZFJzYygpOiBQZW5kaW5nRGVmZXJyZWRSc2Mge1xuICBsZXQgcmVzb2x2ZTogYW55XG4gIGxldCByZWplY3Q6IGFueVxuICBjb25zdCBwZW5kaW5nUnNjID0gbmV3IFByb21pc2U8UmVhY3QuUmVhY3ROb2RlPigocmVzLCByZWopID0+IHtcbiAgICByZXNvbHZlID0gcmVzXG4gICAgcmVqZWN0ID0gcmVqXG4gIH0pIGFzIFBlbmRpbmdEZWZlcnJlZFJzY1xuICBwZW5kaW5nUnNjLnN0YXR1cyA9ICdwZW5kaW5nJ1xuICBwZW5kaW5nUnNjLnJlc29sdmUgPSAodmFsdWU6IFJlYWN0LlJlYWN0Tm9kZSkgPT4ge1xuICAgIGlmIChwZW5kaW5nUnNjLnN0YXR1cyA9PT0gJ3BlbmRpbmcnKSB7XG4gICAgICBjb25zdCBmdWxmaWxsZWRSc2M6IEZ1bGZpbGxlZERlZmVycmVkUnNjID0gcGVuZGluZ1JzYyBhcyBhbnlcbiAgICAgIGZ1bGZpbGxlZFJzYy5zdGF0dXMgPSAnZnVsZmlsbGVkJ1xuICAgICAgZnVsZmlsbGVkUnNjLnZhbHVlID0gdmFsdWVcbiAgICAgIHJlc29sdmUodmFsdWUpXG4gICAgfVxuICB9XG4gIHBlbmRpbmdSc2MucmVqZWN0ID0gKGVycm9yOiBhbnkpID0+IHtcbiAgICBpZiAocGVuZGluZ1JzYy5zdGF0dXMgPT09ICdwZW5kaW5nJykge1xuICAgICAgY29uc3QgcmVqZWN0ZWRSc2M6IFJlamVjdGVkRGVmZXJyZWRSc2MgPSBwZW5kaW5nUnNjIGFzIGFueVxuICAgICAgcmVqZWN0ZWRSc2Muc3RhdHVzID0gJ3JlamVjdGVkJ1xuICAgICAgcmVqZWN0ZWRSc2MucmVhc29uID0gZXJyb3JcbiAgICAgIHJlamVjdChlcnJvcilcbiAgICB9XG4gIH1cbiAgcGVuZGluZ1JzYy50YWcgPSBERUZFUlJFRFxuICByZXR1cm4gcGVuZGluZ1JzY1xufVxuIl0sIm5hbWVzIjpbImFib3J0VGFzayIsImxpc3RlbkZvckR5bmFtaWNSZXF1ZXN0Iiwic3RhcnRQUFJOYXZpZ2F0aW9uIiwidXBkYXRlQ2FjaGVOb2RlT25Qb3BzdGF0ZVJlc3RvcmF0aW9uIiwiTVBBX05BVklHQVRJT05fVEFTSyIsInJvdXRlIiwibm9kZSIsImR5bmFtaWNSZXF1ZXN0VHJlZSIsImNoaWxkcmVuIiwibmF2aWdhdGVkQXQiLCJvbGRDYWNoZU5vZGUiLCJvbGRSb3V0ZXJTdGF0ZSIsIm5ld1JvdXRlclN0YXRlIiwicHJlZmV0Y2hEYXRhIiwicHJlZmV0Y2hIZWFkIiwiaXNQcmVmZXRjaEhlYWRQYXJ0aWFsIiwiaXNTYW1lUGFnZU5hdmlnYXRpb24iLCJzY3JvbGxhYmxlU2VnbWVudHNSZXN1bHQiLCJzZWdtZW50UGF0aCIsInVwZGF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbiIsImRpZEZpbmRSb290TGF5b3V0Iiwib2xkUm91dGVyU3RhdGVDaGlsZHJlbiIsIm5ld1JvdXRlclN0YXRlQ2hpbGRyZW4iLCJwcmVmZXRjaERhdGFDaGlsZHJlbiIsImlzUm9vdExheW91dCIsIm9sZFBhcmFsbGVsUm91dGVzIiwicGFyYWxsZWxSb3V0ZXMiLCJwcmVmZXRjaFBhcmFsbGVsUm91dGVzIiwiTWFwIiwicGF0Y2hlZFJvdXRlclN0YXRlQ2hpbGRyZW4iLCJ0YXNrQ2hpbGRyZW4iLCJuZWVkc0R5bmFtaWNSZXF1ZXN0IiwiZHluYW1pY1JlcXVlc3RUcmVlQ2hpbGRyZW4iLCJwYXJhbGxlbFJvdXRlS2V5IiwibmV3Um91dGVyU3RhdGVDaGlsZCIsIm9sZFJvdXRlclN0YXRlQ2hpbGQiLCJvbGRTZWdtZW50TWFwQ2hpbGQiLCJnZXQiLCJwcmVmZXRjaERhdGFDaGlsZCIsIm5ld1NlZ21lbnRDaGlsZCIsIm5ld1NlZ21lbnRQYXRoQ2hpbGQiLCJjb25jYXQiLCJuZXdTZWdtZW50S2V5Q2hpbGQiLCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIsIm9sZFNlZ21lbnRDaGlsZCIsInVuZGVmaW5lZCIsIm9sZENhY2hlTm9kZUNoaWxkIiwidGFza0NoaWxkIiwiREVGQVVMVF9TRUdNRU5UX0tFWSIsInNwYXduUmV1c2VkVGFzayIsImJlZ2luUmVuZGVyaW5nTmV3Um91dGVUcmVlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsIm1hdGNoU2VnbWVudCIsInNldCIsIm5ld0NhY2hlTm9kZUNoaWxkIiwibmV3U2VnbWVudE1hcENoaWxkIiwidGFza0NoaWxkUm91dGUiLCJkeW5hbWljUmVxdWVzdFRyZWVDaGlsZCIsIm5ld0NhY2hlTm9kZSIsImxhenlEYXRhIiwicnNjIiwicHJlZmV0Y2hSc2MiLCJoZWFkIiwibG9hZGluZyIsInBhdGNoUm91dGVyU3RhdGVXaXRoTmV3Q2hpbGRyZW4iLCJleGlzdGluZ0NhY2hlTm9kZSIsInBvc3NpYmx5UGFydGlhbFByZWZldGNoSGVhZCIsImlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCIsImNyZWF0ZUNhY2hlTm9kZU9uTmF2aWdhdGlvbiIsInJvdXRlclN0YXRlIiwicm91dGVyU3RhdGVDaGlsZHJlbiIsImlzTGVhZlNlZ21lbnQiLCJjYWNoZU5vZGVOYXZpZ2F0ZWRBdCIsIkRZTkFNSUNfU1RBTEVUSU1FX01TIiwiaXNQcmVmZXRjaFJzY1BhcnRpYWwiLCJzcGF3blBlbmRpbmdUYXNrIiwiZXhpc3RpbmdDYWNoZU5vZGVDaGlsZHJlbiIsImNhY2hlTm9kZUNoaWxkcmVuIiwicHVzaCIsInJvdXRlclN0YXRlQ2hpbGQiLCJleGlzdGluZ1NlZ21lbnRNYXBDaGlsZCIsInNlZ21lbnRDaGlsZCIsInNlZ21lbnRQYXRoQ2hpbGQiLCJzZWdtZW50S2V5Q2hpbGQiLCJleGlzdGluZ0NhY2hlTm9kZUNoaWxkIiwiYmFzZVJvdXRlclN0YXRlIiwibmV3Q2hpbGRyZW4iLCJjbG9uZSIsIm5ld1Rhc2siLCJjcmVhdGVQZW5kaW5nQ2FjaGVOb2RlIiwicmV1c2VkUm91dGVyU3RhdGUiLCJ0YXNrIiwicmVzcG9uc2VQcm9taXNlIiwidGhlbiIsImZsaWdodERhdGEiLCJub3JtYWxpemVkRmxpZ2h0RGF0YSIsInRyZWUiLCJzZXJ2ZXJSb3V0ZXJTdGF0ZSIsInNlZWREYXRhIiwiZHluYW1pY0RhdGEiLCJkeW5hbWljSGVhZCIsIndyaXRlRHluYW1pY0RhdGFJbnRvUGVuZGluZ1Rhc2siLCJlcnJvciIsInJvb3RUYXNrIiwiaSIsInNlZ21lbnQiLCJ0YXNrU2VnbWVudCIsImZpbmlzaFRhc2tVc2luZ0R5bmFtaWNEYXRhUGF5bG9hZCIsInRhc2tOb2RlIiwiZmluaXNoUGVuZGluZ0NhY2hlTm9kZSIsInNlcnZlckNoaWxkcmVuIiwiZHluYW1pY0RhdGFDaGlsZHJlbiIsInNlcnZlclJvdXRlclN0YXRlQ2hpbGQiLCJkeW5hbWljRGF0YUNoaWxkIiwic2l6ZSIsIm1heWJlUHJlZmV0Y2hSc2MiLCJtYXliZVByZWZldGNoTG9hZGluZyIsImNyZWF0ZURlZmVycmVkUnNjIiwiY2FjaGVOb2RlIiwidGFza1N0YXRlIiwic2VydmVyU3RhdGUiLCJ0YXNrU3RhdGVDaGlsZHJlbiIsInNlcnZlclN0YXRlQ2hpbGRyZW4iLCJkYXRhQ2hpbGRyZW4iLCJ0YXNrU3RhdGVDaGlsZCIsInNlcnZlclN0YXRlQ2hpbGQiLCJkYXRhQ2hpbGQiLCJzZWdtZW50TWFwQ2hpbGQiLCJ0YXNrU2VnbWVudENoaWxkIiwidGFza1NlZ21lbnRLZXlDaGlsZCIsImNhY2hlTm9kZUNoaWxkIiwiYWJvcnRQZW5kaW5nQ2FjaGVOb2RlIiwiZHluYW1pY1NlZ21lbnREYXRhIiwiaXNEZWZlcnJlZFJzYyIsInJlc29sdmUiLCJ2YWx1ZXMiLCJyZWplY3QiLCJuZXdQYXJhbGxlbFJvdXRlcyIsInNob3VsZFVzZVByZWZldGNoIiwic3RhdHVzIiwiREVGRVJSRUQiLCJTeW1ib2wiLCJ2YWx1ZSIsInRhZyIsInBlbmRpbmdSc2MiLCJQcm9taXNlIiwicmVzIiwicmVqIiwiZnVsZmlsbGVkUnNjIiwicmVqZWN0ZWRSc2MiLCJyZWFzb24iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js ***! \********************************************************************************************************************************************************************/ /***/ ((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 DYNAMIC_STALETIME_MS: function() {\n return DYNAMIC_STALETIME_MS;\n },\n STATIC_STALETIME_MS: function() {\n return STATIC_STALETIME_MS;\n },\n createSeededPrefetchCacheEntry: function() {\n return createSeededPrefetchCacheEntry;\n },\n getOrCreatePrefetchCacheEntry: function() {\n return getOrCreatePrefetchCacheEntry;\n },\n prunePrefetchCache: function() {\n return prunePrefetchCache;\n }\n});\nconst _fetchserverresponse = __webpack_require__(/*! ./fetch-server-response */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./reducers/prefetch-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst INTERCEPTION_CACHE_KEY_MARKER = '%';\n/**\n * Creates a cache key for the router prefetch cache\n *\n * @param url - The URL being navigated to\n * @param nextUrl - an internal URL, primarily used for handling rewrites. Defaults to '/'.\n * @return The generated prefetch cache key.\n */ function createPrefetchCacheKeyImpl(url, includeSearchParams, prefix) {\n // Initially we only use the pathname as the cache key. We don't want to include\n // search params so that multiple URLs with the same search parameter can re-use\n // loading states.\n let pathnameFromUrl = url.pathname;\n // RSC responses can differ based on search params, specifically in the case where we aren't\n // returning a partial response (ie with `PrefetchKind.AUTO`).\n // In the auto case, since loading.js & layout.js won't have access to search params,\n // we can safely re-use that cache entry. But for full prefetches, we should not\n // re-use the cache entry as the response may differ.\n if (includeSearchParams) {\n // if we have a full prefetch, we can include the search param in the key,\n // as we'll be getting back a full response. The server might have read the search\n // params when generating the full response.\n pathnameFromUrl += url.search;\n }\n if (prefix) {\n return \"\" + prefix + INTERCEPTION_CACHE_KEY_MARKER + pathnameFromUrl;\n }\n return pathnameFromUrl;\n}\nfunction createPrefetchCacheKey(url, kind, nextUrl) {\n return createPrefetchCacheKeyImpl(url, kind === _routerreducertypes.PrefetchKind.FULL, nextUrl);\n}\nfunction getExistingCacheEntry(url, kind, nextUrl, prefetchCache, allowAliasing) {\n if (kind === void 0) kind = _routerreducertypes.PrefetchKind.TEMPORARY;\n // We first check if there's a more specific interception route prefetch entry\n // This is because when we detect a prefetch that corresponds with an interception route, we prefix it with nextUrl (see `createPrefetchCacheKey`)\n // to avoid conflicts with other pages that may have the same URL but render different things depending on the `Next-URL` header.\n for (const maybeNextUrl of [\n nextUrl,\n null\n ]){\n const cacheKeyWithParams = createPrefetchCacheKeyImpl(url, true, maybeNextUrl);\n const cacheKeyWithoutParams = createPrefetchCacheKeyImpl(url, false, maybeNextUrl);\n // First, we check if we have a cache entry that exactly matches the URL\n const cacheKeyToUse = url.search ? cacheKeyWithParams : cacheKeyWithoutParams;\n const existingEntry = prefetchCache.get(cacheKeyToUse);\n if (existingEntry && allowAliasing) {\n // We know we're returning an aliased entry when the pathname matches but the search params don't,\n const isAliased = existingEntry.url.pathname === url.pathname && existingEntry.url.search !== url.search;\n if (isAliased) {\n return {\n ...existingEntry,\n aliased: true\n };\n }\n return existingEntry;\n }\n // If the request contains search params, and we're not doing a full prefetch, we can return the\n // param-less entry if it exists.\n // This is technically covered by the check at the bottom of this function, which iterates over cache entries,\n // but lets us arrive there quicker in the param-full case.\n const entryWithoutParams = prefetchCache.get(cacheKeyWithoutParams);\n if (false) {}\n }\n // If we've gotten to this point, we didn't find a specific cache entry that matched\n // the request URL.\n // We attempt a partial match by checking if there's a cache entry with the same pathname.\n // Regardless of what we find, since it doesn't correspond with the requested URL, we'll mark it \"aliased\".\n // This will signal to the router that it should only apply the loading state on the prefetched data.\n if (false) {}\n return undefined;\n}\nfunction getOrCreatePrefetchCacheEntry(param) {\n let { url, nextUrl, tree, prefetchCache, kind, allowAliasing = true } = param;\n const existingCacheEntry = getExistingCacheEntry(url, kind, nextUrl, prefetchCache, allowAliasing);\n if (existingCacheEntry) {\n // Grab the latest status of the cache entry and update it\n existingCacheEntry.status = getPrefetchEntryCacheStatus(existingCacheEntry);\n // when `kind` is provided, an explicit prefetch was requested.\n // if the requested prefetch is \"full\" and the current cache entry wasn't, we want to re-prefetch with the new intent\n const switchedToFullPrefetch = existingCacheEntry.kind !== _routerreducertypes.PrefetchKind.FULL && kind === _routerreducertypes.PrefetchKind.FULL;\n if (switchedToFullPrefetch) {\n // If we switched to a full prefetch, validate that the existing cache entry contained partial data.\n // It's possible that the cache entry was seeded with full data but has a cache type of \"auto\" (ie when cache entries\n // are seeded but without a prefetch intent)\n existingCacheEntry.data.then((prefetchResponse)=>{\n const isFullPrefetch = Array.isArray(prefetchResponse.flightData) && prefetchResponse.flightData.some((flightData)=>{\n // If we started rendering from the root and we returned RSC data (seedData), we already had a full prefetch.\n return flightData.isRootRender && flightData.seedData !== null;\n });\n if (!isFullPrefetch) {\n return createLazyPrefetchEntry({\n tree,\n url,\n nextUrl,\n prefetchCache,\n // If we didn't get an explicit prefetch kind, we want to set a temporary kind\n // rather than assuming the same intent as the previous entry, to be consistent with how we\n // lazily create prefetch entries when intent is left unspecified.\n kind: kind != null ? kind : _routerreducertypes.PrefetchKind.TEMPORARY\n });\n }\n });\n }\n // If the existing cache entry was marked as temporary, it means it was lazily created when attempting to get an entry,\n // where we didn't have the prefetch intent. Now that we have the intent (in `kind`), we want to update the entry to the more accurate kind.\n if (kind && existingCacheEntry.kind === _routerreducertypes.PrefetchKind.TEMPORARY) {\n existingCacheEntry.kind = kind;\n }\n // We've determined that the existing entry we found is still valid, so we return it.\n return existingCacheEntry;\n }\n // If we didn't return an entry, create a new one.\n return createLazyPrefetchEntry({\n tree,\n url,\n nextUrl,\n prefetchCache,\n kind: kind || _routerreducertypes.PrefetchKind.TEMPORARY\n });\n}\n/*\n * Used to take an existing cache entry and prefix it with the nextUrl, if it exists.\n * This ensures that we don't have conflicting cache entries for the same URL (as is the case with route interception).\n */ function prefixExistingPrefetchCacheEntry(param) {\n let { url, nextUrl, prefetchCache, existingCacheKey } = param;\n const existingCacheEntry = prefetchCache.get(existingCacheKey);\n if (!existingCacheEntry) {\n // no-op -- there wasn't an entry to move\n return;\n }\n const newCacheKey = createPrefetchCacheKey(url, existingCacheEntry.kind, nextUrl);\n prefetchCache.set(newCacheKey, {\n ...existingCacheEntry,\n key: newCacheKey\n });\n prefetchCache.delete(existingCacheKey);\n return newCacheKey;\n}\nfunction createSeededPrefetchCacheEntry(param) {\n let { nextUrl, tree, prefetchCache, url, data, kind } = param;\n // The initial cache entry technically includes full data, but it isn't explicitly prefetched -- we just seed the\n // prefetch cache so that we can skip an extra prefetch request later, since we already have the data.\n // if the prefetch corresponds with an interception route, we use the nextUrl to prefix the cache key\n const prefetchCacheKey = data.couldBeIntercepted ? createPrefetchCacheKey(url, kind, nextUrl) : createPrefetchCacheKey(url, kind);\n const prefetchEntry = {\n treeAtTimeOfPrefetch: tree,\n data: Promise.resolve(data),\n kind,\n prefetchTime: Date.now(),\n lastUsedTime: Date.now(),\n staleTime: data.staleTime,\n key: prefetchCacheKey,\n status: _routerreducertypes.PrefetchCacheEntryStatus.fresh,\n url\n };\n prefetchCache.set(prefetchCacheKey, prefetchEntry);\n return prefetchEntry;\n}\n/**\n * Creates a prefetch entry entry and enqueues a fetch request to retrieve the data.\n */ function createLazyPrefetchEntry(param) {\n let { url, kind, tree, nextUrl, prefetchCache } = param;\n const prefetchCacheKey = createPrefetchCacheKey(url, kind);\n // initiates the fetch request for the prefetch and attaches a listener\n // to the promise to update the prefetch cache entry when the promise resolves (if necessary)\n const data = _prefetchreducer.prefetchQueue.enqueue(()=>(0, _fetchserverresponse.fetchServerResponse)(url, {\n flightRouterState: tree,\n nextUrl,\n prefetchKind: kind\n }).then((prefetchResponse)=>{\n // TODO: `fetchServerResponse` should be more tighly coupled to these prefetch cache operations\n // to avoid drift between this cache key prefixing logic\n // (which is currently directly influenced by the server response)\n let newCacheKey;\n if (prefetchResponse.couldBeIntercepted) {\n // Determine if we need to prefix the cache key with the nextUrl\n newCacheKey = prefixExistingPrefetchCacheEntry({\n url,\n existingCacheKey: prefetchCacheKey,\n nextUrl,\n prefetchCache\n });\n }\n // If the prefetch was a cache hit, we want to update the existing cache entry to reflect that it was a full prefetch.\n // This is because we know that a static response will contain the full RSC payload, and can be updated to respect the `static`\n // staleTime.\n if (prefetchResponse.prerendered) {\n const existingCacheEntry = prefetchCache.get(newCacheKey != null ? newCacheKey : prefetchCacheKey);\n if (existingCacheEntry) {\n existingCacheEntry.kind = _routerreducertypes.PrefetchKind.FULL;\n if (prefetchResponse.staleTime !== -1) {\n // This is the stale time that was collected by the server during\n // static generation. Use this in place of the default stale time.\n existingCacheEntry.staleTime = prefetchResponse.staleTime;\n }\n }\n }\n return prefetchResponse;\n }));\n const prefetchEntry = {\n treeAtTimeOfPrefetch: tree,\n data,\n kind,\n prefetchTime: Date.now(),\n lastUsedTime: null,\n staleTime: -1,\n key: prefetchCacheKey,\n status: _routerreducertypes.PrefetchCacheEntryStatus.fresh,\n url\n };\n prefetchCache.set(prefetchCacheKey, prefetchEntry);\n return prefetchEntry;\n}\nfunction prunePrefetchCache(prefetchCache) {\n for (const [href, prefetchCacheEntry] of prefetchCache){\n if (getPrefetchEntryCacheStatus(prefetchCacheEntry) === _routerreducertypes.PrefetchCacheEntryStatus.expired) {\n prefetchCache.delete(href);\n }\n }\n}\nconst DYNAMIC_STALETIME_MS = Number(\"0\") * 1000;\nconst STATIC_STALETIME_MS = Number(\"300\") * 1000;\nfunction getPrefetchEntryCacheStatus(param) {\n let { kind, prefetchTime, lastUsedTime } = param;\n // We will re-use the cache entry data for up to the `dynamic` staletime window.\n if (Date.now() < (lastUsedTime != null ? lastUsedTime : prefetchTime) + DYNAMIC_STALETIME_MS) {\n return lastUsedTime ? _routerreducertypes.PrefetchCacheEntryStatus.reusable : _routerreducertypes.PrefetchCacheEntryStatus.fresh;\n }\n // For \"auto\" prefetching, we'll re-use only the loading boundary for up to `static` staletime window.\n // A stale entry will only re-use the `loading` boundary, not the full data.\n // This will trigger a \"lazy fetch\" for the full data.\n if (kind === _routerreducertypes.PrefetchKind.AUTO) {\n if (Date.now() < prefetchTime + STATIC_STALETIME_MS) {\n return _routerreducertypes.PrefetchCacheEntryStatus.stale;\n }\n }\n // for \"full\" prefetching, we'll re-use the cache entry data for up to `static` staletime window.\n if (kind === _routerreducertypes.PrefetchKind.FULL) {\n if (Date.now() < prefetchTime + STATIC_STALETIME_MS) {\n return _routerreducertypes.PrefetchCacheEntryStatus.reusable;\n }\n }\n return _routerreducertypes.PrefetchCacheEntryStatus.expired;\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=prefetch-cache-utils.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcHJlZmV0Y2gtY2FjaGUtdXRpbHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBNFlhQSxvQkFBb0I7ZUFBcEJBOztJQUdBQyxtQkFBbUI7ZUFBbkJBOztJQW5JR0MsOEJBQThCO2VBQTlCQTs7SUE5R0FDLDZCQUE2QjtlQUE3QkE7O0lBK05BQyxrQkFBa0I7ZUFBbEJBOzs7aURBMVhUO2dEQU1BOzZDQUN1QjtBQUU5QixNQUFNQyxnQ0FBZ0M7QUFVdEM7Ozs7OztDQU1DLEdBQ0QsU0FBU0MsMkJBQ1BDLEdBQVEsRUFDUkMsbUJBQTRCLEVBQzVCQyxNQUFzQjtJQUV0QixnRkFBZ0Y7SUFDaEYsZ0ZBQWdGO0lBQ2hGLGtCQUFrQjtJQUNsQixJQUFJQyxrQkFBa0JILElBQUlJLFFBQVE7SUFFbEMsNEZBQTRGO0lBQzVGLDhEQUE4RDtJQUM5RCxxRkFBcUY7SUFDckYsZ0ZBQWdGO0lBQ2hGLHFEQUFxRDtJQUNyRCxJQUFJSCxxQkFBcUI7UUFDdkIsMEVBQTBFO1FBQzFFLGtGQUFrRjtRQUNsRiw0Q0FBNEM7UUFDNUNFLG1CQUFtQkgsSUFBSUssTUFBTTtJQUMvQjtJQUVBLElBQUlILFFBQVE7UUFDVixPQUFRLEtBQUVBLFNBQVNKLGdDQUFnQ0s7SUFDckQ7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU0csdUJBQ1BOLEdBQVEsRUFDUk8sSUFBOEIsRUFDOUJDLE9BQXVCO0lBRXZCLE9BQU9ULDJCQUEyQkMsS0FBS08sU0FBU0Usb0JBQUFBLFlBQVksQ0FBQ0MsSUFBSSxFQUFFRjtBQUNyRTtBQUVBLFNBQVNHLHNCQUNQWCxHQUFRLEVBQ1JPLElBQTJDLEVBQzNDQyxPQUFzQixFQUN0QkksYUFBOEMsRUFDOUNDLGFBQXNCO0lBSHRCTixJQUFBQSxTQUFBQSxLQUFBQSxHQUFBQSxPQUFxQkUsb0JBQUFBLFlBQVksQ0FBQ0ssU0FBUztJQUszQyw4RUFBOEU7SUFDOUUsa0pBQWtKO0lBQ2xKLGlJQUFpSTtJQUNqSSxLQUFLLE1BQU1DLGdCQUFnQjtRQUFDUDtRQUFTO0tBQUssQ0FBRTtRQUMxQyxNQUFNUSxxQkFBcUJqQiwyQkFDekJDLEtBQ0EsTUFDQWU7UUFFRixNQUFNRSx3QkFBd0JsQiwyQkFDNUJDLEtBQ0EsT0FDQWU7UUFHRix3RUFBd0U7UUFDeEUsTUFBTUcsZ0JBQWdCbEIsSUFBSUssTUFBTSxHQUM1QlcscUJBQ0FDO1FBRUosTUFBTUUsZ0JBQWdCUCxjQUFjUSxHQUFHLENBQUNGO1FBQ3hDLElBQUlDLGlCQUFpQk4sZUFBZTtZQUNsQyxrR0FBa0c7WUFDbEcsTUFBTVEsWUFDSkYsY0FBY25CLEdBQUcsQ0FBQ0ksUUFBUSxLQUFLSixJQUFJSSxRQUFRLElBQzNDZSxjQUFjbkIsR0FBRyxDQUFDSyxNQUFNLEtBQUtMLElBQUlLLE1BQU07WUFFekMsSUFBSWdCLFdBQVc7Z0JBQ2IsT0FBTztvQkFDTCxHQUFHRixhQUFhO29CQUNoQkcsU0FBUztnQkFDWDtZQUNGO1lBRUEsT0FBT0g7UUFDVDtRQUVBLGdHQUFnRztRQUNoRyxpQ0FBaUM7UUFDakMsOEdBQThHO1FBQzlHLDJEQUEyRDtRQUMzRCxNQUFNSSxxQkFBcUJYLGNBQWNRLEdBQUcsQ0FBQ0g7UUFDN0MsSUFDRU8sS0FPK0QxQixFQUMvRCxFQUVEO0lBQ0g7SUFFQSxvRkFBb0Y7SUFDcEYsbUJBQW1CO0lBQ25CLDBGQUEwRjtJQUMxRiwyR0FBMkc7SUFDM0cscUdBQXFHO0lBQ3JHLElBQ0UwQixLQUVhWCxFQUNiLEVBV0Q7SUFFRCxPQUFPa0I7QUFDVDtBQU1PLFNBQVNuQyw4QkFBOEIsS0FXN0M7SUFYNkMsTUFDNUNJLEdBQUcsRUFDSFEsT0FBTyxFQUNQd0IsSUFBSSxFQUNKcEIsYUFBYSxFQUNiTCxJQUFJLEVBQ0pNLGdCQUFnQixJQUFJLEVBS3JCLEdBWDZDO0lBWTVDLE1BQU1vQixxQkFBcUJ0QixzQkFDekJYLEtBQ0FPLE1BQ0FDLFNBQ0FJLGVBQ0FDO0lBR0YsSUFBSW9CLG9CQUFvQjtRQUN0QiwwREFBMEQ7UUFDMURBLG1CQUFtQkMsTUFBTSxHQUFHQyw0QkFBNEJGO1FBRXhELCtEQUErRDtRQUMvRCxxSEFBcUg7UUFDckgsTUFBTUcseUJBQ0pILG1CQUFtQjFCLElBQUksS0FBS0Usb0JBQUFBLFlBQVksQ0FBQ0MsSUFBSSxJQUM3Q0gsU0FBU0Usb0JBQUFBLFlBQVksQ0FBQ0MsSUFBSTtRQUU1QixJQUFJMEIsd0JBQXdCO1lBQzFCLG9HQUFvRztZQUNwRyxxSEFBcUg7WUFDckgsNENBQTRDO1lBQzVDSCxtQkFBbUJJLElBQUksQ0FBQ0MsSUFBSSxDQUFDLENBQUNDO2dCQUM1QixNQUFNQyxpQkFDSkMsTUFBTUMsT0FBTyxDQUFDSCxpQkFBaUJJLFVBQVUsS0FDekNKLGlCQUFpQkksVUFBVSxDQUFDQyxJQUFJLENBQUMsQ0FBQ0Q7b0JBQ2hDLDZHQUE2RztvQkFDN0csT0FBT0EsV0FBV0UsWUFBWSxJQUFJRixXQUFXRyxRQUFRLEtBQUs7Z0JBQzVEO2dCQUVGLElBQUksQ0FBQ04sZ0JBQWdCO29CQUNuQixPQUFPTyx3QkFBd0I7d0JBQzdCZjt3QkFDQWhDO3dCQUNBUTt3QkFDQUk7d0JBQ0EsOEVBQThFO3dCQUM5RSwyRkFBMkY7d0JBQzNGLGtFQUFrRTt3QkFDbEVMLE1BQU1BLFFBQUFBLE9BQUFBLE9BQVFFLG9CQUFBQSxZQUFZLENBQUNLLFNBQVM7b0JBQ3RDO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLHVIQUF1SDtRQUN2SCw0SUFBNEk7UUFDNUksSUFBSVAsUUFBUTBCLG1CQUFtQjFCLElBQUksS0FBS0Usb0JBQUFBLFlBQVksQ0FBQ0ssU0FBUyxFQUFFO1lBQzlEbUIsbUJBQW1CMUIsSUFBSSxHQUFHQTtRQUM1QjtRQUVBLHFGQUFxRjtRQUNyRixPQUFPMEI7SUFDVDtJQUVBLGtEQUFrRDtJQUNsRCxPQUFPYyx3QkFBd0I7UUFDN0JmO1FBQ0FoQztRQUNBUTtRQUNBSTtRQUNBTCxNQUFNQSxRQUFRRSxvQkFBQUEsWUFBWSxDQUFDSyxTQUFTO0lBQ3RDO0FBQ0Y7QUFFQTs7O0NBR0MsR0FDRCxTQUFTa0MsaUNBQWlDLEtBUXpDO0lBUnlDLE1BQ3hDaEQsR0FBRyxFQUNIUSxPQUFPLEVBQ1BJLGFBQWEsRUFDYnFDLGdCQUFnQixFQUlqQixHQVJ5QztJQVN4QyxNQUFNaEIscUJBQXFCckIsY0FBY1EsR0FBRyxDQUFDNkI7SUFDN0MsSUFBSSxDQUFDaEIsb0JBQW9CO1FBQ3ZCLHlDQUF5QztRQUN6QztJQUNGO0lBRUEsTUFBTWlCLGNBQWM1Qyx1QkFDbEJOLEtBQ0FpQyxtQkFBbUIxQixJQUFJLEVBQ3ZCQztJQUVGSSxjQUFjdUMsR0FBRyxDQUFDRCxhQUFhO1FBQUUsR0FBR2pCLGtCQUFrQjtRQUFFTixLQUFLdUI7SUFBWTtJQUN6RXRDLGNBQWN3QyxNQUFNLENBQUNIO0lBRXJCLE9BQU9DO0FBQ1Q7QUFLTyxTQUFTdkQsK0JBQStCLEtBVzlDO0lBWDhDLE1BQzdDYSxPQUFPLEVBQ1B3QixJQUFJLEVBQ0pwQixhQUFhLEVBQ2JaLEdBQUcsRUFDSHFDLElBQUksRUFDSjlCLElBQUksRUFLTCxHQVg4QztJQVk3QyxpSEFBaUg7SUFDakgsc0dBQXNHO0lBQ3RHLHFHQUFxRztJQUNyRyxNQUFNOEMsbUJBQW1CaEIsS0FBS2lCLGtCQUFrQixHQUM1Q2hELHVCQUF1Qk4sS0FBS08sTUFBTUMsV0FDbENGLHVCQUF1Qk4sS0FBS087SUFFaEMsTUFBTWdELGdCQUFnQjtRQUNwQkMsc0JBQXNCeEI7UUFDdEJLLE1BQU1vQixRQUFRQyxPQUFPLENBQUNyQjtRQUN0QjlCO1FBQ0FvRCxjQUFjQyxLQUFLQyxHQUFHO1FBQ3RCQyxjQUFjRixLQUFLQyxHQUFHO1FBQ3RCRSxXQUFXMUIsS0FBSzBCLFNBQVM7UUFDekJwQyxLQUFLMEI7UUFDTG5CLFFBQVE4QixvQkFBQUEsd0JBQXdCLENBQUNDLEtBQUs7UUFDdENqRTtJQUNGO0lBRUFZLGNBQWN1QyxHQUFHLENBQUNFLGtCQUFrQkU7SUFFcEMsT0FBT0E7QUFDVDtBQUVBOztDQUVDLEdBQ0QsU0FBU1Isd0JBQXdCLEtBU2hDO0lBVGdDLE1BQy9CL0MsR0FBRyxFQUNITyxJQUFJLEVBQ0p5QixJQUFJLEVBQ0p4QixPQUFPLEVBQ1BJLGFBQWEsRUFJZCxHQVRnQztJQVUvQixNQUFNeUMsbUJBQW1CL0MsdUJBQXVCTixLQUFLTztJQUVyRCx1RUFBdUU7SUFDdkUsNkZBQTZGO0lBQzdGLE1BQU04QixPQUFPNkIsaUJBQUFBLGFBQWEsQ0FBQ0MsT0FBTyxDQUFDLElBQ2pDQyxDQUFBQSxHQUFBQSxxQkFBQUEsbUJBQUFBLEVBQW9CcEUsS0FBSztZQUN2QnFFLG1CQUFtQnJDO1lBQ25CeEI7WUFDQThELGNBQWMvRDtRQUNoQixHQUFHK0IsSUFBSSxDQUFDLENBQUNDO1lBQ1AsK0ZBQStGO1lBQy9GLHdEQUF3RDtZQUN4RCxrRUFBa0U7WUFDbEUsSUFBSVc7WUFFSixJQUFJWCxpQkFBaUJlLGtCQUFrQixFQUFFO2dCQUN2QyxnRUFBZ0U7Z0JBQ2hFSixjQUFjRixpQ0FBaUM7b0JBQzdDaEQ7b0JBQ0FpRCxrQkFBa0JJO29CQUNsQjdDO29CQUNBSTtnQkFDRjtZQUNGO1lBRUEsc0hBQXNIO1lBQ3RILCtIQUErSDtZQUMvSCxhQUFhO1lBQ2IsSUFBSTJCLGlCQUFpQmdDLFdBQVcsRUFBRTtnQkFDaEMsTUFBTXRDLHFCQUFxQnJCLGNBQWNRLEdBQUcsQ0FDMUMsZUFDQThCLE9BQUFBLGNBQWVHO2dCQUVqQixJQUFJcEIsb0JBQW9CO29CQUN0QkEsbUJBQW1CMUIsSUFBSSxHQUFHRSxvQkFBQUEsWUFBWSxDQUFDQyxJQUFJO29CQUMzQyxJQUFJNkIsaUJBQWlCd0IsU0FBUyxLQUFLLENBQUMsR0FBRzt3QkFDckMsaUVBQWlFO3dCQUNqRSxrRUFBa0U7d0JBQ2xFOUIsbUJBQW1COEIsU0FBUyxHQUFHeEIsaUJBQWlCd0IsU0FBUztvQkFDM0Q7Z0JBQ0Y7WUFDRjtZQUVBLE9BQU94QjtRQUNUO0lBR0YsTUFBTWdCLGdCQUFnQjtRQUNwQkMsc0JBQXNCeEI7UUFDdEJLO1FBQ0E5QjtRQUNBb0QsY0FBY0MsS0FBS0MsR0FBRztRQUN0QkMsY0FBYztRQUNkQyxXQUFXLENBQUM7UUFDWnBDLEtBQUswQjtRQUNMbkIsUUFBUThCLG9CQUFBQSx3QkFBd0IsQ0FBQ0MsS0FBSztRQUN0Q2pFO0lBQ0Y7SUFFQVksY0FBY3VDLEdBQUcsQ0FBQ0Usa0JBQWtCRTtJQUVwQyxPQUFPQTtBQUNUO0FBRU8sU0FBUzFELG1CQUNkZSxhQUFvRDtJQUVwRCxLQUFLLE1BQU0sQ0FBQzRELE1BQU1DLG1CQUFtQixJQUFJN0QsY0FBZTtRQUN0RCxJQUNFdUIsNEJBQTRCc0Msd0JBQzVCVCxvQkFBQUEsd0JBQXdCLENBQUNVLE9BQU8sRUFDaEM7WUFDQTlELGNBQWN3QyxNQUFNLENBQUNvQjtRQUN2QjtJQUNGO0FBQ0Y7QUFJTyxNQUFNL0UsdUJBQ1hrRixPQUFPbkQsR0FBa0QsSUFBSTtBQUV4RCxNQUFNOUIsc0JBQ1hpRixPQUFPbkQsS0FBaUQsSUFBSTtBQUU5RCxTQUFTVyw0QkFBNEIsS0FJaEI7SUFKZ0IsTUFDbkM1QixJQUFJLEVBQ0pvRCxZQUFZLEVBQ1pHLFlBQVksRUFDTyxHQUpnQjtJQUtuQyxnRkFBZ0Y7SUFDaEYsSUFBSUYsS0FBS0MsR0FBRyxLQUFNQyxDQUFBQSxnQkFBQUEsT0FBQUEsZUFBZ0JILFlBQUFBLENBQVcsR0FBS2xFLHNCQUFzQjtRQUN0RSxPQUFPcUUsZUFDSEUsb0JBQUFBLHdCQUF3QixDQUFDYyxRQUFRLEdBQ2pDZCxvQkFBQUEsd0JBQXdCLENBQUNDLEtBQUs7SUFDcEM7SUFFQSxzR0FBc0c7SUFDdEcsNEVBQTRFO0lBQzVFLHNEQUFzRDtJQUN0RCxJQUFJMUQsU0FBU0Usb0JBQUFBLFlBQVksQ0FBQ3NFLElBQUksRUFBRTtRQUM5QixJQUFJbkIsS0FBS0MsR0FBRyxLQUFLRixlQUFlakUscUJBQXFCO1lBQ25ELE9BQU9zRSxvQkFBQUEsd0JBQXdCLENBQUNnQixLQUFLO1FBQ3ZDO0lBQ0Y7SUFFQSxpR0FBaUc7SUFDakcsSUFBSXpFLFNBQVNFLG9CQUFBQSxZQUFZLENBQUNDLElBQUksRUFBRTtRQUM5QixJQUFJa0QsS0FBS0MsR0FBRyxLQUFLRixlQUFlakUscUJBQXFCO1lBQ25ELE9BQU9zRSxvQkFBQUEsd0JBQXdCLENBQUNjLFFBQVE7UUFDMUM7SUFDRjtJQUVBLE9BQU9kLG9CQUFBQSx3QkFBd0IsQ0FBQ1UsT0FBTztBQUN6QyIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3ByZWZldGNoLWNhY2hlLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGZldGNoU2VydmVyUmVzcG9uc2UsXG4gIHR5cGUgRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCxcbn0gZnJvbSAnLi9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5pbXBvcnQge1xuICBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMsXG4gIHR5cGUgUHJlZmV0Y2hDYWNoZUVudHJ5LFxuICBQcmVmZXRjaEtpbmQsXG4gIHR5cGUgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBwcmVmZXRjaFF1ZXVlIH0gZnJvbSAnLi9yZWR1Y2Vycy9wcmVmZXRjaC1yZWR1Y2VyJ1xuXG5jb25zdCBJTlRFUkNFUFRJT05fQ0FDSEVfS0VZX01BUktFUiA9ICclJ1xuXG5leHBvcnQgdHlwZSBBbGlhc2VkUHJlZmV0Y2hDYWNoZUVudHJ5ID0gUHJlZmV0Y2hDYWNoZUVudHJ5ICYge1xuICAvKiogVGhpcyBpcyBhIHNwZWNpYWwgcHJvcGVydHkgdGhhdCBpbmRpY2F0ZXMgYSBwcmVmZXRjaCBlbnRyeSBhc3NvY2lhdGVkIHdpdGggYSBkaWZmZXJlbnQgVVJMXG4gICAqIHdhcyByZXR1cm5lZCByYXRoZXIgdGhhbiB0aGUgcmVxdWVzdGVkIFVSTC4gVGhpcyBzaWduYWxzIHRvIHRoZSByb3V0ZXIgdGhhdCBpdCBzaG91bGQgb25seVxuICAgKiBhcHBseSB0aGUgcGFydCB0aGF0IGRvZXNuJ3QgZGVwZW5kIG9uIHNlYXJjaFBhcmFtcyAoc3BlY2lmaWNhbGx5IHRoZSBsb2FkaW5nIHN0YXRlKS5cbiAgICovXG4gIGFsaWFzZWQ/OiBib29sZWFuXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNhY2hlIGtleSBmb3IgdGhlIHJvdXRlciBwcmVmZXRjaCBjYWNoZVxuICpcbiAqIEBwYXJhbSB1cmwgLSBUaGUgVVJMIGJlaW5nIG5hdmlnYXRlZCB0b1xuICogQHBhcmFtIG5leHRVcmwgLSBhbiBpbnRlcm5hbCBVUkwsIHByaW1hcmlseSB1c2VkIGZvciBoYW5kbGluZyByZXdyaXRlcy4gRGVmYXVsdHMgdG8gJy8nLlxuICogQHJldHVybiBUaGUgZ2VuZXJhdGVkIHByZWZldGNoIGNhY2hlIGtleS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlUHJlZmV0Y2hDYWNoZUtleUltcGwoXG4gIHVybDogVVJMLFxuICBpbmNsdWRlU2VhcmNoUGFyYW1zOiBib29sZWFuLFxuICBwcmVmaXg/OiBzdHJpbmcgfCBudWxsXG4pIHtcbiAgLy8gSW5pdGlhbGx5IHdlIG9ubHkgdXNlIHRoZSBwYXRobmFtZSBhcyB0aGUgY2FjaGUga2V5LiBXZSBkb24ndCB3YW50IHRvIGluY2x1ZGVcbiAgLy8gc2VhcmNoIHBhcmFtcyBzbyB0aGF0IG11bHRpcGxlIFVSTHMgd2l0aCB0aGUgc2FtZSBzZWFyY2ggcGFyYW1ldGVyIGNhbiByZS11c2VcbiAgLy8gbG9hZGluZyBzdGF0ZXMuXG4gIGxldCBwYXRobmFtZUZyb21VcmwgPSB1cmwucGF0aG5hbWVcblxuICAvLyBSU0MgcmVzcG9uc2VzIGNhbiBkaWZmZXIgYmFzZWQgb24gc2VhcmNoIHBhcmFtcywgc3BlY2lmaWNhbGx5IGluIHRoZSBjYXNlIHdoZXJlIHdlIGFyZW4ndFxuICAvLyByZXR1cm5pbmcgYSBwYXJ0aWFsIHJlc3BvbnNlIChpZSB3aXRoIGBQcmVmZXRjaEtpbmQuQVVUT2ApLlxuICAvLyBJbiB0aGUgYXV0byBjYXNlLCBzaW5jZSBsb2FkaW5nLmpzICYgbGF5b3V0LmpzIHdvbid0IGhhdmUgYWNjZXNzIHRvIHNlYXJjaCBwYXJhbXMsXG4gIC8vIHdlIGNhbiBzYWZlbHkgcmUtdXNlIHRoYXQgY2FjaGUgZW50cnkuIEJ1dCBmb3IgZnVsbCBwcmVmZXRjaGVzLCB3ZSBzaG91bGQgbm90XG4gIC8vIHJlLXVzZSB0aGUgY2FjaGUgZW50cnkgYXMgdGhlIHJlc3BvbnNlIG1heSBkaWZmZXIuXG4gIGlmIChpbmNsdWRlU2VhcmNoUGFyYW1zKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIGZ1bGwgcHJlZmV0Y2gsIHdlIGNhbiBpbmNsdWRlIHRoZSBzZWFyY2ggcGFyYW0gaW4gdGhlIGtleSxcbiAgICAvLyBhcyB3ZSdsbCBiZSBnZXR0aW5nIGJhY2sgYSBmdWxsIHJlc3BvbnNlLiBUaGUgc2VydmVyIG1pZ2h0IGhhdmUgcmVhZCB0aGUgc2VhcmNoXG4gICAgLy8gcGFyYW1zIHdoZW4gZ2VuZXJhdGluZyB0aGUgZnVsbCByZXNwb25zZS5cbiAgICBwYXRobmFtZUZyb21VcmwgKz0gdXJsLnNlYXJjaFxuICB9XG5cbiAgaWYgKHByZWZpeCkge1xuICAgIHJldHVybiBgJHtwcmVmaXh9JHtJTlRFUkNFUFRJT05fQ0FDSEVfS0VZX01BUktFUn0ke3BhdGhuYW1lRnJvbVVybH1gXG4gIH1cblxuICByZXR1cm4gcGF0aG5hbWVGcm9tVXJsXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByZWZldGNoQ2FjaGVLZXkoXG4gIHVybDogVVJMLFxuICBraW5kOiBQcmVmZXRjaEtpbmQgfCB1bmRlZmluZWQsXG4gIG5leHRVcmw/OiBzdHJpbmcgfCBudWxsXG4pIHtcbiAgcmV0dXJuIGNyZWF0ZVByZWZldGNoQ2FjaGVLZXlJbXBsKHVybCwga2luZCA9PT0gUHJlZmV0Y2hLaW5kLkZVTEwsIG5leHRVcmwpXG59XG5cbmZ1bmN0aW9uIGdldEV4aXN0aW5nQ2FjaGVFbnRyeShcbiAgdXJsOiBVUkwsXG4gIGtpbmQ6IFByZWZldGNoS2luZCA9IFByZWZldGNoS2luZC5URU1QT1JBUlksXG4gIG5leHRVcmw6IHN0cmluZyB8IG51bGwsXG4gIHByZWZldGNoQ2FjaGU6IE1hcDxzdHJpbmcsIFByZWZldGNoQ2FjaGVFbnRyeT4sXG4gIGFsbG93QWxpYXNpbmc6IGJvb2xlYW5cbik6IEFsaWFzZWRQcmVmZXRjaENhY2hlRW50cnkgfCB1bmRlZmluZWQge1xuICAvLyBXZSBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIGEgbW9yZSBzcGVjaWZpYyBpbnRlcmNlcHRpb24gcm91dGUgcHJlZmV0Y2ggZW50cnlcbiAgLy8gVGhpcyBpcyBiZWNhdXNlIHdoZW4gd2UgZGV0ZWN0IGEgcHJlZmV0Y2ggdGhhdCBjb3JyZXNwb25kcyB3aXRoIGFuIGludGVyY2VwdGlvbiByb3V0ZSwgd2UgcHJlZml4IGl0IHdpdGggbmV4dFVybCAoc2VlIGBjcmVhdGVQcmVmZXRjaENhY2hlS2V5YClcbiAgLy8gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggb3RoZXIgcGFnZXMgdGhhdCBtYXkgaGF2ZSB0aGUgc2FtZSBVUkwgYnV0IHJlbmRlciBkaWZmZXJlbnQgdGhpbmdzIGRlcGVuZGluZyBvbiB0aGUgYE5leHQtVVJMYCBoZWFkZXIuXG4gIGZvciAoY29uc3QgbWF5YmVOZXh0VXJsIG9mIFtuZXh0VXJsLCBudWxsXSkge1xuICAgIGNvbnN0IGNhY2hlS2V5V2l0aFBhcmFtcyA9IGNyZWF0ZVByZWZldGNoQ2FjaGVLZXlJbXBsKFxuICAgICAgdXJsLFxuICAgICAgdHJ1ZSxcbiAgICAgIG1heWJlTmV4dFVybFxuICAgIClcbiAgICBjb25zdCBjYWNoZUtleVdpdGhvdXRQYXJhbXMgPSBjcmVhdGVQcmVmZXRjaENhY2hlS2V5SW1wbChcbiAgICAgIHVybCxcbiAgICAgIGZhbHNlLFxuICAgICAgbWF5YmVOZXh0VXJsXG4gICAgKVxuXG4gICAgLy8gRmlyc3QsIHdlIGNoZWNrIGlmIHdlIGhhdmUgYSBjYWNoZSBlbnRyeSB0aGF0IGV4YWN0bHkgbWF0Y2hlcyB0aGUgVVJMXG4gICAgY29uc3QgY2FjaGVLZXlUb1VzZSA9IHVybC5zZWFyY2hcbiAgICAgID8gY2FjaGVLZXlXaXRoUGFyYW1zXG4gICAgICA6IGNhY2hlS2V5V2l0aG91dFBhcmFtc1xuXG4gICAgY29uc3QgZXhpc3RpbmdFbnRyeSA9IHByZWZldGNoQ2FjaGUuZ2V0KGNhY2hlS2V5VG9Vc2UpXG4gICAgaWYgKGV4aXN0aW5nRW50cnkgJiYgYWxsb3dBbGlhc2luZykge1xuICAgICAgLy8gV2Uga25vdyB3ZSdyZSByZXR1cm5pbmcgYW4gYWxpYXNlZCBlbnRyeSB3aGVuIHRoZSBwYXRobmFtZSBtYXRjaGVzIGJ1dCB0aGUgc2VhcmNoIHBhcmFtcyBkb24ndCxcbiAgICAgIGNvbnN0IGlzQWxpYXNlZCA9XG4gICAgICAgIGV4aXN0aW5nRW50cnkudXJsLnBhdGhuYW1lID09PSB1cmwucGF0aG5hbWUgJiZcbiAgICAgICAgZXhpc3RpbmdFbnRyeS51cmwuc2VhcmNoICE9PSB1cmwuc2VhcmNoXG5cbiAgICAgIGlmIChpc0FsaWFzZWQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5leGlzdGluZ0VudHJ5LFxuICAgICAgICAgIGFsaWFzZWQ6IHRydWUsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGV4aXN0aW5nRW50cnlcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgcmVxdWVzdCBjb250YWlucyBzZWFyY2ggcGFyYW1zLCBhbmQgd2UncmUgbm90IGRvaW5nIGEgZnVsbCBwcmVmZXRjaCwgd2UgY2FuIHJldHVybiB0aGVcbiAgICAvLyBwYXJhbS1sZXNzIGVudHJ5IGlmIGl0IGV4aXN0cy5cbiAgICAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGNvdmVyZWQgYnkgdGhlIGNoZWNrIGF0IHRoZSBib3R0b20gb2YgdGhpcyBmdW5jdGlvbiwgd2hpY2ggaXRlcmF0ZXMgb3ZlciBjYWNoZSBlbnRyaWVzLFxuICAgIC8vIGJ1dCBsZXRzIHVzIGFycml2ZSB0aGVyZSBxdWlja2VyIGluIHRoZSBwYXJhbS1mdWxsIGNhc2UuXG4gICAgY29uc3QgZW50cnlXaXRob3V0UGFyYW1zID0gcHJlZmV0Y2hDYWNoZS5nZXQoY2FjaGVLZXlXaXRob3V0UGFyYW1zKVxuICAgIGlmIChcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnICYmXG4gICAgICBhbGxvd0FsaWFzaW5nICYmXG4gICAgICB1cmwuc2VhcmNoICYmXG4gICAgICBraW5kICE9PSBQcmVmZXRjaEtpbmQuRlVMTCAmJlxuICAgICAgZW50cnlXaXRob3V0UGFyYW1zICYmXG4gICAgICAvLyBXZSBzaG91bGRuJ3QgcmV0dXJuIHRoZSBhbGlhc2VkIGVudHJ5IGlmIGl0IHdhcyByZWxvY2F0ZWQgdG8gYSBuZXcgY2FjaGUga2V5LlxuICAgICAgLy8gU2luY2UgaXQncyByZXdyaXR0ZW4sIGl0IGNvdWxkIHJlc3BvbmQgd2l0aCBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGxvYWRpbmcgc3RhdGUuXG4gICAgICAhZW50cnlXaXRob3V0UGFyYW1zLmtleS5pbmNsdWRlcyhJTlRFUkNFUFRJT05fQ0FDSEVfS0VZX01BUktFUilcbiAgICApIHtcbiAgICAgIHJldHVybiB7IC4uLmVudHJ5V2l0aG91dFBhcmFtcywgYWxpYXNlZDogdHJ1ZSB9XG4gICAgfVxuICB9XG5cbiAgLy8gSWYgd2UndmUgZ290dGVuIHRvIHRoaXMgcG9pbnQsIHdlIGRpZG4ndCBmaW5kIGEgc3BlY2lmaWMgY2FjaGUgZW50cnkgdGhhdCBtYXRjaGVkXG4gIC8vIHRoZSByZXF1ZXN0IFVSTC5cbiAgLy8gV2UgYXR0ZW1wdCBhIHBhcnRpYWwgbWF0Y2ggYnkgY2hlY2tpbmcgaWYgdGhlcmUncyBhIGNhY2hlIGVudHJ5IHdpdGggdGhlIHNhbWUgcGF0aG5hbWUuXG4gIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hhdCB3ZSBmaW5kLCBzaW5jZSBpdCBkb2Vzbid0IGNvcnJlc3BvbmQgd2l0aCB0aGUgcmVxdWVzdGVkIFVSTCwgd2UnbGwgbWFyayBpdCBcImFsaWFzZWRcIi5cbiAgLy8gVGhpcyB3aWxsIHNpZ25hbCB0byB0aGUgcm91dGVyIHRoYXQgaXQgc2hvdWxkIG9ubHkgYXBwbHkgdGhlIGxvYWRpbmcgc3RhdGUgb24gdGhlIHByZWZldGNoZWQgZGF0YS5cbiAgaWYgKFxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAnZGV2ZWxvcG1lbnQnICYmXG4gICAga2luZCAhPT0gUHJlZmV0Y2hLaW5kLkZVTEwgJiZcbiAgICBhbGxvd0FsaWFzaW5nXG4gICkge1xuICAgIGZvciAoY29uc3QgY2FjaGVFbnRyeSBvZiBwcmVmZXRjaENhY2hlLnZhbHVlcygpKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNhY2hlRW50cnkudXJsLnBhdGhuYW1lID09PSB1cmwucGF0aG5hbWUgJiZcbiAgICAgICAgLy8gV2Ugc2hvdWxkbid0IHJldHVybiB0aGUgYWxpYXNlZCBlbnRyeSBpZiBpdCB3YXMgcmVsb2NhdGVkIHRvIGEgbmV3IGNhY2hlIGtleS5cbiAgICAgICAgLy8gU2luY2UgaXQncyByZXdyaXR0ZW4sIGl0IGNvdWxkIHJlc3BvbmQgd2l0aCBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IGxvYWRpbmcgc3RhdGUuXG4gICAgICAgICFjYWNoZUVudHJ5LmtleS5pbmNsdWRlcyhJTlRFUkNFUFRJT05fQ0FDSEVfS0VZX01BUktFUilcbiAgICAgICkge1xuICAgICAgICByZXR1cm4geyAuLi5jYWNoZUVudHJ5LCBhbGlhc2VkOiB0cnVlIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogUmV0dXJucyBhIHByZWZldGNoIGNhY2hlIGVudHJ5IGlmIG9uZSBleGlzdHMuIE90aGVyd2lzZSBjcmVhdGVzIGEgbmV3IG9uZSBhbmQgZW5xdWV1ZXMgYSBmZXRjaCByZXF1ZXN0XG4gKiB0byByZXRyaWV2ZSB0aGUgcHJlZmV0Y2ggZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeSh7XG4gIHVybCxcbiAgbmV4dFVybCxcbiAgdHJlZSxcbiAgcHJlZmV0Y2hDYWNoZSxcbiAga2luZCxcbiAgYWxsb3dBbGlhc2luZyA9IHRydWUsXG59OiBQaWNrPFJlYWRvbmx5UmVkdWNlclN0YXRlLCAnbmV4dFVybCcgfCAncHJlZmV0Y2hDYWNoZScgfCAndHJlZSc+ICYge1xuICB1cmw6IFVSTFxuICBraW5kPzogUHJlZmV0Y2hLaW5kXG4gIGFsbG93QWxpYXNpbmc6IGJvb2xlYW5cbn0pOiBBbGlhc2VkUHJlZmV0Y2hDYWNoZUVudHJ5IHtcbiAgY29uc3QgZXhpc3RpbmdDYWNoZUVudHJ5ID0gZ2V0RXhpc3RpbmdDYWNoZUVudHJ5KFxuICAgIHVybCxcbiAgICBraW5kLFxuICAgIG5leHRVcmwsXG4gICAgcHJlZmV0Y2hDYWNoZSxcbiAgICBhbGxvd0FsaWFzaW5nXG4gIClcblxuICBpZiAoZXhpc3RpbmdDYWNoZUVudHJ5KSB7XG4gICAgLy8gR3JhYiB0aGUgbGF0ZXN0IHN0YXR1cyBvZiB0aGUgY2FjaGUgZW50cnkgYW5kIHVwZGF0ZSBpdFxuICAgIGV4aXN0aW5nQ2FjaGVFbnRyeS5zdGF0dXMgPSBnZXRQcmVmZXRjaEVudHJ5Q2FjaGVTdGF0dXMoZXhpc3RpbmdDYWNoZUVudHJ5KVxuXG4gICAgLy8gd2hlbiBga2luZGAgaXMgcHJvdmlkZWQsIGFuIGV4cGxpY2l0IHByZWZldGNoIHdhcyByZXF1ZXN0ZWQuXG4gICAgLy8gaWYgdGhlIHJlcXVlc3RlZCBwcmVmZXRjaCBpcyBcImZ1bGxcIiBhbmQgdGhlIGN1cnJlbnQgY2FjaGUgZW50cnkgd2Fzbid0LCB3ZSB3YW50IHRvIHJlLXByZWZldGNoIHdpdGggdGhlIG5ldyBpbnRlbnRcbiAgICBjb25zdCBzd2l0Y2hlZFRvRnVsbFByZWZldGNoID1cbiAgICAgIGV4aXN0aW5nQ2FjaGVFbnRyeS5raW5kICE9PSBQcmVmZXRjaEtpbmQuRlVMTCAmJlxuICAgICAga2luZCA9PT0gUHJlZmV0Y2hLaW5kLkZVTExcblxuICAgIGlmIChzd2l0Y2hlZFRvRnVsbFByZWZldGNoKSB7XG4gICAgICAvLyBJZiB3ZSBzd2l0Y2hlZCB0byBhIGZ1bGwgcHJlZmV0Y2gsIHZhbGlkYXRlIHRoYXQgdGhlIGV4aXN0aW5nIGNhY2hlIGVudHJ5IGNvbnRhaW5lZCBwYXJ0aWFsIGRhdGEuXG4gICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGNhY2hlIGVudHJ5IHdhcyBzZWVkZWQgd2l0aCBmdWxsIGRhdGEgYnV0IGhhcyBhIGNhY2hlIHR5cGUgb2YgXCJhdXRvXCIgKGllIHdoZW4gY2FjaGUgZW50cmllc1xuICAgICAgLy8gYXJlIHNlZWRlZCBidXQgd2l0aG91dCBhIHByZWZldGNoIGludGVudClcbiAgICAgIGV4aXN0aW5nQ2FjaGVFbnRyeS5kYXRhLnRoZW4oKHByZWZldGNoUmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3QgaXNGdWxsUHJlZmV0Y2ggPVxuICAgICAgICAgIEFycmF5LmlzQXJyYXkocHJlZmV0Y2hSZXNwb25zZS5mbGlnaHREYXRhKSAmJlxuICAgICAgICAgIHByZWZldGNoUmVzcG9uc2UuZmxpZ2h0RGF0YS5zb21lKChmbGlnaHREYXRhKSA9PiB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBzdGFydGVkIHJlbmRlcmluZyBmcm9tIHRoZSByb290IGFuZCB3ZSByZXR1cm5lZCBSU0MgZGF0YSAoc2VlZERhdGEpLCB3ZSBhbHJlYWR5IGhhZCBhIGZ1bGwgcHJlZmV0Y2guXG4gICAgICAgICAgICByZXR1cm4gZmxpZ2h0RGF0YS5pc1Jvb3RSZW5kZXIgJiYgZmxpZ2h0RGF0YS5zZWVkRGF0YSAhPT0gbnVsbFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFpc0Z1bGxQcmVmZXRjaCkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVMYXp5UHJlZmV0Y2hFbnRyeSh7XG4gICAgICAgICAgICB0cmVlLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgbmV4dFVybCxcbiAgICAgICAgICAgIHByZWZldGNoQ2FjaGUsXG4gICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZ2V0IGFuIGV4cGxpY2l0IHByZWZldGNoIGtpbmQsIHdlIHdhbnQgdG8gc2V0IGEgdGVtcG9yYXJ5IGtpbmRcbiAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIGFzc3VtaW5nIHRoZSBzYW1lIGludGVudCBhcyB0aGUgcHJldmlvdXMgZW50cnksIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBob3cgd2VcbiAgICAgICAgICAgIC8vIGxhemlseSBjcmVhdGUgcHJlZmV0Y2ggZW50cmllcyB3aGVuIGludGVudCBpcyBsZWZ0IHVuc3BlY2lmaWVkLlxuICAgICAgICAgICAga2luZDoga2luZCA/PyBQcmVmZXRjaEtpbmQuVEVNUE9SQVJZLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIGV4aXN0aW5nIGNhY2hlIGVudHJ5IHdhcyBtYXJrZWQgYXMgdGVtcG9yYXJ5LCBpdCBtZWFucyBpdCB3YXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGdldCBhbiBlbnRyeSxcbiAgICAvLyB3aGVyZSB3ZSBkaWRuJ3QgaGF2ZSB0aGUgcHJlZmV0Y2ggaW50ZW50LiBOb3cgdGhhdCB3ZSBoYXZlIHRoZSBpbnRlbnQgKGluIGBraW5kYCksIHdlIHdhbnQgdG8gdXBkYXRlIHRoZSBlbnRyeSB0byB0aGUgbW9yZSBhY2N1cmF0ZSBraW5kLlxuICAgIGlmIChraW5kICYmIGV4aXN0aW5nQ2FjaGVFbnRyeS5raW5kID09PSBQcmVmZXRjaEtpbmQuVEVNUE9SQVJZKSB7XG4gICAgICBleGlzdGluZ0NhY2hlRW50cnkua2luZCA9IGtpbmRcbiAgICB9XG5cbiAgICAvLyBXZSd2ZSBkZXRlcm1pbmVkIHRoYXQgdGhlIGV4aXN0aW5nIGVudHJ5IHdlIGZvdW5kIGlzIHN0aWxsIHZhbGlkLCBzbyB3ZSByZXR1cm4gaXQuXG4gICAgcmV0dXJuIGV4aXN0aW5nQ2FjaGVFbnRyeVxuICB9XG5cbiAgLy8gSWYgd2UgZGlkbid0IHJldHVybiBhbiBlbnRyeSwgY3JlYXRlIGEgbmV3IG9uZS5cbiAgcmV0dXJuIGNyZWF0ZUxhenlQcmVmZXRjaEVudHJ5KHtcbiAgICB0cmVlLFxuICAgIHVybCxcbiAgICBuZXh0VXJsLFxuICAgIHByZWZldGNoQ2FjaGUsXG4gICAga2luZDoga2luZCB8fCBQcmVmZXRjaEtpbmQuVEVNUE9SQVJZLFxuICB9KVxufVxuXG4vKlxuICogVXNlZCB0byB0YWtlIGFuIGV4aXN0aW5nIGNhY2hlIGVudHJ5IGFuZCBwcmVmaXggaXQgd2l0aCB0aGUgbmV4dFVybCwgaWYgaXQgZXhpc3RzLlxuICogVGhpcyBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QgaGF2ZSBjb25mbGljdGluZyBjYWNoZSBlbnRyaWVzIGZvciB0aGUgc2FtZSBVUkwgKGFzIGlzIHRoZSBjYXNlIHdpdGggcm91dGUgaW50ZXJjZXB0aW9uKS5cbiAqL1xuZnVuY3Rpb24gcHJlZml4RXhpc3RpbmdQcmVmZXRjaENhY2hlRW50cnkoe1xuICB1cmwsXG4gIG5leHRVcmwsXG4gIHByZWZldGNoQ2FjaGUsXG4gIGV4aXN0aW5nQ2FjaGVLZXksXG59OiBQaWNrPFJlYWRvbmx5UmVkdWNlclN0YXRlLCAnbmV4dFVybCcgfCAncHJlZmV0Y2hDYWNoZSc+ICYge1xuICB1cmw6IFVSTFxuICBleGlzdGluZ0NhY2hlS2V5OiBzdHJpbmdcbn0pIHtcbiAgY29uc3QgZXhpc3RpbmdDYWNoZUVudHJ5ID0gcHJlZmV0Y2hDYWNoZS5nZXQoZXhpc3RpbmdDYWNoZUtleSlcbiAgaWYgKCFleGlzdGluZ0NhY2hlRW50cnkpIHtcbiAgICAvLyBuby1vcCAtLSB0aGVyZSB3YXNuJ3QgYW4gZW50cnkgdG8gbW92ZVxuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgbmV3Q2FjaGVLZXkgPSBjcmVhdGVQcmVmZXRjaENhY2hlS2V5KFxuICAgIHVybCxcbiAgICBleGlzdGluZ0NhY2hlRW50cnkua2luZCxcbiAgICBuZXh0VXJsXG4gIClcbiAgcHJlZmV0Y2hDYWNoZS5zZXQobmV3Q2FjaGVLZXksIHsgLi4uZXhpc3RpbmdDYWNoZUVudHJ5LCBrZXk6IG5ld0NhY2hlS2V5IH0pXG4gIHByZWZldGNoQ2FjaGUuZGVsZXRlKGV4aXN0aW5nQ2FjaGVLZXkpXG5cbiAgcmV0dXJuIG5ld0NhY2hlS2V5XG59XG5cbi8qKlxuICogVXNlIHRvIHNlZWQgdGhlIHByZWZldGNoIGNhY2hlIHdpdGggZGF0YSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gZmV0Y2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeSh7XG4gIG5leHRVcmwsXG4gIHRyZWUsXG4gIHByZWZldGNoQ2FjaGUsXG4gIHVybCxcbiAgZGF0YSxcbiAga2luZCxcbn06IFBpY2s8UmVhZG9ubHlSZWR1Y2VyU3RhdGUsICduZXh0VXJsJyB8ICd0cmVlJyB8ICdwcmVmZXRjaENhY2hlJz4gJiB7XG4gIHVybDogVVJMXG4gIGRhdGE6IEZldGNoU2VydmVyUmVzcG9uc2VSZXN1bHRcbiAga2luZDogUHJlZmV0Y2hLaW5kXG59KSB7XG4gIC8vIFRoZSBpbml0aWFsIGNhY2hlIGVudHJ5IHRlY2huaWNhbGx5IGluY2x1ZGVzIGZ1bGwgZGF0YSwgYnV0IGl0IGlzbid0IGV4cGxpY2l0bHkgcHJlZmV0Y2hlZCAtLSB3ZSBqdXN0IHNlZWQgdGhlXG4gIC8vIHByZWZldGNoIGNhY2hlIHNvIHRoYXQgd2UgY2FuIHNraXAgYW4gZXh0cmEgcHJlZmV0Y2ggcmVxdWVzdCBsYXRlciwgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSBkYXRhLlxuICAvLyBpZiB0aGUgcHJlZmV0Y2ggY29ycmVzcG9uZHMgd2l0aCBhbiBpbnRlcmNlcHRpb24gcm91dGUsIHdlIHVzZSB0aGUgbmV4dFVybCB0byBwcmVmaXggdGhlIGNhY2hlIGtleVxuICBjb25zdCBwcmVmZXRjaENhY2hlS2V5ID0gZGF0YS5jb3VsZEJlSW50ZXJjZXB0ZWRcbiAgICA/IGNyZWF0ZVByZWZldGNoQ2FjaGVLZXkodXJsLCBraW5kLCBuZXh0VXJsKVxuICAgIDogY3JlYXRlUHJlZmV0Y2hDYWNoZUtleSh1cmwsIGtpbmQpXG5cbiAgY29uc3QgcHJlZmV0Y2hFbnRyeSA9IHtcbiAgICB0cmVlQXRUaW1lT2ZQcmVmZXRjaDogdHJlZSxcbiAgICBkYXRhOiBQcm9taXNlLnJlc29sdmUoZGF0YSksXG4gICAga2luZCxcbiAgICBwcmVmZXRjaFRpbWU6IERhdGUubm93KCksXG4gICAgbGFzdFVzZWRUaW1lOiBEYXRlLm5vdygpLFxuICAgIHN0YWxlVGltZTogZGF0YS5zdGFsZVRpbWUsXG4gICAga2V5OiBwcmVmZXRjaENhY2hlS2V5LFxuICAgIHN0YXR1czogUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLmZyZXNoLFxuICAgIHVybCxcbiAgfSBzYXRpc2ZpZXMgUHJlZmV0Y2hDYWNoZUVudHJ5XG5cbiAgcHJlZmV0Y2hDYWNoZS5zZXQocHJlZmV0Y2hDYWNoZUtleSwgcHJlZmV0Y2hFbnRyeSlcblxuICByZXR1cm4gcHJlZmV0Y2hFbnRyeVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBwcmVmZXRjaCBlbnRyeSBlbnRyeSBhbmQgZW5xdWV1ZXMgYSBmZXRjaCByZXF1ZXN0IHRvIHJldHJpZXZlIHRoZSBkYXRhLlxuICovXG5mdW5jdGlvbiBjcmVhdGVMYXp5UHJlZmV0Y2hFbnRyeSh7XG4gIHVybCxcbiAga2luZCxcbiAgdHJlZSxcbiAgbmV4dFVybCxcbiAgcHJlZmV0Y2hDYWNoZSxcbn06IFBpY2s8UmVhZG9ubHlSZWR1Y2VyU3RhdGUsICduZXh0VXJsJyB8ICd0cmVlJyB8ICdwcmVmZXRjaENhY2hlJz4gJiB7XG4gIHVybDogVVJMXG4gIGtpbmQ6IFByZWZldGNoS2luZFxufSk6IFByZWZldGNoQ2FjaGVFbnRyeSB7XG4gIGNvbnN0IHByZWZldGNoQ2FjaGVLZXkgPSBjcmVhdGVQcmVmZXRjaENhY2hlS2V5KHVybCwga2luZClcblxuICAvLyBpbml0aWF0ZXMgdGhlIGZldGNoIHJlcXVlc3QgZm9yIHRoZSBwcmVmZXRjaCBhbmQgYXR0YWNoZXMgYSBsaXN0ZW5lclxuICAvLyB0byB0aGUgcHJvbWlzZSB0byB1cGRhdGUgdGhlIHByZWZldGNoIGNhY2hlIGVudHJ5IHdoZW4gdGhlIHByb21pc2UgcmVzb2x2ZXMgKGlmIG5lY2Vzc2FyeSlcbiAgY29uc3QgZGF0YSA9IHByZWZldGNoUXVldWUuZW5xdWV1ZSgoKSA9PlxuICAgIGZldGNoU2VydmVyUmVzcG9uc2UodXJsLCB7XG4gICAgICBmbGlnaHRSb3V0ZXJTdGF0ZTogdHJlZSxcbiAgICAgIG5leHRVcmwsXG4gICAgICBwcmVmZXRjaEtpbmQ6IGtpbmQsXG4gICAgfSkudGhlbigocHJlZmV0Y2hSZXNwb25zZSkgPT4ge1xuICAgICAgLy8gVE9ETzogYGZldGNoU2VydmVyUmVzcG9uc2VgIHNob3VsZCBiZSBtb3JlIHRpZ2hseSBjb3VwbGVkIHRvIHRoZXNlIHByZWZldGNoIGNhY2hlIG9wZXJhdGlvbnNcbiAgICAgIC8vIHRvIGF2b2lkIGRyaWZ0IGJldHdlZW4gdGhpcyBjYWNoZSBrZXkgcHJlZml4aW5nIGxvZ2ljXG4gICAgICAvLyAod2hpY2ggaXMgY3VycmVudGx5IGRpcmVjdGx5IGluZmx1ZW5jZWQgYnkgdGhlIHNlcnZlciByZXNwb25zZSlcbiAgICAgIGxldCBuZXdDYWNoZUtleVxuXG4gICAgICBpZiAocHJlZmV0Y2hSZXNwb25zZS5jb3VsZEJlSW50ZXJjZXB0ZWQpIHtcbiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHdlIG5lZWQgdG8gcHJlZml4IHRoZSBjYWNoZSBrZXkgd2l0aCB0aGUgbmV4dFVybFxuICAgICAgICBuZXdDYWNoZUtleSA9IHByZWZpeEV4aXN0aW5nUHJlZmV0Y2hDYWNoZUVudHJ5KHtcbiAgICAgICAgICB1cmwsXG4gICAgICAgICAgZXhpc3RpbmdDYWNoZUtleTogcHJlZmV0Y2hDYWNoZUtleSxcbiAgICAgICAgICBuZXh0VXJsLFxuICAgICAgICAgIHByZWZldGNoQ2FjaGUsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIElmIHRoZSBwcmVmZXRjaCB3YXMgYSBjYWNoZSBoaXQsIHdlIHdhbnQgdG8gdXBkYXRlIHRoZSBleGlzdGluZyBjYWNoZSBlbnRyeSB0byByZWZsZWN0IHRoYXQgaXQgd2FzIGEgZnVsbCBwcmVmZXRjaC5cbiAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSB3ZSBrbm93IHRoYXQgYSBzdGF0aWMgcmVzcG9uc2Ugd2lsbCBjb250YWluIHRoZSBmdWxsIFJTQyBwYXlsb2FkLCBhbmQgY2FuIGJlIHVwZGF0ZWQgdG8gcmVzcGVjdCB0aGUgYHN0YXRpY2BcbiAgICAgIC8vIHN0YWxlVGltZS5cbiAgICAgIGlmIChwcmVmZXRjaFJlc3BvbnNlLnByZXJlbmRlcmVkKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQ2FjaGVFbnRyeSA9IHByZWZldGNoQ2FjaGUuZ2V0KFxuICAgICAgICAgIC8vIGlmIHdlIHByZWZpeGVkIHRoZSBjYWNoZSBrZXkgZHVlIHRvIHJvdXRlIGludGVyY2VwdGlvbiwgd2Ugd2FudCB0byB1c2UgdGhlIG5ldyBrZXkuIE90aGVyd2lzZSB3ZSB1c2UgdGhlIG9yaWdpbmFsIGtleVxuICAgICAgICAgIG5ld0NhY2hlS2V5ID8/IHByZWZldGNoQ2FjaGVLZXlcbiAgICAgICAgKVxuICAgICAgICBpZiAoZXhpc3RpbmdDYWNoZUVudHJ5KSB7XG4gICAgICAgICAgZXhpc3RpbmdDYWNoZUVudHJ5LmtpbmQgPSBQcmVmZXRjaEtpbmQuRlVMTFxuICAgICAgICAgIGlmIChwcmVmZXRjaFJlc3BvbnNlLnN0YWxlVGltZSAhPT0gLTEpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YWxlIHRpbWUgdGhhdCB3YXMgY29sbGVjdGVkIGJ5IHRoZSBzZXJ2ZXIgZHVyaW5nXG4gICAgICAgICAgICAvLyBzdGF0aWMgZ2VuZXJhdGlvbi4gVXNlIHRoaXMgaW4gcGxhY2Ugb2YgdGhlIGRlZmF1bHQgc3RhbGUgdGltZS5cbiAgICAgICAgICAgIGV4aXN0aW5nQ2FjaGVFbnRyeS5zdGFsZVRpbWUgPSBwcmVmZXRjaFJlc3BvbnNlLnN0YWxlVGltZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJlZmV0Y2hSZXNwb25zZVxuICAgIH0pXG4gIClcblxuICBjb25zdCBwcmVmZXRjaEVudHJ5ID0ge1xuICAgIHRyZWVBdFRpbWVPZlByZWZldGNoOiB0cmVlLFxuICAgIGRhdGEsXG4gICAga2luZCxcbiAgICBwcmVmZXRjaFRpbWU6IERhdGUubm93KCksXG4gICAgbGFzdFVzZWRUaW1lOiBudWxsLFxuICAgIHN0YWxlVGltZTogLTEsXG4gICAga2V5OiBwcmVmZXRjaENhY2hlS2V5LFxuICAgIHN0YXR1czogUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLmZyZXNoLFxuICAgIHVybCxcbiAgfVxuXG4gIHByZWZldGNoQ2FjaGUuc2V0KHByZWZldGNoQ2FjaGVLZXksIHByZWZldGNoRW50cnkpXG5cbiAgcmV0dXJuIHByZWZldGNoRW50cnlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBydW5lUHJlZmV0Y2hDYWNoZShcbiAgcHJlZmV0Y2hDYWNoZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGVbJ3ByZWZldGNoQ2FjaGUnXVxuKSB7XG4gIGZvciAoY29uc3QgW2hyZWYsIHByZWZldGNoQ2FjaGVFbnRyeV0gb2YgcHJlZmV0Y2hDYWNoZSkge1xuICAgIGlmIChcbiAgICAgIGdldFByZWZldGNoRW50cnlDYWNoZVN0YXR1cyhwcmVmZXRjaENhY2hlRW50cnkpID09PVxuICAgICAgUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLmV4cGlyZWRcbiAgICApIHtcbiAgICAgIHByZWZldGNoQ2FjaGUuZGVsZXRlKGhyZWYpXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZXNlIHZhbHVlcyBhcmUgc2V0IGJ5IGBkZWZpbmUtZW52LXBsdWdpbmAgKGJhc2VkIG9uIGBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5zdGFsZVRpbWVzYClcbi8vIGFuZCBkZWZhdWx0IHRvIDUgbWludXRlcyAoc3RhdGljKSAvIDAgc2Vjb25kcyAoZHluYW1pYylcbmV4cG9ydCBjb25zdCBEWU5BTUlDX1NUQUxFVElNRV9NUyA9XG4gIE51bWJlcihwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1JPVVRFUl9EWU5BTUlDX1NUQUxFVElNRSkgKiAxMDAwXG5cbmV4cG9ydCBjb25zdCBTVEFUSUNfU1RBTEVUSU1FX01TID1cbiAgTnVtYmVyKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfUk9VVEVSX1NUQVRJQ19TVEFMRVRJTUUpICogMTAwMFxuXG5mdW5jdGlvbiBnZXRQcmVmZXRjaEVudHJ5Q2FjaGVTdGF0dXMoe1xuICBraW5kLFxuICBwcmVmZXRjaFRpbWUsXG4gIGxhc3RVc2VkVGltZSxcbn06IFByZWZldGNoQ2FjaGVFbnRyeSk6IFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyB7XG4gIC8vIFdlIHdpbGwgcmUtdXNlIHRoZSBjYWNoZSBlbnRyeSBkYXRhIGZvciB1cCB0byB0aGUgYGR5bmFtaWNgIHN0YWxldGltZSB3aW5kb3cuXG4gIGlmIChEYXRlLm5vdygpIDwgKGxhc3RVc2VkVGltZSA/PyBwcmVmZXRjaFRpbWUpICsgRFlOQU1JQ19TVEFMRVRJTUVfTVMpIHtcbiAgICByZXR1cm4gbGFzdFVzZWRUaW1lXG4gICAgICA/IFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5yZXVzYWJsZVxuICAgICAgOiBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMuZnJlc2hcbiAgfVxuXG4gIC8vIEZvciBcImF1dG9cIiBwcmVmZXRjaGluZywgd2UnbGwgcmUtdXNlIG9ubHkgdGhlIGxvYWRpbmcgYm91bmRhcnkgZm9yIHVwIHRvIGBzdGF0aWNgIHN0YWxldGltZSB3aW5kb3cuXG4gIC8vIEEgc3RhbGUgZW50cnkgd2lsbCBvbmx5IHJlLXVzZSB0aGUgYGxvYWRpbmdgIGJvdW5kYXJ5LCBub3QgdGhlIGZ1bGwgZGF0YS5cbiAgLy8gVGhpcyB3aWxsIHRyaWdnZXIgYSBcImxhenkgZmV0Y2hcIiBmb3IgdGhlIGZ1bGwgZGF0YS5cbiAgaWYgKGtpbmQgPT09IFByZWZldGNoS2luZC5BVVRPKSB7XG4gICAgaWYgKERhdGUubm93KCkgPCBwcmVmZXRjaFRpbWUgKyBTVEFUSUNfU1RBTEVUSU1FX01TKSB7XG4gICAgICByZXR1cm4gUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLnN0YWxlXG4gICAgfVxuICB9XG5cbiAgLy8gZm9yIFwiZnVsbFwiIHByZWZldGNoaW5nLCB3ZSdsbCByZS11c2UgdGhlIGNhY2hlIGVudHJ5IGRhdGEgZm9yIHVwIHRvIGBzdGF0aWNgIHN0YWxldGltZSB3aW5kb3cuXG4gIGlmIChraW5kID09PSBQcmVmZXRjaEtpbmQuRlVMTCkge1xuICAgIGlmIChEYXRlLm5vdygpIDwgcHJlZmV0Y2hUaW1lICsgU1RBVElDX1NUQUxFVElNRV9NUykge1xuICAgICAgcmV0dXJuIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5yZXVzYWJsZVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMuZXhwaXJlZFxufVxuIl0sIm5hbWVzIjpbIkRZTkFNSUNfU1RBTEVUSU1FX01TIiwiU1RBVElDX1NUQUxFVElNRV9NUyIsImNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeSIsImdldE9yQ3JlYXRlUHJlZmV0Y2hDYWNoZUVudHJ5IiwicHJ1bmVQcmVmZXRjaENhY2hlIiwiSU5URVJDRVBUSU9OX0NBQ0hFX0tFWV9NQVJLRVIiLCJjcmVhdGVQcmVmZXRjaENhY2hlS2V5SW1wbCIsInVybCIsImluY2x1ZGVTZWFyY2hQYXJhbXMiLCJwcmVmaXgiLCJwYXRobmFtZUZyb21VcmwiLCJwYXRobmFtZSIsInNlYXJjaCIsImNyZWF0ZVByZWZldGNoQ2FjaGVLZXkiLCJraW5kIiwibmV4dFVybCIsIlByZWZldGNoS2luZCIsIkZVTEwiLCJnZXRFeGlzdGluZ0NhY2hlRW50cnkiLCJwcmVmZXRjaENhY2hlIiwiYWxsb3dBbGlhc2luZyIsIlRFTVBPUkFSWSIsIm1heWJlTmV4dFVybCIsImNhY2hlS2V5V2l0aFBhcmFtcyIsImNhY2hlS2V5V2l0aG91dFBhcmFtcyIsImNhY2hlS2V5VG9Vc2UiLCJleGlzdGluZ0VudHJ5IiwiZ2V0IiwiaXNBbGlhc2VkIiwiYWxpYXNlZCIsImVudHJ5V2l0aG91dFBhcmFtcyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImtleSIsImluY2x1ZGVzIiwiY2FjaGVFbnRyeSIsInZhbHVlcyIsInVuZGVmaW5lZCIsInRyZWUiLCJleGlzdGluZ0NhY2hlRW50cnkiLCJzdGF0dXMiLCJnZXRQcmVmZXRjaEVudHJ5Q2FjaGVTdGF0dXMiLCJzd2l0Y2hlZFRvRnVsbFByZWZldGNoIiwiZGF0YSIsInRoZW4iLCJwcmVmZXRjaFJlc3BvbnNlIiwiaXNGdWxsUHJlZmV0Y2giLCJBcnJheSIsImlzQXJyYXkiLCJmbGlnaHREYXRhIiwic29tZSIsImlzUm9vdFJlbmRlciIsInNlZWREYXRhIiwiY3JlYXRlTGF6eVByZWZldGNoRW50cnkiLCJwcmVmaXhFeGlzdGluZ1ByZWZldGNoQ2FjaGVFbnRyeSIsImV4aXN0aW5nQ2FjaGVLZXkiLCJuZXdDYWNoZUtleSIsInNldCIsImRlbGV0ZSIsInByZWZldGNoQ2FjaGVLZXkiLCJjb3VsZEJlSW50ZXJjZXB0ZWQiLCJwcmVmZXRjaEVudHJ5IiwidHJlZUF0VGltZU9mUHJlZmV0Y2giLCJQcm9taXNlIiwicmVzb2x2ZSIsInByZWZldGNoVGltZSIsIkRhdGUiLCJub3ciLCJsYXN0VXNlZFRpbWUiLCJzdGFsZVRpbWUiLCJQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMiLCJmcmVzaCIsInByZWZldGNoUXVldWUiLCJlbnF1ZXVlIiwiZmV0Y2hTZXJ2ZXJSZXNwb25zZSIsImZsaWdodFJvdXRlclN0YXRlIiwicHJlZmV0Y2hLaW5kIiwicHJlcmVuZGVyZWQiLCJocmVmIiwicHJlZmV0Y2hDYWNoZUVudHJ5IiwiZXhwaXJlZCIsIk51bWJlciIsIl9fTkVYVF9DTElFTlRfUk9VVEVSX0RZTkFNSUNfU1RBTEVUSU1FIiwiX19ORVhUX0NMSUVOVF9ST1VURVJfU1RBVElDX1NUQUxFVElNRSIsInJldXNhYmxlIiwiQVVUTyIsInN0YWxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js": /*!***************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js ***! \***************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"findHeadInCache\", ({\n enumerable: true,\n get: function() {\n return findHeadInCache;\n }\n}));\nconst _segment = __webpack_require__(/*! ../../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _createroutercachekey = __webpack_require__(/*! ../create-router-cache-key */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js\");\nfunction findHeadInCache(cache, parallelRoutes) {\n return findHeadInCacheImpl(cache, parallelRoutes, '', '');\n}\nfunction findHeadInCacheImpl(cache, parallelRoutes, keyPrefix, keyPrefixWithoutSearchParams) {\n const isLastItem = Object.keys(parallelRoutes).length === 0;\n if (isLastItem) {\n // Returns the entire Cache Node of the segment whose head we will render.\n return [\n cache,\n keyPrefix,\n keyPrefixWithoutSearchParams\n ];\n }\n // First try the 'children' parallel route if it exists\n // when starting from the \"root\", this corresponds with the main page component\n const parallelRoutesKeys = Object.keys(parallelRoutes).filter((key)=>key !== 'children');\n // if we are at the root, we need to check the children slot first\n if ('children' in parallelRoutes) {\n parallelRoutesKeys.unshift('children');\n }\n for (const key of parallelRoutesKeys){\n const [segment, childParallelRoutes] = parallelRoutes[key];\n // If the parallel is not matched and using the default segment,\n // skip searching the head from it.\n if (segment === _segment.DEFAULT_SEGMENT_KEY) {\n continue;\n }\n const childSegmentMap = cache.parallelRoutes.get(key);\n if (!childSegmentMap) {\n continue;\n }\n const cacheKey = (0, _createroutercachekey.createRouterCacheKey)(segment);\n const cacheKeyWithoutSearchParams = (0, _createroutercachekey.createRouterCacheKey)(segment, true);\n const cacheNode = childSegmentMap.get(cacheKey);\n if (!cacheNode) {\n continue;\n }\n const item = findHeadInCacheImpl(cacheNode, childParallelRoutes, keyPrefix + '/' + cacheKey, keyPrefix + '/' + cacheKeyWithoutSearchParams);\n if (item) {\n return item;\n }\n }\n return null;\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=find-head-in-cache.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZmluZC1oZWFkLWluLWNhY2hlLmpzIiwibWFwcGluZ3MiOiI7Ozs7bURBS2dCQTs7O2VBQUFBOzs7cUNBSG9CO2tEQUNDO0FBRTlCLFNBQVNBLGdCQUNkQyxLQUFnQixFQUNoQkMsY0FBb0M7SUFFcEMsT0FBT0Msb0JBQW9CRixPQUFPQyxnQkFBZ0IsSUFBSTtBQUN4RDtBQUVBLFNBQVNDLG9CQUNQRixLQUFnQixFQUNoQkMsY0FBb0MsRUFDcENFLFNBQWlCLEVBQ2pCQyw0QkFBb0M7SUFFcEMsTUFBTUMsYUFBYUMsT0FBT0MsSUFBSSxDQUFDTixnQkFBZ0JPLE1BQU0sS0FBSztJQUMxRCxJQUFJSCxZQUFZO1FBQ2QsMEVBQTBFO1FBQzFFLE9BQU87WUFBQ0w7WUFBT0c7WUFBV0M7U0FBNkI7SUFDekQ7SUFFQSx1REFBdUQ7SUFDdkQsK0VBQStFO0lBQy9FLE1BQU1LLHFCQUFxQkgsT0FBT0MsSUFBSSxDQUFDTixnQkFBZ0JTLE1BQU0sQ0FDM0QsQ0FBQ0MsTUFBUUEsUUFBUTtJQUduQixrRUFBa0U7SUFDbEUsSUFBSSxjQUFjVixnQkFBZ0I7UUFDaENRLG1CQUFtQkcsT0FBTyxDQUFDO0lBQzdCO0lBRUEsS0FBSyxNQUFNRCxPQUFPRixtQkFBb0I7UUFDcEMsTUFBTSxDQUFDSSxTQUFTQyxvQkFBb0IsR0FBR2IsY0FBYyxDQUFDVSxJQUFJO1FBQzFELGdFQUFnRTtRQUNoRSxtQ0FBbUM7UUFDbkMsSUFBSUUsWUFBWUUsU0FBQUEsbUJBQW1CLEVBQUU7WUFDbkM7UUFDRjtRQUNBLE1BQU1DLGtCQUFrQmhCLE1BQU1DLGNBQWMsQ0FBQ2dCLEdBQUcsQ0FBQ047UUFDakQsSUFBSSxDQUFDSyxpQkFBaUI7WUFDcEI7UUFDRjtRQUVBLE1BQU1FLFdBQVdDLENBQUFBLEdBQUFBLHNCQUFBQSxvQkFBQUEsRUFBcUJOO1FBQ3RDLE1BQU1PLDhCQUE4QkQsQ0FBQUEsR0FBQUEsc0JBQUFBLG9CQUFBQSxFQUFxQk4sU0FBUztRQUVsRSxNQUFNUSxZQUFZTCxnQkFBZ0JDLEdBQUcsQ0FBQ0M7UUFDdEMsSUFBSSxDQUFDRyxXQUFXO1lBQ2Q7UUFDRjtRQUVBLE1BQU1DLE9BQU9wQixvQkFDWG1CLFdBQ0FQLHFCQUNBWCxZQUFZLE1BQU1lLFVBQ2xCZixZQUFZLE1BQU1pQjtRQUdwQixJQUFJRSxNQUFNO1lBQ1IsT0FBT0E7UUFDVDtJQUNGO0lBRUEsT0FBTztBQUNUIiwic291cmNlcyI6WyIvaG9tZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZmluZC1oZWFkLWluLWNhY2hlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBERUZBVUxUX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgY3JlYXRlUm91dGVyQ2FjaGVLZXkgfSBmcm9tICcuLi9jcmVhdGUtcm91dGVyLWNhY2hlLWtleSdcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRIZWFkSW5DYWNoZShcbiAgY2FjaGU6IENhY2hlTm9kZSxcbiAgcGFyYWxsZWxSb3V0ZXM6IEZsaWdodFJvdXRlclN0YXRlWzFdXG4pOiBbQ2FjaGVOb2RlLCBzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgcmV0dXJuIGZpbmRIZWFkSW5DYWNoZUltcGwoY2FjaGUsIHBhcmFsbGVsUm91dGVzLCAnJywgJycpXG59XG5cbmZ1bmN0aW9uIGZpbmRIZWFkSW5DYWNoZUltcGwoXG4gIGNhY2hlOiBDYWNoZU5vZGUsXG4gIHBhcmFsbGVsUm91dGVzOiBGbGlnaHRSb3V0ZXJTdGF0ZVsxXSxcbiAga2V5UHJlZml4OiBzdHJpbmcsXG4gIGtleVByZWZpeFdpdGhvdXRTZWFyY2hQYXJhbXM6IHN0cmluZ1xuKTogW0NhY2hlTm9kZSwgc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IGlzTGFzdEl0ZW0gPSBPYmplY3Qua2V5cyhwYXJhbGxlbFJvdXRlcykubGVuZ3RoID09PSAwXG4gIGlmIChpc0xhc3RJdGVtKSB7XG4gICAgLy8gUmV0dXJucyB0aGUgZW50aXJlIENhY2hlIE5vZGUgb2YgdGhlIHNlZ21lbnQgd2hvc2UgaGVhZCB3ZSB3aWxsIHJlbmRlci5cbiAgICByZXR1cm4gW2NhY2hlLCBrZXlQcmVmaXgsIGtleVByZWZpeFdpdGhvdXRTZWFyY2hQYXJhbXNdXG4gIH1cblxuICAvLyBGaXJzdCB0cnkgdGhlICdjaGlsZHJlbicgcGFyYWxsZWwgcm91dGUgaWYgaXQgZXhpc3RzXG4gIC8vIHdoZW4gc3RhcnRpbmcgZnJvbSB0aGUgXCJyb290XCIsIHRoaXMgY29ycmVzcG9uZHMgd2l0aCB0aGUgbWFpbiBwYWdlIGNvbXBvbmVudFxuICBjb25zdCBwYXJhbGxlbFJvdXRlc0tleXMgPSBPYmplY3Qua2V5cyhwYXJhbGxlbFJvdXRlcykuZmlsdGVyKFxuICAgIChrZXkpID0+IGtleSAhPT0gJ2NoaWxkcmVuJ1xuICApXG5cbiAgLy8gaWYgd2UgYXJlIGF0IHRoZSByb290LCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBjaGlsZHJlbiBzbG90IGZpcnN0XG4gIGlmICgnY2hpbGRyZW4nIGluIHBhcmFsbGVsUm91dGVzKSB7XG4gICAgcGFyYWxsZWxSb3V0ZXNLZXlzLnVuc2hpZnQoJ2NoaWxkcmVuJylcbiAgfVxuXG4gIGZvciAoY29uc3Qga2V5IG9mIHBhcmFsbGVsUm91dGVzS2V5cykge1xuICAgIGNvbnN0IFtzZWdtZW50LCBjaGlsZFBhcmFsbGVsUm91dGVzXSA9IHBhcmFsbGVsUm91dGVzW2tleV1cbiAgICAvLyBJZiB0aGUgcGFyYWxsZWwgaXMgbm90IG1hdGNoZWQgYW5kIHVzaW5nIHRoZSBkZWZhdWx0IHNlZ21lbnQsXG4gICAgLy8gc2tpcCBzZWFyY2hpbmcgdGhlIGhlYWQgZnJvbSBpdC5cbiAgICBpZiAoc2VnbWVudCA9PT0gREVGQVVMVF9TRUdNRU5UX0tFWSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgY2hpbGRTZWdtZW50TWFwID0gY2FjaGUucGFyYWxsZWxSb3V0ZXMuZ2V0KGtleSlcbiAgICBpZiAoIWNoaWxkU2VnbWVudE1hcCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBjYWNoZUtleSA9IGNyZWF0ZVJvdXRlckNhY2hlS2V5KHNlZ21lbnQpXG4gICAgY29uc3QgY2FjaGVLZXlXaXRob3V0U2VhcmNoUGFyYW1zID0gY3JlYXRlUm91dGVyQ2FjaGVLZXkoc2VnbWVudCwgdHJ1ZSlcblxuICAgIGNvbnN0IGNhY2hlTm9kZSA9IGNoaWxkU2VnbWVudE1hcC5nZXQoY2FjaGVLZXkpXG4gICAgaWYgKCFjYWNoZU5vZGUpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgaXRlbSA9IGZpbmRIZWFkSW5DYWNoZUltcGwoXG4gICAgICBjYWNoZU5vZGUsXG4gICAgICBjaGlsZFBhcmFsbGVsUm91dGVzLFxuICAgICAga2V5UHJlZml4ICsgJy8nICsgY2FjaGVLZXksXG4gICAgICBrZXlQcmVmaXggKyAnLycgKyBjYWNoZUtleVdpdGhvdXRTZWFyY2hQYXJhbXNcbiAgICApXG5cbiAgICBpZiAoaXRlbSkge1xuICAgICAgcmV0dXJuIGl0ZW1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuIl0sIm5hbWVzIjpbImZpbmRIZWFkSW5DYWNoZSIsImNhY2hlIiwicGFyYWxsZWxSb3V0ZXMiLCJmaW5kSGVhZEluQ2FjaGVJbXBsIiwia2V5UHJlZml4Iiwia2V5UHJlZml4V2l0aG91dFNlYXJjaFBhcmFtcyIsImlzTGFzdEl0ZW0iLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicGFyYWxsZWxSb3V0ZXNLZXlzIiwiZmlsdGVyIiwia2V5IiwidW5zaGlmdCIsInNlZ21lbnQiLCJjaGlsZFBhcmFsbGVsUm91dGVzIiwiREVGQVVMVF9TRUdNRU5UX0tFWSIsImNoaWxkU2VnbWVudE1hcCIsImdldCIsImNhY2hlS2V5IiwiY3JlYXRlUm91dGVyQ2FjaGVLZXkiLCJjYWNoZUtleVdpdGhvdXRTZWFyY2hQYXJhbXMiLCJjYWNoZU5vZGUiLCJpdGVtIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js": /*!**************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js ***! \**************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSegmentValue\", ({\n enumerable: true,\n get: function() {\n return getSegmentValue;\n }\n}));\nfunction getSegmentValue(segment) {\n return Array.isArray(segment) ? segment[1] : segment;\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=get-segment-value.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvZ2V0LXNlZ21lbnQtdmFsdWUuanMiLCJtYXBwaW5ncyI6Ijs7OzttREFFZ0JBOzs7ZUFBQUE7OztBQUFULFNBQVNBLGdCQUFnQkMsT0FBZ0I7SUFDOUMsT0FBT0MsTUFBTUMsT0FBTyxDQUFDRixXQUFXQSxPQUFPLENBQUMsRUFBRSxHQUFHQTtBQUMvQyIsInNvdXJjZXMiOlsiL2hvbWUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2dldC1zZWdtZW50LXZhbHVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU2VnbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9hcHAtcmVuZGVyL3R5cGVzJ1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VnbWVudFZhbHVlKHNlZ21lbnQ6IFNlZ21lbnQpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoc2VnbWVudCkgPyBzZWdtZW50WzFdIDogc2VnbWVudFxufVxuIl0sIm5hbWVzIjpbImdldFNlZ21lbnRWYWx1ZSIsInNlZ21lbnQiLCJBcnJheSIsImlzQXJyYXkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js": /*!***********************************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js ***! \***********************************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hasInterceptionRouteInCurrentTree\", ({\n enumerable: true,\n get: function() {\n return hasInterceptionRouteInCurrentTree;\n }\n}));\nconst _interceptionroutes = __webpack_require__(/*! ../../../../shared/lib/router/utils/interception-routes */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/interception-routes.js\");\nfunction hasInterceptionRouteInCurrentTree(param) {\n let [segment, parallelRoutes] = param;\n // If we have a dynamic segment, it's marked as an interception route by the presence of the `i` suffix.\n if (Array.isArray(segment) && (segment[2] === 'di' || segment[2] === 'ci')) {\n return true;\n }\n // If segment is not an array, apply the existing string-based check\n if (typeof segment === 'string' && (0, _interceptionroutes.isInterceptionRouteAppPath)(segment)) {\n return true;\n }\n // Iterate through parallelRoutes if they exist\n if (parallelRoutes) {\n for(const key in parallelRoutes){\n if (hasInterceptionRouteInCurrentTree(parallelRoutes[key])) {\n return true;\n }\n }\n }\n return 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=has-interception-route-in-current-tree.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvaGFzLWludGVyY2VwdGlvbi1yb3V0ZS1pbi1jdXJyZW50LXRyZWUuanMiLCJtYXBwaW5ncyI6Ijs7OztxRUFHZ0JBOzs7ZUFBQUE7OztnREFGMkI7QUFFcEMsU0FBU0Esa0NBQWtDLEtBRzlCO0lBSDhCLEtBQ2hEQyxTQUNBQyxlQUNrQixHQUg4QjtJQUloRCx3R0FBd0c7SUFDeEcsSUFBSUMsTUFBTUMsT0FBTyxDQUFDSCxZQUFhQSxDQUFBQSxPQUFPLENBQUMsRUFBRSxLQUFLLFFBQVFBLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBRyxFQUFJO1FBQzFFLE9BQU87SUFDVDtJQUVBLG9FQUFvRTtJQUNwRSxJQUFJLE9BQU9BLFlBQVksWUFBWUksQ0FBQUEsR0FBQUEsb0JBQUFBLDBCQUFBQSxFQUEyQkosVUFBVTtRQUN0RSxPQUFPO0lBQ1Q7SUFFQSwrQ0FBK0M7SUFDL0MsSUFBSUMsZ0JBQWdCO1FBQ2xCLElBQUssTUFBTUksT0FBT0osZUFBZ0I7WUFDaEMsSUFBSUYsa0NBQWtDRSxjQUFjLENBQUNJLElBQUksR0FBRztnQkFDMUQsT0FBTztZQUNUO1FBQ0Y7SUFDRjtJQUVBLE9BQU87QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL2hhcy1pbnRlcmNlcHRpb24tcm91dGUtaW4tY3VycmVudC10cmVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB7IGlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvaW50ZXJjZXB0aW9uLXJvdXRlcydcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZShbXG4gIHNlZ21lbnQsXG4gIHBhcmFsbGVsUm91dGVzLFxuXTogRmxpZ2h0Um91dGVyU3RhdGUpOiBib29sZWFuIHtcbiAgLy8gSWYgd2UgaGF2ZSBhIGR5bmFtaWMgc2VnbWVudCwgaXQncyBtYXJrZWQgYXMgYW4gaW50ZXJjZXB0aW9uIHJvdXRlIGJ5IHRoZSBwcmVzZW5jZSBvZiB0aGUgYGlgIHN1ZmZpeC5cbiAgaWYgKEFycmF5LmlzQXJyYXkoc2VnbWVudCkgJiYgKHNlZ21lbnRbMl0gPT09ICdkaScgfHwgc2VnbWVudFsyXSA9PT0gJ2NpJykpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLy8gSWYgc2VnbWVudCBpcyBub3QgYW4gYXJyYXksIGFwcGx5IHRoZSBleGlzdGluZyBzdHJpbmctYmFzZWQgY2hlY2tcbiAgaWYgKHR5cGVvZiBzZWdtZW50ID09PSAnc3RyaW5nJyAmJiBpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aChzZWdtZW50KSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvLyBJdGVyYXRlIHRocm91Z2ggcGFyYWxsZWxSb3V0ZXMgaWYgdGhleSBleGlzdFxuICBpZiAocGFyYWxsZWxSb3V0ZXMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbGxlbFJvdXRlcykge1xuICAgICAgaWYgKGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZShwYXJhbGxlbFJvdXRlc1trZXldKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm5hbWVzIjpbImhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSIsInNlZ21lbnQiLCJwYXJhbGxlbFJvdXRlcyIsIkFycmF5IiwiaXNBcnJheSIsImlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoIiwia2V5Il0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js": /*!****************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js ***! \****************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"hmrRefreshReducer\", ({\n enumerable: true,\n get: function() {\n return hmrRefreshReducer;\n }\n}));\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _applyflightdata = __webpack_require__(/*! ../apply-flight-data */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _handlesegmentmismatch = __webpack_require__(/*! ../handle-segment-mismatch */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\n// A version of refresh reducer that keeps the cache around instead of wiping all of it.\nfunction hmrRefreshReducerImpl(state, action) {\n const { origin } = action;\n const mutable = {};\n const href = state.canonicalUrl;\n mutable.preserveCustomHistoryState = false;\n const cache = (0, _approuter.createEmptyCacheNode)();\n // If the current tree was intercepted, the nextUrl should be included in the request.\n // This is to ensure that the refresh request doesn't get intercepted, accidentally triggering the interception route.\n const includeNextUrl = (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree);\n // TODO-APP: verify that `href` is not an external url.\n // Fetch data from the root of the tree.\n const navigatedAt = Date.now();\n cache.lazyData = (0, _fetchserverresponse.fetchServerResponse)(new URL(href, origin), {\n flightRouterState: [\n state.tree[0],\n state.tree[1],\n state.tree[2],\n 'refetch'\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null,\n isHmrRefresh: true\n });\n return cache.lazyData.then((param)=>{\n let { flightData, canonicalUrl: canonicalUrlOverride } = param;\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n // Remove cache.lazyData as it has been resolved at this point.\n cache.lazyData = null;\n let currentTree = state.tree;\n let currentCache = state.cache;\n for (const normalizedFlightData of flightData){\n const { tree: treePatch, isRootRender } = normalizedFlightData;\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('REFRESH FAILED');\n return state;\n }\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n ''\n ], currentTree, treePatch, state.canonicalUrl);\n if (newTree === null) {\n return (0, _handlesegmentmismatch.handleSegmentMismatch)(state, action, treePatch);\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, href, state.pushRef.pendingPush);\n }\n const canonicalUrlOverrideHref = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : undefined;\n if (canonicalUrlOverride) {\n mutable.canonicalUrl = canonicalUrlOverrideHref;\n }\n const applied = (0, _applyflightdata.applyFlightData)(navigatedAt, currentCache, cache, normalizedFlightData);\n if (applied) {\n mutable.cache = cache;\n currentCache = cache;\n }\n mutable.patchedTree = newTree;\n mutable.canonicalUrl = href;\n currentTree = newTree;\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, ()=>state);\n}\nfunction hmrRefreshReducerNoop(state, _action) {\n return state;\n}\nconst hmrRefreshReducer = false ? 0 : hmrRefreshReducerImpl;\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=hmr-refresh-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvaG1yLXJlZnJlc2gtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7O3FEQStIYUE7OztlQUFBQTs7O2lEQS9IdUI7K0NBQ0Y7eURBQ1U7eURBQ0E7NkNBT1Y7MkNBQ0o7NkNBQ0U7dUNBRUs7bURBQ0M7K0RBQ1k7QUFFbEQsd0ZBQXdGO0FBQ3hGLFNBQVNDLHNCQUNQQyxLQUEyQixFQUMzQkMsTUFBd0I7SUFFeEIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR0Q7SUFDbkIsTUFBTUUsVUFBbUIsQ0FBQztJQUMxQixNQUFNQyxPQUFPSixNQUFNSyxZQUFZO0lBRS9CRixRQUFRRywwQkFBMEIsR0FBRztJQUVyQyxNQUFNQyxRQUFtQkMsQ0FBQUEsR0FBQUEsV0FBQUEsb0JBQUFBO0lBQ3pCLHNGQUFzRjtJQUN0RixzSEFBc0g7SUFDdEgsTUFBTUMsaUJBQWlCQyxDQUFBQSxHQUFBQSxtQ0FBQUEsaUNBQUFBLEVBQWtDVixNQUFNVyxJQUFJO0lBRW5FLHVEQUF1RDtJQUN2RCx3Q0FBd0M7SUFDeEMsTUFBTUMsY0FBY0MsS0FBS0MsR0FBRztJQUM1QlAsTUFBTVEsUUFBUSxHQUFHQyxDQUFBQSxHQUFBQSxxQkFBQUEsbUJBQUFBLEVBQW9CLElBQUlDLElBQUliLE1BQU1GLFNBQVM7UUFDMURnQixtQkFBbUI7WUFBQ2xCLE1BQU1XLElBQUksQ0FBQyxFQUFFO1lBQUVYLE1BQU1XLElBQUksQ0FBQyxFQUFFO1lBQUVYLE1BQU1XLElBQUksQ0FBQyxFQUFFO1lBQUU7U0FBVTtRQUMzRVEsU0FBU1YsaUJBQWlCVCxNQUFNbUIsT0FBTyxHQUFHO1FBQzFDQyxjQUFjO0lBQ2hCO0lBRUEsT0FBT2IsTUFBTVEsUUFBUSxDQUFDTSxJQUFJLENBQ3hCO1lBQUMsRUFBRUMsVUFBVSxFQUFFakIsY0FBY2tCLG9CQUFvQixFQUFFO1FBQ2pELDREQUE0RDtRQUM1RCxJQUFJLE9BQU9ELGVBQWUsVUFBVTtZQUNsQyxPQUFPRSxDQUFBQSxHQUFBQSxpQkFBQUEsaUJBQUFBLEVBQ0x4QixPQUNBRyxTQUNBbUIsWUFDQXRCLE1BQU15QixPQUFPLENBQUNDLFdBQVc7UUFFN0I7UUFFQSwrREFBK0Q7UUFDL0RuQixNQUFNUSxRQUFRLEdBQUc7UUFFakIsSUFBSVksY0FBYzNCLE1BQU1XLElBQUk7UUFDNUIsSUFBSWlCLGVBQWU1QixNQUFNTyxLQUFLO1FBRTlCLEtBQUssTUFBTXNCLHdCQUF3QlAsV0FBWTtZQUM3QyxNQUFNLEVBQUVYLE1BQU1tQixTQUFTLEVBQUVDLFlBQVksRUFBRSxHQUFHRjtZQUMxQyxJQUFJLENBQUNFLGNBQWM7Z0JBQ2pCLG9DQUFvQztnQkFDcENDLFFBQVFDLEdBQUcsQ0FBQztnQkFDWixPQUFPakM7WUFDVDtZQUVBLE1BQU1rQyxVQUFVQyxDQUFBQSxHQUFBQSw2QkFBQUEsMkJBQUFBLEVBQ2Q7Z0JBQ0M7YUFBRyxFQUNKUixhQUNBRyxXQUNBOUIsTUFBTUssWUFBWTtZQUdwQixJQUFJNkIsWUFBWSxNQUFNO2dCQUNwQixPQUFPRSxDQUFBQSxHQUFBQSx1QkFBQUEscUJBQUFBLEVBQXNCcEMsT0FBT0MsUUFBUTZCO1lBQzlDO1lBRUEsSUFBSU8sQ0FBQUEsR0FBQUEsNkJBQUFBLDJCQUFBQSxFQUE0QlYsYUFBYU8sVUFBVTtnQkFDckQsT0FBT1YsQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFpQixFQUN0QnhCLE9BQ0FHLFNBQ0FDLE1BQ0FKLE1BQU15QixPQUFPLENBQUNDLFdBQVc7WUFFN0I7WUFFQSxNQUFNWSwyQkFBMkJmLHVCQUM3QmdCLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JoQix3QkFDbEJpQjtZQUVKLElBQUlqQixzQkFBc0I7Z0JBQ3hCcEIsUUFBUUUsWUFBWSxHQUFHaUM7WUFDekI7WUFDQSxNQUFNRyxVQUFVQyxDQUFBQSxHQUFBQSxpQkFBQUEsZUFBQUEsRUFDZDlCLGFBQ0FnQixjQUNBckIsT0FDQXNCO1lBR0YsSUFBSVksU0FBUztnQkFDWHRDLFFBQVFJLEtBQUssR0FBR0E7Z0JBQ2hCcUIsZUFBZXJCO1lBQ2pCO1lBRUFKLFFBQVF3QyxXQUFXLEdBQUdUO1lBQ3RCL0IsUUFBUUUsWUFBWSxHQUFHRDtZQUV2QnVCLGNBQWNPO1FBQ2hCO1FBQ0EsT0FBT1UsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBYzVDLE9BQU9HO0lBQzlCLEdBQ0EsSUFBTUg7QUFFVjtBQUVBLFNBQVM2QyxzQkFDUDdDLEtBQTJCLEVBQzNCOEMsT0FBeUI7SUFFekIsT0FBTzlDO0FBQ1Q7QUFFTyxNQUFNRixvQkE1SCtCLE1BNkh0QixHQUNoQitDLENBQXFCQSxHQUNyQjlDIiwic291cmNlcyI6WyIvaG9tZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvaG1yLXJlZnJlc2gtcmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZXRjaFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnLi4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSB9IGZyb20gJy4uL2FwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlJ1xuaW1wb3J0IHsgaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IH0gZnJvbSAnLi4vaXMtbmF2aWdhdGluZy10by1uZXctcm9vdC1sYXlvdXQnXG5pbXBvcnQgdHlwZSB7XG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBSZWR1Y2VyU3RhdGUsXG4gIEhtclJlZnJlc2hBY3Rpb24sXG4gIE11dGFibGUsXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgaGFuZGxlRXh0ZXJuYWxVcmwgfSBmcm9tICcuL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgeyBoYW5kbGVNdXRhYmxlIH0gZnJvbSAnLi4vaGFuZGxlLW11dGFibGUnXG5pbXBvcnQgeyBhcHBseUZsaWdodERhdGEgfSBmcm9tICcuLi9hcHBseS1mbGlnaHQtZGF0YSdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eUNhY2hlTm9kZSB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXInXG5pbXBvcnQgeyBoYW5kbGVTZWdtZW50TWlzbWF0Y2ggfSBmcm9tICcuLi9oYW5kbGUtc2VnbWVudC1taXNtYXRjaCdcbmltcG9ydCB7IGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSB9IGZyb20gJy4vaGFzLWludGVyY2VwdGlvbi1yb3V0ZS1pbi1jdXJyZW50LXRyZWUnXG5cbi8vIEEgdmVyc2lvbiBvZiByZWZyZXNoIHJlZHVjZXIgdGhhdCBrZWVwcyB0aGUgY2FjaGUgYXJvdW5kIGluc3RlYWQgb2Ygd2lwaW5nIGFsbCBvZiBpdC5cbmZ1bmN0aW9uIGhtclJlZnJlc2hSZWR1Y2VySW1wbChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IEhtclJlZnJlc2hBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIGNvbnN0IHsgb3JpZ2luIH0gPSBhY3Rpb25cbiAgY29uc3QgbXV0YWJsZTogTXV0YWJsZSA9IHt9XG4gIGNvbnN0IGhyZWYgPSBzdGF0ZS5jYW5vbmljYWxVcmxcblxuICBtdXRhYmxlLnByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlID0gZmFsc2VcblxuICBjb25zdCBjYWNoZTogQ2FjaGVOb2RlID0gY3JlYXRlRW1wdHlDYWNoZU5vZGUoKVxuICAvLyBJZiB0aGUgY3VycmVudCB0cmVlIHdhcyBpbnRlcmNlcHRlZCwgdGhlIG5leHRVcmwgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSByZXF1ZXN0LlxuICAvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSByZWZyZXNoIHJlcXVlc3QgZG9lc24ndCBnZXQgaW50ZXJjZXB0ZWQsIGFjY2lkZW50YWxseSB0cmlnZ2VyaW5nIHRoZSBpbnRlcmNlcHRpb24gcm91dGUuXG4gIGNvbnN0IGluY2x1ZGVOZXh0VXJsID0gaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKHN0YXRlLnRyZWUpXG5cbiAgLy8gVE9ETy1BUFA6IHZlcmlmeSB0aGF0IGBocmVmYCBpcyBub3QgYW4gZXh0ZXJuYWwgdXJsLlxuICAvLyBGZXRjaCBkYXRhIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gIGNvbnN0IG5hdmlnYXRlZEF0ID0gRGF0ZS5ub3coKVxuICBjYWNoZS5sYXp5RGF0YSA9IGZldGNoU2VydmVyUmVzcG9uc2UobmV3IFVSTChocmVmLCBvcmlnaW4pLCB7XG4gICAgZmxpZ2h0Um91dGVyU3RhdGU6IFtzdGF0ZS50cmVlWzBdLCBzdGF0ZS50cmVlWzFdLCBzdGF0ZS50cmVlWzJdLCAncmVmZXRjaCddLFxuICAgIG5leHRVcmw6IGluY2x1ZGVOZXh0VXJsID8gc3RhdGUubmV4dFVybCA6IG51bGwsXG4gICAgaXNIbXJSZWZyZXNoOiB0cnVlLFxuICB9KVxuXG4gIHJldHVybiBjYWNoZS5sYXp5RGF0YS50aGVuKFxuICAgICh7IGZsaWdodERhdGEsIGNhbm9uaWNhbFVybDogY2Fub25pY2FsVXJsT3ZlcnJpZGUgfSkgPT4ge1xuICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBuYXZpZ2F0aW5nIHRvIHBhZ2UgaW4gYHBhZ2VzYCBmcm9tIGBhcHBgXG4gICAgICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChcbiAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICBtdXRhYmxlLFxuICAgICAgICAgIGZsaWdodERhdGEsXG4gICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSBjYWNoZS5sYXp5RGF0YSBhcyBpdCBoYXMgYmVlbiByZXNvbHZlZCBhdCB0aGlzIHBvaW50LlxuICAgICAgY2FjaGUubGF6eURhdGEgPSBudWxsXG5cbiAgICAgIGxldCBjdXJyZW50VHJlZSA9IHN0YXRlLnRyZWVcbiAgICAgIGxldCBjdXJyZW50Q2FjaGUgPSBzdGF0ZS5jYWNoZVxuXG4gICAgICBmb3IgKGNvbnN0IG5vcm1hbGl6ZWRGbGlnaHREYXRhIG9mIGZsaWdodERhdGEpIHtcbiAgICAgICAgY29uc3QgeyB0cmVlOiB0cmVlUGF0Y2gsIGlzUm9vdFJlbmRlciB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcbiAgICAgICAgaWYgKCFpc1Jvb3RSZW5kZXIpIHtcbiAgICAgICAgICAvLyBUT0RPLUFQUDogaGFuZGxlIHRoaXMgY2FzZSBiZXR0ZXJcbiAgICAgICAgICBjb25zb2xlLmxvZygnUkVGUkVTSCBGQUlMRUQnKVxuICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgICAgICAvLyBUT0RPLUFQUDogcmVtb3ZlICcnXG4gICAgICAgICAgWycnXSxcbiAgICAgICAgICBjdXJyZW50VHJlZSxcbiAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgc3RhdGUuY2Fub25pY2FsVXJsXG4gICAgICAgIClcblxuICAgICAgICBpZiAobmV3VHJlZSA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVTZWdtZW50TWlzbWF0Y2goc3RhdGUsIGFjdGlvbiwgdHJlZVBhdGNoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChjdXJyZW50VHJlZSwgbmV3VHJlZSkpIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgICBocmVmLFxuICAgICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgICAgIClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZiA9IGNhbm9uaWNhbFVybE92ZXJyaWRlXG4gICAgICAgICAgPyBjcmVhdGVIcmVmRnJvbVVybChjYW5vbmljYWxVcmxPdmVycmlkZSlcbiAgICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmIChjYW5vbmljYWxVcmxPdmVycmlkZSkge1xuICAgICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5RmxpZ2h0RGF0YShcbiAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICBjdXJyZW50Q2FjaGUsXG4gICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgbm9ybWFsaXplZEZsaWdodERhdGFcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChhcHBsaWVkKSB7XG4gICAgICAgICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG4gICAgICAgICAgY3VycmVudENhY2hlID0gY2FjaGVcbiAgICAgICAgfVxuXG4gICAgICAgIG11dGFibGUucGF0Y2hlZFRyZWUgPSBuZXdUcmVlXG4gICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gaHJlZlxuXG4gICAgICAgIGN1cnJlbnRUcmVlID0gbmV3VHJlZVxuICAgICAgfVxuICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgfSxcbiAgICAoKSA9PiBzdGF0ZVxuICApXG59XG5cbmZ1bmN0aW9uIGhtclJlZnJlc2hSZWR1Y2VyTm9vcChcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBfYWN0aW9uOiBIbXJSZWZyZXNoQWN0aW9uXG4pOiBSZWR1Y2VyU3RhdGUge1xuICByZXR1cm4gc3RhdGVcbn1cblxuZXhwb3J0IGNvbnN0IGhtclJlZnJlc2hSZWR1Y2VyID1cbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJ1xuICAgID8gaG1yUmVmcmVzaFJlZHVjZXJOb29wXG4gICAgOiBobXJSZWZyZXNoUmVkdWNlckltcGxcbiJdLCJuYW1lcyI6WyJobXJSZWZyZXNoUmVkdWNlciIsImhtclJlZnJlc2hSZWR1Y2VySW1wbCIsInN0YXRlIiwiYWN0aW9uIiwib3JpZ2luIiwibXV0YWJsZSIsImhyZWYiLCJjYW5vbmljYWxVcmwiLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsImNhY2hlIiwiY3JlYXRlRW1wdHlDYWNoZU5vZGUiLCJpbmNsdWRlTmV4dFVybCIsImhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSIsInRyZWUiLCJuYXZpZ2F0ZWRBdCIsIkRhdGUiLCJub3ciLCJsYXp5RGF0YSIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJVUkwiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsIm5leHRVcmwiLCJpc0htclJlZnJlc2giLCJ0aGVuIiwiZmxpZ2h0RGF0YSIsImNhbm9uaWNhbFVybE92ZXJyaWRlIiwiaGFuZGxlRXh0ZXJuYWxVcmwiLCJwdXNoUmVmIiwicGVuZGluZ1B1c2giLCJjdXJyZW50VHJlZSIsImN1cnJlbnRDYWNoZSIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwidHJlZVBhdGNoIiwiaXNSb290UmVuZGVyIiwiY29uc29sZSIsImxvZyIsIm5ld1RyZWUiLCJhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUiLCJoYW5kbGVTZWdtZW50TWlzbWF0Y2giLCJpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQiLCJjYW5vbmljYWxVcmxPdmVycmlkZUhyZWYiLCJjcmVhdGVIcmVmRnJvbVVybCIsInVuZGVmaW5lZCIsImFwcGxpZWQiLCJhcHBseUZsaWdodERhdGEiLCJwYXRjaGVkVHJlZSIsImhhbmRsZU11dGFibGUiLCJobXJSZWZyZXNoUmVkdWNlck5vb3AiLCJfYWN0aW9uIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js": /*!*************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js ***! \*************************************************************************************************************************************************************************/ /***/ ((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 generateSegmentsFromPatch: function() {\n return generateSegmentsFromPatch;\n },\n handleExternalUrl: function() {\n return handleExternalUrl;\n },\n navigateReducer: function() {\n return navigateReducer;\n }\n});\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _invalidatecachebelowflightsegmentpath = __webpack_require__(/*! ../invalidate-cache-below-flight-segmentpath */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _shouldhardnavigate = __webpack_require__(/*! ../should-hard-navigate */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _applyflightdata = __webpack_require__(/*! ../apply-flight-data */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./prefetch-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _segment = __webpack_require__(/*! ../../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ../prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst _clearcachenodedataforsegmentpath = __webpack_require__(/*! ../clear-cache-node-data-for-segment-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/clear-cache-node-data-for-segment-path.js\");\nconst _aliasedprefetchnavigations = __webpack_require__(/*! ../aliased-prefetch-navigations */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/aliased-prefetch-navigations.js\");\nconst _segmentcache = __webpack_require__(/*! ../../segment-cache */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js\");\nfunction handleExternalUrl(state, mutable, url, pendingPush) {\n mutable.mpaNavigation = true;\n mutable.canonicalUrl = url;\n mutable.pendingPush = pendingPush;\n mutable.scrollableSegments = undefined;\n return (0, _handlemutable.handleMutable)(state, mutable);\n}\nfunction generateSegmentsFromPatch(flightRouterPatch) {\n const segments = [];\n const [segment, parallelRoutes] = flightRouterPatch;\n if (Object.keys(parallelRoutes).length === 0) {\n return [\n [\n segment\n ]\n ];\n }\n for (const [parallelRouteKey, parallelRoute] of Object.entries(parallelRoutes)){\n for (const childSegment of generateSegmentsFromPatch(parallelRoute)){\n // If the segment is empty, it means we are at the root of the tree\n if (segment === '') {\n segments.push([\n parallelRouteKey,\n ...childSegment\n ]);\n } else {\n segments.push([\n segment,\n parallelRouteKey,\n ...childSegment\n ]);\n }\n }\n }\n return segments;\n}\nfunction triggerLazyFetchForLeafSegments(newCache, currentCache, flightSegmentPath, treePatch) {\n let appliedPatch = false;\n newCache.rsc = currentCache.rsc;\n newCache.prefetchRsc = currentCache.prefetchRsc;\n newCache.loading = currentCache.loading;\n newCache.parallelRoutes = new Map(currentCache.parallelRoutes);\n const segmentPathsToFill = generateSegmentsFromPatch(treePatch).map((segment)=>[\n ...flightSegmentPath,\n ...segment\n ]);\n for (const segmentPaths of segmentPathsToFill){\n (0, _clearcachenodedataforsegmentpath.clearCacheNodeDataForSegmentPath)(newCache, currentCache, segmentPaths);\n appliedPatch = true;\n }\n return appliedPatch;\n}\nfunction handleNavigationResult(url, state, mutable, pendingPush, result) {\n switch(result.tag){\n case _segmentcache.NavigationResultTag.MPA:\n {\n // Perform an MPA navigation.\n const newUrl = result.data;\n return handleExternalUrl(state, mutable, newUrl, pendingPush);\n }\n case _segmentcache.NavigationResultTag.NoOp:\n {\n // The server responded with no change to the current page. However, if\n // the URL changed, we still need to update that.\n const newCanonicalUrl = result.data.canonicalUrl;\n mutable.canonicalUrl = newCanonicalUrl;\n // Check if the only thing that changed was the hash fragment.\n const oldUrl = new URL(state.canonicalUrl, url);\n const onlyHashChange = // navigations are always same-origin.\n url.pathname === oldUrl.pathname && url.search === oldUrl.search && url.hash !== oldUrl.hash;\n if (onlyHashChange) {\n // The only updated part of the URL is the hash.\n mutable.onlyHashChange = true;\n mutable.shouldScroll = result.data.shouldScroll;\n mutable.hashFragment = url.hash;\n // Setting this to an empty array triggers a scroll for all new and\n // updated segments. See `ScrollAndFocusHandler` for more details.\n mutable.scrollableSegments = [];\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }\n case _segmentcache.NavigationResultTag.Success:\n {\n // Received a new result.\n mutable.cache = result.data.cacheNode;\n mutable.patchedTree = result.data.flightRouterState;\n mutable.canonicalUrl = result.data.canonicalUrl;\n mutable.scrollableSegments = result.data.scrollableSegments;\n mutable.shouldScroll = result.data.shouldScroll;\n mutable.hashFragment = result.data.hash;\n return (0, _handlemutable.handleMutable)(state, mutable);\n }\n case _segmentcache.NavigationResultTag.Async:\n {\n return result.data.then((asyncResult)=>handleNavigationResult(url, state, mutable, pendingPush, asyncResult), // TODO: This matches the current behavior but we need to do something\n // better here if the network fails.\n ()=>{\n return state;\n });\n }\n default:\n {\n result;\n return state;\n }\n }\n}\nfunction navigateReducer(state, action) {\n const { url, isExternalUrl, navigateType, shouldScroll, allowAliasing } = action;\n const mutable = {};\n const { hash } = url;\n const href = (0, _createhreffromurl.createHrefFromUrl)(url);\n const pendingPush = navigateType === 'push';\n // we want to prune the prefetch cache on every navigation to avoid it growing too large\n (0, _prefetchcacheutils.prunePrefetchCache)(state.prefetchCache);\n mutable.preserveCustomHistoryState = false;\n mutable.pendingPush = pendingPush;\n if (isExternalUrl) {\n return handleExternalUrl(state, mutable, url.toString(), pendingPush);\n }\n // Handles case where `` tag is present,\n // which will trigger an MPA navigation.\n if (document.getElementById('__next-page-redirect')) {\n return handleExternalUrl(state, mutable, href, pendingPush);\n }\n if (false) {}\n const prefetchValues = (0, _prefetchcacheutils.getOrCreatePrefetchCacheEntry)({\n url,\n nextUrl: state.nextUrl,\n tree: state.tree,\n prefetchCache: state.prefetchCache,\n allowAliasing\n });\n const { treeAtTimeOfPrefetch, data } = prefetchValues;\n _prefetchreducer.prefetchQueue.bump(data);\n return data.then((param)=>{\n let { flightData, canonicalUrl: canonicalUrlOverride, postponed } = param;\n const navigatedAt = Date.now();\n let isFirstRead = false;\n // we only want to mark this once\n if (!prefetchValues.lastUsedTime) {\n // important: we should only mark the cache node as dirty after we unsuspend from the call above\n prefetchValues.lastUsedTime = navigatedAt;\n isFirstRead = true;\n }\n if (prefetchValues.aliased) {\n // When alias is enabled, search param may not be included in the canonicalUrl.\n // But we want to set url to canonicalUrl so that we use redirected path for fetching dynamic data.\n const urlWithCanonicalPathname = new URL(url.href);\n if (canonicalUrlOverride) {\n urlWithCanonicalPathname.pathname = canonicalUrlOverride.pathname;\n }\n const result = (0, _aliasedprefetchnavigations.handleAliasedPrefetchEntry)(navigatedAt, state, flightData, urlWithCanonicalPathname, mutable);\n // We didn't return new router state because we didn't apply the aliased entry for some reason.\n // We'll re-invoke the navigation handler but ensure that we don't attempt to use the aliased entry. This\n // will create an on-demand prefetch entry.\n if (result === false) {\n return navigateReducer(state, {\n ...action,\n allowAliasing: false\n });\n }\n return result;\n }\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return handleExternalUrl(state, mutable, flightData, pendingPush);\n }\n const updatedCanonicalUrl = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : href;\n const onlyHashChange = !!hash && state.canonicalUrl.split('#', 1)[0] === updatedCanonicalUrl.split('#', 1)[0];\n // If only the hash has changed, the server hasn't sent us any new data. We can just update\n // the mutable properties responsible for URL and scroll handling and return early.\n if (onlyHashChange) {\n mutable.onlyHashChange = true;\n mutable.canonicalUrl = updatedCanonicalUrl;\n mutable.shouldScroll = shouldScroll;\n mutable.hashFragment = hash;\n mutable.scrollableSegments = [];\n return (0, _handlemutable.handleMutable)(state, mutable);\n }\n let currentTree = state.tree;\n let currentCache = state.cache;\n let scrollableSegments = [];\n for (const normalizedFlightData of flightData){\n const { pathToSegment: flightSegmentPath, seedData, head, isHeadPartial, isRootRender } = normalizedFlightData;\n let treePatch = normalizedFlightData.tree;\n // TODO-APP: remove ''\n const flightSegmentPathWithLeadingEmpty = [\n '',\n ...flightSegmentPath\n ];\n // Create new tree based on the flightSegmentPath and router state patch\n let newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)(flightSegmentPathWithLeadingEmpty, currentTree, treePatch, href);\n // If the tree patch can't be applied to the current tree then we use the tree at time of prefetch\n // TODO-APP: This should instead fill in the missing pieces in `currentTree` with the data from `treeAtTimeOfPrefetch`, then apply the patch.\n if (newTree === null) {\n newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)(flightSegmentPathWithLeadingEmpty, treeAtTimeOfPrefetch, treePatch, href);\n }\n if (newTree !== null) {\n if (// will send back a static response that's rendered from\n // the root. If for some reason it doesn't, we fall back to the\n // non-PPR implementation.\n // TODO: We should get rid of the else branch and do all navigations\n // via startPPRNavigation. The current structure is just\n // an incremental step.\n seedData && isRootRender && postponed) {\n const task = (0, _pprnavigations.startPPRNavigation)(navigatedAt, currentCache, currentTree, treePatch, seedData, head, isHeadPartial, false, scrollableSegments);\n if (task !== null) {\n if (task.route === null) {\n // Detected a change to the root layout. Perform an full-\n // page navigation.\n return handleExternalUrl(state, mutable, href, pendingPush);\n }\n // Use the tree computed by startPPRNavigation instead\n // of the one computed by applyRouterStatePatchToTree.\n // TODO: We should remove applyRouterStatePatchToTree\n // from the PPR path entirely.\n const patchedRouterState = task.route;\n newTree = patchedRouterState;\n const newCache = task.node;\n if (newCache !== null) {\n // We've created a new Cache Node tree that contains a prefetched\n // version of the next page. This can be rendered instantly.\n mutable.cache = newCache;\n }\n const dynamicRequestTree = task.dynamicRequestTree;\n if (dynamicRequestTree !== null) {\n // The prefetched tree has dynamic holes in it. We initiate a\n // dynamic request to fill them in.\n //\n // Do not block on the result. We'll immediately render the Cache\n // Node tree and suspend on the dynamic parts. When the request\n // comes in, we'll fill in missing data and ping React to\n // re-render. Unlike the lazy fetching model in the non-PPR\n // implementation, this is modeled as a single React update +\n // streaming, rather than multiple top-level updates. (However,\n // even in the new model, we'll still need to sometimes update the\n // root multiple times per navigation, like if the server sends us\n // a different response than we expected. For now, we revert back\n // to the lazy fetching mechanism in that case.)\n const dynamicRequest = (0, _fetchserverresponse.fetchServerResponse)(new URL(updatedCanonicalUrl, url.origin), {\n flightRouterState: dynamicRequestTree,\n nextUrl: state.nextUrl\n });\n (0, _pprnavigations.listenForDynamicRequest)(task, dynamicRequest);\n // We store the dynamic request on the `lazyData` property of the CacheNode\n // because we're not going to await the dynamic request here. Since we're not blocking\n // on the dynamic request, `layout-router` will\n // task.node.lazyData = dynamicRequest\n } else {\n // The prefetched tree does not contain dynamic holes — it's\n // fully static. We can skip the dynamic request.\n }\n } else {\n // Nothing changed, so reuse the old cache.\n // TODO: What if the head changed but not any of the segment data?\n // Is that possible? If so, we should clone the whole tree and\n // update the head.\n newTree = treePatch;\n }\n } else {\n // The static response does not include any dynamic holes, so\n // there's no need to do a second request.\n // TODO: As an incremental step this just reverts back to the\n // non-PPR implementation. We can simplify this branch further,\n // given that PPR prefetches are always static and return the whole\n // tree. Or in the meantime we could factor it out into a\n // separate function.\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return handleExternalUrl(state, mutable, href, pendingPush);\n }\n const cache = (0, _approuter.createEmptyCacheNode)();\n let applied = false;\n if (prefetchValues.status === _routerreducertypes.PrefetchCacheEntryStatus.stale && !isFirstRead) {\n // When we have a stale prefetch entry, we only want to re-use the loading state of the route we're navigating to, to support instant loading navigations\n // this will trigger a lazy fetch for the actual page data by nulling the `rsc` and `prefetchRsc` values for page data,\n // while copying over the `loading` for the segment that contains the page data.\n // We only do this on subsequent reads, as otherwise there'd be no loading data to re-use.\n // We skip this branch if only the hash fragment has changed, as we don't want to trigger a lazy fetch in that case\n applied = triggerLazyFetchForLeafSegments(cache, currentCache, flightSegmentPath, treePatch);\n // since we re-used the stale cache's loading state & refreshed the data,\n // update the `lastUsedTime` so that it can continue to be re-used for the next 30s\n prefetchValues.lastUsedTime = navigatedAt;\n } else {\n applied = (0, _applyflightdata.applyFlightData)(navigatedAt, currentCache, cache, normalizedFlightData, prefetchValues);\n }\n const hardNavigate = (0, _shouldhardnavigate.shouldHardNavigate)(flightSegmentPathWithLeadingEmpty, currentTree);\n if (hardNavigate) {\n // Copy rsc for the root node of the cache.\n cache.rsc = currentCache.rsc;\n cache.prefetchRsc = currentCache.prefetchRsc;\n (0, _invalidatecachebelowflightsegmentpath.invalidateCacheBelowFlightSegmentPath)(cache, currentCache, flightSegmentPath);\n // Ensure the existing cache value is used when the cache was not invalidated.\n mutable.cache = cache;\n } else if (applied) {\n mutable.cache = cache;\n // If we applied the cache, we update the \"current cache\" value so any other\n // segments in the FlightDataPath will be able to reference the updated cache.\n currentCache = cache;\n }\n for (const subSegment of generateSegmentsFromPatch(treePatch)){\n const scrollableSegmentPath = [\n ...flightSegmentPath,\n ...subSegment\n ];\n // Filter out the __DEFAULT__ paths as they shouldn't be scrolled to in this case.\n if (scrollableSegmentPath[scrollableSegmentPath.length - 1] !== _segment.DEFAULT_SEGMENT_KEY) {\n scrollableSegments.push(scrollableSegmentPath);\n }\n }\n }\n currentTree = newTree;\n }\n }\n mutable.patchedTree = currentTree;\n mutable.canonicalUrl = updatedCanonicalUrl;\n mutable.scrollableSegments = scrollableSegments;\n mutable.hashFragment = hash;\n mutable.shouldScroll = shouldScroll;\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, ()=>state);\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=navigate-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvbmF2aWdhdGUtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFrRGdCQSx5QkFBeUI7ZUFBekJBOztJQWRBQyxpQkFBaUI7ZUFBakJBOztJQXNJQUMsZUFBZTtlQUFmQTs7O2lEQXJLb0I7K0NBQ0Y7bUVBQ29CO3lEQUNWO2dEQUNUO3lEQUNTO2dEQU9yQzsyQ0FDdUI7NkNBQ0U7NkNBQ0Y7dUNBQ087cUNBQ0Q7NENBQ3dCO2dEQUlyRDs4REFDMEM7d0RBQ047MENBS3BDO0FBRUEsU0FBU0Qsa0JBQ2RFLEtBQTJCLEVBQzNCQyxPQUFnQixFQUNoQkMsR0FBVyxFQUNYQyxXQUFvQjtJQUVwQkYsUUFBUUcsYUFBYSxHQUFHO0lBQ3hCSCxRQUFRSSxZQUFZLEdBQUdIO0lBQ3ZCRCxRQUFRRSxXQUFXLEdBQUdBO0lBQ3RCRixRQUFRSyxrQkFBa0IsR0FBR0M7SUFFN0IsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY1IsT0FBT0M7QUFDOUI7QUFFTyxTQUFTSiwwQkFDZFksaUJBQW9DO0lBRXBDLE1BQU1DLFdBQWdDLEVBQUU7SUFDeEMsTUFBTSxDQUFDQyxTQUFTQyxlQUFlLEdBQUdIO0lBRWxDLElBQUlJLE9BQU9DLElBQUksQ0FBQ0YsZ0JBQWdCRyxNQUFNLEtBQUssR0FBRztRQUM1QyxPQUFPO1lBQUM7Z0JBQUNKO2FBQVE7U0FBQztJQUNwQjtJQUVBLEtBQUssTUFBTSxDQUFDSyxrQkFBa0JDLGNBQWMsSUFBSUosT0FBT0ssT0FBTyxDQUM1RE4sZ0JBQ0M7UUFDRCxLQUFLLE1BQU1PLGdCQUFnQnRCLDBCQUEwQm9CLGVBQWdCO1lBQ25FLG1F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QUNBLElBQU1EO0FBRVYiLCJzb3VyY2VzIjpbIi9ob21lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9uYXZpZ2F0ZS1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHRTZWdtZW50UGF0aCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBmZXRjaFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnLi4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7IGludmFsaWRhdGVDYWNoZUJlbG93RmxpZ2h0U2VnbWVudFBhdGggfSBmcm9tICcuLi9pbnZhbGlkYXRlLWNhY2hlLWJlbG93LWZsaWdodC1zZWdtZW50cGF0aCdcbmltcG9ydCB7IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSB9IGZyb20gJy4uL2FwcGx5LXJvdXRlci1zdGF0ZS1wYXRjaC10by10cmVlJ1xuaW1wb3J0IHsgc2hvdWxkSGFyZE5hdmlnYXRlIH0gZnJvbSAnLi4vc2hvdWxkLWhhcmQtbmF2aWdhdGUnXG5pbXBvcnQgeyBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQgfSBmcm9tICcuLi9pcy1uYXZpZ2F0aW5nLXRvLW5ldy1yb290LWxheW91dCdcbmltcG9ydCB7XG4gIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyxcbiAgdHlwZSBNdXRhYmxlLFxuICB0eXBlIE5hdmlnYXRlQWN0aW9uLFxuICB0eXBlIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICB0eXBlIFJlZHVjZXJTdGF0ZSxcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBoYW5kbGVNdXRhYmxlIH0gZnJvbSAnLi4vaGFuZGxlLW11dGFibGUnXG5pbXBvcnQgeyBhcHBseUZsaWdodERhdGEgfSBmcm9tICcuLi9hcHBseS1mbGlnaHQtZGF0YSdcbmltcG9ydCB7IHByZWZldGNoUXVldWUgfSBmcm9tICcuL3ByZWZldGNoLXJlZHVjZXInXG5pbXBvcnQgeyBjcmVhdGVFbXB0eUNhY2hlTm9kZSB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXInXG5pbXBvcnQgeyBERUZBVUxUX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuaW1wb3J0IHsgbGlzdGVuRm9yRHluYW1pY1JlcXVlc3QsIHN0YXJ0UFBSTmF2aWdhdGlvbiB9IGZyb20gJy4uL3Bwci1uYXZpZ2F0aW9ucydcbmltcG9ydCB7XG4gIGdldE9yQ3JlYXRlUHJlZmV0Y2hDYWNoZUVudHJ5LFxuICBwcnVuZVByZWZldGNoQ2FjaGUsXG59IGZyb20gJy4uL3ByZWZldGNoLWNhY2hlLXV0aWxzJ1xuaW1wb3J0IHsgY2xlYXJDYWNoZU5vZGVEYXRhRm9yU2VnbWVudFBhdGggfSBmcm9tICcuLi9jbGVhci1jYWNoZS1ub2RlLWRhdGEtZm9yLXNlZ21lbnQtcGF0aCdcbmltcG9ydCB7IGhhbmRsZUFsaWFzZWRQcmVmZXRjaEVudHJ5IH0gZnJvbSAnLi4vYWxpYXNlZC1wcmVmZXRjaC1uYXZpZ2F0aW9ucydcbmltcG9ydCB7XG4gIG5hdmlnYXRlIGFzIG5hdmlnYXRlVXNpbmdTZWdtZW50Q2FjaGUsXG4gIE5hdmlnYXRpb25SZXN1bHRUYWcsXG4gIHR5cGUgTmF2aWdhdGlvblJlc3VsdCxcbn0gZnJvbSAnLi4vLi4vc2VnbWVudC1jYWNoZSdcblxuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZUV4dGVybmFsVXJsKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIG11dGFibGU6IE11dGFibGUsXG4gIHVybDogc3RyaW5nLFxuICBwZW5kaW5nUHVzaDogYm9vbGVhblxuKSB7XG4gIG11dGFibGUubXBhTmF2aWdhdGlvbiA9IHRydWVcbiAgbXV0YWJsZS5jYW5vbmljYWxVcmwgPSB1cmxcbiAgbXV0YWJsZS5wZW5kaW5nUHVzaCA9IHBlbmRpbmdQdXNoXG4gIG11dGFibGUuc2Nyb2xsYWJsZVNlZ21lbnRzID0gdW5kZWZpbmVkXG5cbiAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNlZ21lbnRzRnJvbVBhdGNoKFxuICBmbGlnaHRSb3V0ZXJQYXRjaDogRmxpZ2h0Um91dGVyU3RhdGVcbik6IEZsaWdodFNlZ21lbnRQYXRoW10ge1xuICBjb25zdCBzZWdtZW50czogRmxpZ2h0U2VnbWVudFBhdGhbXSA9IFtdXG4gIGNvbnN0IFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlc10gPSBmbGlnaHRSb3V0ZXJQYXRjaFxuXG4gIGlmIChPYmplY3Qua2V5cyhwYXJhbGxlbFJvdXRlcykubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtbc2VnbWVudF1dXG4gIH1cblxuICBmb3IgKGNvbnN0IFtwYXJhbGxlbFJvdXRlS2V5LCBwYXJhbGxlbFJvdXRlXSBvZiBPYmplY3QuZW50cmllcyhcbiAgICBwYXJhbGxlbFJvdXRlc1xuICApKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZFNlZ21lbnQgb2YgZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaChwYXJhbGxlbFJvdXRlKSkge1xuICAgICAgLy8gSWYgdGhlIHNlZ21lbnQgaXMgZW1wdHksIGl0IG1lYW5zIHdlIGFyZSBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZVxuICAgICAgaWYgKHNlZ21lbnQgPT09ICcnKSB7XG4gICAgICAgIHNlZ21lbnRzLnB1c2goW3BhcmFsbGVsUm91dGVLZXksIC4uLmNoaWxkU2VnbWVudF0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50cy5wdXNoKFtzZWdtZW50LCBwYXJhbGxlbFJvdXRlS2V5LCAuLi5jaGlsZFNlZ21lbnRdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWdtZW50c1xufVxuXG5mdW5jdGlvbiB0cmlnZ2VyTGF6eUZldGNoRm9yTGVhZlNlZ21lbnRzKFxuICBuZXdDYWNoZTogQ2FjaGVOb2RlLFxuICBjdXJyZW50Q2FjaGU6IENhY2hlTm9kZSxcbiAgZmxpZ2h0U2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoLFxuICB0cmVlUGF0Y2g6IEZsaWdodFJvdXRlclN0YXRlXG4pIHtcbiAgbGV0IGFwcGxpZWRQYXRjaCA9IGZhbHNlXG5cbiAgbmV3Q2FjaGUucnNjID0gY3VycmVudENhY2hlLnJzY1xuICBuZXdDYWNoZS5wcmVmZXRjaFJzYyA9IGN1cnJlbnRDYWNoZS5wcmVmZXRjaFJzY1xuICBuZXdDYWNoZS5sb2FkaW5nID0gY3VycmVudENhY2hlLmxvYWRpbmdcbiAgbmV3Q2FjaGUucGFyYWxsZWxSb3V0ZXMgPSBuZXcgTWFwKGN1cnJlbnRDYWNoZS5wYXJhbGxlbFJvdXRlcylcblxuICBjb25zdCBzZWdtZW50UGF0aHNUb0ZpbGwgPSBnZW5lcmF0ZVNlZ21lbnRzRnJvbVBhdGNoKHRyZWVQYXRjaCkubWFwKFxuICAgIChzZWdtZW50KSA9PiBbLi4uZmxpZ2h0U2VnbWVudFBhdGgsIC4uLnNlZ21lbnRdXG4gIClcblxuICBmb3IgKGNvbnN0IHNlZ21lbnRQYXRocyBvZiBzZWdtZW50UGF0aHNUb0ZpbGwpIHtcbiAgICBjbGVhckNhY2hlTm9kZURhdGFGb3JTZWdtZW50UGF0aChuZXdDYWNoZSwgY3VycmVudENhY2hlLCBzZWdtZW50UGF0aHMpXG5cbiAgICBhcHBsaWVkUGF0Y2ggPSB0cnVlXG4gIH1cblxuICByZXR1cm4gYXBwbGllZFBhdGNoXG59XG5cbmZ1bmN0aW9uIGhhbmRsZU5hdmlnYXRpb25SZXN1bHQoXG4gIHVybDogVVJMLFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIG11dGFibGU6IE11dGFibGUsXG4gIHBlbmRpbmdQdXNoOiBib29sZWFuLFxuICByZXN1bHQ6IE5hdmlnYXRpb25SZXN1bHRcbik6IFJlZHVjZXJTdGF0ZSB7XG4gIHN3aXRjaCAocmVzdWx0LnRhZykge1xuICAgIGNhc2UgTmF2aWdhdGlvblJlc3VsdFRhZy5NUEE6IHtcbiAgICAgIC8vIFBlcmZvcm0gYW4gTVBBIG5hdmlnYXRpb24uXG4gICAgICBjb25zdCBuZXdVcmwgPSByZXN1bHQuZGF0YVxuICAgICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKHN0YXRlLCBtdXRhYmxlLCBuZXdVcmwsIHBlbmRpbmdQdXNoKVxuICAgIH1cbiAgICBjYXNlIE5hdmlnYXRpb25SZXN1bHRUYWcuTm9PcDoge1xuICAgICAgLy8gVGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBubyBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgcGFnZS4gSG93ZXZlciwgaWZcbiAgICAgIC8vIHRoZSBVUkwgY2hhbmdlZCwgd2Ugc3RpbGwgbmVlZCB0byB1cGRhdGUgdGhhdC5cbiAgICAgIGNvbnN0IG5ld0Nhbm9uaWNhbFVybCA9IHJlc3VsdC5kYXRhLmNhbm9uaWNhbFVybFxuICAgICAgbXV0YWJsZS5jYW5vbmljYWxVcmwgPSBuZXdDYW5vbmljYWxVcmxcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIG9ubHkgdGhpbmcgdGhhdCBjaGFuZ2VkIHdhcyB0aGUgaGFzaCBmcmFnbWVudC5cbiAgICAgIGNvbnN0IG9sZFVybCA9IG5ldyBVUkwoc3RhdGUuY2Fub25pY2FsVXJsLCB1cmwpXG4gICAgICBjb25zdCBvbmx5SGFzaENoYW5nZSA9XG4gICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gY29tcGFyZSB0aGUgb3JpZ2lucywgYmVjYXVzZSBjbGllbnQtZHJpdmVuXG4gICAgICAgIC8vIG5hdmlnYXRpb25zIGFyZSBhbHdheXMgc2FtZS1vcmlnaW4uXG4gICAgICAgIHVybC5wYXRobmFtZSA9PT0gb2xkVXJsLnBhdGhuYW1lICYmXG4gICAgICAgIHVybC5zZWFyY2ggPT09IG9sZFVybC5zZWFyY2ggJiZcbiAgICAgICAgdXJsLmhhc2ggIT09IG9sZFVybC5oYXNoXG4gICAgICBpZiAob25seUhhc2hDaGFuZ2UpIHtcbiAgICAgICAgLy8gVGhlIG9ubHkgdXBkYXRlZCBwYXJ0IG9mIHRoZSBVUkwgaXMgdGhlIGhhc2guXG4gICAgICAgIG11dGFibGUub25seUhhc2hDaGFuZ2UgPSB0cnVlXG4gICAgICAgIG11dGFibGUuc2hvdWxkU2Nyb2xsID0gcmVzdWx0LmRhdGEuc2hvdWxkU2Nyb2xsXG4gICAgICAgIG11dGFibGUuaGFzaEZyYWdtZW50ID0gdXJsLmhhc2hcbiAgICAgICAgLy8gU2V0dGluZyB0aGlzIHRvIGFuIGVtcHR5IGFycmF5IHRyaWdnZXJzIGEgc2Nyb2xsIGZvciBhbGwgbmV3IGFuZFxuICAgICAgICAvLyB1cGRhdGVkIHNlZ21lbnRzLiBTZWUgYFNjcm9sbEFuZEZvY3VzSGFuZGxlcmAgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgICAgbXV0YWJsZS5zY3JvbGxhYmxlU2VnbWVudHMgPSBbXVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlTXV0YWJsZShzdGF0ZSwgbXV0YWJsZSlcbiAgICB9XG4gICAgY2FzZSBOYXZpZ2F0aW9uUmVzdWx0VGFnLlN1Y2Nlc3M6IHtcbiAgICAgIC8vIFJlY2VpdmVkIGEgbmV3IHJlc3VsdC5cbiAgICAgIG11dGFibGUuY2FjaGUgPSByZXN1bHQuZGF0YS5jYWNoZU5vZGVcbiAgICAgIG11dGFibGUucGF0Y2hlZFRyZWUgPSByZXN1bHQuZGF0YS5mbGlnaHRSb3V0ZXJTdGF0ZVxuICAgICAgbXV0YWJsZS5jYW5vbmljYWxVcmwgPSByZXN1bHQuZGF0YS5jYW5vbmljYWxVcmxcbiAgICAgIG11dGFibGUuc2Nyb2xsYWJsZVNlZ21lbnRzID0gcmVzdWx0LmRhdGEuc2Nyb2xsYWJsZVNlZ21lbnRzXG4gICAgICBtdXRhYmxlLnNob3VsZFNjcm9sbCA9IHJlc3VsdC5kYXRhLnNob3VsZFNjcm9sbFxuICAgICAgbXV0YWJsZS5oYXNoRnJhZ21lbnQgPSByZXN1bHQuZGF0YS5oYXNoXG4gICAgICByZXR1cm4gaGFuZGxlTXV0YWJsZShzdGF0ZSwgbXV0YWJsZSlcbiAgICB9XG4gICAgY2FzZSBOYXZpZ2F0aW9uUmVzdWx0VGFnLkFzeW5jOiB7XG4gICAgICByZXR1cm4gcmVzdWx0LmRhdGEudGhlbihcbiAgICAgICAgKGFzeW5jUmVzdWx0KSA9PlxuICAgICAgICAgIGhhbmRsZU5hdmlnYXRpb25SZXN1bHQodXJsLCBzdGF0ZSwgbXV0YWJsZSwgcGVuZGluZ1B1c2gsIGFzeW5jUmVzdWx0KSxcbiAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gZmFpbGVkLCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUuXG4gICAgICAgIC8vIFRPRE86IFRoaXMgbWF0Y2hlcyB0aGUgY3VycmVudCBiZWhhdmlvciBidXQgd2UgbmVlZCB0byBkbyBzb21ldGhpbmdcbiAgICAgICAgLy8gYmV0dGVyIGhlcmUgaWYgdGhlIG5ldHdvcmsgZmFpbHMuXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gc3RhdGVcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXN1bHQgc2F0aXNmaWVzIG5ldmVyXG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5hdmlnYXRlUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IE5hdmlnYXRlQWN0aW9uXG4pOiBSZWR1Y2VyU3RhdGUge1xuICBjb25zdCB7IHVybCwgaXNFeHRlcm5hbFVybCwgbmF2aWdhdGVUeXBlLCBzaG91bGRTY3JvbGwsIGFsbG93QWxpYXNpbmcgfSA9XG4gICAgYWN0aW9uXG4gIGNvbnN0IG11dGFibGU6IE11dGFibGUgPSB7fVxuICBjb25zdCB7IGhhc2ggfSA9IHVybFxuICBjb25zdCBocmVmID0gY3JlYXRlSHJlZkZyb21VcmwodXJsKVxuICBjb25zdCBwZW5kaW5nUHVzaCA9IG5hdmlnYXRlVHlwZSA9PT0gJ3B1c2gnXG4gIC8vIHdlIHdhbnQgdG8gcHJ1bmUgdGhlIHByZWZldGNoIGNhY2hlIG9uIGV2ZXJ5IG5hdmlnYXRpb24gdG8gYXZvaWQgaXQgZ3Jvd2luZyB0b28gbGFyZ2VcbiAgcHJ1bmVQcmVmZXRjaENhY2hlKHN0YXRlLnByZWZldGNoQ2FjaGUpXG5cbiAgbXV0YWJsZS5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSA9IGZhbHNlXG4gIG11dGFibGUucGVuZGluZ1B1c2ggPSBwZW5kaW5nUHVzaFxuXG4gIGlmIChpc0V4dGVybmFsVXJsKSB7XG4gICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKHN0YXRlLCBtdXRhYmxlLCB1cmwudG9TdHJpbmcoKSwgcGVuZGluZ1B1c2gpXG4gIH1cblxuICAvLyBIYW5kbGVzIGNhc2Ugd2hlcmUgYDxtZXRhIGh0dHAtZXF1aXY9XCJyZWZyZXNoXCI+YCB0YWcgaXMgcHJlc2VudCxcbiAgLy8gd2hpY2ggd2lsbCB0cmlnZ2VyIGFuIE1QQSBuYXZpZ2F0aW9uLlxuICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19fbmV4dC1wYWdlLXJlZGlyZWN0JykpIHtcbiAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoc3RhdGUsIG11dGFibGUsIGhyZWYsIHBlbmRpbmdQdXNoKVxuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSkge1xuICAgIC8vIChWZXJ5IEVhcmx5IEV4cGVyaW1lbnRhbCBGZWF0dXJlKSBTZWdtZW50IENhY2hlXG4gICAgLy9cbiAgICAvLyBCeXBhc3MgdGhlIG5vcm1hbCBwcmVmZXRjaCBjYWNoZSBhbmQgdXNlIHRoZSBuZXcgcGVyLXNlZ21lbnQgY2FjaGVcbiAgICAvLyBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkLiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGlmIFBQUiBpcyBlbmFibGVkLCB0b28uXG4gICAgLy9cbiAgICAvLyBUZW1wb3JhcnkgZ2x1ZSBjb2RlIGJldHdlZW4gdGhlIHJvdXRlciByZWR1Y2VyIGFuZCB0aGUgbmV3IG5hdmlnYXRpb25cbiAgICAvLyBpbXBsZW1lbnRhdGlvbi4gRXZlbnR1YWxseSB3ZSdsbCByZXdyaXRlIHRoZSByb3V0ZXIgcmVkdWNlciB0byBhXG4gICAgLy8gc3RhdGUgbWFjaGluZS5cbiAgICBjb25zdCByZXN1bHQgPSBuYXZpZ2F0ZVVzaW5nU2VnbWVudENhY2hlKFxuICAgICAgdXJsLFxuICAgICAgc3RhdGUuY2FjaGUsXG4gICAgICBzdGF0ZS50cmVlLFxuICAgICAgc3RhdGUubmV4dFVybCxcbiAgICAgIHNob3VsZFNjcm9sbFxuICAgIClcbiAgICByZXR1cm4gaGFuZGxlTmF2aWdhdGlvblJlc3VsdCh1cmwsIHN0YXRlLCBtdXRhYmxlLCBwZW5kaW5nUHVzaCwgcmVzdWx0KVxuICB9XG5cbiAgY29uc3QgcHJlZmV0Y2hWYWx1ZXMgPSBnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeSh7XG4gICAgdXJsLFxuICAgIG5leHRVcmw6IHN0YXRlLm5leHRVcmwsXG4gICAgdHJlZTogc3RhdGUudHJlZSxcbiAgICBwcmVmZXRjaENhY2hlOiBzdGF0ZS5wcmVmZXRjaENhY2hlLFxuICAgIGFsbG93QWxpYXNpbmcsXG4gIH0pXG4gIGNvbnN0IHsgdHJlZUF0VGltZU9mUHJlZmV0Y2gsIGRhdGEgfSA9IHByZWZldGNoVmFsdWVzXG5cbiAgcHJlZmV0Y2hRdWV1ZS5idW1wKGRhdGEpXG5cbiAgcmV0dXJuIGRhdGEudGhlbihcbiAgICAoeyBmbGlnaHREYXRhLCBjYW5vbmljYWxVcmw6IGNhbm9uaWNhbFVybE92ZXJyaWRlLCBwb3N0cG9uZWQgfSkgPT4ge1xuICAgICAgY29uc3QgbmF2aWdhdGVkQXQgPSBEYXRlLm5vdygpXG5cbiAgICAgIGxldCBpc0ZpcnN0UmVhZCA9IGZhbHNlXG4gICAgICAvLyB3ZSBvbmx5IHdhbnQgdG8gbWFyayB0aGlzIG9uY2VcbiAgICAgIGlmICghcHJlZmV0Y2hWYWx1ZXMubGFzdFVzZWRUaW1lKSB7XG4gICAgICAgIC8vIGltcG9ydGFudDogd2Ugc2hvdWxkIG9ubHkgbWFyayB0aGUgY2FjaGUgbm9kZSBhcyBkaXJ0eSBhZnRlciB3ZSB1bnN1c3BlbmQgZnJvbSB0aGUgY2FsbCBhYm92ZVxuICAgICAgICBwcmVmZXRjaFZhbHVlcy5sYXN0VXNlZFRpbWUgPSBuYXZpZ2F0ZWRBdFxuICAgICAgICBpc0ZpcnN0UmVhZCA9IHRydWVcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWZldGNoVmFsdWVzLmFsaWFzZWQpIHtcbiAgICAgICAgLy8gV2hlbiBhbGlhcyBpcyBlbmFibGVkLCBzZWFyY2ggcGFyYW0gbWF5IG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgY2Fub25pY2FsVXJsLlxuICAgICAgICAvLyBCdXQgd2Ugd2FudCB0byBzZXQgdXJsIHRvIGNhbm9uaWNhbFVybCBzbyB0aGF0IHdlIHVzZSByZWRpcmVjdGVkIHBhdGggZm9yIGZldGNoaW5nIGR5bmFtaWMgZGF0YS5cbiAgICAgICAgY29uc3QgdXJsV2l0aENhbm9uaWNhbFBhdGhuYW1lID0gbmV3IFVSTCh1cmwuaHJlZilcbiAgICAgICAgaWYgKGNhbm9uaWNhbFVybE92ZXJyaWRlKSB7XG4gICAgICAgICAgdXJsV2l0aENhbm9uaWNhbFBhdGhuYW1lLnBhdGhuYW1lID0gY2Fub25pY2FsVXJsT3ZlcnJpZGUucGF0aG5hbWVcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGhhbmRsZUFsaWFzZWRQcmVmZXRjaEVudHJ5KFxuICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIGZsaWdodERhdGEsXG4gICAgICAgICAgdXJsV2l0aENhbm9uaWNhbFBhdGhuYW1lLFxuICAgICAgICAgIG11dGFibGVcbiAgICAgICAgKVxuXG4gICAgICAgIC8vIFdlIGRpZG4ndCByZXR1cm4gbmV3IHJvdXRlciBzdGF0ZSBiZWNhdXNlIHdlIGRpZG4ndCBhcHBseSB0aGUgYWxpYXNlZCBlbnRyeSBmb3Igc29tZSByZWFzb24uXG4gICAgICAgIC8vIFdlJ2xsIHJlLWludm9rZSB0aGUgbmF2aWdhdGlvbiBoYW5kbGVyIGJ1dCBlbnN1cmUgdGhhdCB3ZSBkb24ndCBhdHRlbXB0IHRvIHVzZSB0aGUgYWxpYXNlZCBlbnRyeS4gVGhpc1xuICAgICAgICAvLyB3aWxsIGNyZWF0ZSBhbiBvbi1kZW1hbmQgcHJlZmV0Y2ggZW50cnkuXG4gICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIG5hdmlnYXRlUmVkdWNlcihzdGF0ZSwgeyAuLi5hY3Rpb24sIGFsbG93QWxpYXNpbmc6IGZhbHNlIH0pXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gbmF2aWdhdGluZyB0byBwYWdlIGluIGBwYWdlc2AgZnJvbSBgYXBwYFxuICAgICAgaWYgKHR5cGVvZiBmbGlnaHREYXRhID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoc3RhdGUsIG11dGFibGUsIGZsaWdodERhdGEsIHBlbmRpbmdQdXNoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1cGRhdGVkQ2Fub25pY2FsVXJsID0gY2Fub25pY2FsVXJsT3ZlcnJpZGVcbiAgICAgICAgPyBjcmVhdGVIcmVmRnJvbVVybChjYW5vbmljYWxVcmxPdmVycmlkZSlcbiAgICAgICAgOiBocmVmXG5cbiAgICAgIGNvbnN0IG9ubHlIYXNoQ2hhbmdlID1cbiAgICAgICAgISFoYXNoICYmXG4gICAgICAgIHN0YXRlLmNhbm9uaWNhbFVybC5zcGxpdCgnIycsIDEpWzBdID09PVxuICAgICAgICAgIHVwZGF0ZWRDYW5vbmljYWxVcmwuc3BsaXQoJyMnLCAxKVswXVxuXG4gICAgICAvLyBJZiBvbmx5IHRoZSBoYXNoIGhhcyBjaGFuZ2VkLCB0aGUgc2VydmVyIGhhc24ndCBzZW50IHVzIGFueSBuZXcgZGF0YS4gV2UgY2FuIGp1c3QgdXBkYXRlXG4gICAgICAvLyB0aGUgbXV0YWJsZSBwcm9wZXJ0aWVzIHJlc3BvbnNpYmxlIGZvciBVUkwgYW5kIHNjcm9sbCBoYW5kbGluZyBhbmQgcmV0dXJuIGVhcmx5LlxuICAgICAgaWYgKG9ubHlIYXNoQ2hhbmdlKSB7XG4gICAgICAgIG11dGFibGUub25seUhhc2hDaGFuZ2UgPSB0cnVlXG4gICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gdXBkYXRlZENhbm9uaWNhbFVybFxuICAgICAgICBtdXRhYmxlLnNob3VsZFNjcm9sbCA9IHNob3VsZFNjcm9sbFxuICAgICAgICBtdXRhYmxlLmhhc2hGcmFnbWVudCA9IGhhc2hcbiAgICAgICAgbXV0YWJsZS5zY3JvbGxhYmxlU2VnbWVudHMgPSBbXVxuICAgICAgICByZXR1cm4gaGFuZGxlTXV0YWJsZShzdGF0ZSwgbXV0YWJsZSlcbiAgICAgIH1cblxuICAgICAgbGV0IGN1cnJlbnRUcmVlID0gc3RhdGUudHJlZVxuICAgICAgbGV0IGN1cnJlbnRDYWNoZSA9IHN0YXRlLmNhY2hlXG4gICAgICBsZXQgc2Nyb2xsYWJsZVNlZ21lbnRzOiBGbGlnaHRTZWdtZW50UGF0aFtdID0gW11cbiAgICAgIGZvciAoY29uc3Qgbm9ybWFsaXplZEZsaWdodERhdGEgb2YgZmxpZ2h0RGF0YSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgcGF0aFRvU2VnbWVudDogZmxpZ2h0U2VnbWVudFBhdGgsXG4gICAgICAgICAgc2VlZERhdGEsXG4gICAgICAgICAgaGVhZCxcbiAgICAgICAgICBpc0hlYWRQYXJ0aWFsLFxuICAgICAgICAgIGlzUm9vdFJlbmRlcixcbiAgICAgICAgfSA9IG5vcm1hbGl6ZWRGbGlnaHREYXRhXG4gICAgICAgIGxldCB0cmVlUGF0Y2ggPSBub3JtYWxpemVkRmxpZ2h0RGF0YS50cmVlXG5cbiAgICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICBjb25zdCBmbGlnaHRTZWdtZW50UGF0aFdpdGhMZWFkaW5nRW1wdHkgPSBbJycsIC4uLmZsaWdodFNlZ21lbnRQYXRoXVxuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgdHJlZSBiYXNlZCBvbiB0aGUgZmxpZ2h0U2VnbWVudFBhdGggYW5kIHJvdXRlciBzdGF0ZSBwYXRjaFxuICAgICAgICBsZXQgbmV3VHJlZSA9IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZShcbiAgICAgICAgICAvLyBUT0RPLUFQUDogcmVtb3ZlICcnXG4gICAgICAgICAgZmxpZ2h0U2VnbWVudFBhdGhXaXRoTGVhZGluZ0VtcHR5LFxuICAgICAgICAgIGN1cnJlbnRUcmVlLFxuICAgICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgICBocmVmXG4gICAgICAgIClcblxuICAgICAgICAvLyBJZiB0aGUgdHJlZSBwYXRjaCBjYW4ndCBiZSBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHRyZWUgdGhlbiB3ZSB1c2UgdGhlIHRyZWUgYXQgdGltZSBvZiBwcmVmZXRjaFxuICAgICAgICAvLyBUT0RPLUFQUDogVGhpcyBzaG91bGQgaW5zdGVhZCBmaWxsIGluIHRoZSBtaXNzaW5nIHBpZWNlcyBpbiBgY3VycmVudFRyZWVgIHdpdGggdGhlIGRhdGEgZnJvbSBgdHJlZUF0VGltZU9mUHJlZmV0Y2hgLCB0aGVuIGFwcGx5IHRoZSBwYXRjaC5cbiAgICAgICAgaWYgKG5ld1RyZWUgPT09IG51bGwpIHtcbiAgICAgICAgICBuZXdUcmVlID0gYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlKFxuICAgICAgICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICAgICAgZmxpZ2h0U2VnbWVudFBhdGhXaXRoTGVhZGluZ0VtcHR5LFxuICAgICAgICAgICAgdHJlZUF0VGltZU9mUHJlZmV0Y2gsXG4gICAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgICBocmVmXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld1RyZWUgIT09IG51bGwpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAvLyBUaGlzIGlzIGp1c3QgYSBwYXJhbm9pZCBjaGVjay4gV2hlbiBhIHJvdXRlIGlzIFBQUmVkLCB0aGUgc2VydmVyXG4gICAgICAgICAgICAvLyB3aWxsIHNlbmQgYmFjayBhIHN0YXRpYyByZXNwb25zZSB0aGF0J3MgcmVuZGVyZWQgZnJvbVxuICAgICAgICAgICAgLy8gdGhlIHJvb3QuIElmIGZvciBzb21lIHJlYXNvbiBpdCBkb2Vzbid0LCB3ZSBmYWxsIGJhY2sgdG8gdGhlXG4gICAgICAgICAgICAvLyBub24tUFBSIGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIGdldCByaWQgb2YgdGhlIGVsc2UgYnJhbmNoIGFuZCBkbyBhbGwgbmF2aWdhdGlvbnNcbiAgICAgICAgICAgIC8vIHZpYSBzdGFydFBQUk5hdmlnYXRpb24uIFRoZSBjdXJyZW50IHN0cnVjdHVyZSBpcyBqdXN0XG4gICAgICAgICAgICAvLyBhbiBpbmNyZW1lbnRhbCBzdGVwLlxuICAgICAgICAgICAgc2VlZERhdGEgJiZcbiAgICAgICAgICAgIGlzUm9vdFJlbmRlciAmJlxuICAgICAgICAgICAgcG9zdHBvbmVkXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gc3RhcnRQUFJOYXZpZ2F0aW9uKFxuICAgICAgICAgICAgICBuYXZpZ2F0ZWRBdCxcbiAgICAgICAgICAgICAgY3VycmVudENhY2hlLFxuICAgICAgICAgICAgICBjdXJyZW50VHJlZSxcbiAgICAgICAgICAgICAgdHJlZVBhdGNoLFxuICAgICAgICAgICAgICBzZWVkRGF0YSxcbiAgICAgICAgICAgICAgaGVhZCxcbiAgICAgICAgICAgICAgaXNIZWFkUGFydGlhbCxcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgIHNjcm9sbGFibGVTZWdtZW50c1xuICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICBpZiAodGFzayAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICBpZiAodGFzay5yb3V0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIC8vIERldGVjdGVkIGEgY2hhbmdlIHRvIHRoZSByb290IGxheW91dC4gUGVyZm9ybSBhbiBmdWxsLVxuICAgICAgICAgICAgICAgIC8vIHBhZ2UgbmF2aWdhdGlvbi5cbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoc3RhdGUsIG11dGFibGUsIGhyZWYsIHBlbmRpbmdQdXNoKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vIFVzZSB0aGUgdHJlZSBjb21wdXRlZCBieSBzdGFydFBQUk5hdmlnYXRpb24gaW5zdGVhZFxuICAgICAgICAgICAgICAvLyBvZiB0aGUgb25lIGNvbXB1dGVkIGJ5IGFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZS5cbiAgICAgICAgICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIHJlbW92ZSBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWVcbiAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgUFBSIHBhdGggZW50aXJlbHkuXG4gICAgICAgICAgICAgIGNvbnN0IHBhdGNoZWRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGUgPSB0YXNrLnJvdXRlXG4gICAgICAgICAgICAgIG5ld1RyZWUgPSBwYXRjaGVkUm91dGVyU3RhdGVcblxuICAgICAgICAgICAgICBjb25zdCBuZXdDYWNoZSA9IHRhc2subm9kZVxuICAgICAgICAgICAgICBpZiAobmV3Q2FjaGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBXZSd2ZSBjcmVhdGVkIGEgbmV3IENhY2hlIE5vZGUgdHJlZSB0aGF0IGNvbnRhaW5zIGEgcHJlZmV0Y2hlZFxuICAgICAgICAgICAgICAgIC8vIHZlcnNpb24gb2YgdGhlIG5leHQgcGFnZS4gVGhpcyBjYW4gYmUgcmVuZGVyZWQgaW5zdGFudGx5LlxuICAgICAgICAgICAgICAgIG11dGFibGUuY2FjaGUgPSBuZXdDYWNoZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGR5bmFtaWNSZXF1ZXN0VHJlZSA9IHRhc2suZHluYW1pY1JlcXVlc3RUcmVlXG4gICAgICAgICAgICAgIGlmIChkeW5hbWljUmVxdWVzdFRyZWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgcHJlZmV0Y2hlZCB0cmVlIGhhcyBkeW5hbWljIGhvbGVzIGluIGl0LiBXZSBpbml0aWF0ZSBhXG4gICAgICAgICAgICAgICAgLy8gZHluYW1pYyByZXF1ZXN0IHRvIGZpbGwgdGhlbSBpbi5cbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIERvIG5vdCBibG9jayBvbiB0aGUgcmVzdWx0LiBXZSdsbCBpbW1lZGlhdGVseSByZW5kZXIgdGhlIENhY2hlXG4gICAgICAgICAgICAgICAgLy8gTm9kZSB0cmVlIGFuZCBzdXNwZW5kIG9uIHRoZSBkeW5hbWljIHBhcnRzLiBXaGVuIHRoZSByZXF1ZXN0XG4gICAgICAgICAgICAgICAgLy8gY29tZXMgaW4sIHdlJ2xsIGZpbGwgaW4gbWlzc2luZyBkYXRhIGFuZCBwaW5nIFJlYWN0IHRvXG4gICAgICAgICAgICAgICAgLy8gcmUtcmVuZGVyLiBVbmxpa2UgdGhlIGxhenkgZmV0Y2hpbmcgbW9kZWwgaW4gdGhlIG5vbi1QUFJcbiAgICAgICAgICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbiwgdGhpcyBpcyBtb2RlbGVkIGFzIGEgc2luZ2xlIFJlYWN0IHVwZGF0ZSArXG4gICAgICAgICAgICAgICAgLy8gc3RyZWFtaW5nLCByYXRoZXIgdGhhbiBtdWx0aXBsZSB0b3AtbGV2ZWwgdXBkYXRlcy4gKEhvd2V2ZXIsXG4gICAgICAgICAgICAgICAgLy8gZXZlbiBpbiB0aGUgbmV3IG1vZGVsLCB3ZSdsbCBzdGlsbCBuZWVkIHRvIHNvbWV0aW1lcyB1cGRhdGUgdGhlXG4gICAgICAgICAgICAgICAgLy8gcm9vdCBtdWx0aXBsZSB0aW1lcyBwZXIgbmF2aWdhdGlvbiwgbGlrZSBpZiB0aGUgc2VydmVyIHNlbmRzIHVzXG4gICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgcmVzcG9uc2UgdGhhbiB3ZSBleHBlY3RlZC4gRm9yIG5vdywgd2UgcmV2ZXJ0IGJhY2tcbiAgICAgICAgICAgICAgICAvLyB0byB0aGUgbGF6eSBmZXRjaGluZyBtZWNoYW5pc20gaW4gdGhhdCBjYXNlLilcbiAgICAgICAgICAgICAgICBjb25zdCBkeW5hbWljUmVxdWVzdCA9IGZldGNoU2VydmVyUmVzcG9uc2UoXG4gICAgICAgICAgICAgICAgICBuZXcgVVJMKHVwZGF0ZWRDYW5vbmljYWxVcmwsIHVybC5vcmlnaW4pLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBmbGlnaHRSb3V0ZXJTdGF0ZTogZHluYW1pY1JlcXVlc3RUcmVlLFxuICAgICAgICAgICAgICAgICAgICBuZXh0VXJsOiBzdGF0ZS5uZXh0VXJsLFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICAgIGxpc3RlbkZvckR5bmFtaWNSZXF1ZXN0KHRhc2ssIGR5bmFtaWNSZXF1ZXN0KVxuICAgICAgICAgICAgICAgIC8vIFdlIHN0b3JlIHRoZSBkeW5hbWljIHJlcXVlc3Qgb24gdGhlIGBsYXp5RGF0YWAgcHJvcGVydHkgb2YgdGhlIENhY2hlTm9kZVxuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugd2UncmUgbm90IGdvaW5nIHRvIGF3YWl0IHRoZSBkeW5hbWljIHJlcXVlc3QgaGVyZS4gU2luY2Ugd2UncmUgbm90IGJsb2NraW5nXG4gICAgICAgICAgICAgICAgLy8gb24gdGhlIGR5bmFtaWMgcmVxdWVzdCwgYGxheW91dC1yb3V0ZXJgIHdpbGxcbiAgICAgICAgICAgICAgICAvLyB0YXNrLm5vZGUubGF6eURhdGEgPSBkeW5hbWljUmVxdWVzdFxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBwcmVmZXRjaGVkIHRyZWUgZG9lcyBub3QgY29udGFpbiBkeW5hbWljIGhvbGVzIOKAlCBpdCdzXG4gICAgICAgICAgICAgICAgLy8gZnVsbHkgc3RhdGljLiBXZSBjYW4gc2tpcCB0aGUgZHluYW1pYyByZXF1ZXN0LlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBOb3RoaW5nIGNoYW5nZWQsIHNvIHJldXNlIHRoZSBvbGQgY2FjaGUuXG4gICAgICAgICAgICAgIC8vIFRPRE86IFdoYXQgaWYgdGhlIGhlYWQgY2hhbmdlZCBidXQgbm90IGFueSBvZiB0aGUgc2VnbWVudCBkYXRhP1xuICAgICAgICAgICAgICAvLyBJcyB0aGF0IHBvc3NpYmxlPyBJZiBzbywgd2Ugc2hvdWxkIGNsb25lIHRoZSB3aG9sZSB0cmVlIGFuZFxuICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGhlYWQuXG4gICAgICAgICAgICAgIG5ld1RyZWUgPSB0cmVlUGF0Y2hcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gVGhlIHN0YXRpYyByZXNwb25zZSBkb2VzIG5vdCBpbmNsdWRlIGFueSBkeW5hbWljIGhvbGVzLCBzb1xuICAgICAgICAgICAgLy8gdGhlcmUncyBubyBuZWVkIHRvIGRvIGEgc2Vjb25kIHJlcXVlc3QuXG4gICAgICAgICAgICAvLyBUT0RPOiBBcyBhbiBpbmNyZW1lbnRhbCBzdGVwIHRoaXMganVzdCByZXZlcnRzIGJhY2sgdG8gdGhlXG4gICAgICAgICAgICAvLyBub24tUFBSIGltcGxlbWVudGF0aW9uLiBXZSBjYW4gc2ltcGxpZnkgdGhpcyBicmFuY2ggZnVydGhlcixcbiAgICAgICAgICAgIC8vIGdpdmVuIHRoYXQgUFBSIHByZWZldGNoZXMgYXJlIGFsd2F5cyBzdGF0aWMgYW5kIHJldHVybiB0aGUgd2hvbGVcbiAgICAgICAgICAgIC8vIHRyZWUuIE9yIGluIHRoZSBtZWFudGltZSB3ZSBjb3VsZCBmYWN0b3IgaXQgb3V0IGludG8gYVxuICAgICAgICAgICAgLy8gc2VwYXJhdGUgZnVuY3Rpb24uXG5cbiAgICAgICAgICAgIGlmIChpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQoY3VycmVudFRyZWUsIG5ld1RyZWUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChzdGF0ZSwgbXV0YWJsZSwgaHJlZiwgcGVuZGluZ1B1c2gpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNhY2hlOiBDYWNoZU5vZGUgPSBjcmVhdGVFbXB0eUNhY2hlTm9kZSgpXG4gICAgICAgICAgICBsZXQgYXBwbGllZCA9IGZhbHNlXG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgcHJlZmV0Y2hWYWx1ZXMuc3RhdHVzID09PSBQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMuc3RhbGUgJiZcbiAgICAgICAgICAgICAgIWlzRmlyc3RSZWFkXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBoYXZlIGEgc3RhbGUgcHJlZmV0Y2ggZW50cnksIHdlIG9ubHkgd2FudCB0byByZS11c2UgdGhlIGxvYWRpbmcgc3RhdGUgb2YgdGhlIHJvdXRlIHdlJ3JlIG5hdmlnYXRpbmcgdG8sIHRvIHN1cHBvcnQgaW5zdGFudCBsb2FkaW5nIG5hdmlnYXRpb25zXG4gICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCB0cmlnZ2VyIGEgbGF6eSBmZXRjaCBmb3IgdGhlIGFjdHVhbCBwYWdlIGRhdGEgYnkgbnVsbGluZyB0aGUgYHJzY2AgYW5kIGBwcmVmZXRjaFJzY2AgdmFsdWVzIGZvciBwYWdlIGRhdGEsXG4gICAgICAgICAgICAgIC8vIHdoaWxlIGNvcHlpbmcgb3ZlciB0aGUgYGxvYWRpbmdgIGZvciB0aGUgc2VnbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBwYWdlIGRhdGEuXG4gICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBvbiBzdWJzZXF1ZW50IHJlYWRzLCBhcyBvdGhlcndpc2UgdGhlcmUnZCBiZSBubyBsb2FkaW5nIGRhdGEgdG8gcmUtdXNlLlxuXG4gICAgICAgICAgICAgIC8vIFdlIHNraXAgdGhpcyBicmFuY2ggaWYgb25seSB0aGUgaGFzaCBmcmFnbWVudCBoYXMgY2hhbmdlZCwgYXMgd2UgZG9uJ3Qgd2FudCB0byB0cmlnZ2VyIGEgbGF6eSBmZXRjaCBpbiB0aGF0IGNhc2VcbiAgICAgICAgICAgICAgYXBwbGllZCA9IHRyaWdnZXJMYXp5RmV0Y2hGb3JMZWFmU2VnbWVudHMoXG4gICAgICAgICAgICAgICAgY2FjaGUsXG4gICAgICAgICAgICAgICAgY3VycmVudENhY2hlLFxuICAgICAgICAgICAgICAgIGZsaWdodFNlZ21lbnRQYXRoLFxuICAgICAgICAgICAgICAgIHRyZWVQYXRjaFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8vIHNpbmNlIHdlIHJlLXVzZWQgdGhlIHN0YWxlIGNhY2hlJ3MgbG9hZGluZyBzdGF0ZSAmIHJlZnJlc2hlZCB0aGUgZGF0YSxcbiAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBgbGFzdFVzZWRUaW1lYCBzbyB0aGF0IGl0IGNhbiBjb250aW51ZSB0byBiZSByZS11c2VkIGZvciB0aGUgbmV4dCAzMHNcbiAgICAgICAgICAgICAgcHJlZmV0Y2hWYWx1ZXMubGFzdFVzZWRUaW1lID0gbmF2aWdhdGVkQXRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGFwcGxpZWQgPSBhcHBseUZsaWdodERhdGEoXG4gICAgICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgICAgICAgY3VycmVudENhY2hlLFxuICAgICAgICAgICAgICAgIGNhY2hlLFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRGbGlnaHREYXRhLFxuICAgICAgICAgICAgICAgIHByZWZldGNoVmFsdWVzXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaGFyZE5hdmlnYXRlID0gc2hvdWxkSGFyZE5hdmlnYXRlKFxuICAgICAgICAgICAgICAvLyBUT0RPLUFQUDogcmVtb3ZlICcnXG4gICAgICAgICAgICAgIGZsaWdodFNlZ21lbnRQYXRoV2l0aExlYWRpbmdFbXB0eSxcbiAgICAgICAgICAgICAgY3VycmVudFRyZWVcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgaWYgKGhhcmROYXZpZ2F0ZSkge1xuICAgICAgICAgICAgICAvLyBDb3B5IHJzYyBmb3IgdGhlIHJvb3Qgbm9kZSBvZiB0aGUgY2FjaGUuXG4gICAgICAgICAgICAgIGNhY2hlLnJzYyA9IGN1cnJlbnRDYWNoZS5yc2NcbiAgICAgICAgICAgICAgY2FjaGUucHJlZmV0Y2hSc2MgPSBjdXJyZW50Q2FjaGUucHJlZmV0Y2hSc2NcblxuICAgICAgICAgICAgICBpbnZhbGlkYXRlQ2FjaGVCZWxvd0ZsaWdodFNlZ21lbnRQYXRoKFxuICAgICAgICAgICAgICAgIGNhY2hlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRDYWNoZSxcbiAgICAgICAgICAgICAgICBmbGlnaHRTZWdtZW50UGF0aFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgZXhpc3RpbmcgY2FjaGUgdmFsdWUgaXMgdXNlZCB3aGVuIHRoZSBjYWNoZSB3YXMgbm90IGludmFsaWRhdGVkLlxuICAgICAgICAgICAgICBtdXRhYmxlLmNhY2hlID0gY2FjaGVcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXBwbGllZCkge1xuICAgICAgICAgICAgICBtdXRhYmxlLmNhY2hlID0gY2FjaGVcbiAgICAgICAgICAgICAgLy8gSWYgd2UgYXBwbGllZCB0aGUgY2FjaGUsIHdlIHVwZGF0ZSB0aGUgXCJjdXJyZW50IGNhY2hlXCIgdmFsdWUgc28gYW55IG90aGVyXG4gICAgICAgICAgICAgIC8vIHNlZ21lbnRzIGluIHRoZSBGbGlnaHREYXRhUGF0aCB3aWxsIGJlIGFibGUgdG8gcmVmZXJlbmNlIHRoZSB1cGRhdGVkIGNhY2hlLlxuICAgICAgICAgICAgICBjdXJyZW50Q2FjaGUgPSBjYWNoZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHN1YlNlZ21lbnQgb2YgZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaCh0cmVlUGF0Y2gpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVTZWdtZW50UGF0aCA9IFtcbiAgICAgICAgICAgICAgICAuLi5mbGlnaHRTZWdtZW50UGF0aCxcbiAgICAgICAgICAgICAgICAuLi5zdWJTZWdtZW50LFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgdGhlIF9fREVGQVVMVF9fIHBhdGhzIGFzIHRoZXkgc2hvdWxkbid0IGJlIHNjcm9sbGVkIHRvIGluIHRoaXMgY2FzZS5cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNjcm9sbGFibGVTZWdtZW50UGF0aFtzY3JvbGxhYmxlU2VnbWVudFBhdGgubGVuZ3RoIC0gMV0gIT09XG4gICAgICAgICAgICAgICAgREVGQVVMVF9TRUdNRU5UX0tFWVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxhYmxlU2VnbWVudHMucHVzaChzY3JvbGxhYmxlU2VnbWVudFBhdGgpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjdXJyZW50VHJlZSA9IG5ld1RyZWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtdXRhYmxlLnBhdGNoZWRUcmVlID0gY3VycmVudFRyZWVcbiAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gdXBkYXRlZENhbm9uaWNhbFVybFxuICAgICAgbXV0YWJsZS5zY3JvbGxhYmxlU2VnbWVudHMgPSBzY3JvbGxhYmxlU2VnbWVudHNcbiAgICAgIG11dGFibGUuaGFzaEZyYWdtZW50ID0gaGFzaFxuICAgICAgbXV0YWJsZS5zaG91bGRTY3JvbGwgPSBzaG91bGRTY3JvbGxcblxuICAgICAgcmV0dXJuIGhhbmRsZU11dGFibGUoc3RhdGUsIG11dGFibGUpXG4gICAgfSxcbiAgICAoKSA9PiBzdGF0ZVxuICApXG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVTZWdtZW50c0Zyb21QYXRjaCIsImhhbmRsZUV4dGVybmFsVXJsIiwibmF2aWdhdGVSZWR1Y2VyIiwic3RhdGUiLCJtdXRhYmxlIiwidXJsIiwicGVuZGluZ1B1c2giLCJtcGFOYXZpZ2F0aW9uIiwiY2Fub25pY2FsVXJsIiwic2Nyb2xsYWJsZVNlZ21lbnRzIiwidW5kZWZpbmVkIiwiaGFuZGxlTXV0YWJsZSIsImZsaWdodFJvdXRlclBhdGNoIiwic2VnbWVudHMiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZXMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwicGFyYWxsZWxSb3V0ZUtleSIsInBhcmFsbGVsUm91dGUiLCJlbnRyaWVzIiwiY2hpbGRTZWdtZW50IiwicHVzaCIsInRyaWdnZXJMYXp5RmV0Y2hGb3JMZWFmU2VnbWVudHMiLCJuZXdDYWNoZSIsImN1cnJlbnRDYWNoZSIsImZsaWdodFNlZ21lbnRQYXRoIiwidHJlZVBhdGNoIiwiYXBwbGllZFBhdGNoIiwicnNjIiwicHJlZmV0Y2hSc2MiLCJsb2FkaW5nIiwiTWFwIiwic2VnbWVudFBhdGhzVG9GaWxsIiwibWFwIiwic2VnbWVudFBhdGhzIiwiY2xlYXJDYWNoZU5vZGVEYXRhRm9yU2VnbWVudFBhdGgiLCJoYW5kbGVOYXZpZ2F0aW9uUmVzdWx0IiwicmVzdWx0IiwidGFnIiwiTmF2aWdhdGlvblJlc3VsdFRhZyIsIk1QQSIsIm5ld1VybCIsImRhdGEiLCJOb09wIiwibmV3Q2Fub25pY2FsVXJsIiwib2xkVXJsIiwiVVJMIiwib25seUhhc2hDaGFuZ2UiLCJwYXRobmFtZSIsInNlYXJjaCIsImhhc2giLCJzaG91bGRTY3JvbGwiLCJoYXNoRnJhZ21lbnQiLCJTdWNjZXNzIiwiY2FjaGUiLCJjYWNoZU5vZGUiLCJwYXRjaGVkVHJlZSIsImZsaWdodFJvdXRlclN0YXRlIiwiQXN5bmMiLCJ0aGVuIiwiYXN5bmNSZXN1bHQiLCJhY3Rpb24iLCJpc0V4dGVybmFsVXJsIiwibmF2aWdhdGVUeXBlIiwiYWxsb3dBbGlhc2luZyIsImhyZWYiLCJjcmVhdGVIcmVmRnJvbVVybCIsInBydW5lUHJlZmV0Y2hDYWNoZSIsInByZWZldGNoQ2FjaGUiLCJwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSIsInRvU3RyaW5nIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJuYXZpZ2F0ZVVzaW5nU2VnbWVudENhY2hlIiwidHJlZSIsIm5leHRVcmwiLCJwcmVmZXRjaFZhbHVlcyIsImdldE9yQ3JlYXRlUHJlZmV0Y2hDYWNoZUVudHJ5IiwidHJlZUF0VGltZU9mUHJlZmV0Y2giLCJwcmVmZXRjaFF1ZXVlIiwiYnVtcCIsImZsaWdodERhdGEiLCJjYW5vbmljYWxVcmxPdmVycmlkZSIsInBvc3Rwb25lZCIsIm5hdmlnYXRlZEF0IiwiRGF0ZSIsIm5vdyIsImlzRmlyc3RSZWFkIiwibGFzdFVzZWRUaW1lIiwiYWxpYXNlZCIsInVybFdpdGhDYW5vbmljYWxQYXRobmFtZSIsImhhbmRsZUFsaWFzZWRQcmVmZXRjaEVudHJ5IiwidXBkYXRlZENhbm9uaWNhbFVybCIsInNwbGl0IiwiY3VycmVudFRyZWUiLCJub3JtYWxpemVkRmxpZ2h0RGF0YSIsInBhdGhUb1NlZ21lbnQiLCJzZWVkRGF0YSIsImhlYWQiLCJpc0hlYWRQYXJ0aWFsIiwiaXNSb290UmVuZGVyIiwiZmxpZ2h0U2VnbWVudFBhdGhXaXRoTGVhZGluZ0VtcHR5IiwibmV3VHJlZSIsImFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSIsInRhc2siLCJzdGFydFBQUk5hdmlnYXRpb24iLCJyb3V0ZSIsInBhdGNoZWRSb3V0ZXJTdGF0ZSIsIm5vZGUiLCJkeW5hbWljUmVxdWVzdFRyZWUiLCJkeW5hbWljUmVxdWVzdCIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJvcmlnaW4iLCJsaXN0ZW5Gb3JEeW5hbWljUmVxdWVzdCIsImlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCIsImNyZWF0ZUVtcHR5Q2FjaGVOb2RlIiwiYXBwbGllZCIsInN0YXR1cyIsIlByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyIsInN0YWxlIiwiYXBwbHlGbGlnaHREYXRhIiwiaGFyZE5hdmlnYXRlIiwic2hvdWxkSGFyZE5hdmlnYXRlIiwiaW52YWxpZGF0ZUNhY2hlQmVsb3dGbGlnaHRTZWdtZW50UGF0aCIsInN1YlNlZ21lbnQiLCJzY3JvbGxhYmxlU2VnbWVudFBhdGgiLCJERUZBVUxUX1NFR01FTlRfS0VZIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js": /*!*************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js ***! \*************************************************************************************************************************************************************************/ /***/ ((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 prefetchQueue: function() {\n return prefetchQueue;\n },\n prefetchReducer: function() {\n return prefetchReducer;\n }\n});\nconst _promisequeue = __webpack_require__(/*! ../../promise-queue */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/promise-queue.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ../prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst prefetchQueue = new _promisequeue.PromiseQueue(5);\nconst prefetchReducer = false ? 0 : prefetchReducerImpl;\nfunction identityReducerWhenSegmentCacheIsEnabled(state) {\n // Unlike the old implementation, the Segment Cache doesn't store its data in\n // the router reducer state.\n //\n // This shouldn't be reachable because we wrap the prefetch API in a check,\n // too, which prevents the action from being dispatched. But it's here for\n // clarity + code elimination.\n return state;\n}\nfunction prefetchReducerImpl(state, action) {\n // let's prune the prefetch cache before we do anything else\n (0, _prefetchcacheutils.prunePrefetchCache)(state.prefetchCache);\n const { url } = action;\n (0, _prefetchcacheutils.getOrCreatePrefetchCacheEntry)({\n url,\n nextUrl: state.nextUrl,\n prefetchCache: state.prefetchCache,\n kind: action.kind,\n tree: state.tree,\n allowAliasing: true\n });\n return state;\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=prefetch-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcHJlZmV0Y2gtcmVkdWNlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFVYUEsYUFBYTtlQUFiQTs7SUFFQUMsZUFBZTtlQUFmQTs7OzBDQVBnQjtnREFJdEI7QUFDQSxNQUFNRCxnQkFBZ0IsSUFBSUUsY0FBQUEsWUFBWSxDQUFDO0FBRXZDLE1BQU1ELGtCQUFrQkUsTUFBdUMsR0FDbEVHLENBQXdDQSxHQUN4Q0M7QUFFSixTQUFTRCx5Q0FBNENFLEtBQVE7SUFDM0QsNkVBQTZFO0lBQzdFLDRCQUE0QjtJQUM1QixFQUFFO0lBQ0YsMkVBQTJFO0lBQzNFLDBFQUEwRTtJQUMxRSw4QkFBOEI7SUFDOUIsT0FBT0E7QUFDVDtBQUVBLFNBQVNELG9CQUNQQyxLQUEyQixFQUMzQkMsTUFBc0I7SUFFdEIsNERBQTREO0lBQzVEQyxDQUFBQSxHQUFBQSxvQkFBQUEsa0JBQUFBLEVBQW1CRixNQUFNRyxhQUFhO0lBRXRDLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdIO0lBRWhCSSxDQUFBQSxHQUFBQSxvQkFBQUEsNkJBQUFBLEVBQThCO1FBQzVCRDtRQUNBRSxTQUFTTixNQUFNTSxPQUFPO1FBQ3RCSCxlQUFlSCxNQUFNRyxhQUFhO1FBQ2xDSSxNQUFNTixPQUFPTSxJQUFJO1FBQ2pCQyxNQUFNUixNQUFNUSxJQUFJO1FBQ2hCQyxlQUFlO0lBQ2pCO0lBRUEsT0FBT1Q7QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3ByZWZldGNoLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBQcmVmZXRjaEFjdGlvbixcbiAgUmVkdWNlclN0YXRlLFxuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBQcm9taXNlUXVldWUgfSBmcm9tICcuLi8uLi9wcm9taXNlLXF1ZXVlJ1xuaW1wb3J0IHtcbiAgZ2V0T3JDcmVhdGVQcmVmZXRjaENhY2hlRW50cnksXG4gIHBydW5lUHJlZmV0Y2hDYWNoZSxcbn0gZnJvbSAnLi4vcHJlZmV0Y2gtY2FjaGUtdXRpbHMnXG5leHBvcnQgY29uc3QgcHJlZmV0Y2hRdWV1ZSA9IG5ldyBQcm9taXNlUXVldWUoNSlcblxuZXhwb3J0IGNvbnN0IHByZWZldGNoUmVkdWNlciA9IHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICA/IGlkZW50aXR5UmVkdWNlcldoZW5TZWdtZW50Q2FjaGVJc0VuYWJsZWRcbiAgOiBwcmVmZXRjaFJlZHVjZXJJbXBsXG5cbmZ1bmN0aW9uIGlkZW50aXR5UmVkdWNlcldoZW5TZWdtZW50Q2FjaGVJc0VuYWJsZWQ8VD4oc3RhdGU6IFQpOiBUIHtcbiAgLy8gVW5saWtlIHRoZSBvbGQgaW1wbGVtZW50YXRpb24sIHRoZSBTZWdtZW50IENhY2hlIGRvZXNuJ3Qgc3RvcmUgaXRzIGRhdGEgaW5cbiAgLy8gdGhlIHJvdXRlciByZWR1Y2VyIHN0YXRlLlxuICAvL1xuICAvLyBUaGlzIHNob3VsZG4ndCBiZSByZWFjaGFibGUgYmVjYXVzZSB3ZSB3cmFwIHRoZSBwcmVmZXRjaCBBUEkgaW4gYSBjaGVjayxcbiAgLy8gdG9vLCB3aGljaCBwcmV2ZW50cyB0aGUgYWN0aW9uIGZyb20gYmVpbmcgZGlzcGF0Y2hlZC4gQnV0IGl0J3MgaGVyZSBmb3JcbiAgLy8gY2xhcml0eSArIGNvZGUgZWxpbWluYXRpb24uXG4gIHJldHVybiBzdGF0ZVxufVxuXG5mdW5jdGlvbiBwcmVmZXRjaFJlZHVjZXJJbXBsKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIGFjdGlvbjogUHJlZmV0Y2hBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIC8vIGxldCdzIHBydW5lIHRoZSBwcmVmZXRjaCBjYWNoZSBiZWZvcmUgd2UgZG8gYW55dGhpbmcgZWxzZVxuICBwcnVuZVByZWZldGNoQ2FjaGUoc3RhdGUucHJlZmV0Y2hDYWNoZSlcblxuICBjb25zdCB7IHVybCB9ID0gYWN0aW9uXG5cbiAgZ2V0T3JDcmVhdGVQcmVmZXRjaENhY2hlRW50cnkoe1xuICAgIHVybCxcbiAgICBuZXh0VXJsOiBzdGF0ZS5uZXh0VXJsLFxuICAgIHByZWZldGNoQ2FjaGU6IHN0YXRlLnByZWZldGNoQ2FjaGUsXG4gICAga2luZDogYWN0aW9uLmtpbmQsXG4gICAgdHJlZTogc3RhdGUudHJlZSxcbiAgICBhbGxvd0FsaWFzaW5nOiB0cnVlLFxuICB9KVxuXG4gIHJldHVybiBzdGF0ZVxufVxuIl0sIm5hbWVzIjpbInByZWZldGNoUXVldWUiLCJwcmVmZXRjaFJlZHVjZXIiLCJQcm9taXNlUXVldWUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwiaWRlbnRpdHlSZWR1Y2VyV2hlblNlZ21lbnRDYWNoZUlzRW5hYmxlZCIsInByZWZldGNoUmVkdWNlckltcGwiLCJzdGF0ZSIsImFjdGlvbiIsInBydW5lUHJlZmV0Y2hDYWNoZSIsInByZWZldGNoQ2FjaGUiLCJ1cmwiLCJnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeSIsIm5leHRVcmwiLCJraW5kIiwidHJlZSIsImFsbG93QWxpYXNpbmciXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js": /*!************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js ***! \************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"refreshReducer\", ({\n enumerable: true,\n get: function() {\n return refreshReducer;\n }\n}));\nconst _fetchserverresponse = __webpack_require__(/*! ../fetch-server-response */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ../fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _handlesegmentmismatch = __webpack_require__(/*! ../handle-segment-mismatch */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ../refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\nconst _segmentcache = __webpack_require__(/*! ../../segment-cache */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js\");\nfunction refreshReducer(state, action) {\n const { origin } = action;\n const mutable = {};\n const href = state.canonicalUrl;\n let currentTree = state.tree;\n mutable.preserveCustomHistoryState = false;\n const cache = (0, _approuter.createEmptyCacheNode)();\n // If the current tree was intercepted, the nextUrl should be included in the request.\n // This is to ensure that the refresh request doesn't get intercepted, accidentally triggering the interception route.\n const includeNextUrl = (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree);\n // TODO-APP: verify that `href` is not an external url.\n // Fetch data from the root of the tree.\n cache.lazyData = (0, _fetchserverresponse.fetchServerResponse)(new URL(href, origin), {\n flightRouterState: [\n currentTree[0],\n currentTree[1],\n currentTree[2],\n 'refetch'\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null\n });\n const navigatedAt = Date.now();\n return cache.lazyData.then(async (param)=>{\n let { flightData, canonicalUrl: canonicalUrlOverride } = param;\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n // Remove cache.lazyData as it has been resolved at this point.\n cache.lazyData = null;\n for (const normalizedFlightData of flightData){\n const { tree: treePatch, seedData: cacheNodeSeedData, head, isRootRender } = normalizedFlightData;\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('REFRESH FAILED');\n return state;\n }\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n ''\n ], currentTree, treePatch, state.canonicalUrl);\n if (newTree === null) {\n return (0, _handlesegmentmismatch.handleSegmentMismatch)(state, action, treePatch);\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, href, state.pushRef.pendingPush);\n }\n const canonicalUrlOverrideHref = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : undefined;\n if (canonicalUrlOverride) {\n mutable.canonicalUrl = canonicalUrlOverrideHref;\n }\n // Handles case where prefetch only returns the router tree patch without rendered components.\n if (cacheNodeSeedData !== null) {\n const rsc = cacheNodeSeedData[1];\n const loading = cacheNodeSeedData[3];\n cache.rsc = rsc;\n cache.prefetchRsc = null;\n cache.loading = loading;\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, undefined, treePatch, cacheNodeSeedData, head, undefined);\n if (false) {} else {\n mutable.prefetchCache = new Map();\n }\n }\n await (0, _refetchinactiveparallelsegments.refreshInactiveParallelSegments)({\n navigatedAt,\n state,\n updatedTree: newTree,\n updatedCache: cache,\n includeNextUrl,\n canonicalUrl: mutable.canonicalUrl || state.canonicalUrl\n });\n mutable.cache = cache;\n mutable.patchedTree = newTree;\n currentTree = newTree;\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, ()=>state);\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=refresh-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcmVmcmVzaC1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBb0JnQkE7OztlQUFBQTs7O2lEQXBCb0I7K0NBQ0Y7eURBQ1U7eURBQ0E7NkNBT1Y7MkNBQ0o7MkRBRWdCO3VDQUNUO21EQUNDOytEQUNZOzZEQUNGOzBDQUNWO0FBRS9CLFNBQVNBLGVBQ2RDLEtBQTJCLEVBQzNCQyxNQUFxQjtJQUVyQixNQUFNLEVBQUVDLE1BQU0sRUFBRSxHQUFHRDtJQUNuQixNQUFNRSxVQUFtQixDQUFDO0lBQzFCLE1BQU1DLE9BQU9KLE1BQU1LLFlBQVk7SUFFL0IsSUFBSUMsY0FBY04sTUFBTU8sSUFBSTtJQUU1QkosUUFBUUssMEJBQTBCLEdBQUc7SUFFckMsTUFBTUMsUUFBbUJDLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQTtJQUV6QixzRkFBc0Y7SUFDdEYsc0hBQXNIO0lBQ3RILE1BQU1DLGlCQUFpQkMsQ0FBQUEsR0FBQUEsbUNBQUFBLGlDQUFpQyxFQUFDWixNQUFNTyxJQUFJO0lBRW5FLHVEQUF1RDtJQUN2RCx3Q0FBd0M7SUFDeENFLE1BQU1JLFFBQVEsR0FBR0MsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQixJQUFJQyxJQUFJWCxNQUFNRixTQUFTO1FBQzFEYyxtQkFBbUI7WUFDakJWLFdBQVcsQ0FBQyxFQUFFO1lBQ2RBLFdBQVcsQ0FBQyxFQUFFO1lBQ2RBLFdBQVcsQ0FBQyxFQUFFO1lBQ2Q7U0FDRDtRQUNEVyxTQUFTTixpQkFBaUJYLE1BQU1pQixPQUFPLEdBQUc7SUFDNUM7SUFFQSxNQUFNQyxjQUFjQyxLQUFLQyxHQUFHO0lBQzVCLE9BQU9YLE1BQU1JLFFBQVEsQ0FBQ1EsSUFBSSxDQUN4QjtZQUFPLEVBQUVDLFVBQVUsRUFBRWpCLGNBQWNrQixvQkFBb0IsRUFBRTtRQUN2RCw0REFBNEQ7UUFDNUQsSUFBSSxPQUFPRCxlQUFlLFVBQVU7WUFDbEMsT0FBT0UsQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFBQSxFQUNMeEIsT0FDQUcsU0FDQW1CLFlBQ0F0QixNQUFNeUIsT0FBTyxDQUFDQyxXQUFXO1FBRTdCO1FBRUEsK0RBQStEO1FBQy9EakIsTUFBTUksUUFBUSxHQUFHO1FBRWpCLEtBQUssTUFBTWMsd0JBQXdCTCxXQUFZO1lBQzdDLE1BQU0sRUFDSmYsTUFBTXFCLFNBQVMsRUFDZkMsVUFBVUMsaUJBQWlCLEVBQzNCQyxJQUFJLEVBQ0pDLFlBQVksRUFDYixHQUFHTDtZQUVKLElBQUksQ0FBQ0ssY0FBYztnQkFDakIsb0NBQW9DO2dCQUNwQ0MsUUFBUUMsR0FBRyxDQUFDO2dCQUNaLE9BQU9sQztZQUNUO1lBRUEsTUFBTW1DLFVBQVVDLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFDZDtnQkFDQzthQUFHLEVBQ0o5QixhQUNBc0IsV0FDQTVCLE1BQU1LLFlBQVk7WUFHcEIsSUFBSThCLFlBQVksTUFBTTtnQkFDcEIsT0FBT0UsQ0FBQUEsR0FBQUEsdUJBQUFBLHFCQUFBQSxFQUFzQnJDLE9BQU9DLFFBQVEyQjtZQUM5QztZQUVBLElBQUlVLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFBNEJoQyxhQUFhNkIsVUFBVTtnQkFDckQsT0FBT1gsQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFBQSxFQUNMeEIsT0FDQUcsU0FDQUMsTUFDQUosTUFBTXlCLE9BQU8sQ0FBQ0MsV0FBVztZQUU3QjtZQUVBLE1BQU1hLDJCQUEyQmhCLHVCQUM3QmlCLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JqQix3QkFDbEJrQjtZQUVKLElBQUlsQixzQkFBc0I7Z0JBQ3hCcEIsUUFBUUUsWUFBWSxHQUFHa0M7WUFDekI7WUFFQSw4RkFBOEY7WUFDOUYsSUFBSVQsc0JBQXNCLE1BQU07Z0JBQzlCLE1BQU1ZLE1BQU1aLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ2hDLE1BQU1hLFVBQVViLGlCQUFpQixDQUFDLEVBQUU7Z0JBQ3BDckIsTUFBTWlDLEdBQUcsR0FBR0E7Z0JBQ1pqQyxNQUFNbUMsV0FBVyxHQUFHO2dCQUNwQm5DLE1BQU1rQyxPQUFPLEdBQUdBO2dCQUNoQkUsQ0FBQUEsR0FBQUEsK0JBQUFBLDZCQUFBQSxFQUNFM0IsYUFDQVQsT0FDQSxXQUVBbUIsV0FDQUUsbUJBQ0FDLE1BQ0FVO2dCQUVGLElBQUlLLEtBQXVDLEVBQUUsRUFFNUMsTUFBTTtvQkFDTDNDLFFBQVErQyxhQUFhLEdBQUcsSUFBSUM7Z0JBQzlCO1lBQ0Y7WUFFQSxNQUFNQyxDQUFBQSxHQUFBQSxpQ0FBQUEsK0JBQUFBLEVBQWdDO2dCQUNwQ2xDO2dCQUNBbEI7Z0JBQ0FxRCxhQUFhbEI7Z0JBQ2JtQixjQUFjN0M7Z0JBQ2RFO2dCQUNBTixjQUFjRixRQUFRRSxZQUFZLElBQUlMLE1BQU1LLFlBQVk7WUFDMUQ7WUFFQUYsUUFBUU0sS0FBSyxHQUFHQTtZQUNoQk4sUUFBUW9ELFdBQVcsR0FBR3BCO1lBRXRCN0IsY0FBYzZCO1FBQ2hCO1FBRUEsT0FBT3FCLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWN4RCxPQUFPRztJQUM5QixHQUNBLElBQU1IO0FBRVYiLCJzb3VyY2VzIjpbIi9ob21lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWR1Y2Vycy9yZWZyZXNoLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZmV0Y2hTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJy4uL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcbmltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUgfSBmcm9tICcuLi9hcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSdcbmltcG9ydCB7IGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCB9IGZyb20gJy4uL2lzLW5hdmlnYXRpbmctdG8tbmV3LXJvb3QtbGF5b3V0J1xuaW1wb3J0IHR5cGUge1xuICBNdXRhYmxlLFxuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgUmVkdWNlclN0YXRlLFxuICBSZWZyZXNoQWN0aW9uLFxufSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGhhbmRsZUV4dGVybmFsVXJsIH0gZnJvbSAnLi9uYXZpZ2F0ZS1yZWR1Y2VyJ1xuaW1wb3J0IHsgaGFuZGxlTXV0YWJsZSB9IGZyb20gJy4uL2hhbmRsZS1tdXRhYmxlJ1xuaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkIH0gZnJvbSAnLi4vZmlsbC1sYXp5LWl0ZW1zLXRpbGwtbGVhZi13aXRoLWhlYWQnXG5pbXBvcnQgeyBjcmVhdGVFbXB0eUNhY2hlTm9kZSB9IGZyb20gJy4uLy4uL2FwcC1yb3V0ZXInXG5pbXBvcnQgeyBoYW5kbGVTZWdtZW50TWlzbWF0Y2ggfSBmcm9tICcuLi9oYW5kbGUtc2VnbWVudC1taXNtYXRjaCdcbmltcG9ydCB7IGhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSB9IGZyb20gJy4vaGFzLWludGVyY2VwdGlvbi1yb3V0ZS1pbi1jdXJyZW50LXRyZWUnXG5pbXBvcnQgeyByZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzIH0gZnJvbSAnLi4vcmVmZXRjaC1pbmFjdGl2ZS1wYXJhbGxlbC1zZWdtZW50cydcbmltcG9ydCB7IHJldmFsaWRhdGVFbnRpcmVDYWNoZSB9IGZyb20gJy4uLy4uL3NlZ21lbnQtY2FjaGUnXG5cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFJlZnJlc2hBY3Rpb25cbik6IFJlZHVjZXJTdGF0ZSB7XG4gIGNvbnN0IHsgb3JpZ2luIH0gPSBhY3Rpb25cbiAgY29uc3QgbXV0YWJsZTogTXV0YWJsZSA9IHt9XG4gIGNvbnN0IGhyZWYgPSBzdGF0ZS5jYW5vbmljYWxVcmxcblxuICBsZXQgY3VycmVudFRyZWUgPSBzdGF0ZS50cmVlXG5cbiAgbXV0YWJsZS5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSA9IGZhbHNlXG5cbiAgY29uc3QgY2FjaGU6IENhY2hlTm9kZSA9IGNyZWF0ZUVtcHR5Q2FjaGVOb2RlKClcblxuICAvLyBJZiB0aGUgY3VycmVudCB0cmVlIHdhcyBpbnRlcmNlcHRlZCwgdGhlIG5leHRVcmwgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSByZXF1ZXN0LlxuICAvLyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSByZWZyZXNoIHJlcXVlc3QgZG9lc24ndCBnZXQgaW50ZXJjZXB0ZWQsIGFjY2lkZW50YWxseSB0cmlnZ2VyaW5nIHRoZSBpbnRlcmNlcHRpb24gcm91dGUuXG4gIGNvbnN0IGluY2x1ZGVOZXh0VXJsID0gaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKHN0YXRlLnRyZWUpXG5cbiAgLy8gVE9ETy1BUFA6IHZlcmlmeSB0aGF0IGBocmVmYCBpcyBub3QgYW4gZXh0ZXJuYWwgdXJsLlxuICAvLyBGZXRjaCBkYXRhIGZyb20gdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gIGNhY2hlLmxhenlEYXRhID0gZmV0Y2hTZXJ2ZXJSZXNwb25zZShuZXcgVVJMKGhyZWYsIG9yaWdpbiksIHtcbiAgICBmbGlnaHRSb3V0ZXJTdGF0ZTogW1xuICAgICAgY3VycmVudFRyZWVbMF0sXG4gICAgICBjdXJyZW50VHJlZVsxXSxcbiAgICAgIGN1cnJlbnRUcmVlWzJdLFxuICAgICAgJ3JlZmV0Y2gnLFxuICAgIF0sXG4gICAgbmV4dFVybDogaW5jbHVkZU5leHRVcmwgPyBzdGF0ZS5uZXh0VXJsIDogbnVsbCxcbiAgfSlcblxuICBjb25zdCBuYXZpZ2F0ZWRBdCA9IERhdGUubm93KClcbiAgcmV0dXJuIGNhY2hlLmxhenlEYXRhLnRoZW4oXG4gICAgYXN5bmMgKHsgZmxpZ2h0RGF0YSwgY2Fub25pY2FsVXJsOiBjYW5vbmljYWxVcmxPdmVycmlkZSB9KSA9PiB7XG4gICAgICAvLyBIYW5kbGUgY2FzZSB3aGVuIG5hdmlnYXRpbmcgdG8gcGFnZSBpbiBgcGFnZXNgIGZyb20gYGFwcGBcbiAgICAgIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGhhbmRsZUV4dGVybmFsVXJsKFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgZmxpZ2h0RGF0YSxcbiAgICAgICAgICBzdGF0ZS5wdXNoUmVmLnBlbmRpbmdQdXNoXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIGNhY2hlLmxhenlEYXRhIGFzIGl0IGhhcyBiZWVuIHJlc29sdmVkIGF0IHRoaXMgcG9pbnQuXG4gICAgICBjYWNoZS5sYXp5RGF0YSA9IG51bGxcblxuICAgICAgZm9yIChjb25zdCBub3JtYWxpemVkRmxpZ2h0RGF0YSBvZiBmbGlnaHREYXRhKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0cmVlOiB0cmVlUGF0Y2gsXG4gICAgICAgICAgc2VlZERhdGE6IGNhY2hlTm9kZVNlZWREYXRhLFxuICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgaXNSb290UmVuZGVyLFxuICAgICAgICB9ID0gbm9ybWFsaXplZEZsaWdodERhdGFcblxuICAgICAgICBpZiAoIWlzUm9vdFJlbmRlcikge1xuICAgICAgICAgIC8vIFRPRE8tQVBQOiBoYW5kbGUgdGhpcyBjYXNlIGJldHRlclxuICAgICAgICAgIGNvbnNvbGUubG9nKCdSRUZSRVNIIEZBSUxFRCcpXG4gICAgICAgICAgcmV0dXJuIHN0YXRlXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZXdUcmVlID0gYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlKFxuICAgICAgICAgIC8vIFRPRE8tQVBQOiByZW1vdmUgJydcbiAgICAgICAgICBbJyddLFxuICAgICAgICAgIGN1cnJlbnRUcmVlLFxuICAgICAgICAgIHRyZWVQYXRjaCxcbiAgICAgICAgICBzdGF0ZS5jYW5vbmljYWxVcmxcbiAgICAgICAgKVxuXG4gICAgICAgIGlmIChuZXdUcmVlID09PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGhhbmRsZVNlZ21lbnRNaXNtYXRjaChzdGF0ZSwgYWN0aW9uLCB0cmVlUGF0Y2gpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KGN1cnJlbnRUcmVlLCBuZXdUcmVlKSkge1xuICAgICAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgbXV0YWJsZSxcbiAgICAgICAgICAgIGhyZWYsXG4gICAgICAgICAgICBzdGF0ZS5wdXNoUmVmLnBlbmRpbmdQdXNoXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmID0gY2Fub25pY2FsVXJsT3ZlcnJpZGVcbiAgICAgICAgICA/IGNyZWF0ZUhyZWZGcm9tVXJsKGNhbm9uaWNhbFVybE92ZXJyaWRlKVxuICAgICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICAgICAgaWYgKGNhbm9uaWNhbFVybE92ZXJyaWRlKSB7XG4gICAgICAgICAgbXV0YWJsZS5jYW5vbmljYWxVcmwgPSBjYW5vbmljYWxVcmxPdmVycmlkZUhyZWZcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZXMgY2FzZSB3aGVyZSBwcmVmZXRjaCBvbmx5IHJldHVybnMgdGhlIHJvdXRlciB0cmVlIHBhdGNoIHdpdGhvdXQgcmVuZGVyZWQgY29tcG9uZW50cy5cbiAgICAgICAgaWYgKGNhY2hlTm9kZVNlZWREYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgcnNjID0gY2FjaGVOb2RlU2VlZERhdGFbMV1cbiAgICAgICAgICBjb25zdCBsb2FkaW5nID0gY2FjaGVOb2RlU2VlZERhdGFbM11cbiAgICAgICAgICBjYWNoZS5yc2MgPSByc2NcbiAgICAgICAgICBjYWNoZS5wcmVmZXRjaFJzYyA9IG51bGxcbiAgICAgICAgICBjYWNoZS5sb2FkaW5nID0gbG9hZGluZ1xuICAgICAgICAgIGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKFxuICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgICAgIC8vIEV4aXN0aW5nIGNhY2hlIGlzIG5vdCBwYXNzZWQgaW4gYXMgYHJvdXRlci5yZWZyZXNoKClgIGhhcyB0byBpbnZhbGlkYXRlIHRoZSBlbnRpcmUgY2FjaGUuXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgICBjYWNoZU5vZGVTZWVkRGF0YSxcbiAgICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICApXG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSkge1xuICAgICAgICAgICAgcmV2YWxpZGF0ZUVudGlyZUNhY2hlKHN0YXRlLm5leHRVcmwsIG5ld1RyZWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG11dGFibGUucHJlZmV0Y2hDYWNoZSA9IG5ldyBNYXAoKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMoe1xuICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgIHVwZGF0ZWRUcmVlOiBuZXdUcmVlLFxuICAgICAgICAgIHVwZGF0ZWRDYWNoZTogY2FjaGUsXG4gICAgICAgICAgaW5jbHVkZU5leHRVcmwsXG4gICAgICAgICAgY2Fub25pY2FsVXJsOiBtdXRhYmxlLmNhbm9uaWNhbFVybCB8fCBzdGF0ZS5jYW5vbmljYWxVcmwsXG4gICAgICAgIH0pXG5cbiAgICAgICAgbXV0YWJsZS5jYWNoZSA9IGNhY2hlXG4gICAgICAgIG11dGFibGUucGF0Y2hlZFRyZWUgPSBuZXdUcmVlXG5cbiAgICAgICAgY3VycmVudFRyZWUgPSBuZXdUcmVlXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBoYW5kbGVNdXRhYmxlKHN0YXRlLCBtdXRhYmxlKVxuICAgIH0sXG4gICAgKCkgPT4gc3RhdGVcbiAgKVxufVxuIl0sIm5hbWVzIjpbInJlZnJlc2hSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJvcmlnaW4iLCJtdXRhYmxlIiwiaHJlZiIsImNhbm9uaWNhbFVybCIsImN1cnJlbnRUcmVlIiwidHJlZSIsInByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlIiwiY2FjaGUiLCJjcmVhdGVFbXB0eUNhY2hlTm9kZSIsImluY2x1ZGVOZXh0VXJsIiwiaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlIiwibGF6eURhdGEiLCJmZXRjaFNlcnZlclJlc3BvbnNlIiwiVVJMIiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJuZXh0VXJsIiwibmF2aWdhdGVkQXQiLCJEYXRlIiwibm93IiwidGhlbiIsImZsaWdodERhdGEiLCJjYW5vbmljYWxVcmxPdmVycmlkZSIsImhhbmRsZUV4dGVybmFsVXJsIiwicHVzaFJlZiIsInBlbmRpbmdQdXNoIiwibm9ybWFsaXplZEZsaWdodERhdGEiLCJ0cmVlUGF0Y2giLCJzZWVkRGF0YSIsImNhY2hlTm9kZVNlZWREYXRhIiwiaGVhZCIsImlzUm9vdFJlbmRlciIsImNvbnNvbGUiLCJsb2ciLCJuZXdUcmVlIiwiYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIiwiaGFuZGxlU2VnbWVudE1pc21hdGNoIiwiaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0IiwiY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmIiwiY3JlYXRlSHJlZkZyb21VcmwiLCJ1bmRlZmluZWQiLCJyc2MiLCJsb2FkaW5nIiwicHJlZmV0Y2hSc2MiLCJmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEUiLCJyZXZhbGlkYXRlRW50aXJlQ2FjaGUiLCJwcmVmZXRjaENhY2hlIiwiTWFwIiwicmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyIsInVwZGF0ZWRUcmVlIiwidXBkYXRlZENhY2hlIiwicGF0Y2hlZFRyZWUiLCJoYW5kbGVNdXRhYmxlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js": /*!************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js ***! \************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"restoreReducer\", ({\n enumerable: true,\n get: function() {\n return restoreReducer;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _computechangedpath = __webpack_require__(/*! ../compute-changed-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js\");\nconst _pprnavigations = __webpack_require__(/*! ../ppr-navigations */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js\");\nfunction restoreReducer(state, action) {\n const { url, tree } = action;\n const href = (0, _createhreffromurl.createHrefFromUrl)(url);\n // This action is used to restore the router state from the history state.\n // However, it's possible that the history state no longer contains the `FlightRouterState`.\n // We will copy over the internal state on pushState/replaceState events, but if a history entry\n // occurred before hydration, or if the user navigated to a hash using a regular anchor link,\n // the history state will not contain the `FlightRouterState`.\n // In this case, we'll continue to use the existing tree so the router doesn't get into an invalid state.\n const treeToRestore = tree || state.tree;\n const oldCache = state.cache;\n const newCache = false ? // prevents an unnecessary flash back to PPR state during a\n // back/forward navigation.\n 0 : oldCache;\n var _extractPathFromFlightRouterState;\n return {\n // Set canonical url\n canonicalUrl: href,\n pushRef: {\n pendingPush: false,\n mpaNavigation: false,\n // Ensures that the custom history state that was set is preserved when applying this update.\n preserveCustomHistoryState: true\n },\n focusAndScrollRef: state.focusAndScrollRef,\n cache: newCache,\n prefetchCache: state.prefetchCache,\n // Restore provided tree\n tree: treeToRestore,\n nextUrl: (_extractPathFromFlightRouterState = (0, _computechangedpath.extractPathFromFlightRouterState)(treeToRestore)) != null ? _extractPathFromFlightRouterState : url.pathname\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=restore-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcmVzdG9yZS1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7a0RBU2dCQTs7O2VBQUFBOzs7K0NBVGtCO2dEQU1lOzRDQUNJO0FBRTlDLFNBQVNBLGVBQ2RDLEtBQTJCLEVBQzNCQyxNQUFxQjtJQUVyQixNQUFNLEVBQUVDLEdBQUcsRUFBRUMsSUFBSSxFQUFFLEdBQUdGO0lBQ3RCLE1BQU1HLE9BQU9DLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JIO0lBQy9CLDBFQUEwRTtJQUMxRSw0RkFBNEY7SUFDNUYsZ0dBQWdHO0lBQ2hHLDZGQUE2RjtJQUM3Riw4REFBOEQ7SUFDOUQseUdBQXlHO0lBQ3pHLE1BQU1JLGdCQUFnQkgsUUFBUUgsTUFBTUcsSUFBSTtJQUV4QyxNQUFNSSxXQUFXUCxNQUFNUSxLQUFLO0lBQzVCLE1BQU1DLFdBQVdDLE1BQXNCLEdBRW5DLDJEQUMyRDtJQUMzRCwyQkFBMkI7SUFDM0JHLENBQTZEUCxHQUM3REM7UUFnQk9PO0lBZFgsT0FBTztRQUNMLG9CQUFvQjtRQUNwQkMsY0FBY1g7UUFDZFksU0FBUztZQUNQQyxhQUFhO1lBQ2JDLGVBQWU7WUFDZiw2RkFBNkY7WUFDN0ZDLDRCQUE0QjtRQUM5QjtRQUNBQyxtQkFBbUJwQixNQUFNb0IsaUJBQWlCO1FBQzFDWixPQUFPQztRQUNQWSxlQUFlckIsTUFBTXFCLGFBQWE7UUFDbEMsd0JBQXdCO1FBQ3hCbEIsTUFBTUc7UUFDTmdCLFNBQVNSLENBQUFBLG9DQUFBQSxDQUFBQSxHQUFBQSxvQkFBQUEsZ0NBQUFBLEVBQWlDUixjQUFBQSxLQUFBQSxPQUFqQ1Esb0NBQW1EWixJQUFJcUIsUUFBUTtJQUMxRTtBQUNGIiwic291cmNlcyI6WyIvaG9tZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvcmVzdG9yZS1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgdHlwZSB7XG4gIFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBSZWR1Y2VyU3RhdGUsXG4gIFJlc3RvcmVBY3Rpb24sXG59IGZyb20gJy4uL3JvdXRlci1yZWR1Y2VyLXR5cGVzJ1xuaW1wb3J0IHsgZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi9jb21wdXRlLWNoYW5nZWQtcGF0aCdcbmltcG9ydCB7IHVwZGF0ZUNhY2hlTm9kZU9uUG9wc3RhdGVSZXN0b3JhdGlvbiB9IGZyb20gJy4uL3Bwci1uYXZpZ2F0aW9ucydcblxuZXhwb3J0IGZ1bmN0aW9uIHJlc3RvcmVSZWR1Y2VyKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIGFjdGlvbjogUmVzdG9yZUFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgY29uc3QgeyB1cmwsIHRyZWUgfSA9IGFjdGlvblxuICBjb25zdCBocmVmID0gY3JlYXRlSHJlZkZyb21VcmwodXJsKVxuICAvLyBUaGlzIGFjdGlvbiBpcyB1c2VkIHRvIHJlc3RvcmUgdGhlIHJvdXRlciBzdGF0ZSBmcm9tIHRoZSBoaXN0b3J5IHN0YXRlLlxuICAvLyBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGhpc3Rvcnkgc3RhdGUgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBgRmxpZ2h0Um91dGVyU3RhdGVgLlxuICAvLyBXZSB3aWxsIGNvcHkgb3ZlciB0aGUgaW50ZXJuYWwgc3RhdGUgb24gcHVzaFN0YXRlL3JlcGxhY2VTdGF0ZSBldmVudHMsIGJ1dCBpZiBhIGhpc3RvcnkgZW50cnlcbiAgLy8gb2NjdXJyZWQgYmVmb3JlIGh5ZHJhdGlvbiwgb3IgaWYgdGhlIHVzZXIgbmF2aWdhdGVkIHRvIGEgaGFzaCB1c2luZyBhIHJlZ3VsYXIgYW5jaG9yIGxpbmssXG4gIC8vIHRoZSBoaXN0b3J5IHN0YXRlIHdpbGwgbm90IGNvbnRhaW4gdGhlIGBGbGlnaHRSb3V0ZXJTdGF0ZWAuXG4gIC8vIEluIHRoaXMgY2FzZSwgd2UnbGwgY29udGludWUgdG8gdXNlIHRoZSBleGlzdGluZyB0cmVlIHNvIHRoZSByb3V0ZXIgZG9lc24ndCBnZXQgaW50byBhbiBpbnZhbGlkIHN0YXRlLlxuICBjb25zdCB0cmVlVG9SZXN0b3JlID0gdHJlZSB8fCBzdGF0ZS50cmVlXG5cbiAgY29uc3Qgb2xkQ2FjaGUgPSBzdGF0ZS5jYWNoZVxuICBjb25zdCBuZXdDYWNoZSA9IHByb2Nlc3MuZW52Ll9fTkVYVF9QUFJcbiAgICA/IC8vIFdoZW4gUFBSIGlzIGVuYWJsZWQsIHdlIHVwZGF0ZSB0aGUgY2FjaGUgdG8gZHJvcCB0aGUgcHJlZmV0Y2hcbiAgICAgIC8vIGRhdGEgZm9yIGFueSBzZWdtZW50IHdob3NlIGR5bmFtaWMgZGF0YSB3YXMgYWxyZWFkeSByZWNlaXZlZC4gVGhpc1xuICAgICAgLy8gcHJldmVudHMgYW4gdW5uZWNlc3NhcnkgZmxhc2ggYmFjayB0byBQUFIgc3RhdGUgZHVyaW5nIGFcbiAgICAgIC8vIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLlxuICAgICAgdXBkYXRlQ2FjaGVOb2RlT25Qb3BzdGF0ZVJlc3RvcmF0aW9uKG9sZENhY2hlLCB0cmVlVG9SZXN0b3JlKVxuICAgIDogb2xkQ2FjaGVcblxuICByZXR1cm4ge1xuICAgIC8vIFNldCBjYW5vbmljYWwgdXJsXG4gICAgY2Fub25pY2FsVXJsOiBocmVmLFxuICAgIHB1c2hSZWY6IHtcbiAgICAgIHBlbmRpbmdQdXNoOiBmYWxzZSxcbiAgICAgIG1wYU5hdmlnYXRpb246IGZhbHNlLFxuICAgICAgLy8gRW5zdXJlcyB0aGF0IHRoZSBjdXN0b20gaGlzdG9yeSBzdGF0ZSB0aGF0IHdhcyBzZXQgaXMgcHJlc2VydmVkIHdoZW4gYXBwbHlpbmcgdGhpcyB1cGRhdGUuXG4gICAgICBwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTogdHJ1ZSxcbiAgICB9LFxuICAgIGZvY3VzQW5kU2Nyb2xsUmVmOiBzdGF0ZS5mb2N1c0FuZFNjcm9sbFJlZixcbiAgICBjYWNoZTogbmV3Q2FjaGUsXG4gICAgcHJlZmV0Y2hDYWNoZTogc3RhdGUucHJlZmV0Y2hDYWNoZSxcbiAgICAvLyBSZXN0b3JlIHByb3ZpZGVkIHRyZWVcbiAgICB0cmVlOiB0cmVlVG9SZXN0b3JlLFxuICAgIG5leHRVcmw6IGV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlKHRyZWVUb1Jlc3RvcmUpID8/IHVybC5wYXRobmFtZSxcbiAgfVxufVxuIl0sIm5hbWVzIjpbInJlc3RvcmVSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJ1cmwiLCJ0cmVlIiwiaHJlZiIsImNyZWF0ZUhyZWZGcm9tVXJsIiwidHJlZVRvUmVzdG9yZSIsIm9sZENhY2hlIiwiY2FjaGUiLCJuZXdDYWNoZSIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUFBSIiwidXBkYXRlQ2FjaGVOb2RlT25Qb3BzdGF0ZVJlc3RvcmF0aW9uIiwiZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUiLCJjYW5vbmljYWxVcmwiLCJwdXNoUmVmIiwicGVuZGluZ1B1c2giLCJtcGFOYXZpZ2F0aW9uIiwicHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUiLCJmb2N1c0FuZFNjcm9sbFJlZiIsInByZWZldGNoQ2FjaGUiLCJuZXh0VXJsIiwicGF0aG5hbWUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js": /*!******************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js ***! \******************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"serverActionReducer\", ({\n enumerable: true,\n get: function() {\n return serverActionReducer;\n }\n}));\nconst _appcallserver = __webpack_require__(/*! ../../../app-call-server */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-call-server.js\");\nconst _appfindsourcemapurl = __webpack_require__(/*! ../../../app-find-source-map-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/app-find-source-map-url.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../app-router-headers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js\");\nconst _unrecognizedactionerror = __webpack_require__(/*! ../../unrecognized-action-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unrecognized-action-error.js\");\nconst _client = __webpack_require__(/*! react-server-dom-webpack/client */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-server-dom-webpack/client.browser.js\");\nconst _routerreducertypes = __webpack_require__(/*! ../router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _assignlocation = __webpack_require__(/*! ../../../assign-location */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/assign-location.js\");\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _filllazyitemstillleafwithhead = __webpack_require__(/*! ../fill-lazy-items-till-leaf-with-head */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nconst _hasinterceptionrouteincurrenttree = __webpack_require__(/*! ./has-interception-route-in-current-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js\");\nconst _handlesegmentmismatch = __webpack_require__(/*! ../handle-segment-mismatch */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-segment-mismatch.js\");\nconst _refetchinactiveparallelsegments = __webpack_require__(/*! ../refetch-inactive-parallel-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\");\nconst _flightdatahelpers = __webpack_require__(/*! ../../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nconst _redirect = __webpack_require__(/*! ../../redirect */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect.js\");\nconst _redirecterror = __webpack_require__(/*! ../../redirect-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/redirect-error.js\");\nconst _prefetchcacheutils = __webpack_require__(/*! ../prefetch-cache-utils */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/prefetch-cache-utils.js\");\nconst _removebasepath = __webpack_require__(/*! ../../../remove-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/remove-base-path.js\");\nconst _hasbasepath = __webpack_require__(/*! ../../../has-base-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/has-base-path.js\");\nconst _serverreferenceinfo = __webpack_require__(/*! ../../../../shared/lib/server-reference-info */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/server-reference-info.js\");\nconst _segmentcache = __webpack_require__(/*! ../../segment-cache */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js\");\nconst createFromFetch = _client.createFromFetch;\nasync function fetchServerAction(state, nextUrl, param) {\n let { actionId, actionArgs } = param;\n const temporaryReferences = (0, _client.createTemporaryReferenceSet)();\n const info = (0, _serverreferenceinfo.extractInfoFromServerReferenceId)(actionId);\n // TODO: Currently, we're only omitting unused args for the experimental \"use\n // cache\" functions. Once the server reference info byte feature is stable, we\n // should apply this to server actions as well.\n const usedArgs = info.type === 'use-cache' ? (0, _serverreferenceinfo.omitUnusedArgs)(actionArgs, info) : actionArgs;\n const body = await (0, _client.encodeReply)(usedArgs, {\n temporaryReferences\n });\n const res = await fetch(state.canonicalUrl, {\n method: 'POST',\n headers: {\n Accept: _approuterheaders.RSC_CONTENT_TYPE_HEADER,\n [_approuterheaders.ACTION_HEADER]: actionId,\n [_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(state.tree),\n ... false ? 0 : {},\n ...nextUrl ? {\n [_approuterheaders.NEXT_URL]: nextUrl\n } : {}\n },\n body\n });\n // Handle server actions that the server didn't recognize.\n const unrecognizedActionHeader = res.headers.get(_approuterheaders.NEXT_ACTION_NOT_FOUND_HEADER);\n if (unrecognizedActionHeader === '1') {\n throw Object.defineProperty(new _unrecognizedactionerror.UnrecognizedActionError('Server Action \"' + actionId + '\" was not found on the server. \\nRead more: https://nextjs.org/docs/messages/failed-to-find-server-action'), \"__NEXT_ERROR_CODE\", {\n value: \"E715\",\n enumerable: false,\n configurable: true\n });\n }\n const redirectHeader = res.headers.get('x-action-redirect');\n const [location, _redirectType] = (redirectHeader == null ? void 0 : redirectHeader.split(';')) || [];\n let redirectType;\n switch(_redirectType){\n case 'push':\n redirectType = _redirecterror.RedirectType.push;\n break;\n case 'replace':\n redirectType = _redirecterror.RedirectType.replace;\n break;\n default:\n redirectType = undefined;\n }\n const isPrerender = !!res.headers.get(_approuterheaders.NEXT_IS_PRERENDER_HEADER);\n let revalidatedParts;\n try {\n const revalidatedHeader = JSON.parse(res.headers.get('x-action-revalidated') || '[[],0,0]');\n revalidatedParts = {\n paths: revalidatedHeader[0] || [],\n tag: !!revalidatedHeader[1],\n cookie: revalidatedHeader[2]\n };\n } catch (e) {\n revalidatedParts = NO_REVALIDATED_PARTS;\n }\n const redirectLocation = location ? (0, _assignlocation.assignLocation)(location, new URL(state.canonicalUrl, window.location.href)) : undefined;\n const contentType = res.headers.get('content-type');\n const isRscResponse = !!(contentType && contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER));\n // Handle invalid server action responses.\n // A valid response must have `content-type: text/x-component`, unless it's an external redirect.\n // (external redirects have an 'x-action-redirect' header, but the body is an empty 'text/plain')\n if (!isRscResponse && !redirectLocation) {\n // The server can respond with a text/plain error message, but we'll fallback to something generic\n // if there isn't one.\n const message = res.status >= 400 && contentType === 'text/plain' ? await res.text() : 'An unexpected response was received from the server.';\n throw Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n }\n let actionResult;\n let actionFlightData;\n if (isRscResponse) {\n const response = await createFromFetch(Promise.resolve(res), {\n callServer: _appcallserver.callServer,\n findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,\n temporaryReferences\n });\n // An internal redirect can send an RSC response, but does not have a useful `actionResult`.\n actionResult = redirectLocation ? undefined : response.a;\n actionFlightData = (0, _flightdatahelpers.normalizeFlightData)(response.f);\n } else {\n // An external redirect doesn't contain RSC data.\n actionResult = undefined;\n actionFlightData = undefined;\n }\n return {\n actionResult,\n actionFlightData,\n redirectLocation,\n redirectType,\n revalidatedParts,\n isPrerender\n };\n}\nconst NO_REVALIDATED_PARTS = {\n paths: [],\n tag: false,\n cookie: false\n};\nfunction serverActionReducer(state, action) {\n const { resolve, reject } = action;\n const mutable = {};\n let currentTree = state.tree;\n mutable.preserveCustomHistoryState = false;\n // only pass along the `nextUrl` param (used for interception routes) if the current route was intercepted.\n // If the route has been intercepted, the action should be as well.\n // Otherwise the server action might be intercepted with the wrong action id\n // (ie, one that corresponds with the intercepted route)\n const nextUrl = state.nextUrl && (0, _hasinterceptionrouteincurrenttree.hasInterceptionRouteInCurrentTree)(state.tree) ? state.nextUrl : null;\n const navigatedAt = Date.now();\n return fetchServerAction(state, nextUrl, action).then(async (param)=>{\n let { actionResult, actionFlightData: flightData, redirectLocation, redirectType, isPrerender, revalidatedParts } = param;\n let redirectHref;\n // honor the redirect type instead of defaulting to push in case of server actions.\n if (redirectLocation) {\n if (redirectType === _redirecterror.RedirectType.replace) {\n state.pushRef.pendingPush = false;\n mutable.pendingPush = false;\n } else {\n state.pushRef.pendingPush = true;\n mutable.pendingPush = true;\n }\n redirectHref = (0, _createhreffromurl.createHrefFromUrl)(redirectLocation, false);\n mutable.canonicalUrl = redirectHref;\n }\n if (!flightData) {\n resolve(actionResult);\n // If there is a redirect but no flight data we need to do a mpaNavigation.\n if (redirectLocation) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, redirectLocation.href, state.pushRef.pendingPush);\n }\n return state;\n }\n if (typeof flightData === 'string') {\n // Handle case when navigating to page in `pages` from `app`\n resolve(actionResult);\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n const actionRevalidated = revalidatedParts.paths.length > 0 || revalidatedParts.tag || revalidatedParts.cookie;\n for (const normalizedFlightData of flightData){\n const { tree: treePatch, seedData: cacheNodeSeedData, head, isRootRender } = normalizedFlightData;\n if (!isRootRender) {\n // TODO-APP: handle this case better\n console.log('SERVER ACTION APPLY FAILED');\n resolve(actionResult);\n return state;\n }\n // Given the path can only have two items the items are only the router state and rsc for the root.\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n ''\n ], currentTree, treePatch, redirectHref ? redirectHref : state.canonicalUrl);\n if (newTree === null) {\n resolve(actionResult);\n return (0, _handlesegmentmismatch.handleSegmentMismatch)(state, action, treePatch);\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n resolve(actionResult);\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, redirectHref || state.canonicalUrl, state.pushRef.pendingPush);\n }\n // The server sent back RSC data for the server action, so we need to apply it to the cache.\n if (cacheNodeSeedData !== null) {\n const rsc = cacheNodeSeedData[1];\n const cache = (0, _approuter.createEmptyCacheNode)();\n cache.rsc = rsc;\n cache.prefetchRsc = null;\n cache.loading = cacheNodeSeedData[3];\n (0, _filllazyitemstillleafwithhead.fillLazyItemsTillLeafWithHead)(navigatedAt, cache, undefined, treePatch, cacheNodeSeedData, head, undefined);\n mutable.cache = cache;\n if (false) {} else {\n mutable.prefetchCache = new Map();\n }\n if (actionRevalidated) {\n await (0, _refetchinactiveparallelsegments.refreshInactiveParallelSegments)({\n navigatedAt,\n state,\n updatedTree: newTree,\n updatedCache: cache,\n includeNextUrl: Boolean(nextUrl),\n canonicalUrl: mutable.canonicalUrl || state.canonicalUrl\n });\n }\n }\n mutable.patchedTree = newTree;\n currentTree = newTree;\n }\n if (redirectLocation && redirectHref) {\n if ( true && !actionRevalidated) {\n // Because the RedirectBoundary will trigger a navigation, we need to seed the prefetch cache\n // with the FlightData that we got from the server action for the target page, so that it's\n // available when the page is navigated to and doesn't need to be re-fetched.\n // We only do this if the server action didn't revalidate any data, as in that case the\n // client cache will be cleared and the data will be re-fetched anyway.\n // NOTE: We don't do this in the Segment Cache implementation.\n // Dynamic data should never be placed into the cache, unless it's\n // \"converted\" to static data using . What we\n // do instead is re-prefetch links and forms whenever the cache is\n // invalidated.\n (0, _prefetchcacheutils.createSeededPrefetchCacheEntry)({\n url: redirectLocation,\n data: {\n flightData,\n canonicalUrl: undefined,\n couldBeIntercepted: false,\n prerendered: false,\n postponed: false,\n // TODO: We should be able to set this if the server action\n // returned a fully static response.\n staleTime: -1\n },\n tree: state.tree,\n prefetchCache: state.prefetchCache,\n nextUrl: state.nextUrl,\n kind: isPrerender ? _routerreducertypes.PrefetchKind.FULL : _routerreducertypes.PrefetchKind.AUTO\n });\n mutable.prefetchCache = state.prefetchCache;\n }\n // If the action triggered a redirect, the action promise will be rejected with\n // a redirect so that it's handled by RedirectBoundary as we won't have a valid\n // action result to resolve the promise with. This will effectively reset the state of\n // the component that called the action as the error boundary will remount the tree.\n // The status code doesn't matter here as the action handler will have already sent\n // a response with the correct status code.\n reject((0, _redirect.getRedirectError)((0, _hasbasepath.hasBasePath)(redirectHref) ? (0, _removebasepath.removeBasePath)(redirectHref) : redirectHref, redirectType || _redirecterror.RedirectType.push));\n } else {\n resolve(actionResult);\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\n }, (e)=>{\n // When the server action is rejected we don't update the state and instead call the reject handler of the promise.\n reject(e);\n return state;\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=server-action-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvc2VydmVyLWFjdGlvbi1yZWR1Y2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7dURBcU5nQkE7OztlQUFBQTs7OzJDQWpOVztpREFDTTs4Q0FRMUI7cURBQ2lDO29DQVFqQztnREFRQTs0Q0FDd0I7K0NBQ0c7NkNBQ0E7eURBQ1U7eURBQ0E7MkNBRWQ7MkRBQ2dCO3VDQUNUOytEQUNhO21EQUNaOzZEQUNVOytDQUt6QztzQ0FDMEI7MkNBQ0o7Z0RBQ2tCOzRDQUNoQjt5Q0FDSDtpREFJckI7MENBQytCO0FBRXRDLE1BQU1DLGtCQUNKQyxRQUFBQSxlQUFzQjtBQWV4QixlQUFlQyxrQkFDYkMsS0FBMkIsRUFDM0JDLE9BQXdDLEVBQ3hDLEtBQTRDO0lBQTVDLE1BQUVDLFFBQVEsRUFBRUMsVUFBVSxFQUFzQixHQUE1QztJQUVBLE1BQU1DLHNCQUFzQkMsQ0FBQUEsR0FBQUEsUUFBQUEsMkJBQUFBO0lBQzVCLE1BQU1DLE9BQU9DLENBQUFBLEdBQUFBLHFCQUFBQSxnQ0FBZ0MsRUFBQ0w7SUFFOUMsNkVBQTZFO0lBQzdFLDhFQUE4RTtJQUM5RSwrQ0FBK0M7SUFDL0MsTUFBTU0sV0FDSkYsS0FBS0csSUFBSSxLQUFLLGNBQWNDLENBQUFBLEdBQUFBLHFCQUFBQSxjQUFBQSxFQUFlUCxZQUFZRyxRQUFRSDtJQUVqRSxNQUFNUSxPQUFPLE1BQU1DLENBQUFBLEdBQUFBLFFBQUFBLFdBQUFBLEVBQVlKLFVBQVU7UUFBRUo7SUFBb0I7SUFFL0QsTUFBTVMsTUFBTSxNQUFNQyxNQUFNZCxNQUFNZSxZQUFZLEVBQUU7UUFDMUNDLFFBQVE7UUFDUkMsU0FBUztZQUNQQyxRQUFRQyxrQkFBQUEs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LEVBQWN0SSxPQUFPNEU7SUFDOUIsR0FDQSxDQUFDMUI7UUFDQyxtSEFBbUg7UUFDbkh5QixPQUFPekI7UUFFUCxPQUFPbEQ7SUFDVDtBQUVKIiwic291cmNlcyI6WyIvaG9tZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvc2VydmVyLWFjdGlvbi1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgQWN0aW9uRmxpZ2h0UmVzcG9uc2UsXG4gIEFjdGlvblJlc3VsdCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBjYWxsU2VydmVyIH0gZnJvbSAnLi4vLi4vLi4vYXBwLWNhbGwtc2VydmVyJ1xuaW1wb3J0IHsgZmluZFNvdXJjZU1hcFVSTCB9IGZyb20gJy4uLy4uLy4uL2FwcC1maW5kLXNvdXJjZS1tYXAtdXJsJ1xuaW1wb3J0IHtcbiAgQUNUSU9OX0hFQURFUixcbiAgTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUixcbiAgTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUixcbiAgTkVYVF9VUkwsXG4gIFJTQ19DT05URU5UX1RZUEVfSEVBREVSLFxufSBmcm9tICcuLi8uLi9hcHAtcm91dGVyLWhlYWRlcnMnXG5pbXBvcnQgeyBVbnJlY29nbml6ZWRBY3Rpb25FcnJvciB9IGZyb20gJy4uLy4uL3VucmVjb2duaXplZC1hY3Rpb24tZXJyb3InXG5cbi8vIFRPRE86IEV4cGxpY2l0bHkgaW1wb3J0IGZyb20gY2xpZW50LmJyb3dzZXJcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7XG4gIGNyZWF0ZUZyb21GZXRjaCBhcyBjcmVhdGVGcm9tRmV0Y2hCcm93c2VyLFxuICBjcmVhdGVUZW1wb3JhcnlSZWZlcmVuY2VTZXQsXG4gIGVuY29kZVJlcGx5LFxufSBmcm9tICdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50J1xuXG5pbXBvcnQge1xuICBQcmVmZXRjaEtpbmQsXG4gIHR5cGUgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIHR5cGUgUmVkdWNlclN0YXRlLFxuICB0eXBlIFNlcnZlckFjdGlvbkFjdGlvbixcbiAgdHlwZSBTZXJ2ZXJBY3Rpb25NdXRhYmxlLFxufSBmcm9tICcuLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGFzc2lnbkxvY2F0aW9uIH0gZnJvbSAnLi4vLi4vLi4vYXNzaWduLWxvY2F0aW9uJ1xuaW1wb3J0IHsgY3JlYXRlSHJlZkZyb21VcmwgfSBmcm9tICcuLi9jcmVhdGUtaHJlZi1mcm9tLXVybCdcbmltcG9ydCB7IGhhbmRsZUV4dGVybmFsVXJsIH0gZnJvbSAnLi9uYXZpZ2F0ZS1yZWR1Y2VyJ1xuaW1wb3J0IHsgYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlIH0gZnJvbSAnLi4vYXBwbHktcm91dGVyLXN0YXRlLXBhdGNoLXRvLXRyZWUnXG5pbXBvcnQgeyBpc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQgfSBmcm9tICcuLi9pcy1uYXZpZ2F0aW5nLXRvLW5ldy1yb290LWxheW91dCdcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBoYW5kbGVNdXRhYmxlIH0gZnJvbSAnLi4vaGFuZGxlLW11dGFibGUnXG5pbXBvcnQgeyBmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCB9IGZyb20gJy4uL2ZpbGwtbGF6eS1pdGVtcy10aWxsLWxlYWYtd2l0aC1oZWFkJ1xuaW1wb3J0IHsgY3JlYXRlRW1wdHlDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi9hcHAtcm91dGVyJ1xuaW1wb3J0IHsgaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlIH0gZnJvbSAnLi9oYXMtaW50ZXJjZXB0aW9uLXJvdXRlLWluLWN1cnJlbnQtdHJlZSdcbmltcG9ydCB7IGhhbmRsZVNlZ21lbnRNaXNtYXRjaCB9IGZyb20gJy4uL2hhbmRsZS1zZWdtZW50LW1pc21hdGNoJ1xuaW1wb3J0IHsgcmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyB9IGZyb20gJy4uL3JlZmV0Y2gtaW5hY3RpdmUtcGFyYWxsZWwtc2VnbWVudHMnXG5pbXBvcnQge1xuICBub3JtYWxpemVGbGlnaHREYXRhLFxuICBwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0LFxuICB0eXBlIE5vcm1hbGl6ZWRGbGlnaHREYXRhLFxufSBmcm9tICcuLi8uLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgZ2V0UmVkaXJlY3RFcnJvciB9IGZyb20gJy4uLy4uL3JlZGlyZWN0J1xuaW1wb3J0IHsgUmVkaXJlY3RUeXBlIH0gZnJvbSAnLi4vLi4vcmVkaXJlY3QtZXJyb3InXG5pbXBvcnQgeyBjcmVhdGVTZWVkZWRQcmVmZXRjaENhY2hlRW50cnkgfSBmcm9tICcuLi9wcmVmZXRjaC1jYWNoZS11dGlscydcbmltcG9ydCB7IHJlbW92ZUJhc2VQYXRoIH0gZnJvbSAnLi4vLi4vLi4vcmVtb3ZlLWJhc2UtcGF0aCdcbmltcG9ydCB7IGhhc0Jhc2VQYXRoIH0gZnJvbSAnLi4vLi4vLi4vaGFzLWJhc2UtcGF0aCdcbmltcG9ydCB7XG4gIGV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkLFxuICBvbWl0VW51c2VkQXJncyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9zZXJ2ZXItcmVmZXJlbmNlLWluZm8nXG5pbXBvcnQgeyByZXZhbGlkYXRlRW50aXJlQ2FjaGUgfSBmcm9tICcuLi8uLi9zZWdtZW50LWNhY2hlJ1xuXG5jb25zdCBjcmVhdGVGcm9tRmV0Y2ggPVxuICBjcmVhdGVGcm9tRmV0Y2hCcm93c2VyIGFzICh0eXBlb2YgaW1wb3J0KCdyZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2svY2xpZW50LmJyb3dzZXInKSlbJ2NyZWF0ZUZyb21GZXRjaCddXG5cbnR5cGUgRmV0Y2hTZXJ2ZXJBY3Rpb25SZXN1bHQgPSB7XG4gIHJlZGlyZWN0TG9jYXRpb246IFVSTCB8IHVuZGVmaW5lZFxuICByZWRpcmVjdFR5cGU6IFJlZGlyZWN0VHlwZSB8IHVuZGVmaW5lZFxuICBhY3Rpb25SZXN1bHQ6IEFjdGlvblJlc3VsdCB8IHVuZGVmaW5lZFxuICBhY3Rpb25GbGlnaHREYXRhOiBOb3JtYWxpemVkRmxpZ2h0RGF0YVtdIHwgc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGlzUHJlcmVuZGVyOiBib29sZWFuXG4gIHJldmFsaWRhdGVkUGFydHM6IHtcbiAgICB0YWc6IGJvb2xlYW5cbiAgICBjb29raWU6IGJvb2xlYW5cbiAgICBwYXRoczogc3RyaW5nW11cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFNlcnZlckFjdGlvbihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBuZXh0VXJsOiBSZWFkb25seVJlZHVjZXJTdGF0ZVsnbmV4dFVybCddLFxuICB7IGFjdGlvbklkLCBhY3Rpb25BcmdzIH06IFNlcnZlckFjdGlvbkFjdGlvblxuKTogUHJvbWlzZTxGZXRjaFNlcnZlckFjdGlvblJlc3VsdD4ge1xuICBjb25zdCB0ZW1wb3JhcnlSZWZlcmVuY2VzID0gY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0KClcbiAgY29uc3QgaW5mbyA9IGV4dHJhY3RJbmZvRnJvbVNlcnZlclJlZmVyZW5jZUlkKGFjdGlvbklkKVxuXG4gIC8vIFRPRE86IEN1cnJlbnRseSwgd2UncmUgb25seSBvbWl0dGluZyB1bnVzZWQgYXJncyBmb3IgdGhlIGV4cGVyaW1lbnRhbCBcInVzZVxuICAvLyBjYWNoZVwiIGZ1bmN0aW9ucy4gT25jZSB0aGUgc2VydmVyIHJlZmVyZW5jZSBpbmZvIGJ5dGUgZmVhdHVyZSBpcyBzdGFibGUsIHdlXG4gIC8vIHNob3VsZCBhcHBseSB0aGlzIHRvIHNlcnZlciBhY3Rpb25zIGFzIHdlbGwuXG4gIGNvbnN0IHVzZWRBcmdzID1cbiAgICBpbmZvLnR5cGUgPT09ICd1c2UtY2FjaGUnID8gb21pdFVudXNlZEFyZ3MoYWN0aW9uQXJncywgaW5mbykgOiBhY3Rpb25BcmdzXG5cbiAgY29uc3QgYm9keSA9IGF3YWl0IGVuY29kZVJlcGx5KHVzZWRBcmdzLCB7IHRlbXBvcmFyeVJlZmVyZW5jZXMgfSlcblxuICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChzdGF0ZS5jYW5vbmljYWxVcmwsIHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICBBY2NlcHQ6IFJTQ19DT05URU5UX1RZUEVfSEVBREVSLFxuICAgICAgW0FDVElPTl9IRUFERVJdOiBhY3Rpb25JZCxcbiAgICAgIFtORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl06IHByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QoXG4gICAgICAgIHN0YXRlLnRyZWVcbiAgICAgICksXG4gICAgICAuLi4ocHJvY2Vzcy5lbnYuTkVYVF9ERVBMT1lNRU5UX0lEXG4gICAgICAgID8ge1xuICAgICAgICAgICAgJ3gtZGVwbG95bWVudC1pZCc6IHByb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRCxcbiAgICAgICAgICB9XG4gICAgICAgIDoge30pLFxuICAgICAgLi4uKG5leHRVcmxcbiAgICAgICAgPyB7XG4gICAgICAgICAgICBbTkVYVF9VUkxdOiBuZXh0VXJsLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG4gICAgfSxcbiAgICBib2R5LFxuICB9KVxuXG4gIC8vIEhhbmRsZSBzZXJ2ZXIgYWN0aW9ucyB0aGF0IHRoZSBzZXJ2ZXIgZGlkbid0IHJlY29nbml6ZS5cbiAgY29uc3QgdW5yZWNvZ25pemVkQWN0aW9uSGVhZGVyID0gcmVzLmhlYWRlcnMuZ2V0KE5FWFRfQUNUSU9OX05PVF9GT1VORF9IRUFERVIpXG4gIGlmICh1bnJlY29nbml6ZWRBY3Rpb25IZWFkZXIgPT09ICcxJykge1xuICAgIHRocm93IG5ldyBVbnJlY29nbml6ZWRBY3Rpb25FcnJvcihcbiAgICAgIGBTZXJ2ZXIgQWN0aW9uIFwiJHthY3Rpb25JZH1cIiB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIFxcblJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvZmFpbGVkLXRvLWZpbmQtc2VydmVyLWFjdGlvbmBcbiAgICApXG4gIH1cblxuICBjb25zdCByZWRpcmVjdEhlYWRlciA9IHJlcy5oZWFkZXJzLmdldCgneC1hY3Rpb24tcmVkaXJlY3QnKVxuICBjb25zdCBbbG9jYXRpb24sIF9yZWRpcmVjdFR5cGVdID0gcmVkaXJlY3RIZWFkZXI/LnNwbGl0KCc7JykgfHwgW11cbiAgbGV0IHJlZGlyZWN0VHlwZTogUmVkaXJlY3RUeXBlIHwgdW5kZWZpbmVkXG4gIHN3aXRjaCAoX3JlZGlyZWN0VHlwZSkge1xuICAgIGNhc2UgJ3B1c2gnOlxuICAgICAgcmVkaXJlY3RUeXBlID0gUmVkaXJlY3RUeXBlLnB1c2hcbiAgICAgIGJyZWFrXG4gICAgY2FzZSAncmVwbGFjZSc6XG4gICAgICByZWRpcmVjdFR5cGUgPSBSZWRpcmVjdFR5cGUucmVwbGFjZVxuICAgICAgYnJlYWtcbiAgICBkZWZhdWx0OlxuICAgICAgcmVkaXJlY3RUeXBlID0gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCBpc1ByZXJlbmRlciA9ICEhcmVzLmhlYWRlcnMuZ2V0KE5FWFRfSVNfUFJFUkVOREVSX0hFQURFUilcbiAgbGV0IHJldmFsaWRhdGVkUGFydHM6IEZldGNoU2VydmVyQWN0aW9uUmVzdWx0WydyZXZhbGlkYXRlZFBhcnRzJ11cbiAgdHJ5IHtcbiAgICBjb25zdCByZXZhbGlkYXRlZEhlYWRlciA9IEpTT04ucGFyc2UoXG4gICAgICByZXMuaGVhZGVycy5nZXQoJ3gtYWN0aW9uLXJldmFsaWRhdGVkJykgfHwgJ1tbXSwwLDBdJ1xuICAgIClcbiAgICByZXZhbGlkYXRlZFBhcnRzID0ge1xuICAgICAgcGF0aHM6IHJldmFsaWRhdGVkSGVhZGVyWzBdIHx8IFtdLFxuICAgICAgdGFnOiAhIXJldmFsaWRhdGVkSGVhZGVyWzFdLFxuICAgICAgY29va2llOiByZXZhbGlkYXRlZEhlYWRlclsyXSxcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXZhbGlkYXRlZFBhcnRzID0gTk9fUkVWQUxJREFURURfUEFSVFNcbiAgfVxuXG4gIGNvbnN0IHJlZGlyZWN0TG9jYXRpb24gPSBsb2NhdGlvblxuICAgID8gYXNzaWduTG9jYXRpb24oXG4gICAgICAgIGxvY2F0aW9uLFxuICAgICAgICBuZXcgVVJMKHN0YXRlLmNhbm9uaWNhbFVybCwgd2luZG93LmxvY2F0aW9uLmhyZWYpXG4gICAgICApXG4gICAgOiB1bmRlZmluZWRcblxuICBjb25zdCBjb250ZW50VHlwZSA9IHJlcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJylcbiAgY29uc3QgaXNSc2NSZXNwb25zZSA9ICEhKFxuICAgIGNvbnRlbnRUeXBlICYmIGNvbnRlbnRUeXBlLnN0YXJ0c1dpdGgoUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIpXG4gIClcblxuICAvLyBIYW5kbGUgaW52YWxpZCBzZXJ2ZXIgYWN0aW9uIHJlc3BvbnNlcy5cbiAgLy8gQSB2YWxpZCByZXNwb25zZSBtdXN0IGhhdmUgYGNvbnRlbnQtdHlwZTogdGV4dC94LWNvbXBvbmVudGAsIHVubGVzcyBpdCdzIGFuIGV4dGVybmFsIHJlZGlyZWN0LlxuICAvLyAoZXh0ZXJuYWwgcmVkaXJlY3RzIGhhdmUgYW4gJ3gtYWN0aW9uLXJlZGlyZWN0JyBoZWFkZXIsIGJ1dCB0aGUgYm9keSBpcyBhbiBlbXB0eSAndGV4dC9wbGFpbicpXG4gIGlmICghaXNSc2NSZXNwb25zZSAmJiAhcmVkaXJlY3RMb2NhdGlvbikge1xuICAgIC8vIFRoZSBzZXJ2ZXIgY2FuIHJlc3BvbmQgd2l0aCBhIHRleHQvcGxhaW4gZXJyb3IgbWVzc2FnZSwgYnV0IHdlJ2xsIGZhbGxiYWNrIHRvIHNvbWV0aGluZyBnZW5lcmljXG4gICAgLy8gaWYgdGhlcmUgaXNuJ3Qgb25lLlxuICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgcmVzLnN0YXR1cyA+PSA0MDAgJiYgY29udGVudFR5cGUgPT09ICd0ZXh0L3BsYWluJ1xuICAgICAgICA/IGF3YWl0IHJlcy50ZXh0KClcbiAgICAgICAgOiAnQW4gdW5leHBlY3RlZCByZXNwb25zZSB3YXMgcmVjZWl2ZWQgZnJvbSB0aGUgc2VydmVyLidcblxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKVxuICB9XG5cbiAgbGV0IGFjdGlvblJlc3VsdDogRmV0Y2hTZXJ2ZXJBY3Rpb25SZXN1bHRbJ2FjdGlvblJlc3VsdCddXG4gIGxldCBhY3Rpb25GbGlnaHREYXRhOiBGZXRjaFNlcnZlckFjdGlvblJlc3VsdFsnYWN0aW9uRmxpZ2h0RGF0YSddXG4gIGlmIChpc1JzY1Jlc3BvbnNlKSB7XG4gICAgY29uc3QgcmVzcG9uc2U6IEFjdGlvbkZsaWdodFJlc3BvbnNlID0gYXdhaXQgY3JlYXRlRnJvbUZldGNoKFxuICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlcyksXG4gICAgICB7IGNhbGxTZXJ2ZXIsIGZpbmRTb3VyY2VNYXBVUkwsIHRlbXBvcmFyeVJlZmVyZW5jZXMgfVxuICAgIClcblxuICAgIC8vIEFuIGludGVybmFsIHJlZGlyZWN0IGNhbiBzZW5kIGFuIFJTQyByZXNwb25zZSwgYnV0IGRvZXMgbm90IGhhdmUgYSB1c2VmdWwgYGFjdGlvblJlc3VsdGAuXG4gICAgYWN0aW9uUmVzdWx0ID0gcmVkaXJlY3RMb2NhdGlvbiA/IHVuZGVmaW5lZCA6IHJlc3BvbnNlLmFcbiAgICBhY3Rpb25GbGlnaHREYXRhID0gbm9ybWFsaXplRmxpZ2h0RGF0YShyZXNwb25zZS5mKVxuICB9IGVsc2Uge1xuICAgIC8vIEFuIGV4dGVybmFsIHJlZGlyZWN0IGRvZXNuJ3QgY29udGFpbiBSU0MgZGF0YS5cbiAgICBhY3Rpb25SZXN1bHQgPSB1bmRlZmluZWRcbiAgICBhY3Rpb25GbGlnaHREYXRhID0gdW5kZWZpbmVkXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvblJlc3VsdCxcbiAgICBhY3Rpb25GbGlnaHREYXRhLFxuICAgIHJlZGlyZWN0TG9jYXRpb24sXG4gICAgcmVkaXJlY3RUeXBlLFxuICAgIHJldmFsaWRhdGVkUGFydHMsXG4gICAgaXNQcmVyZW5kZXIsXG4gIH1cbn1cblxuY29uc3QgTk9fUkVWQUxJREFURURfUEFSVFMgPSB7XG4gIHBhdGhzOiBbXSxcbiAgdGFnOiBmYWxzZSxcbiAgY29va2llOiBmYWxzZSxcbn1cblxuLypcbiAqIFRoaXMgcmVkdWNlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyB0aGUgc2VydmVyIGFjdGlvbiBhbmQgcHJvY2Vzc2luZyBhbnkgc2lkZS1lZmZlY3RzIGZyb20gdGhlIHNlcnZlciBhY3Rpb24uXG4gKiBJdCBkb2VzIG5vdCBtdXRhdGUgdGhlIHN0YXRlIGJ5IGl0c2VsZiBidXQgcmF0aGVyIGRlbGVnYXRlcyB0byBvdGhlciByZWR1Y2VycyB0byBkbyB0aGUgYWN0dWFsIG11dGF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VydmVyQWN0aW9uUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFNlcnZlckFjdGlvbkFjdGlvblxuKTogUmVkdWNlclN0YXRlIHtcbiAgY29uc3QgeyByZXNvbHZlLCByZWplY3QgfSA9IGFjdGlvblxuICBjb25zdCBtdXRhYmxlOiBTZXJ2ZXJBY3Rpb25NdXRhYmxlID0ge31cblxuICBsZXQgY3VycmVudFRyZWUgPSBzdGF0ZS50cmVlXG5cbiAgbXV0YWJsZS5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSA9IGZhbHNlXG5cbiAgLy8gb25seSBwYXNzIGFsb25nIHRoZSBgbmV4dFVybGAgcGFyYW0gKHVzZWQgZm9yIGludGVyY2VwdGlvbiByb3V0ZXMpIGlmIHRoZSBjdXJyZW50IHJvdXRlIHdhcyBpbnRlcmNlcHRlZC5cbiAgLy8gSWYgdGhlIHJvdXRlIGhhcyBiZWVuIGludGVyY2VwdGVkLCB0aGUgYWN0aW9uIHNob3VsZCBiZSBhcyB3ZWxsLlxuICAvLyBPdGhlcndpc2UgdGhlIHNlcnZlciBhY3Rpb24gbWlnaHQgYmUgaW50ZXJjZXB0ZWQgd2l0aCB0aGUgd3JvbmcgYWN0aW9uIGlkXG4gIC8vIChpZSwgb25lIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgaW50ZXJjZXB0ZWQgcm91dGUpXG4gIGNvbnN0IG5leHRVcmwgPVxuICAgIHN0YXRlLm5leHRVcmwgJiYgaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKHN0YXRlLnRyZWUpXG4gICAgICA/IHN0YXRlLm5leHRVcmxcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IG5hdmlnYXRlZEF0ID0gRGF0ZS5ub3coKVxuXG4gIHJldHVybiBmZXRjaFNlcnZlckFjdGlvbihzdGF0ZSwgbmV4dFVybCwgYWN0aW9uKS50aGVuKFxuICAgIGFzeW5jICh7XG4gICAgICBhY3Rpb25SZXN1bHQsXG4gICAgICBhY3Rpb25GbGlnaHREYXRhOiBmbGlnaHREYXRhLFxuICAgICAgcmVkaXJlY3RMb2NhdGlvbixcbiAgICAgIHJlZGlyZWN0VHlwZSxcbiAgICAgIGlzUHJlcmVuZGVyLFxuICAgICAgcmV2YWxpZGF0ZWRQYXJ0cyxcbiAgICB9KSA9PiB7XG4gICAgICBsZXQgcmVkaXJlY3RIcmVmOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICAgICAgLy8gaG9ub3IgdGhlIHJlZGlyZWN0IHR5cGUgaW5zdGVhZCBvZiBkZWZhdWx0aW5nIHRvIHB1c2ggaW4gY2FzZSBvZiBzZXJ2ZXIgYWN0aW9ucy5cbiAgICAgIGlmIChyZWRpcmVjdExvY2F0aW9uKSB7XG4gICAgICAgIGlmIChyZWRpcmVjdFR5cGUgPT09IFJlZGlyZWN0VHlwZS5yZXBsYWNlKSB7XG4gICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaCA9IGZhbHNlXG4gICAgICAgICAgbXV0YWJsZS5wZW5kaW5nUHVzaCA9IGZhbHNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaCA9IHRydWVcbiAgICAgICAgICBtdXRhYmxlLnBlbmRpbmdQdXNoID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgcmVkaXJlY3RIcmVmID0gY3JlYXRlSHJlZkZyb21VcmwocmVkaXJlY3RMb2NhdGlvbiwgZmFsc2UpXG4gICAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gcmVkaXJlY3RIcmVmXG4gICAgICB9XG5cbiAgICAgIGlmICghZmxpZ2h0RGF0YSkge1xuICAgICAgICByZXNvbHZlKGFjdGlvblJlc3VsdClcblxuICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHJlZGlyZWN0IGJ1dCBubyBmbGlnaHQgZGF0YSB3ZSBuZWVkIHRvIGRvIGEgbXBhTmF2aWdhdGlvbi5cbiAgICAgICAgaWYgKHJlZGlyZWN0TG9jYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgIG11dGFibGUsXG4gICAgICAgICAgICByZWRpcmVjdExvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgICBzdGF0ZS5wdXNoUmVmLnBlbmRpbmdQdXNoXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGZsaWdodERhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZW4gbmF2aWdhdGluZyB0byBwYWdlIGluIGBwYWdlc2AgZnJvbSBgYXBwYFxuICAgICAgICByZXNvbHZlKGFjdGlvblJlc3VsdClcblxuICAgICAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgbXV0YWJsZSxcbiAgICAgICAgICBmbGlnaHREYXRhLFxuICAgICAgICAgIHN0YXRlLnB1c2hSZWYucGVuZGluZ1B1c2hcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBhY3Rpb25SZXZhbGlkYXRlZCA9XG4gICAgICAgIHJldmFsaWRhdGVkUGFydHMucGF0aHMubGVuZ3RoID4gMCB8fFxuICAgICAgICByZXZhbGlkYXRlZFBhcnRzLnRhZyB8fFxuICAgICAgICByZXZhbGlkYXRlZFBhcnRzLmNvb2tpZVxuXG4gICAgICBmb3IgKGNvbnN0IG5vcm1hbGl6ZWRGbGlnaHREYXRhIG9mIGZsaWdodERhdGEpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRyZWU6IHRyZWVQYXRjaCxcbiAgICAgICAgICBzZWVkRGF0YTogY2FjaGVOb2RlU2VlZERhdGEsXG4gICAgICAgICAgaGVhZCxcbiAgICAgICAgICBpc1Jvb3RSZW5kZXIsXG4gICAgICAgIH0gPSBub3JtYWxpemVkRmxpZ2h0RGF0YVxuXG4gICAgICAgIGlmICghaXNSb290UmVuZGVyKSB7XG4gICAgICAgICAgLy8gVE9ETy1BUFA6IGhhbmRsZSB0aGlzIGNhc2UgYmV0dGVyXG4gICAgICAgICAgY29uc29sZS5sb2coJ1NFUlZFUiBBQ1RJT04gQVBQTFkgRkFJTEVEJylcbiAgICAgICAgICByZXNvbHZlKGFjdGlvblJlc3VsdClcblxuICAgICAgICAgIHJldHVybiBzdGF0ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2l2ZW4gdGhlIHBhdGggY2FuIG9ubHkgaGF2ZSB0d28gaXRlbXMgdGhlIGl0ZW1zIGFyZSBvbmx5IHRoZSByb3V0ZXIgc3RhdGUgYW5kIHJzYyBmb3IgdGhlIHJvb3QuXG4gICAgICAgIGNvbnN0IG5ld1RyZWUgPSBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUoXG4gICAgICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgICAgIFsnJ10sXG4gICAgICAgICAgY3VycmVudFRyZWUsXG4gICAgICAgICAgdHJlZVBhdGNoLFxuICAgICAgICAgIHJlZGlyZWN0SHJlZiA/IHJlZGlyZWN0SHJlZiA6IHN0YXRlLmNhbm9uaWNhbFVybFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKG5ld1RyZWUgPT09IG51bGwpIHtcbiAgICAgICAgICByZXNvbHZlKGFjdGlvblJlc3VsdClcblxuICAgICAgICAgIHJldHVybiBoYW5kbGVTZWdtZW50TWlzbWF0Y2goc3RhdGUsIGFjdGlvbiwgdHJlZVBhdGNoKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChjdXJyZW50VHJlZSwgbmV3VHJlZSkpIHtcbiAgICAgICAgICByZXNvbHZlKGFjdGlvblJlc3VsdClcblxuICAgICAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChcbiAgICAgICAgICAgIHN0YXRlLFxuICAgICAgICAgICAgbXV0YWJsZSxcbiAgICAgICAgICAgIHJlZGlyZWN0SHJlZiB8fCBzdGF0ZS5jYW5vbmljYWxVcmwsXG4gICAgICAgICAgICBzdGF0ZS5wdXNoUmVmLnBlbmRpbmdQdXNoXG4gICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIHNlcnZlciBzZW50IGJhY2sgUlNDIGRhdGEgZm9yIHRoZSBzZXJ2ZXIgYWN0aW9uLCBzbyB3ZSBuZWVkIHRvIGFwcGx5IGl0IHRvIHRoZSBjYWNoZS5cbiAgICAgICAgaWYgKGNhY2hlTm9kZVNlZWREYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgcnNjID0gY2FjaGVOb2RlU2VlZERhdGFbMV1cbiAgICAgICAgICBjb25zdCBjYWNoZTogQ2FjaGVOb2RlID0gY3JlYXRlRW1wdHlDYWNoZU5vZGUoKVxuICAgICAgICAgIGNhY2hlLnJzYyA9IHJzY1xuICAgICAgICAgIGNhY2hlLnByZWZldGNoUnNjID0gbnVsbFxuICAgICAgICAgIGNhY2hlLmxvYWRpbmcgPSBjYWNoZU5vZGVTZWVkRGF0YVszXVxuICAgICAgICAgIGZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKFxuICAgICAgICAgICAgbmF2aWdhdGVkQXQsXG4gICAgICAgICAgICBjYWNoZSxcbiAgICAgICAgICAgIC8vIEV4aXN0aW5nIGNhY2hlIGlzIG5vdCBwYXNzZWQgaW4gYXMgc2VydmVyIGFjdGlvbnMgaGF2ZSB0byBpbnZhbGlkYXRlIHRoZSBlbnRpcmUgY2FjaGUuXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICB0cmVlUGF0Y2gsXG4gICAgICAgICAgICBjYWNoZU5vZGVTZWVkRGF0YSxcbiAgICAgICAgICAgIGhlYWQsXG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICApXG5cbiAgICAgICAgICBtdXRhYmxlLmNhY2hlID0gY2FjaGVcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFKSB7XG4gICAgICAgICAgICByZXZhbGlkYXRlRW50aXJlQ2FjaGUoc3RhdGUubmV4dFVybCwgbmV3VHJlZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbXV0YWJsZS5wcmVmZXRjaENhY2hlID0gbmV3IE1hcCgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChhY3Rpb25SZXZhbGlkYXRlZCkge1xuICAgICAgICAgICAgYXdhaXQgcmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyh7XG4gICAgICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgICAgICBzdGF0ZSxcbiAgICAgICAgICAgICAgdXBkYXRlZFRyZWU6IG5ld1RyZWUsXG4gICAgICAgICAgICAgIHVwZGF0ZWRDYWNoZTogY2FjaGUsXG4gICAgICAgICAgICAgIGluY2x1ZGVOZXh0VXJsOiBCb29sZWFuKG5leHRVcmwpLFxuICAgICAgICAgICAgICBjYW5vbmljYWxVcmw6IG11dGFibGUuY2Fub25pY2FsVXJsIHx8IHN0YXRlLmNhbm9uaWNhbFVybCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbXV0YWJsZS5wYXRjaGVkVHJlZSA9IG5ld1RyZWVcbiAgICAgICAgY3VycmVudFRyZWUgPSBuZXdUcmVlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZWRpcmVjdExvY2F0aW9uICYmIHJlZGlyZWN0SHJlZikge1xuICAgICAgICBpZiAoIXByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSAmJiAhYWN0aW9uUmV2YWxpZGF0ZWQpIHtcbiAgICAgICAgICAvLyBCZWNhdXNlIHRoZSBSZWRpcmVjdEJvdW5kYXJ5IHdpbGwgdHJpZ2dlciBhIG5hdmlnYXRpb24sIHdlIG5lZWQgdG8gc2VlZCB0aGUgcHJlZmV0Y2ggY2FjaGVcbiAgICAgICAgICAvLyB3aXRoIHRoZSBGbGlnaHREYXRhIHRoYXQgd2UgZ290IGZyb20gdGhlIHNlcnZlciBhY3Rpb24gZm9yIHRoZSB0YXJnZXQgcGFnZSwgc28gdGhhdCBpdCdzXG4gICAgICAgICAgLy8gYXZhaWxhYmxlIHdoZW4gdGhlIHBhZ2UgaXMgbmF2aWdhdGVkIHRvIGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgcmUtZmV0Y2hlZC5cbiAgICAgICAgICAvLyBXZSBvbmx5IGRvIHRoaXMgaWYgdGhlIHNlcnZlciBhY3Rpb24gZGlkbid0IHJldmFsaWRhdGUgYW55IGRhdGEsIGFzIGluIHRoYXQgY2FzZSB0aGVcbiAgICAgICAgICAvLyBjbGllbnQgY2FjaGUgd2lsbCBiZSBjbGVhcmVkIGFuZCB0aGUgZGF0YSB3aWxsIGJlIHJlLWZldGNoZWQgYW55d2F5LlxuICAgICAgICAgIC8vIE5PVEU6IFdlIGRvbid0IGRvIHRoaXMgaW4gdGhlIFNlZ21lbnQgQ2FjaGUgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgLy8gRHluYW1pYyBkYXRhIHNob3VsZCBuZXZlciBiZSBwbGFjZWQgaW50byB0aGUgY2FjaGUsIHVubGVzcyBpdCdzXG4gICAgICAgICAgLy8gXCJjb252ZXJ0ZWRcIiB0byBzdGF0aWMgZGF0YSB1c2luZyA8TGluayBwcmVmZXRjaD17dHJ1ZX0+LiBXaGF0IHdlXG4gICAgICAgICAgLy8gZG8gaW5zdGVhZCBpcyByZS1wcmVmZXRjaCBsaW5rcyBhbmQgZm9ybXMgd2hlbmV2ZXIgdGhlIGNhY2hlIGlzXG4gICAgICAgICAgLy8gaW52YWxpZGF0ZWQuXG4gICAgICAgICAgY3JlYXRlU2VlZGVkUHJlZmV0Y2hDYWNoZUVudHJ5KHtcbiAgICAgICAgICAgIHVybDogcmVkaXJlY3RMb2NhdGlvbixcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgZmxpZ2h0RGF0YSxcbiAgICAgICAgICAgICAgY2Fub25pY2FsVXJsOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGNvdWxkQmVJbnRlcmNlcHRlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHByZXJlbmRlcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgcG9zdHBvbmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgLy8gVE9ETzogV2Ugc2hvdWxkIGJlIGFibGUgdG8gc2V0IHRoaXMgaWYgdGhlIHNlcnZlciBhY3Rpb25cbiAgICAgICAgICAgICAgLy8gcmV0dXJuZWQgYSBmdWxseSBzdGF0aWMgcmVzcG9uc2UuXG4gICAgICAgICAgICAgIHN0YWxlVGltZTogLTEsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdHJlZTogc3RhdGUudHJlZSxcbiAgICAgICAgICAgIHByZWZldGNoQ2FjaGU6IHN0YXRlLnByZWZldGNoQ2FjaGUsXG4gICAgICAgICAgICBuZXh0VXJsOiBzdGF0ZS5uZXh0VXJsLFxuICAgICAgICAgICAga2luZDogaXNQcmVyZW5kZXIgPyBQcmVmZXRjaEtpbmQuRlVMTCA6IFByZWZldGNoS2luZC5BVVRPLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgbXV0YWJsZS5wcmVmZXRjaENhY2hlID0gc3RhdGUucHJlZmV0Y2hDYWNoZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlIGFjdGlvbiB0cmlnZ2VyZWQgYSByZWRpcmVjdCwgdGhlIGFjdGlvbiBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aFxuICAgICAgICAvLyBhIHJlZGlyZWN0IHNvIHRoYXQgaXQncyBoYW5kbGVkIGJ5IFJlZGlyZWN0Qm91bmRhcnkgYXMgd2Ugd29uJ3QgaGF2ZSBhIHZhbGlkXG4gICAgICAgIC8vIGFjdGlvbiByZXN1bHQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZSB3aXRoLiBUaGlzIHdpbGwgZWZmZWN0aXZlbHkgcmVzZXQgdGhlIHN0YXRlIG9mXG4gICAgICAgIC8vIHRoZSBjb21wb25lbnQgdGhhdCBjYWxsZWQgdGhlIGFjdGlvbiBhcyB0aGUgZXJyb3IgYm91bmRhcnkgd2lsbCByZW1vdW50IHRoZSB0cmVlLlxuICAgICAgICAvLyBUaGUgc3RhdHVzIGNvZGUgZG9lc24ndCBtYXR0ZXIgaGVyZSBhcyB0aGUgYWN0aW9uIGhhbmRsZXIgd2lsbCBoYXZlIGFscmVhZHkgc2VudFxuICAgICAgICAvLyBhIHJlc3BvbnNlIHdpdGggdGhlIGNvcnJlY3Qgc3RhdHVzIGNvZGUuXG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBnZXRSZWRpcmVjdEVycm9yKFxuICAgICAgICAgICAgaGFzQmFzZVBhdGgocmVkaXJlY3RIcmVmKVxuICAgICAgICAgICAgICA/IHJlbW92ZUJhc2VQYXRoKHJlZGlyZWN0SHJlZilcbiAgICAgICAgICAgICAgOiByZWRpcmVjdEhyZWYsXG4gICAgICAgICAgICByZWRpcmVjdFR5cGUgfHwgUmVkaXJlY3RUeXBlLnB1c2hcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoYWN0aW9uUmVzdWx0KVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaGFuZGxlTXV0YWJsZShzdGF0ZSwgbXV0YWJsZSlcbiAgICB9LFxuICAgIChlOiBhbnkpID0+IHtcbiAgICAgIC8vIFdoZW4gdGhlIHNlcnZlciBhY3Rpb24gaXMgcmVqZWN0ZWQgd2UgZG9uJ3QgdXBkYXRlIHRoZSBzdGF0ZSBhbmQgaW5zdGVhZCBjYWxsIHRoZSByZWplY3QgaGFuZGxlciBvZiB0aGUgcHJvbWlzZS5cbiAgICAgIHJlamVjdChlKVxuXG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJzZXJ2ZXJBY3Rpb25SZWR1Y2VyIiwiY3JlYXRlRnJvbUZldGNoIiwiY3JlYXRlRnJvbUZldGNoQnJvd3NlciIsImZldGNoU2VydmVyQWN0aW9uIiwic3RhdGUiLCJuZXh0VXJsIiwiYWN0aW9uSWQiLCJhY3Rpb25BcmdzIiwidGVtcG9yYXJ5UmVmZXJlbmNlcyIsImNyZWF0ZVRlbXBvcmFyeVJlZmVyZW5jZVNldCIsImluZm8iLCJleHRyYWN0SW5mb0Zyb21TZXJ2ZXJSZWZlcmVuY2VJZCIsInVzZWRBcmdzIiwidHlwZSIsIm9taXRVbnVzZWRBcmdzIiwiYm9keSIsImVuY29kZVJlcGx5IiwicmVzIiwiZmV0Y2giLCJjYW5vbmljYWxVcmwiLCJtZXRob2QiLCJoZWFkZXJzIiwiQWNjZXB0IiwiUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIiLCJBQ1RJT05fSEVBREVSIiwiTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIiLCJwcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0IiwidHJlZSIsInByb2Nlc3MiLCJlbnYiLCJORVhUX0RFUExPWU1FTlRfSUQiLCJORVhUX1VSTCIsInVucmVjb2duaXplZEFjdGlvbkhlYWRlciIsImdldCIsIk5FWFRfQUNUSU9OX05PVF9GT1VORF9IRUFERVIiLCJVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsInJlZGlyZWN0SGVhZGVyIiwibG9jYXRpb24iLCJfcmVkaXJlY3RUeXBlIiwic3BsaXQiLCJyZWRpcmVjdFR5cGUiLCJSZWRpcmVjdFR5cGUiLCJwdXNoIiwicmVwbGFjZSIsInVuZGVmaW5lZCIsImlzUHJlcmVuZGVyIiwiTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSIiwicmV2YWxpZGF0ZWRQYXJ0cyIsInJldmFsaWRhdGVkSGVhZGVyIiwiSlNPTiIsInBhcnNlIiwicGF0aHMiLCJ0YWciLCJjb29raWUiLCJlIiwiTk9fUkVWQUxJREFURURfUEFSVFMiLCJyZWRpcmVjdExvY2F0aW9uIiwiYXNzaWduTG9jYXRpb24iLCJVUkwiLCJ3aW5kb3ciLCJocmVmIiwiY29udGVudFR5cGUiLCJpc1JzY1Jlc3BvbnNlIiwic3RhcnRzV2l0aCIsIm1lc3NhZ2UiLCJzdGF0dXMiLCJ0ZXh0IiwiRXJyb3IiLCJhY3Rpb25SZXN1bHQiLCJhY3Rpb25GbGlnaHREYXRhIiwicmVzcG9uc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsImNhbGxTZXJ2ZXIiLCJmaW5kU291cmNlTWFwVVJMIiwiYSIsIm5vcm1hbGl6ZUZsaWdodERhdGEiLCJmIiwiYWN0aW9uIiwicmVqZWN0IiwibXV0YWJsZSIsImN1cnJlbnRUcmVlIiwicHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUiLCJoYXNJbnRlcmNlcHRpb25Sb3V0ZUluQ3VycmVudFRyZWUiLCJuYXZpZ2F0ZWRBdCIsIkRhdGUiLCJub3ciLCJ0aGVuIiwiZmxpZ2h0RGF0YSIsInJlZGlyZWN0SHJlZiIsInB1c2hSZWYiLCJwZW5kaW5nUHVzaCIsImNyZWF0ZUhyZWZGcm9tVXJsIiwiaGFuZGxlRXh0ZXJuYWxVcmwiLCJhY3Rpb25SZXZhbGlkYXRlZCIsImxlbmd0aCIsIm5vcm1hbGl6ZWRGbGlnaHREYXRhIiwidHJlZVBhdGNoIiwic2VlZERhdGEiLCJjYWNoZU5vZGVTZWVkRGF0YSIsImhlYWQiLCJpc1Jvb3RSZW5kZXIiLCJjb25zb2xlIiwibG9nIiwibmV3VHJlZSIsImFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSIsImhhbmRsZVNlZ21lbnRNaXNtYXRjaCIsImlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCIsInJzYyIsImNhY2hlIiwiY3JlYXRlRW1wdHlDYWNoZU5vZGUiLCJwcmVmZXRjaFJzYyIsImxvYWRpbmciLCJmaWxsTGF6eUl0ZW1zVGlsbExlYWZXaXRoSGVhZCIsIl9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRSIsInJldmFsaWRhdGVFbnRpcmVDYWNoZSIsInByZWZldGNoQ2FjaGUiLCJNYXAiLCJyZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzIiwidXBkYXRlZFRyZWUiLCJ1cGRhdGVkQ2FjaGUiLCJpbmNsdWRlTmV4dFVybCIsIkJvb2xlYW4iLCJwYXRjaGVkVHJlZSIsImNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeSIsInVybCIsImRhdGEiLCJjb3VsZEJlSW50ZXJjZXB0ZWQiLCJwcmVyZW5kZXJlZCIsInBvc3Rwb25lZCIsInN0YWxlVGltZSIsImtpbmQiLCJQcmVmZXRjaEtpbmQiLCJGVUxMIiwiQVVUTyIsImdldFJlZGlyZWN0RXJyb3IiLCJoYXNCYXNlUGF0aCIsInJlbW92ZUJhc2VQYXRoIiwiaGFuZGxlTXV0YWJsZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js": /*!*****************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js ***! \*****************************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"serverPatchReducer\", ({\n enumerable: true,\n get: function() {\n return serverPatchReducer;\n }\n}));\nconst _createhreffromurl = __webpack_require__(/*! ../create-href-from-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js\");\nconst _applyrouterstatepatchtotree = __webpack_require__(/*! ../apply-router-state-patch-to-tree */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js\");\nconst _isnavigatingtonewrootlayout = __webpack_require__(/*! ../is-navigating-to-new-root-layout */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js\");\nconst _navigatereducer = __webpack_require__(/*! ./navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _applyflightdata = __webpack_require__(/*! ../apply-flight-data */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _handlemutable = __webpack_require__(/*! ../handle-mutable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/handle-mutable.js\");\nconst _approuter = __webpack_require__(/*! ../../app-router */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router.js\");\nfunction serverPatchReducer(state, action) {\n const { serverResponse: { flightData, canonicalUrl: canonicalUrlOverride }, navigatedAt } = action;\n const mutable = {};\n mutable.preserveCustomHistoryState = false;\n // Handle case when navigating to page in `pages` from `app`\n if (typeof flightData === 'string') {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, flightData, state.pushRef.pendingPush);\n }\n let currentTree = state.tree;\n let currentCache = state.cache;\n for (const normalizedFlightData of flightData){\n const { segmentPath: flightSegmentPath, tree: treePatch } = normalizedFlightData;\n const newTree = (0, _applyrouterstatepatchtotree.applyRouterStatePatchToTree)([\n '',\n ...flightSegmentPath\n ], currentTree, treePatch, state.canonicalUrl);\n // `applyRouterStatePatchToTree` returns `null` when it determined that the server response is not applicable to the current tree.\n // In other words, the server responded with a tree that doesn't match what the client is currently rendering.\n // This can happen if the server patch action took longer to resolve than a subsequent navigation which would have changed the tree.\n // Previously this case triggered an MPA navigation but it should be safe to simply discard the server response rather than forcing\n // the entire page to reload.\n if (newTree === null) {\n return state;\n }\n if ((0, _isnavigatingtonewrootlayout.isNavigatingToNewRootLayout)(currentTree, newTree)) {\n return (0, _navigatereducer.handleExternalUrl)(state, mutable, state.canonicalUrl, state.pushRef.pendingPush);\n }\n const canonicalUrlOverrideHref = canonicalUrlOverride ? (0, _createhreffromurl.createHrefFromUrl)(canonicalUrlOverride) : undefined;\n if (canonicalUrlOverrideHref) {\n mutable.canonicalUrl = canonicalUrlOverrideHref;\n }\n const cache = (0, _approuter.createEmptyCacheNode)();\n (0, _applyflightdata.applyFlightData)(navigatedAt, currentCache, cache, normalizedFlightData);\n mutable.patchedTree = newTree;\n mutable.cache = cache;\n currentCache = cache;\n currentTree = newTree;\n }\n return (0, _handlemutable.handleMutable)(state, mutable);\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=server-patch-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVkdWNlcnMvc2VydmVyLXBhdGNoLXJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7OztzREFlZ0JBOzs7ZUFBQUE7OzsrQ0Fma0I7eURBQ1U7eURBQ0E7NkNBT1Y7NkNBQ0Y7MkNBQ0Y7dUNBRU87QUFFOUIsU0FBU0EsbUJBQ2RDLEtBQTJCLEVBQzNCQyxNQUF5QjtJQUV6QixNQUFNLEVBQ0pDLGdCQUFnQixFQUFFQyxVQUFVLEVBQUVDLGNBQWNDLG9CQUFvQixFQUFFLEVBQ2xFQyxXQUFXLEVBQ1osR0FBR0w7SUFFSixNQUFNTSxVQUFtQixDQUFDO0lBRTFCQSxRQUFRQywwQkFBMEIsR0FBRztJQUVyQyw0REFBNEQ7SUFDNUQsSUFBSSxPQUFPTCxlQUFlLFVBQVU7UUFDbEMsT0FBT00sQ0FBQUEsR0FBQUEsaUJBQUFBLGlCQUFBQSxFQUNMVCxPQUNBTyxTQUNBSixZQUNBSCxNQUFNVSxPQUFPLENBQUNDLFdBQVc7SUFFN0I7SUFFQSxJQUFJQyxjQUFjWixNQUFNYSxJQUFJO0lBQzVCLElBQUlDLGVBQWVkLE1BQU1lLEtBQUs7SUFFOUIsS0FBSyxNQUFNQyx3QkFBd0JiLFdBQVk7UUFDN0MsTUFBTSxFQUFFYyxhQUFhQyxpQkFBaUIsRUFBRUwsTUFBTU0sU0FBUyxFQUFFLEdBQ3ZESDtRQUVGLE1BQU1JLFVBQVVDLENBQUFBLEdBQUFBLDZCQUFBQSwyQkFBQUEsRUFDZDtZQUNDO2VBQU9IO1NBQWtCLEVBQzFCTixhQUNBTyxXQUNBbkIsTUFBTUksWUFBWTtRQUdwQixrSUFBa0k7UUFDbEksOEdBQThHO1FBQzlHLG9JQUFvSTtRQUNwSSxtSUFBbUk7UUFDbkksNkJBQTZCO1FBQzdCLElBQUlnQixZQUFZLE1BQU07WUFDcEIsT0FBT3BCO1FBQ1Q7UUFFQSxJQUFJc0IsQ0FBQUEsR0FBQUEsNkJBQUFBLDJCQUFBQSxFQUE0QlYsYUFBYVEsVUFBVTtZQUNyRCxPQUFPWCxDQUFBQSxHQUFBQSxpQkFBQUEsaUJBQUFBLEVBQ0xULE9BQ0FPLFNBQ0FQLE1BQU1JLFlBQVksRUFDbEJKLE1BQU1VLE9BQU8sQ0FBQ0MsV0FBVztRQUU3QjtRQUVBLE1BQU1ZLDJCQUEyQmxCLHVCQUM3Qm1CLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JuQix3QkFDbEJvQjtRQUVKLElBQUlGLDBCQUEwQjtZQUM1QmhCLFFBQVFILFlBQVksR0FBR21CO1FBQ3pCO1FBRUEsTUFBTVIsUUFBbUJXLENBQUFBLEdBQUFBLFdBQUFBLG9CQUFBQTtRQUN6QkMsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCckIsYUFBYVEsY0FBY0MsT0FBT0M7UUFFbERULFFBQVFxQixXQUFXLEdBQUdSO1FBQ3RCYixRQUFRUSxLQUFLLEdBQUdBO1FBRWhCRCxlQUFlQztRQUNmSCxjQUFjUTtJQUNoQjtJQUVBLE9BQU9TLENBQUFBLEdBQUFBLGVBQUFBLGFBQUFBLEVBQWM3QixPQUFPTztBQUM5QiIsInNvdXJjZXMiOlsiL2hvbWUvc3JjL2NsaWVudC9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL3JlZHVjZXJzL3NlcnZlci1wYXRjaC1yZWR1Y2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhyZWZGcm9tVXJsIH0gZnJvbSAnLi4vY3JlYXRlLWhyZWYtZnJvbS11cmwnXG5pbXBvcnQgeyBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUgfSBmcm9tICcuLi9hcHBseS1yb3V0ZXItc3RhdGUtcGF0Y2gtdG8tdHJlZSdcbmltcG9ydCB7IGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCB9IGZyb20gJy4uL2lzLW5hdmlnYXRpbmctdG8tbmV3LXJvb3QtbGF5b3V0J1xuaW1wb3J0IHR5cGUge1xuICBTZXJ2ZXJQYXRjaEFjdGlvbixcbiAgUmVkdWNlclN0YXRlLFxuICBSZWFkb25seVJlZHVjZXJTdGF0ZSxcbiAgTXV0YWJsZSxcbn0gZnJvbSAnLi4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBoYW5kbGVFeHRlcm5hbFVybCB9IGZyb20gJy4vbmF2aWdhdGUtcmVkdWNlcidcbmltcG9ydCB7IGFwcGx5RmxpZ2h0RGF0YSB9IGZyb20gJy4uL2FwcGx5LWZsaWdodC1kYXRhJ1xuaW1wb3J0IHsgaGFuZGxlTXV0YWJsZSB9IGZyb20gJy4uL2hhbmRsZS1tdXRhYmxlJ1xuaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IGNyZWF0ZUVtcHR5Q2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vYXBwLXJvdXRlcidcblxuZXhwb3J0IGZ1bmN0aW9uIHNlcnZlclBhdGNoUmVkdWNlcihcbiAgc3RhdGU6IFJlYWRvbmx5UmVkdWNlclN0YXRlLFxuICBhY3Rpb246IFNlcnZlclBhdGNoQWN0aW9uXG4pOiBSZWR1Y2VyU3RhdGUge1xuICBjb25zdCB7XG4gICAgc2VydmVyUmVzcG9uc2U6IHsgZmxpZ2h0RGF0YSwgY2Fub25pY2FsVXJsOiBjYW5vbmljYWxVcmxPdmVycmlkZSB9LFxuICAgIG5hdmlnYXRlZEF0LFxuICB9ID0gYWN0aW9uXG5cbiAgY29uc3QgbXV0YWJsZTogTXV0YWJsZSA9IHt9XG5cbiAgbXV0YWJsZS5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZSA9IGZhbHNlXG5cbiAgLy8gSGFuZGxlIGNhc2Ugd2hlbiBuYXZpZ2F0aW5nIHRvIHBhZ2UgaW4gYHBhZ2VzYCBmcm9tIGBhcHBgXG4gIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gaGFuZGxlRXh0ZXJuYWxVcmwoXG4gICAgICBzdGF0ZSxcbiAgICAgIG11dGFibGUsXG4gICAgICBmbGlnaHREYXRhLFxuICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgIClcbiAgfVxuXG4gIGxldCBjdXJyZW50VHJlZSA9IHN0YXRlLnRyZWVcbiAgbGV0IGN1cnJlbnRDYWNoZSA9IHN0YXRlLmNhY2hlXG5cbiAgZm9yIChjb25zdCBub3JtYWxpemVkRmxpZ2h0RGF0YSBvZiBmbGlnaHREYXRhKSB7XG4gICAgY29uc3QgeyBzZWdtZW50UGF0aDogZmxpZ2h0U2VnbWVudFBhdGgsIHRyZWU6IHRyZWVQYXRjaCB9ID1cbiAgICAgIG5vcm1hbGl6ZWRGbGlnaHREYXRhXG5cbiAgICBjb25zdCBuZXdUcmVlID0gYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlKFxuICAgICAgLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1xuICAgICAgWycnLCAuLi5mbGlnaHRTZWdtZW50UGF0aF0sXG4gICAgICBjdXJyZW50VHJlZSxcbiAgICAgIHRyZWVQYXRjaCxcbiAgICAgIHN0YXRlLmNhbm9uaWNhbFVybFxuICAgIClcblxuICAgIC8vIGBhcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWVgIHJldHVybnMgYG51bGxgIHdoZW4gaXQgZGV0ZXJtaW5lZCB0aGF0IHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaXMgbm90IGFwcGxpY2FibGUgdG8gdGhlIGN1cnJlbnQgdHJlZS5cbiAgICAvLyBJbiBvdGhlciB3b3JkcywgdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHRyZWUgdGhhdCBkb2Vzbid0IG1hdGNoIHdoYXQgdGhlIGNsaWVudCBpcyBjdXJyZW50bHkgcmVuZGVyaW5nLlxuICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgc2VydmVyIHBhdGNoIGFjdGlvbiB0b29rIGxvbmdlciB0byByZXNvbHZlIHRoYW4gYSBzdWJzZXF1ZW50IG5hdmlnYXRpb24gd2hpY2ggd291bGQgaGF2ZSBjaGFuZ2VkIHRoZSB0cmVlLlxuICAgIC8vIFByZXZpb3VzbHkgdGhpcyBjYXNlIHRyaWdnZXJlZCBhbiBNUEEgbmF2aWdhdGlvbiBidXQgaXQgc2hvdWxkIGJlIHNhZmUgdG8gc2ltcGx5IGRpc2NhcmQgdGhlIHNlcnZlciByZXNwb25zZSByYXRoZXIgdGhhbiBmb3JjaW5nXG4gICAgLy8gdGhlIGVudGlyZSBwYWdlIHRvIHJlbG9hZC5cbiAgICBpZiAobmV3VHJlZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfVxuXG4gICAgaWYgKGlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dChjdXJyZW50VHJlZSwgbmV3VHJlZSkpIHtcbiAgICAgIHJldHVybiBoYW5kbGVFeHRlcm5hbFVybChcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIG11dGFibGUsXG4gICAgICAgIHN0YXRlLmNhbm9uaWNhbFVybCxcbiAgICAgICAgc3RhdGUucHVzaFJlZi5wZW5kaW5nUHVzaFxuICAgICAgKVxuICAgIH1cblxuICAgIGNvbnN0IGNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZiA9IGNhbm9uaWNhbFVybE92ZXJyaWRlXG4gICAgICA/IGNyZWF0ZUhyZWZGcm9tVXJsKGNhbm9uaWNhbFVybE92ZXJyaWRlKVxuICAgICAgOiB1bmRlZmluZWRcblxuICAgIGlmIChjYW5vbmljYWxVcmxPdmVycmlkZUhyZWYpIHtcbiAgICAgIG11dGFibGUuY2Fub25pY2FsVXJsID0gY2Fub25pY2FsVXJsT3ZlcnJpZGVIcmVmXG4gICAgfVxuXG4gICAgY29uc3QgY2FjaGU6IENhY2hlTm9kZSA9IGNyZWF0ZUVtcHR5Q2FjaGVOb2RlKClcbiAgICBhcHBseUZsaWdodERhdGEobmF2aWdhdGVkQXQsIGN1cnJlbnRDYWNoZSwgY2FjaGUsIG5vcm1hbGl6ZWRGbGlnaHREYXRhKVxuXG4gICAgbXV0YWJsZS5wYXRjaGVkVHJlZSA9IG5ld1RyZWVcbiAgICBtdXRhYmxlLmNhY2hlID0gY2FjaGVcblxuICAgIGN1cnJlbnRDYWNoZSA9IGNhY2hlXG4gICAgY3VycmVudFRyZWUgPSBuZXdUcmVlXG4gIH1cblxuICByZXR1cm4gaGFuZGxlTXV0YWJsZShzdGF0ZSwgbXV0YWJsZSlcbn1cbiJdLCJuYW1lcyI6WyJzZXJ2ZXJQYXRjaFJlZHVjZXIiLCJzdGF0ZSIsImFjdGlvbiIsInNlcnZlclJlc3BvbnNlIiwiZmxpZ2h0RGF0YSIsImNhbm9uaWNhbFVybCIsImNhbm9uaWNhbFVybE92ZXJyaWRlIiwibmF2aWdhdGVkQXQiLCJtdXRhYmxlIiwicHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUiLCJoYW5kbGVFeHRlcm5hbFVybCIsInB1c2hSZWYiLCJwZW5kaW5nUHVzaCIsImN1cnJlbnRUcmVlIiwidHJlZSIsImN1cnJlbnRDYWNoZSIsImNhY2hlIiwibm9ybWFsaXplZEZsaWdodERhdGEiLCJzZWdtZW50UGF0aCIsImZsaWdodFNlZ21lbnRQYXRoIiwidHJlZVBhdGNoIiwibmV3VHJlZSIsImFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSIsImlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCIsImNhbm9uaWNhbFVybE92ZXJyaWRlSHJlZiIsImNyZWF0ZUhyZWZGcm9tVXJsIiwidW5kZWZpbmVkIiwiY3JlYXRlRW1wdHlDYWNoZU5vZGUiLCJhcHBseUZsaWdodERhdGEiLCJwYXRjaGVkVHJlZSIsImhhbmRsZU11dGFibGUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js": /*!**********************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js ***! \**********************************************************************************************************************************************************************************/ /***/ ((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 addRefreshMarkerToActiveParallelSegments: function() {\n return addRefreshMarkerToActiveParallelSegments;\n },\n refreshInactiveParallelSegments: function() {\n return refreshInactiveParallelSegments;\n }\n});\nconst _applyflightdata = __webpack_require__(/*! ./apply-flight-data */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js\");\nconst _fetchserverresponse = __webpack_require__(/*! ./fetch-server-response */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js\");\nconst _segment = __webpack_require__(/*! ../../../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nasync function refreshInactiveParallelSegments(options) {\n const fetchedSegments = new Set();\n await refreshInactiveParallelSegmentsImpl({\n ...options,\n rootTree: options.updatedTree,\n fetchedSegments\n });\n}\nasync function refreshInactiveParallelSegmentsImpl(param) {\n let { navigatedAt, state, updatedTree, updatedCache, includeNextUrl, fetchedSegments, rootTree = updatedTree, canonicalUrl } = param;\n const [, parallelRoutes, refetchPath, refetchMarker] = updatedTree;\n const fetchPromises = [];\n if (refetchPath && refetchPath !== canonicalUrl && refetchMarker === 'refresh' && // it's possible for the tree to contain multiple segments that contain data at the same URL\n // we keep track of them so we can dedupe the requests\n !fetchedSegments.has(refetchPath)) {\n fetchedSegments.add(refetchPath) // Mark this URL as fetched\n ;\n // Eagerly kick off the fetch for the refetch path & the parallel routes. This should be fine to do as they each operate\n // independently on their own cache nodes, and `applyFlightData` will copy anything it doesn't care about from the existing cache.\n const fetchPromise = (0, _fetchserverresponse.fetchServerResponse)(new URL(refetchPath, location.origin), {\n // refetch from the root of the updated tree, otherwise it will be scoped to the current segment\n // and might not contain the data we need to patch in interception route data (such as dynamic params from a previous segment)\n flightRouterState: [\n rootTree[0],\n rootTree[1],\n rootTree[2],\n 'refetch'\n ],\n nextUrl: includeNextUrl ? state.nextUrl : null\n }).then((param)=>{\n let { flightData } = param;\n if (typeof flightData !== 'string') {\n for (const flightDataPath of flightData){\n // we only pass the new cache as this function is called after clearing the router cache\n // and filling in the new page data from the server. Meaning the existing cache is actually the cache that's\n // just been created & has been written to, but hasn't been \"committed\" yet.\n (0, _applyflightdata.applyFlightData)(navigatedAt, updatedCache, updatedCache, flightDataPath);\n }\n } else {\n // When flightData is a string, it suggests that the server response should have triggered an MPA navigation\n // I'm not 100% sure of this decision, but it seems unlikely that we'd want to introduce a redirect side effect\n // when refreshing on-screen data, so handling this has been ommitted.\n }\n });\n fetchPromises.push(fetchPromise);\n }\n for(const key in parallelRoutes){\n const parallelFetchPromise = refreshInactiveParallelSegmentsImpl({\n navigatedAt,\n state,\n updatedTree: parallelRoutes[key],\n updatedCache,\n includeNextUrl,\n fetchedSegments,\n rootTree,\n canonicalUrl\n });\n fetchPromises.push(parallelFetchPromise);\n }\n await Promise.all(fetchPromises);\n}\nfunction addRefreshMarkerToActiveParallelSegments(tree, path) {\n const [segment, parallelRoutes, , refetchMarker] = tree;\n // a page segment might also contain concatenated search params, so we do a partial match on the key\n if (segment.includes(_segment.PAGE_SEGMENT_KEY) && refetchMarker !== 'refresh') {\n tree[2] = path;\n tree[3] = 'refresh';\n }\n for(const key in parallelRoutes){\n addRefreshMarkerToActiveParallelSegments(parallelRoutes[key], path);\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=refetch-inactive-parallel-segments.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcmVmZXRjaC1pbmFjdGl2ZS1wYXJhbGxlbC1zZWdtZW50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUF5SGdCQSx3Q0FBd0M7ZUFBeENBOztJQTlGTUMsK0JBQStCO2VBQS9CQTs7OzZDQXhCVTtpREFDSTtxQ0FDSDtBQXNCMUIsZUFBZUEsZ0NBQ3BCQyxPQUF3QztJQUV4QyxNQUFNQyxrQkFBa0IsSUFBSUM7SUFDNUIsTUFBTUMsb0NBQW9DO1FBQ3hDLEdBQUdILE9BQU87UUFDVkksVUFBVUosUUFBUUssV0FBVztRQUM3Qko7SUFDRjtBQUNGO0FBRUEsZUFBZUUsb0NBQW9DLEtBWWxEO0lBWmtELE1BQ2pERyxXQUFXLEVBQ1hDLEtBQUssRUFDTEYsV0FBVyxFQUNYRyxZQUFZLEVBQ1pDLGNBQWMsRUFDZFIsZUFBZSxFQUNmRyxXQUFXQyxXQUFXLEVBQ3RCSyxZQUFZLEVBSWIsR0Faa0Q7SUFhakQsTUFBTSxHQUFHQyxnQkFBZ0JDLGFBQWFDLGNBQWMsR0FBR1I7SUFDdkQsTUFBTVMsZ0JBQWdCLEVBQUU7SUFFeEIsSUFDRUYsZUFDQUEsZ0JBQWdCRixnQkFDaEJHLGtCQUFrQixhQUNsQiw0RkFBNEY7SUFDNUYsc0RBQXNEO0lBQ3RELENBQUNaLGdCQUFnQmMsR0FBRyxDQUFDSCxjQUNyQjtRQUNBWCxnQkFBZ0JlLEdBQUcsQ0FBQ0osYUFBYSwyQkFBMkI7O1FBRTVELHdIQUF3SDtRQUN4SCxrSUFBa0k7UUFDbEksTUFBTUssZUFBZUMsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUNuQixJQUFJQyxJQUFJUCxhQUFhUSxTQUFTQyxNQUFNLEdBQ3BDO1lBQ0UsZ0dBQWdHO1lBQ2hHLDhIQUE4SDtZQUM5SEMsbUJBQW1CO2dCQUFDbEIsUUFBUSxDQUFDLEVBQUU7Z0JBQUVBLFFBQVEsQ0FBQyxFQUFFO2dCQUFFQSxRQUFRLENBQUMsRUFBRTtnQkFBRTthQUFVO1lBQ3JFbUIsU0FBU2QsaUJBQWlCRixNQUFNZ0IsT0FBTyxHQUFHO1FBQzVDLEdBQ0FDLElBQUksQ0FBQztnQkFBQyxFQUFFQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxPQUFPQSxlQUFlLFVBQVU7Z0JBQ2xDLEtBQUssTUFBTUMsa0JBQWtCRCxXQUFZO29CQUN2Qyx3RkFBd0Y7b0JBQ3hGLDRHQUE0RztvQkFDNUcsNEVBQTRFO29CQUM1RUUsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQ0VyQixhQUNBRSxjQUNBQSxjQUNBa0I7Z0JBRUo7WUFDRixPQUFPO1lBQ0wsNEdBQTRHO1lBQzVHLCtHQUErRztZQUMvRyxzRUFBc0U7WUFDeEU7UUFDRjtRQUVBWixjQUFjYyxJQUFJLENBQUNYO0lBQ3JCO0lBRUEsSUFBSyxNQUFNWSxPQUFPbEIsZUFBZ0I7UUFDaEMsTUFBTW1CLHVCQUF1QjNCLG9DQUFvQztZQUMvREc7WUFDQUM7WUFDQUYsYUFBYU0sY0FBYyxDQUFDa0IsSUFBSTtZQUNoQ3JCO1lBQ0FDO1lBQ0FSO1lBQ0FHO1lBQ0FNO1FBQ0Y7UUFFQUksY0FBY2MsSUFBSSxDQUFDRTtJQUNyQjtJQUVBLE1BQU1DLFFBQVFDLEdBQUcsQ0FBQ2xCO0FBQ3BCO0FBUU8sU0FBU2hCLHlDQUNkbUMsSUFBdUIsRUFDdkJDLElBQVk7SUFFWixNQUFNLENBQUNDLFNBQVN4QixrQkFBa0JFLGNBQWMsR0FBR29CO0lBQ25ELG9HQUFvRztJQUNwRyxJQUFJRSxRQUFRQyxRQUFRLENBQUNDLFNBQUFBLGdCQUFnQixLQUFLeEIsa0JBQWtCLFdBQVc7UUFDckVvQixJQUFJLENBQUMsRUFBRSxHQUFHQztRQUNWRCxJQUFJLENBQUMsRUFBRSxHQUFHO0lBQ1o7SUFFQSxJQUFLLE1BQU1KLE9BQU9sQixlQUFnQjtRQUNoQ2IseUNBQXlDYSxjQUFjLENBQUNrQixJQUFJLEVBQUVLO0lBQ2hFO0FBQ0YiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9yZWZldGNoLWluYWN0aXZlLXBhcmFsbGVsLXNlZ21lbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmxpZ2h0Um91dGVyU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgQ2FjaGVOb2RlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgdHlwZSB7IEFwcFJvdXRlclN0YXRlIH0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB7IGFwcGx5RmxpZ2h0RGF0YSB9IGZyb20gJy4vYXBwbHktZmxpZ2h0LWRhdGEnXG5pbXBvcnQgeyBmZXRjaFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnLi9mZXRjaC1zZXJ2ZXItcmVzcG9uc2UnXG5pbXBvcnQgeyBQQUdFX1NFR01FTlRfS0VZIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2xpYi9zZWdtZW50J1xuXG5pbnRlcmZhY2UgUmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyB7XG4gIG5hdmlnYXRlZEF0OiBudW1iZXJcbiAgc3RhdGU6IEFwcFJvdXRlclN0YXRlXG4gIHVwZGF0ZWRUcmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICB1cGRhdGVkQ2FjaGU6IENhY2hlTm9kZVxuICBpbmNsdWRlTmV4dFVybDogYm9vbGVhblxuICBjYW5vbmljYWxVcmw6IHN0cmluZ1xufVxuXG4vKipcbiAqIFJlZnJlc2hlcyBpbmFjdGl2ZSBzZWdtZW50cyB0aGF0IGFyZSBzdGlsbCBpbiB0aGUgY3VycmVudCBGbGlnaHRSb3V0ZXJTdGF0ZS5cbiAqIEEgc2VnbWVudCBpcyBjb25zaWRlcmVkIFwiaW5hY3RpdmVcIiB3aGVuIHRoZSBzZXJ2ZXIgcmVzcG9uc2UgaW5kaWNhdGVzIGl0IGRpZG4ndCBtYXRjaCB0byBhIHBhZ2UgY29tcG9uZW50LlxuICogVGhpcyBoYXBwZW5zIGR1cmluZyBhIHNvZnQtbmF2aWdhdGlvbiwgd2hlcmUgdGhlIHNlcnZlciB3aWxsIHdhbnQgdG8gcGF0Y2ggaW4gdGhlIHNlZ21lbnRcbiAqIHdpdGggdGhlIFwiZGVmYXVsdFwiIGNvbXBvbmVudCwgYnV0IHdlIGV4cGxpY2l0bHkgaWdub3JlIHRoZSBzZXJ2ZXIgaW4gdGhpcyBjYXNlXG4gKiBhbmQga2VlcCB0aGUgZXhpc3Rpbmcgc3RhdGUgZm9yIHRoYXQgc2VnbWVudC4gTmV3IGRhdGEgZm9yIGluYWN0aXZlIHNlZ21lbnRzIGFyZSBpbmhlcmVudGx5XG4gKiBub3QgcGFydCBvZiB0aGUgc2VydmVyIHJlc3BvbnNlIHdoZW4gd2UgcGF0Y2ggdGhlIHRyZWUsIGJlY2F1c2UgdGhleSB3ZXJlIGFzc29jaWF0ZWQgd2l0aCBhIHJlc3BvbnNlXG4gKiBmcm9tIGFuIGVhcmxpZXIgbmF2aWdhdGlvbi9yZXF1ZXN0LiBGb3IgZWFjaCBzZWdtZW50LCBvbmNlIGl0IGJlY29tZXMgXCJhY3RpdmVcIiwgd2UgZW5jb2RlIHRoZSBVUkwgdGhhdCBwcm92aWRlZFxuICogdGhlIGRhdGEgZm9yIGl0LiBUaGlzIGZ1bmN0aW9uIHRyYXZlcnNlcyBwYXJhbGxlbCByb3V0ZXMgbG9va2luZyBmb3IgdGhlc2UgbWFya2VycyBzbyB0aGF0IGl0IGNhbiByZS1mZXRjaFxuICogYW5kIHBhdGNoIHRoZSBuZXcgZGF0YSBpbnRvIHRoZSB0cmVlLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cyhcbiAgb3B0aW9uczogUmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50c1xuKSB7XG4gIGNvbnN0IGZldGNoZWRTZWdtZW50cyA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIGF3YWl0IHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHNJbXBsKHtcbiAgICAuLi5vcHRpb25zLFxuICAgIHJvb3RUcmVlOiBvcHRpb25zLnVwZGF0ZWRUcmVlLFxuICAgIGZldGNoZWRTZWdtZW50cyxcbiAgfSlcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50c0ltcGwoe1xuICBuYXZpZ2F0ZWRBdCxcbiAgc3RhdGUsXG4gIHVwZGF0ZWRUcmVlLFxuICB1cGRhdGVkQ2FjaGUsXG4gIGluY2x1ZGVOZXh0VXJsLFxuICBmZXRjaGVkU2VnbWVudHMsXG4gIHJvb3RUcmVlID0gdXBkYXRlZFRyZWUsXG4gIGNhbm9uaWNhbFVybCxcbn06IFJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMgJiB7XG4gIGZldGNoZWRTZWdtZW50czogU2V0PHN0cmluZz5cbiAgcm9vdFRyZWU6IEZsaWdodFJvdXRlclN0YXRlXG59KSB7XG4gIGNvbnN0IFssIHBhcmFsbGVsUm91dGVzLCByZWZldGNoUGF0aCwgcmVmZXRjaE1hcmtlcl0gPSB1cGRhdGVkVHJlZVxuICBjb25zdCBmZXRjaFByb21pc2VzID0gW11cblxuICBpZiAoXG4gICAgcmVmZXRjaFBhdGggJiZcbiAgICByZWZldGNoUGF0aCAhPT0gY2Fub25pY2FsVXJsICYmXG4gICAgcmVmZXRjaE1hcmtlciA9PT0gJ3JlZnJlc2gnICYmXG4gICAgLy8gaXQncyBwb3NzaWJsZSBmb3IgdGhlIHRyZWUgdG8gY29udGFpbiBtdWx0aXBsZSBzZWdtZW50cyB0aGF0IGNvbnRhaW4gZGF0YSBhdCB0aGUgc2FtZSBVUkxcbiAgICAvLyB3ZSBrZWVwIHRyYWNrIG9mIHRoZW0gc28gd2UgY2FuIGRlZHVwZSB0aGUgcmVxdWVzdHNcbiAgICAhZmV0Y2hlZFNlZ21lbnRzLmhhcyhyZWZldGNoUGF0aClcbiAgKSB7XG4gICAgZmV0Y2hlZFNlZ21lbnRzLmFkZChyZWZldGNoUGF0aCkgLy8gTWFyayB0aGlzIFVSTCBhcyBmZXRjaGVkXG5cbiAgICAvLyBFYWdlcmx5IGtpY2sgb2ZmIHRoZSBmZXRjaCBmb3IgdGhlIHJlZmV0Y2ggcGF0aCAmIHRoZSBwYXJhbGxlbCByb3V0ZXMuIFRoaXMgc2hvdWxkIGJlIGZpbmUgdG8gZG8gYXMgdGhleSBlYWNoIG9wZXJhdGVcbiAgICAvLyBpbmRlcGVuZGVudGx5IG9uIHRoZWlyIG93biBjYWNoZSBub2RlcywgYW5kIGBhcHBseUZsaWdodERhdGFgIHdpbGwgY29weSBhbnl0aGluZyBpdCBkb2Vzbid0IGNhcmUgYWJvdXQgZnJvbSB0aGUgZXhpc3RpbmcgY2FjaGUuXG4gICAgY29uc3QgZmV0Y2hQcm9taXNlID0gZmV0Y2hTZXJ2ZXJSZXNwb25zZShcbiAgICAgIG5ldyBVUkwocmVmZXRjaFBhdGgsIGxvY2F0aW9uLm9yaWdpbiksXG4gICAgICB7XG4gICAgICAgIC8vIHJlZmV0Y2ggZnJvbSB0aGUgcm9vdCBvZiB0aGUgdXBkYXRlZCB0cmVlLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBzY29wZWQgdG8gdGhlIGN1cnJlbnQgc2VnbWVudFxuICAgICAgICAvLyBhbmQgbWlnaHQgbm90IGNvbnRhaW4gdGhlIGRhdGEgd2UgbmVlZCB0byBwYXRjaCBpbiBpbnRlcmNlcHRpb24gcm91dGUgZGF0YSAoc3VjaCBhcyBkeW5hbWljIHBhcmFtcyBmcm9tIGEgcHJldmlvdXMgc2VnbWVudClcbiAgICAgICAgZmxpZ2h0Um91dGVyU3RhdGU6IFtyb290VHJlZVswXSwgcm9vdFRyZWVbMV0sIHJvb3RUcmVlWzJdLCAncmVmZXRjaCddLFxuICAgICAgICBuZXh0VXJsOiBpbmNsdWRlTmV4dFVybCA/IHN0YXRlLm5leHRVcmwgOiBudWxsLFxuICAgICAgfVxuICAgICkudGhlbigoeyBmbGlnaHREYXRhIH0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgZm9yIChjb25zdCBmbGlnaHREYXRhUGF0aCBvZiBmbGlnaHREYXRhKSB7XG4gICAgICAgICAgLy8gd2Ugb25seSBwYXNzIHRoZSBuZXcgY2FjaGUgYXMgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgY2xlYXJpbmcgdGhlIHJvdXRlciBjYWNoZVxuICAgICAgICAgIC8vIGFuZCBmaWxsaW5nIGluIHRoZSBuZXcgcGFnZSBkYXRhIGZyb20gdGhlIHNlcnZlci4gTWVhbmluZyB0aGUgZXhpc3RpbmcgY2FjaGUgaXMgYWN0dWFsbHkgdGhlIGNhY2hlIHRoYXQnc1xuICAgICAgICAgIC8vIGp1c3QgYmVlbiBjcmVhdGVkICYgaGFzIGJlZW4gd3JpdHRlbiB0bywgYnV0IGhhc24ndCBiZWVuIFwiY29tbWl0dGVkXCIgeWV0LlxuICAgICAgICAgIGFwcGx5RmxpZ2h0RGF0YShcbiAgICAgICAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgICAgICAgdXBkYXRlZENhY2hlLFxuICAgICAgICAgICAgdXBkYXRlZENhY2hlLFxuICAgICAgICAgICAgZmxpZ2h0RGF0YVBhdGhcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFdoZW4gZmxpZ2h0RGF0YSBpcyBhIHN0cmluZywgaXQgc3VnZ2VzdHMgdGhhdCB0aGUgc2VydmVyIHJlc3BvbnNlIHNob3VsZCBoYXZlIHRyaWdnZXJlZCBhbiBNUEEgbmF2aWdhdGlvblxuICAgICAgICAvLyBJJ20gbm90IDEwMCUgc3VyZSBvZiB0aGlzIGRlY2lzaW9uLCBidXQgaXQgc2VlbXMgdW5saWtlbHkgdGhhdCB3ZSdkIHdhbnQgdG8gaW50cm9kdWNlIGEgcmVkaXJlY3Qgc2lkZSBlZmZlY3RcbiAgICAgICAgLy8gd2hlbiByZWZyZXNoaW5nIG9uLXNjcmVlbiBkYXRhLCBzbyBoYW5kbGluZyB0aGlzIGhhcyBiZWVuIG9tbWl0dGVkLlxuICAgICAgfVxuICAgIH0pXG5cbiAgICBmZXRjaFByb21pc2VzLnB1c2goZmV0Y2hQcm9taXNlKVxuICB9XG5cbiAgZm9yIChjb25zdCBrZXkgaW4gcGFyYWxsZWxSb3V0ZXMpIHtcbiAgICBjb25zdCBwYXJhbGxlbEZldGNoUHJvbWlzZSA9IHJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHNJbXBsKHtcbiAgICAgIG5hdmlnYXRlZEF0LFxuICAgICAgc3RhdGUsXG4gICAgICB1cGRhdGVkVHJlZTogcGFyYWxsZWxSb3V0ZXNba2V5XSxcbiAgICAgIHVwZGF0ZWRDYWNoZSxcbiAgICAgIGluY2x1ZGVOZXh0VXJsLFxuICAgICAgZmV0Y2hlZFNlZ21lbnRzLFxuICAgICAgcm9vdFRyZWUsXG4gICAgICBjYW5vbmljYWxVcmwsXG4gICAgfSlcblxuICAgIGZldGNoUHJvbWlzZXMucHVzaChwYXJhbGxlbEZldGNoUHJvbWlzZSlcbiAgfVxuXG4gIGF3YWl0IFByb21pc2UuYWxsKGZldGNoUHJvbWlzZXMpXG59XG5cbi8qKlxuICogV2Fsa3MgdGhlIGN1cnJlbnQgcGFyYWxsZWwgc2VnbWVudHMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIFwiYWN0aXZlXCIuXG4gKiBBbiBhY3RpdmUgcGFyYWxsZWwgcm91dGUgd2lsbCBoYXZlIGEgYF9fUEFHRV9fYCBzZWdtZW50IGluIHRoZSBGbGlnaHRSb3V0ZXJTdGF0ZS5cbiAqIEFzIG9wcG9zZWQgdG8gYSBgX19ERUZBVUxUX19gIHNlZ21lbnQsIHdoaWNoIG1lYW5zIHRoZXJlIHdhcyBubyBtYXRjaCBmb3IgdGhhdCBwYXJhbGxlbCByb3V0ZS5cbiAqIFdlIGFkZCBhIHNwZWNpYWwgbWFya2VyIGhlcmUgc28gdGhhdCB3ZSBrbm93IGhvdyB0byByZWZyZXNoIGl0cyBkYXRhIHdoZW4gdGhlIHJvdXRlciBpcyByZXZhbGlkYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMoXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBwYXRoOiBzdHJpbmdcbikge1xuICBjb25zdCBbc2VnbWVudCwgcGFyYWxsZWxSb3V0ZXMsICwgcmVmZXRjaE1hcmtlcl0gPSB0cmVlXG4gIC8vIGEgcGFnZSBzZWdtZW50IG1pZ2h0IGFsc28gY29udGFpbiBjb25jYXRlbmF0ZWQgc2VhcmNoIHBhcmFtcywgc28gd2UgZG8gYSBwYXJ0aWFsIG1hdGNoIG9uIHRoZSBrZXlcbiAgaWYgKHNlZ21lbnQuaW5jbHVkZXMoUEFHRV9TRUdNRU5UX0tFWSkgJiYgcmVmZXRjaE1hcmtlciAhPT0gJ3JlZnJlc2gnKSB7XG4gICAgdHJlZVsyXSA9IHBhdGhcbiAgICB0cmVlWzNdID0gJ3JlZnJlc2gnXG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBpbiBwYXJhbGxlbFJvdXRlcykge1xuICAgIGFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMocGFyYWxsZWxSb3V0ZXNba2V5XSwgcGF0aClcbiAgfVxufVxuIl0sIm5hbWVzIjpbImFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMiLCJyZWZyZXNoSW5hY3RpdmVQYXJhbGxlbFNlZ21lbnRzIiwib3B0aW9ucyIsImZldGNoZWRTZWdtZW50cyIsIlNldCIsInJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHNJbXBsIiwicm9vdFRyZWUiLCJ1cGRhdGVkVHJlZSIsIm5hdmlnYXRlZEF0Iiwic3RhdGUiLCJ1cGRhdGVkQ2FjaGUiLCJpbmNsdWRlTmV4dFVybCIsImNhbm9uaWNhbFVybCIsInBhcmFsbGVsUm91dGVzIiwicmVmZXRjaFBhdGgiLCJyZWZldGNoTWFya2VyIiwiZmV0Y2hQcm9taXNlcyIsImhhcyIsImFkZCIsImZldGNoUHJvbWlzZSIsImZldGNoU2VydmVyUmVzcG9uc2UiLCJVUkwiLCJsb2NhdGlvbiIsIm9yaWdpbiIsImZsaWdodFJvdXRlclN0YXRlIiwibmV4dFVybCIsInRoZW4iLCJmbGlnaHREYXRhIiwiZmxpZ2h0RGF0YVBhdGgiLCJhcHBseUZsaWdodERhdGEiLCJwdXNoIiwia2V5IiwicGFyYWxsZWxGZXRjaFByb21pc2UiLCJQcm9taXNlIiwiYWxsIiwidHJlZSIsInBhdGgiLCJzZWdtZW50IiwiaW5jbHVkZXMiLCJQQUdFX1NFR01FTlRfS0VZIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/refetch-inactive-parallel-segments.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js ***! \********************************************************************************************************************************************************************/ /***/ ((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 ACTION_HMR_REFRESH: function() {\n return ACTION_HMR_REFRESH;\n },\n ACTION_NAVIGATE: function() {\n return ACTION_NAVIGATE;\n },\n ACTION_PREFETCH: function() {\n return ACTION_PREFETCH;\n },\n ACTION_REFRESH: function() {\n return ACTION_REFRESH;\n },\n ACTION_RESTORE: function() {\n return ACTION_RESTORE;\n },\n ACTION_SERVER_ACTION: function() {\n return ACTION_SERVER_ACTION;\n },\n ACTION_SERVER_PATCH: function() {\n return ACTION_SERVER_PATCH;\n },\n PrefetchCacheEntryStatus: function() {\n return PrefetchCacheEntryStatus;\n },\n PrefetchKind: function() {\n return PrefetchKind;\n }\n});\nconst ACTION_REFRESH = 'refresh';\nconst ACTION_NAVIGATE = 'navigate';\nconst ACTION_RESTORE = 'restore';\nconst ACTION_SERVER_PATCH = 'server-patch';\nconst ACTION_PREFETCH = 'prefetch';\nconst ACTION_HMR_REFRESH = 'hmr-refresh';\nconst ACTION_SERVER_ACTION = 'server-action';\nvar PrefetchKind = /*#__PURE__*/ function(PrefetchKind) {\n PrefetchKind[\"AUTO\"] = \"auto\";\n PrefetchKind[\"FULL\"] = \"full\";\n PrefetchKind[\"TEMPORARY\"] = \"temporary\";\n return PrefetchKind;\n}({});\nvar PrefetchCacheEntryStatus = /*#__PURE__*/ function(PrefetchCacheEntryStatus) {\n PrefetchCacheEntryStatus[\"fresh\"] = \"fresh\";\n PrefetchCacheEntryStatus[\"reusable\"] = \"reusable\";\n PrefetchCacheEntryStatus[\"expired\"] = \"expired\";\n PrefetchCacheEntryStatus[\"stale\"] = \"stale\";\n return PrefetchCacheEntryStatus;\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-reducer-types.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBWWFBLGtCQUFrQjtlQUFsQkE7O0lBSkFDLGVBQWU7ZUFBZkE7O0lBR0FDLGVBQWU7ZUFBZkE7O0lBSkFDLGNBQWM7ZUFBZEE7O0lBRUFDLGNBQWM7ZUFBZEE7O0lBSUFDLG9CQUFvQjtlQUFwQkE7O0lBSEFDLG1CQUFtQjtlQUFuQkE7O0lBeU1EQyx3QkFBd0I7ZUFBeEJBOztJQWhFQUMsWUFBWTtlQUFaQTs7O0FBNUlMLE1BQU1MLGlCQUFpQjtBQUN2QixNQUFNRixrQkFBa0I7QUFDeEIsTUFBTUcsaUJBQWlCO0FBQ3ZCLE1BQU1FLHNCQUFzQjtBQUM1QixNQUFNSixrQkFBa0I7QUFDeEIsTUFBTUYscUJBQXFCO0FBQzNCLE1BQU1LLHVCQUF1QjtBQXNJN0IsSUFBS0csZUFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsWUFBQUE7Ozs7V0FBQUE7O0FBZ0VMLElBQUtELDJCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSx3QkFBQUE7Ozs7O1dBQUFBIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDYWNoZU5vZGUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB0eXBlIHtcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIEZsaWdodFNlZ21lbnRQYXRoLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdCB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuXG5leHBvcnQgY29uc3QgQUNUSU9OX1JFRlJFU0ggPSAncmVmcmVzaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fTkFWSUdBVEUgPSAnbmF2aWdhdGUnXG5leHBvcnQgY29uc3QgQUNUSU9OX1JFU1RPUkUgPSAncmVzdG9yZSdcbmV4cG9ydCBjb25zdCBBQ1RJT05fU0VSVkVSX1BBVENIID0gJ3NlcnZlci1wYXRjaCdcbmV4cG9ydCBjb25zdCBBQ1RJT05fUFJFRkVUQ0ggPSAncHJlZmV0Y2gnXG5leHBvcnQgY29uc3QgQUNUSU9OX0hNUl9SRUZSRVNIID0gJ2htci1yZWZyZXNoJ1xuZXhwb3J0IGNvbnN0IEFDVElPTl9TRVJWRVJfQUNUSU9OID0gJ3NlcnZlci1hY3Rpb24nXG5cbmV4cG9ydCB0eXBlIFJvdXRlckNoYW5nZUJ5U2VydmVyUmVzcG9uc2UgPSAoe1xuICBuYXZpZ2F0ZWRBdCxcbiAgcHJldmlvdXNUcmVlLFxuICBzZXJ2ZXJSZXNwb25zZSxcbn06IHtcbiAgbmF2aWdhdGVkQXQ6IG51bWJlclxuICBwcmV2aW91c1RyZWU6IEZsaWdodFJvdXRlclN0YXRlXG4gIHNlcnZlclJlc3BvbnNlOiBGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0XG59KSA9PiB2b2lkXG5cbmV4cG9ydCBpbnRlcmZhY2UgTXV0YWJsZSB7XG4gIG1wYU5hdmlnYXRpb24/OiBib29sZWFuXG4gIHBhdGNoZWRUcmVlPzogRmxpZ2h0Um91dGVyU3RhdGVcbiAgY2Fub25pY2FsVXJsPzogc3RyaW5nXG4gIHNjcm9sbGFibGVTZWdtZW50cz86IEZsaWdodFNlZ21lbnRQYXRoW11cbiAgcGVuZGluZ1B1c2g/OiBib29sZWFuXG4gIGNhY2hlPzogQ2FjaGVOb2RlXG4gIHByZWZldGNoQ2FjaGU/OiBBcHBSb3V0ZXJTdGF0ZVsncHJlZmV0Y2hDYWNoZSddXG4gIGhhc2hGcmFnbWVudD86IHN0cmluZ1xuICBzaG91bGRTY3JvbGw/OiBib29sZWFuXG4gIHByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlPzogYm9vbGVhblxuICBvbmx5SGFzaENoYW5nZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJBY3Rpb25NdXRhYmxlIGV4dGVuZHMgTXV0YWJsZSB7XG4gIGluRmxpZ2h0U2VydmVyQWN0aW9uPzogUHJvbWlzZTxhbnk+IHwgbnVsbFxufVxuXG4vKipcbiAqIFJlZnJlc2ggdHJpZ2dlcnMgYSByZWZyZXNoIG9mIHRoZSBmdWxsIHBhZ2UgZGF0YS5cbiAqIC0gZmV0Y2hlcyB0aGUgRmxpZ2h0IGRhdGEgYW5kIGZpbGxzIHJzYyBhdCB0aGUgcm9vdCBvZiB0aGUgY2FjaGUuXG4gKiAtIFRoZSByb3V0ZXIgc3RhdGUgaXMgdXBkYXRlZCBhdCB0aGUgcm9vdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZyZXNoQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9SRUZSRVNIXG4gIG9yaWdpbjogTG9jYXRpb25bJ29yaWdpbiddXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSG1yUmVmcmVzaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fSE1SX1JFRlJFU0hcbiAgb3JpZ2luOiBMb2NhdGlvblsnb3JpZ2luJ11cbn1cblxuZXhwb3J0IHR5cGUgU2VydmVyQWN0aW9uRGlzcGF0Y2hlciA9IChcbiAgYXJnczogT21pdDxcbiAgICBTZXJ2ZXJBY3Rpb25BY3Rpb24sXG4gICAgJ3R5cGUnIHwgJ211dGFibGUnIHwgJ25hdmlnYXRlJyB8ICdjaGFuZ2VCeVNlcnZlclJlc3BvbnNlJyB8ICdjYWNoZSdcbiAgPlxuKSA9PiB2b2lkXG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmVyQWN0aW9uQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9TRVJWRVJfQUNUSU9OXG4gIGFjdGlvbklkOiBzdHJpbmdcbiAgYWN0aW9uQXJnczogYW55W11cbiAgcmVzb2x2ZTogKHZhbHVlOiBhbnkpID0+IHZvaWRcbiAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkXG59XG5cbi8qKlxuICogTmF2aWdhdGUgdHJpZ2dlcnMgYSBuYXZpZ2F0aW9uIHRvIHRoZSBwcm92aWRlZCB1cmwuIEl0IHN1cHBvcnRzIHR3byB0eXBlczogYHB1c2hgIGFuZCBgcmVwbGFjZWAuXG4gKlxuICogYG5hdmlnYXRlVHlwZWA6XG4gKiAtIGBwdXNoYCAtIHB1c2hlcyBhIG5ldyBoaXN0b3J5IGVudHJ5IGluIHRoZSBicm93c2VyIGhpc3RvcnlcbiAqIC0gYHJlcGxhY2VgIC0gcmVwbGFjZXMgdGhlIGN1cnJlbnQgaGlzdG9yeSBlbnRyeSBpbiB0aGUgYnJvd3NlciBoaXN0b3J5XG4gKlxuICogTmF2aWdhdGUgaGFzIG11bHRpcGxlIGNhY2hlIGhldXJpc3RpY3M6XG4gKiAtIHBhZ2Ugd2FzIHByZWZldGNoZWRcbiAqICAtIEFwcGx5IHJvdXRlciBzdGF0ZSB0cmVlIGZyb20gcHJlZmV0Y2hcbiAqICAtIEFwcGx5IEZsaWdodCBkYXRhIGZyb20gcHJlZmV0Y2ggdG8gdGhlIGNhY2hlXG4gKiAgLSBJZiBGbGlnaHQgZGF0YSBpcyBhIHN0cmluZywgaXQncyBhIHJlZGlyZWN0IGFuZCB0aGUgc3RhdGUgaXMgdXBkYXRlZCB0byB0cmlnZ2VyIGEgcmVkaXJlY3RcbiAqICAtIENoZWNrIGlmIGhhcmQgbmF2aWdhdGlvbiBpcyBuZWVkZWRcbiAqICAgIC0gSGFyZCBuYXZpZ2F0aW9uIGhhcHBlbnMgd2hlbiBhIGR5bmFtaWMgcGFyYW1ldGVyIGJlbG93IHRoZSBjb21tb24gbGF5b3V0IGNoYW5nZWRcbiAqICAgIC0gV2hlbiBoYXJkIG5hdmlnYXRpb24gaXMgbmVlZGVkIHRoZSBjYWNoZSBpcyBpbnZhbGlkYXRlZCBiZWxvdyB0aGUgZmxpZ2h0U2VnbWVudFBhdGhcbiAqICAgIC0gVGhlIG1pc3NpbmcgY2FjaGUgbm9kZXMgb2YgdGhlIHBhZ2Ugd2lsbCBiZSBmZXRjaGVkIGluIGxheW91dC1yb3V0ZXIgYW5kIHRyaWdnZXIgdGhlIFNFUlZFUl9QQVRDSCBhY3Rpb25cbiAqICAtIElmIGhhcmQgbmF2aWdhdGlvbiBpcyBub3QgbmVlZGVkXG4gKiAgICAtIFRoZSBjYWNoZSBpcyByZXVzZWRcbiAqICAgIC0gSWYgYW55IGNhY2hlIG5vZGVzIGFyZSBtaXNzaW5nIHRoZXknbGwgYmUgZmV0Y2hlZCBpbiBsYXlvdXQtcm91dGVyIGFuZCB0cmlnZ2VyIHRoZSBTRVJWRVJfUEFUQ0ggYWN0aW9uXG4gKiAtIHBhZ2Ugd2FzIG5vdCBwcmVmZXRjaGVkXG4gKiAgLSBUaGUgbmF2aWdhdGUgd2FzIGNhbGxlZCBmcm9tIGBuZXh0L3JvdXRlcmAgKGByb3V0ZXIucHVzaCgpYCAvIGByb3V0ZXIucmVwbGFjZSgpYCkgLyBgbmV4dC9saW5rYCB3aXRob3V0IHByZWZldGNoZWQgZGF0YSBhdmFpbGFibGUgKGUuZy4gdGhlIHByZWZldGNoIGRpZG4ndCBjb21lIGJhY2sgZnJvbSB0aGUgc2VydmVyIGJlZm9yZSBjbGlja2luZyB0aGUgbGluaylcbiAqICAgIC0gRmxpZ2h0IGRhdGEgaXMgZmV0Y2hlZCBpbiB0aGUgcmVkdWNlciAoc3VzcGVuZHMgdGhlIHJlZHVjZXIpXG4gKiAgICAtIFJvdXRlciBzdGF0ZSB0cmVlIGlzIGNyZWF0ZWQgYmFzZWQgb24gRmxpZ2h0IGRhdGFcbiAqICAgIC0gQ2FjaGUgaXMgZmlsbGVkIGJhc2VkIG9uIHRoZSBGbGlnaHQgZGF0YVxuICpcbiAqIEFib3ZlIHN0ZXBzIGV4cGxhaW4gMyBjYXNlczpcbiAqIC0gYHNvZnRgIC0gUmV1c2VzIHRoZSBleGlzdGluZyBjYWNoZSBhbmQgZmV0Y2hlcyBtaXNzaW5nIG5vZGVzIGluIGxheW91dC1yb3V0ZXIuXG4gKiAtIGBoYXJkYCAtIENyZWF0ZXMgYSBuZXcgY2FjaGUgd2hlcmUgY2FjaGUgbm9kZXMgYXJlIHJlbW92ZWQgYmVsb3cgdGhlIGNvbW1vbiBsYXlvdXQgYW5kIGZldGNoZXMgbWlzc2luZyBub2RlcyBpbiBsYXlvdXQtcm91dGVyLlxuICogLSBgb3B0aW1pc3RpY2AgKGV4cGxpY2l0IG5vIHByZWZldGNoKSAtIENyZWF0ZXMgYSBuZXcgY2FjaGUgYW5kIGtpY2tzIG9mZiB0aGUgZGF0YSBmZXRjaCBpbiB0aGUgcmVkdWNlci4gVGhlIGRhdGEgZmV0Y2ggaXMgYXdhaXRlZCBpbiB0aGUgbGF5b3V0LXJvdXRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0ZUFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fTkFWSUdBVEVcbiAgdXJsOiBVUkxcbiAgaXNFeHRlcm5hbFVybDogYm9vbGVhblxuICBsb2NhdGlvblNlYXJjaDogTG9jYXRpb25bJ3NlYXJjaCddXG4gIG5hdmlnYXRlVHlwZTogJ3B1c2gnIHwgJ3JlcGxhY2UnXG4gIHNob3VsZFNjcm9sbDogYm9vbGVhblxuICBhbGxvd0FsaWFzaW5nOiBib29sZWFuXG59XG5cbi8qKlxuICogUmVzdG9yZSBhcHBsaWVzIHRoZSBwcm92aWRlZCByb3V0ZXIgc3RhdGUuXG4gKiAtIFVzZWQgZm9yIGBwb3BzdGF0ZWAgKGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uKSB3aGVyZSBhIGtub3duIHJvdXRlciBzdGF0ZSBoYXMgdG8gYmUgYXBwbGllZC5cbiAqIC0gQWxzbyB1c2VkIHdoZW4gc3luY2luZyB0aGUgcm91dGVyIHN0YXRlIHdpdGggYHB1c2hTdGF0ZWAvYHJlcGxhY2VTdGF0ZWAgY2FsbHMuXG4gKiAtIFJvdXRlciBzdGF0ZSBpcyBhcHBsaWVkIGFzLWlzIGZyb20gdGhlIGhpc3Rvcnkgc3RhdGUsIGlmIGF2YWlsYWJsZS5cbiAqIC0gSWYgdGhlIGhpc3Rvcnkgc3RhdGUgZG9lcyBub3QgY29udGFpbiB0aGUgcm91dGVyIHN0YXRlLCB0aGUgZXhpc3Rpbmcgcm91dGVyIHN0YXRlIGlzIHVzZWQuXG4gKiAtIElmIGFueSBjYWNoZSBub2RlIGlzIG1pc3NpbmcgaXQgd2lsbCBiZSBmZXRjaGVkIGluIGxheW91dC1yb3V0ZXIgZHVyaW5nIHJlbmRlcmluZyBhbmQgdGhlIHNlcnZlci1wYXRjaCBjYXNlLlxuICogLSBJZiBleGlzdGluZyBjYWNoZSBub2RlcyBtYXRjaCB0aGVzZSBhcmUgdXNlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXN0b3JlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9SRVNUT1JFXG4gIHVybDogVVJMXG4gIHRyZWU6IEZsaWdodFJvdXRlclN0YXRlIHwgdW5kZWZpbmVkXG59XG5cbi8qKlxuICogU2VydmVyLXBhdGNoIGFwcGxpZXMgdGhlIHByb3ZpZGVkIEZsaWdodCBkYXRhIHRvIHRoZSBjYWNoZSBhbmQgcm91dGVyIHRyZWUuXG4gKiAtIE9ubHkgdHJpZ2dlcmVkIGluIGxheW91dC1yb3V0ZXIuXG4gKiAtIENyZWF0ZXMgYSBuZXcgY2FjaGUgYW5kIHJvdXRlciBzdGF0ZSB3aXRoIHRoZSBGbGlnaHQgZGF0YSBhcHBsaWVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcnZlclBhdGNoQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEFDVElPTl9TRVJWRVJfUEFUQ0hcbiAgbmF2aWdhdGVkQXQ6IG51bWJlclxuICBzZXJ2ZXJSZXNwb25zZTogRmV0Y2hTZXJ2ZXJSZXNwb25zZVJlc3VsdFxuICBwcmV2aW91c1RyZWU6IEZsaWdodFJvdXRlclN0YXRlXG59XG5cbi8qKlxuICogUHJlZmV0Y2hLaW5kIGRlZmluZXMgdGhlIHR5cGUgb2YgcHJlZmV0Y2hpbmcgdGhhdCBzaG91bGQgYmUgZG9uZS5cbiAqIC0gYGF1dG9gIC0gaWYgdGhlIHBhZ2UgaXMgZHluYW1pYywgcHJlZmV0Y2ggdGhlIHBhZ2UgZGF0YSBwYXJ0aWFsbHksIGlmIHN0YXRpYyBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIGZ1bGx5LlxuICogLSBgZnVsbGAgLSBwcmVmZXRjaCB0aGUgcGFnZSBkYXRhIGZ1bGx5LlxuICogLSBgdGVtcG9yYXJ5YCAtIGEgdGVtcG9yYXJ5IHByZWZldGNoIGVudHJ5IGlzIGFkZGVkIHRvIHRoZSBjYWNoZSwgdGhpcyBpcyB1c2VkIHdoZW4gcHJlZmV0Y2g9e2ZhbHNlfSBpcyB1c2VkIGluIG5leHQvbGluayBvciB3aGVuIHlvdSBwdXNoIGEgcm91dGUgcHJvZ3JhbW1hdGljYWxseS5cbiAqL1xuXG5leHBvcnQgZW51bSBQcmVmZXRjaEtpbmQge1xuICBBVVRPID0gJ2F1dG8nLFxuICBGVUxMID0gJ2Z1bGwnLFxuICBURU1QT1JBUlkgPSAndGVtcG9yYXJ5Jyxcbn1cblxuLyoqXG4gKiBQcmVmZXRjaCBhZGRzIHRoZSBwcm92aWRlZCBGbGlnaHREYXRhIHRvIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogLSBDcmVhdGVzIHRoZSByb3V0ZXIgc3RhdGUgdHJlZSBiYXNlZCBvbiB0aGUgcGF0Y2ggaW4gRmxpZ2h0RGF0YVxuICogLSBBZGRzIHRoZSBGbGlnaHREYXRhIHRvIHRoZSBwcmVmZXRjaCBjYWNoZVxuICogLSBJbiBBQ1RJT05fTkFWSUdBVEUgdGhlIHByZWZldGNoIGNhY2hlIGlzIGNoZWNrZWQgYW5kIHRoZSByb3V0ZXIgc3RhdGUgdHJlZSBhbmQgRmxpZ2h0RGF0YSBhcmUgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmVmZXRjaEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBBQ1RJT05fUFJFRkVUQ0hcbiAgdXJsOiBVUkxcbiAga2luZDogUHJlZmV0Y2hLaW5kXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVzaFJlZiB7XG4gIC8qKlxuICAgKiBJZiB0aGUgYXBwLXJvdXRlciBzaG91bGQgcHVzaCBhIG5ldyBoaXN0b3J5IGVudHJ5IGluIGFwcC1yb3V0ZXIncyB1c2VFZmZlY3QoKVxuICAgKi9cbiAgcGVuZGluZ1B1c2g6IGJvb2xlYW5cbiAgLyoqXG4gICAqIE11bHRpLXBhZ2UgbmF2aWdhdGlvbiB0aHJvdWdoIGxvY2F0aW9uLmhyZWYuXG4gICAqL1xuICBtcGFOYXZpZ2F0aW9uOiBib29sZWFuXG4gIC8qKlxuICAgKiBTa2lwIGFwcGx5aW5nIHRoZSByb3V0ZXIgc3RhdGUgdG8gdGhlIGJyb3dzZXIgaGlzdG9yeSBzdGF0ZS5cbiAgICovXG4gIHByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlOiBib29sZWFuXG59XG5cbmV4cG9ydCB0eXBlIEZvY3VzQW5kU2Nyb2xsUmVmID0ge1xuICAvKipcbiAgICogSWYgZm9jdXMgYW5kIHNjcm9sbCBzaG91bGQgYmUgc2V0IGluIHRoZSBsYXlvdXQtcm91dGVyJ3MgdXNlRWZmZWN0KClcbiAgICovXG4gIGFwcGx5OiBib29sZWFuXG4gIC8qKlxuICAgKiBUaGUgaGFzaCBmcmFnbWVudCB0aGF0IHNob3VsZCBiZSBzY3JvbGxlZCB0by5cbiAgICovXG4gIGhhc2hGcmFnbWVudDogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogVGhlIHBhdGhzIG9mIHRoZSBzZWdtZW50cyB0aGF0IHNob3VsZCBiZSBmb2N1c2VkLlxuICAgKi9cbiAgc2VnbWVudFBhdGhzOiBGbGlnaHRTZWdtZW50UGF0aFtdXG4gIC8qKlxuICAgKiBJZiBvbmx5IHRoZSBVUkxzIGhhc2ggZnJhZ21lbnQgY2hhbmdlZFxuICAgKi9cbiAgb25seUhhc2hDaGFuZ2U6IGJvb2xlYW5cbn1cblxuZXhwb3J0IHR5cGUgUHJlZmV0Y2hDYWNoZUVudHJ5ID0ge1xuICB0cmVlQXRUaW1lT2ZQcmVmZXRjaDogRmxpZ2h0Um91dGVyU3RhdGVcbiAgZGF0YTogUHJvbWlzZTxGZXRjaFNlcnZlclJlc3BvbnNlUmVzdWx0PlxuICBraW5kOiBQcmVmZXRjaEtpbmRcbiAgcHJlZmV0Y2hUaW1lOiBudW1iZXJcbiAgc3RhbGVUaW1lOiBudW1iZXJcbiAgbGFzdFVzZWRUaW1lOiBudW1iZXIgfCBudWxsXG4gIGtleTogc3RyaW5nXG4gIHN0YXR1czogUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzXG4gIHVybDogVVJMXG59XG5cbmV4cG9ydCBlbnVtIFByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cyB7XG4gIGZyZXNoID0gJ2ZyZXNoJyxcbiAgcmV1c2FibGUgPSAncmV1c2FibGUnLFxuICBleHBpcmVkID0gJ2V4cGlyZWQnLFxuICBzdGFsZSA9ICdzdGFsZScsXG59XG5cbi8qKlxuICogSGFuZGxlcyBrZWVwaW5nIHRoZSBzdGF0ZSBvZiBhcHAtcm91dGVyLlxuICovXG5leHBvcnQgdHlwZSBBcHBSb3V0ZXJTdGF0ZSA9IHtcbiAgLyoqXG4gICAqIFRoZSByb3V0ZXIgc3RhdGUsIHRoaXMgaXMgd3JpdHRlbiBpbnRvIHRoZSBoaXN0b3J5IHN0YXRlIGluIGFwcC1yb3V0ZXIgdXNpbmcgcmVwbGFjZVN0YXRlL3B1c2hTdGF0ZS5cbiAgICogLSBIYXMgdG8gYmUgc2VyaWFsaXphYmxlIGFzIGl0IGlzIHdyaXR0ZW4gaW50byB0aGUgaGlzdG9yeSBzdGF0ZS5cbiAgICogLSBIb2xkcyB3aGljaCBzZWdtZW50cyBhbmQgcGFyYWxsZWwgcm91dGVzIGFyZSBzaG93biBvbiB0aGUgc2NyZWVuLlxuICAgKi9cbiAgdHJlZTogRmxpZ2h0Um91dGVyU3RhdGVcbiAgLyoqXG4gICAqIFRoZSBjYWNoZSBob2xkcyBSZWFjdCBub2RlcyBmb3IgZXZlcnkgc2VnbWVudCB0aGF0IGlzIHNob3duIG9uIHNjcmVlbiBhcyB3ZWxsIGFzIHByZXZpb3VzbHkgc2hvd24gc2VnbWVudHMuXG4gICAqIEl0IGFsc28gaG9sZHMgaW4tcHJvZ3Jlc3MgZGF0YSByZXF1ZXN0cy5cbiAgICogUHJlZmV0Y2hlZCBkYXRhIGlzIHN0b3JlZCBzZXBhcmF0ZWx5IGluIGBwcmVmZXRjaENhY2hlYCwgdGhhdCBpcyBhcHBsaWVkIGR1cmluZyBBQ1RJT05fTkFWSUdBVEUuXG4gICAqL1xuICBjYWNoZTogQ2FjaGVOb2RlXG4gIC8qKlxuICAgKiBDYWNoZSB0aGF0IGhvbGRzIHByZWZldGNoZWQgRmxpZ2h0IHJlc3BvbnNlcyBrZXllZCBieSB1cmwuXG4gICAqL1xuICBwcmVmZXRjaENhY2hlOiBNYXA8c3RyaW5nLCBQcmVmZXRjaENhY2hlRW50cnk+XG4gIC8qKlxuICAgKiBEZWNpZGVzIGlmIHRoZSB1cGRhdGUgc2hvdWxkIGNyZWF0ZSBhIG5ldyBoaXN0b3J5IGVudHJ5IGFuZCBpZiB0aGUgbmF2aWdhdGlvbiBoYXMgdG8gdHJpZ2dlciBhIGJyb3dzZXIgbmF2aWdhdGlvbi5cbiAgICovXG4gIHB1c2hSZWY6IFB1c2hSZWZcbiAgLyoqXG4gICAqIERlY2lkZXMgaWYgdGhlIHVwZGF0ZSBzaG91bGQgYXBwbHkgc2Nyb2xsIGFuZCBmb2N1cyBtYW5hZ2VtZW50LlxuICAgKi9cbiAgZm9jdXNBbmRTY3JvbGxSZWY6IEZvY3VzQW5kU2Nyb2xsUmVmXG4gIC8qKlxuICAgKiBUaGUgY2Fub25pY2FsIHVybCB0aGF0IGlzIHB1c2hlZC9yZXBsYWNlZC5cbiAgICogLSBUaGlzIGlzIHRoZSB1cmwgeW91IHNlZSBpbiB0aGUgYnJvd3Nlci5cbiAgICovXG4gIGNhbm9uaWNhbFVybDogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBcInVybFwiIHJlcHJlc2VudGluZyB0aGUgVUkgc3RhdGUsIHdoaWNoIGlzIHVzZWQgZm9yIGludGVyY2VwdGluZyByb3V0ZXMuXG4gICAqL1xuICBuZXh0VXJsOiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCB0eXBlIFJlYWRvbmx5UmVkdWNlclN0YXRlID0gUmVhZG9ubHk8QXBwUm91dGVyU3RhdGU+XG5leHBvcnQgdHlwZSBSZWR1Y2VyU3RhdGUgPSBQcm9taXNlPEFwcFJvdXRlclN0YXRlPiB8IEFwcFJvdXRlclN0YXRlXG5leHBvcnQgdHlwZSBSZWR1Y2VyQWN0aW9ucyA9IFJlYWRvbmx5PFxuICB8IFJlZnJlc2hBY3Rpb25cbiAgfCBOYXZpZ2F0ZUFjdGlvblxuICB8IFJlc3RvcmVBY3Rpb25cbiAgfCBTZXJ2ZXJQYXRjaEFjdGlvblxuICB8IFByZWZldGNoQWN0aW9uXG4gIHwgSG1yUmVmcmVzaEFjdGlvblxuICB8IFNlcnZlckFjdGlvbkFjdGlvblxuPlxuIl0sIm5hbWVzIjpbIkFDVElPTl9ITVJfUkVGUkVTSCIsIkFDVElPTl9OQVZJR0FURSIsIkFDVElPTl9QUkVGRVRDSCIsIkFDVElPTl9SRUZSRVNIIiwiQUNUSU9OX1JFU1RPUkUiLCJBQ1RJT05fU0VSVkVSX0FDVElPTiIsIkFDVElPTl9TRVJWRVJfUEFUQ0giLCJQcmVmZXRjaENhY2hlRW50cnlTdGF0dXMiLCJQcmVmZXRjaEtpbmQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer.js": /*!**************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer.js ***! \**************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"reducer\", ({\n enumerable: true,\n get: function() {\n return reducer;\n }\n}));\nconst _routerreducertypes = __webpack_require__(/*! ./router-reducer-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js\");\nconst _navigatereducer = __webpack_require__(/*! ./reducers/navigate-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js\");\nconst _serverpatchreducer = __webpack_require__(/*! ./reducers/server-patch-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js\");\nconst _restorereducer = __webpack_require__(/*! ./reducers/restore-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js\");\nconst _refreshreducer = __webpack_require__(/*! ./reducers/refresh-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js\");\nconst _prefetchreducer = __webpack_require__(/*! ./reducers/prefetch-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js\");\nconst _hmrrefreshreducer = __webpack_require__(/*! ./reducers/hmr-refresh-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js\");\nconst _serveractionreducer = __webpack_require__(/*! ./reducers/server-action-reducer */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js\");\n/**\n * Reducer that handles the app-router state updates.\n */ function clientReducer(state, action) {\n switch(action.type){\n case _routerreducertypes.ACTION_NAVIGATE:\n {\n return (0, _navigatereducer.navigateReducer)(state, action);\n }\n case _routerreducertypes.ACTION_SERVER_PATCH:\n {\n return (0, _serverpatchreducer.serverPatchReducer)(state, action);\n }\n case _routerreducertypes.ACTION_RESTORE:\n {\n return (0, _restorereducer.restoreReducer)(state, action);\n }\n case _routerreducertypes.ACTION_REFRESH:\n {\n return (0, _refreshreducer.refreshReducer)(state, action);\n }\n case _routerreducertypes.ACTION_HMR_REFRESH:\n {\n return (0, _hmrrefreshreducer.hmrRefreshReducer)(state, action);\n }\n case _routerreducertypes.ACTION_PREFETCH:\n {\n return (0, _prefetchreducer.prefetchReducer)(state, action);\n }\n case _routerreducertypes.ACTION_SERVER_ACTION:\n {\n return (0, _serveractionreducer.serverActionReducer)(state, action);\n }\n // This case should never be hit as dispatch is strongly typed.\n default:\n throw Object.defineProperty(new Error('Unknown action'), \"__NEXT_ERROR_CODE\", {\n value: \"E295\",\n enumerable: false,\n configurable: true\n });\n }\n}\nfunction serverReducer(state, _action) {\n return state;\n}\nconst reducer = false ? 0 : clientReducer;\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-reducer.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXIuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FpRWFBOzs7ZUFBQUE7OztnREF6RE47NkNBTXlCO2dEQUNHOzRDQUNKOzRDQUNBOzZDQUNDOytDQUNFO2lEQUNFO0FBRXBDOztDQUVDLEdBQ0QsU0FBU0MsY0FDUEMsS0FBMkIsRUFDM0JDLE1BQXNCO0lBRXRCLE9BQVFBLE9BQU9DLElBQUk7UUFDakIsS0FBS0Msb0JBQUFBLGVBQWU7WUFBRTtnQkFDcEIsT0FBT0MsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCSixPQUFPQztZQUNoQztRQUNBLEtBQUtJLG9CQUFBQSxtQkFBbUI7WUFBRTtnQkFDeEIsT0FBT0MsQ0FBQUEsR0FBQUEsb0JBQUFBLGtCQUFBQSxFQUFtQk4sT0FBT0M7WUFDbkM7UUFDQSxLQUFLTSxvQkFBQUEsY0FBYztZQUFFO2dCQUNuQixPQUFPQyxDQUFBQSxHQUFBQSxnQkFBQUEsY0FBQUEsRUFBZVIsT0FBT0M7WUFDL0I7UUFDQSxLQUFLUSxvQkFBQUEsY0FBYztZQUFFO2dCQUNuQixPQUFPQyxDQUFBQSxHQUFBQSxnQkFBQUEsY0FBQUEsRUFBZVYsT0FBT0M7WUFDL0I7UUFDQSxLQUFLVSxvQkFBQUEsa0JBQWtCO1lBQUU7Z0JBQ3ZCLE9BQU9DLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JaLE9BQU9DO1lBQ2xDO1FBQ0EsS0FBS1ksb0JBQUFBLGVBQWU7WUFBRTtnQkFDcEIsT0FBT0MsQ0FBQUEsR0FBQUEsaUJBQUFBLGVBQUFBLEVBQWdCZCxPQUFPQztZQUNoQztRQUNBLEtBQUtjLG9CQUFBQSxvQkFBb0I7WUFBRTtnQkFDekIsT0FBT0MsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQmhCLE9BQU9DO1lBQ3BDO1FBQ0EsK0RBQStEO1FBQy9EO1lBQ0UsTUFBTSxxQkFBMkIsQ0FBM0IsSUFBSWdCLE1BQU0sbUJBQVY7dUJBQUE7NEJBQUE7OEJBQUE7WUFBMEI7SUFDcEM7QUFDRjtBQUVBLFNBQVNDLGNBQ1BsQixLQUEyQixFQUMzQm1CLE9BQXVCO0lBRXZCLE9BQU9uQjtBQUNUO0FBR08sTUFBTUYsVUFDWCxNQUE2QixHQUFHb0IsQ0FBYUEsR0FBR25CIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQUNUSU9OX05BVklHQVRFLFxuICBBQ1RJT05fU0VSVkVSX1BBVENILFxuICBBQ1RJT05fUkVTVE9SRSxcbiAgQUNUSU9OX1JFRlJFU0gsXG4gIEFDVElPTl9QUkVGRVRDSCxcbiAgQUNUSU9OX0hNUl9SRUZSRVNILFxuICBBQ1RJT05fU0VSVkVSX0FDVElPTixcbn0gZnJvbSAnLi9yb3V0ZXItcmVkdWNlci10eXBlcydcbmltcG9ydCB0eXBlIHtcbiAgUmVkdWNlckFjdGlvbnMsXG4gIFJlZHVjZXJTdGF0ZSxcbiAgUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXItdHlwZXMnXG5pbXBvcnQgeyBuYXZpZ2F0ZVJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL25hdmlnYXRlLXJlZHVjZXInXG5pbXBvcnQgeyBzZXJ2ZXJQYXRjaFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3NlcnZlci1wYXRjaC1yZWR1Y2VyJ1xuaW1wb3J0IHsgcmVzdG9yZVJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3Jlc3RvcmUtcmVkdWNlcidcbmltcG9ydCB7IHJlZnJlc2hSZWR1Y2VyIH0gZnJvbSAnLi9yZWR1Y2Vycy9yZWZyZXNoLXJlZHVjZXInXG5pbXBvcnQgeyBwcmVmZXRjaFJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3ByZWZldGNoLXJlZHVjZXInXG5pbXBvcnQgeyBobXJSZWZyZXNoUmVkdWNlciB9IGZyb20gJy4vcmVkdWNlcnMvaG1yLXJlZnJlc2gtcmVkdWNlcidcbmltcG9ydCB7IHNlcnZlckFjdGlvblJlZHVjZXIgfSBmcm9tICcuL3JlZHVjZXJzL3NlcnZlci1hY3Rpb24tcmVkdWNlcidcblxuLyoqXG4gKiBSZWR1Y2VyIHRoYXQgaGFuZGxlcyB0aGUgYXBwLXJvdXRlciBzdGF0ZSB1cGRhdGVzLlxuICovXG5mdW5jdGlvbiBjbGllbnRSZWR1Y2VyKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIGFjdGlvbjogUmVkdWNlckFjdGlvbnNcbik6IFJlZHVjZXJTdGF0ZSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFDVElPTl9OQVZJR0FURToge1xuICAgICAgcmV0dXJuIG5hdmlnYXRlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9TRVJWRVJfUEFUQ0g6IHtcbiAgICAgIHJldHVybiBzZXJ2ZXJQYXRjaFJlZHVjZXIoc3RhdGUsIGFjdGlvbilcbiAgICB9XG4gICAgY2FzZSBBQ1RJT05fUkVTVE9SRToge1xuICAgICAgcmV0dXJuIHJlc3RvcmVSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgfVxuICAgIGNhc2UgQUNUSU9OX1JFRlJFU0g6IHtcbiAgICAgIHJldHVybiByZWZyZXNoUmVkdWNlcihzdGF0ZSwgYWN0aW9uKVxuICAgIH1cbiAgICBjYXNlIEFDVElPTl9ITVJfUkVGUkVTSDoge1xuICAgICAgcmV0dXJuIGhtclJlZnJlc2hSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgfVxuICAgIGNhc2UgQUNUSU9OX1BSRUZFVENIOiB7XG4gICAgICByZXR1cm4gcHJlZmV0Y2hSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgfVxuICAgIGNhc2UgQUNUSU9OX1NFUlZFUl9BQ1RJT046IHtcbiAgICAgIHJldHVybiBzZXJ2ZXJBY3Rpb25SZWR1Y2VyKHN0YXRlLCBhY3Rpb24pXG4gICAgfVxuICAgIC8vIFRoaXMgY2FzZSBzaG91bGQgbmV2ZXIgYmUgaGl0IGFzIGRpc3BhdGNoIGlzIHN0cm9uZ2x5IHR5cGVkLlxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gYWN0aW9uJylcbiAgfVxufVxuXG5mdW5jdGlvbiBzZXJ2ZXJSZWR1Y2VyKFxuICBzdGF0ZTogUmVhZG9ubHlSZWR1Y2VyU3RhdGUsXG4gIF9hY3Rpb246IFJlZHVjZXJBY3Rpb25zXG4pOiBSZWR1Y2VyU3RhdGUge1xuICByZXR1cm4gc3RhdGVcbn1cblxuLy8gd2UgZG9uJ3QgcnVuIHRoZSBjbGllbnQgcmVkdWNlciBvbiB0aGUgc2VydmVyLCBzbyB3ZSB1c2UgYSBub29wIGZ1bmN0aW9uIGZvciBiZXR0ZXIgdHJlZSBzaGFraW5nXG5leHBvcnQgY29uc3QgcmVkdWNlciA9XG4gIHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gc2VydmVyUmVkdWNlciA6IGNsaWVudFJlZHVjZXJcbiJdLCJuYW1lcyI6WyJyZWR1Y2VyIiwiY2xpZW50UmVkdWNlciIsInN0YXRlIiwiYWN0aW9uIiwidHlwZSIsIkFDVElPTl9OQVZJR0FURSIsIm5hdmlnYXRlUmVkdWNlciIsIkFDVElPTl9TRVJWRVJfUEFUQ0giLCJzZXJ2ZXJQYXRjaFJlZHVjZXIiLCJBQ1RJT05fUkVTVE9SRSIsInJlc3RvcmVSZWR1Y2VyIiwiQUNUSU9OX1JFRlJFU0giLCJyZWZyZXNoUmVkdWNlciIsIkFDVElPTl9ITVJfUkVGUkVTSCIsImhtclJlZnJlc2hSZWR1Y2VyIiwiQUNUSU9OX1BSRUZFVENIIiwicHJlZmV0Y2hSZWR1Y2VyIiwiQUNUSU9OX1NFUlZFUl9BQ1RJT04iLCJzZXJ2ZXJBY3Rpb25SZWR1Y2VyIiwiRXJyb3IiLCJzZXJ2ZXJSZWR1Y2VyIiwiX2FjdGlvbiIsIndpbmRvdyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/router-reducer.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js": /*!******************************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js ***! \******************************************************************************************************************************************************************************/ /***/ ((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 setCacheBustingSearchParam: function() {\n return setCacheBustingSearchParam;\n },\n setCacheBustingSearchParamWithHash: function() {\n return setCacheBustingSearchParamWithHash;\n }\n});\nconst _cachebustingsearchparam = __webpack_require__(/*! ../../../shared/lib/router/utils/cache-busting-search-param */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js\");\nconst _approuterheaders = __webpack_require__(/*! ../app-router-headers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js\");\nconst setCacheBustingSearchParam = (url, headers)=>{\n const uniqueCacheKey = (0, _cachebustingsearchparam.computeCacheBustingSearchParam)(headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER], headers[_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER], headers[_approuterheaders.NEXT_URL]);\n setCacheBustingSearchParamWithHash(url, uniqueCacheKey);\n};\nconst setCacheBustingSearchParamWithHash = (url, hash)=>{\n /**\n * Note that we intentionally do not use `url.searchParams.set` here:\n *\n * const url = new URL('https://example.com/search?q=custom%20spacing');\n * url.searchParams.set('_rsc', 'abc123');\n * console.log(url.toString()); // Outputs: https://example.com/search?q=custom+spacing&_rsc=abc123\n * ^ <--- this is causing confusion\n * This is in fact intended based on https://url.spec.whatwg.org/#interface-urlsearchparams, but\n * we want to preserve the %20 as %20 if that's what the user passed in, hence the custom\n * logic below.\n */ const existingSearch = url.search;\n const rawQuery = existingSearch.startsWith('?') ? existingSearch.slice(1) : existingSearch;\n // Always remove any existing cache busting param and add a fresh one to ensure\n // we have the correct value based on current request headers\n const pairs = rawQuery.split('&').filter((pair)=>pair && !pair.startsWith(\"\" + _approuterheaders.NEXT_RSC_UNION_QUERY + \"=\"));\n if (hash.length > 0) {\n pairs.push(_approuterheaders.NEXT_RSC_UNION_QUERY + \"=\" + hash);\n } else {\n pairs.push(\"\" + _approuterheaders.NEXT_RSC_UNION_QUERY);\n }\n url.search = pairs.length ? \"?\" + pairs.join('&') : '';\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=set-cache-busting-search-param.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvc2V0LWNhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTRCYUEsMEJBQTBCO2VBQTFCQTs7SUE2QkFDLGtDQUFrQztlQUFsQ0E7OztxREF2RGtDOzhDQU94QztBQW1CQSxNQUFNRCw2QkFBNkIsQ0FDeENFLEtBQ0FDO0lBRUEsTUFBTUMsaUJBQWlCQyxDQUFBQSxHQUFBQSx5QkFBQUEsOEJBQUFBLEVBQ3JCRixPQUFPLENBQUNHLGtCQUFBQSwyQkFBMkIsQ0FBQyxFQUNwQ0gsT0FBTyxDQUFDSSxrQkFBQUEsbUNBQW1DLENBQUMsRUFDNUNKLE9BQU8sQ0FBQ0ssa0JBQUFBLDZCQUE2QixDQUFDLEVBQ3RDTCxPQUFPLENBQUNNLGtCQUFBQSxRQUFRLENBQUM7SUFFbkJSLG1DQUFtQ0MsS0FBS0U7QUFDMUM7QUFrQk8sTUFBTUgscUNBQXFDLENBQ2hEQyxLQUNBUTtJQUVBOzs7Ozs7Ozs7O0dBVUMsR0FDRCxNQUFNQyxpQkFBaUJULElBQUlVLE1BQU07SUFDakMsTUFBTUMsV0FBV0YsZUFBZUcsVUFBVSxDQUFDLE9BQ3ZDSCxlQUFlSSxLQUFLLENBQUMsS0FDckJKO0lBRUosK0VBQStFO0lBQy9FLDZEQUE2RDtJQUM3RCxNQUFNSyxRQUFRSCxTQUNYSSxLQUFLLENBQUMsS0FDTkMsTUFBTSxDQUFDLENBQUNDLE9BQVNBLFFBQVEsQ0FBQ0EsS0FBS0wsVUFBVSxDQUFFLEtBQUVNLGtCQUFBQSxvQkFBb0IsR0FBQztJQUVyRSxJQUFJVixLQUFLVyxNQUFNLEdBQUcsR0FBRztRQUNuQkwsTUFBTU0sSUFBSSxDQUFJRixrQkFBQUEsb0JBQW9CLEdBQUMsTUFBR1Y7SUFDeEMsT0FBTztRQUNMTSxNQUFNTSxJQUFJLENBQUUsS0FBRUYsa0JBQUFBLG9CQUFvQjtJQUNwQztJQUNBbEIsSUFBSVUsTUFBTSxHQUFHSSxNQUFNSyxNQUFNLEdBQUksTUFBR0wsTUFBTU8sSUFBSSxDQUFDLE9BQVM7QUFDdEQiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9zZXQtY2FjaGUtYnVzdGluZy1zZWFyY2gtcGFyYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5cbmltcG9ydCB7IGNvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbSB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2NhY2hlLWJ1c3Rpbmctc2VhcmNoLXBhcmFtJ1xuaW1wb3J0IHtcbiAgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLFxuICBORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUixcbiAgTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVIsXG4gIE5FWFRfVVJMLFxuICBORVhUX1JTQ19VTklPTl9RVUVSWSxcbn0gZnJvbSAnLi4vYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHR5cGUgeyBSZXF1ZXN0SGVhZGVycyB9IGZyb20gJy4vZmV0Y2gtc2VydmVyLXJlc3BvbnNlJ1xuXG4vKipcbiAqIE11dGF0ZXMgdGhlIHByb3ZpZGVkIFVSTCBieSBhZGRpbmcgYSBjYWNoZS1idXN0aW5nIHNlYXJjaCBwYXJhbWV0ZXIgZm9yIENETnMgdGhhdCBkb24ndFxuICogc3VwcG9ydCBjdXN0b20gaGVhZGVycy4gVGhpcyBoZWxwcyBhdm9pZCBjYWNoaW5nIGNvbmZsaWN0cyBieSBtYWtpbmcgZWFjaCByZXF1ZXN0IHVuaXF1ZS5cbiAqXG4gKiBSYXRoZXIgdGhhbiByZWx5aW5nIG9uIHRoZSBWYXJ5IGhlYWRlciB3aGljaCBzb21lIENETnMgaWdub3JlLCB3ZSBhcHBlbmQgYSBzZWFyY2ggcGFyYW1cbiAqIHRvIGNyZWF0ZSBhIHVuaXF1ZSBVUkwgdGhhdCBmb3JjZXMgYSBmcmVzaCByZXF1ZXN0LlxuICpcbiAqIEV4YW1wbGU6XG4gKiBVUkwgYmVmb3JlOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MVxuICogVVJMIGFmdGVyOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MSZfcnNjPWFiYzEyM1xuICpcbiAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXV0YXRlcyB0aGUgaW5wdXQgVVJMIGRpcmVjdGx5IGFuZCBkb2VzIG5vdCByZXR1cm4gYW55dGhpbmcuXG4gKlxuICogVE9ETzogU2luY2Ugd2UgbmVlZCB0byB1c2UgYSBzZWFyY2ggcGFyYW0gYW55d2F5LCB3ZSBjb3VsZCBzaW1wbGlmeSBieSByZW1vdmluZyB0aGUgY3VzdG9tXG4gKiBoZWFkZXJzIGFwcHJvYWNoIGVudGlyZWx5IGFuZCBqdXN0IHVzZSBzZWFyY2ggcGFyYW1zLlxuICovXG5leHBvcnQgY29uc3Qgc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0gPSAoXG4gIHVybDogVVJMLFxuICBoZWFkZXJzOiBSZXF1ZXN0SGVhZGVyc1xuKTogdm9pZCA9PiB7XG4gIGNvbnN0IHVuaXF1ZUNhY2hlS2V5ID0gY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtKFxuICAgIGhlYWRlcnNbTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSXSxcbiAgICBoZWFkZXJzW05FWFRfUk9VVEVSX1NFR01FTlRfUFJFRkVUQ0hfSEVBREVSXSxcbiAgICBoZWFkZXJzW05FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSXSxcbiAgICBoZWFkZXJzW05FWFRfVVJMXVxuICApXG4gIHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtV2l0aEhhc2godXJsLCB1bmlxdWVDYWNoZUtleSlcbn1cblxuLyoqXG4gKiBTZXRzIGEgY2FjaGUtYnVzdGluZyBzZWFyY2ggcGFyYW1ldGVyIG9uIGEgVVJMIHVzaW5nIGEgcHJvdmlkZWQgaGFzaCB2YWx1ZS5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBzYW1lIGxvZ2ljIGFzIGBzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbWAgYnV0IGFjY2VwdHNcbiAqIGEgcHJlLWNvbXB1dGVkIGhhc2ggaW5zdGVhZCBvZiBjb21wdXRpbmcgaXQgZnJvbSBoZWFkZXJzLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBVUkwgYmVmb3JlOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MVxuICogaGFzaDogXCJhYmMxMjNcIlxuICogVVJMIGFmdGVyOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MSZfcnNjPWFiYzEyM1xuICpcbiAqIElmIHRoZSBoYXNoIGlzIG51bGwsIHdlIHdpbGwgc2V0IGBfcnNjYCBzZWFyY2ggcGFyYW0gd2l0aG91dCBhIHZhbHVlLlxuICogTGlrZSB0aGlzOiBodHRwczovL2V4YW1wbGUuY29tL3BhdGg/cXVlcnk9MSZfcnNjXG4gKlxuICogTm90ZTogVGhpcyBmdW5jdGlvbiBtdXRhdGVzIHRoZSBpbnB1dCBVUkwgZGlyZWN0bHkgYW5kIGRvZXMgbm90IHJldHVybiBhbnl0aGluZy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldENhY2hlQnVzdGluZ1NlYXJjaFBhcmFtV2l0aEhhc2ggPSAoXG4gIHVybDogVVJMLFxuICBoYXNoOiBzdHJpbmdcbik6IHZvaWQgPT4ge1xuICAvKipcbiAgICogTm90ZSB0aGF0IHdlIGludGVudGlvbmFsbHkgZG8gbm90IHVzZSBgdXJsLnNlYXJjaFBhcmFtcy5zZXRgIGhlcmU6XG4gICAqXG4gICAqIGNvbnN0IHVybCA9IG5ldyBVUkwoJ2h0dHBzOi8vZXhhbXBsZS5jb20vc2VhcmNoP3E9Y3VzdG9tJTIwc3BhY2luZycpO1xuICAgKiB1cmwuc2VhcmNoUGFyYW1zLnNldCgnX3JzYycsICdhYmMxMjMnKTtcbiAgICogY29uc29sZS5sb2codXJsLnRvU3RyaW5nKCkpOyAvLyBPdXRwdXRzOiBodHRwczovL2V4YW1wbGUuY29tL3NlYXJjaD9xPWN1c3RvbStzcGFjaW5nJl9yc2M9YWJjMTIzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIDwtLS0gdGhpcyBpcyBjYXVzaW5nIGNvbmZ1c2lvblxuICAgKiBUaGlzIGlzIGluIGZhY3QgaW50ZW5kZWQgYmFzZWQgb24gaHR0cHM6Ly91cmwuc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2UtdXJsc2VhcmNocGFyYW1zLCBidXRcbiAgICogd2Ugd2FudCB0byBwcmVzZXJ2ZSB0aGUgJTIwIGFzICUyMCBpZiB0aGF0J3Mgd2hhdCB0aGUgdXNlciBwYXNzZWQgaW4sIGhlbmNlIHRoZSBjdXN0b21cbiAgICogbG9naWMgYmVsb3cuXG4gICAqL1xuICBjb25zdCBleGlzdGluZ1NlYXJjaCA9IHVybC5zZWFyY2hcbiAgY29uc3QgcmF3UXVlcnkgPSBleGlzdGluZ1NlYXJjaC5zdGFydHNXaXRoKCc/JylcbiAgICA/IGV4aXN0aW5nU2VhcmNoLnNsaWNlKDEpXG4gICAgOiBleGlzdGluZ1NlYXJjaFxuXG4gIC8vIEFsd2F5cyByZW1vdmUgYW55IGV4aXN0aW5nIGNhY2hlIGJ1c3RpbmcgcGFyYW0gYW5kIGFkZCBhIGZyZXNoIG9uZSB0byBlbnN1cmVcbiAgLy8gd2UgaGF2ZSB0aGUgY29ycmVjdCB2YWx1ZSBiYXNlZCBvbiBjdXJyZW50IHJlcXVlc3QgaGVhZGVyc1xuICBjb25zdCBwYWlycyA9IHJhd1F1ZXJ5XG4gICAgLnNwbGl0KCcmJylcbiAgICAuZmlsdGVyKChwYWlyKSA9PiBwYWlyICYmICFwYWlyLnN0YXJ0c1dpdGgoYCR7TkVYVF9SU0NfVU5JT05fUVVFUll9PWApKVxuXG4gIGlmIChoYXNoLmxlbmd0aCA+IDApIHtcbiAgICBwYWlycy5wdXNoKGAke05FWFRfUlNDX1VOSU9OX1FVRVJZfT0ke2hhc2h9YClcbiAgfSBlbHNlIHtcbiAgICBwYWlycy5wdXNoKGAke05FWFRfUlNDX1VOSU9OX1FVRVJZfWApXG4gIH1cbiAgdXJsLnNlYXJjaCA9IHBhaXJzLmxlbmd0aCA/IGA/JHtwYWlycy5qb2luKCcmJyl9YCA6ICcnXG59XG4iXSwibmFtZXMiOlsic2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0iLCJzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbVdpdGhIYXNoIiwidXJsIiwiaGVhZGVycyIsInVuaXF1ZUNhY2hlS2V5IiwiY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSIiwiTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVIiLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUiIsIk5FWFRfVVJMIiwiaGFzaCIsImV4aXN0aW5nU2VhcmNoIiwic2VhcmNoIiwicmF3UXVlcnkiLCJzdGFydHNXaXRoIiwic2xpY2UiLCJwYWlycyIsInNwbGl0IiwiZmlsdGVyIiwicGFpciIsIk5FWFRfUlNDX1VOSU9OX1FVRVJZIiwibGVuZ3RoIiwicHVzaCIsImpvaW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js ***! \********************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"shouldHardNavigate\", ({\n enumerable: true,\n get: function() {\n return shouldHardNavigate;\n }\n}));\nconst _flightdatahelpers = __webpack_require__(/*! ../../flight-data-helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\");\nconst _matchsegments = __webpack_require__(/*! ../match-segments */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/match-segments.js\");\nfunction shouldHardNavigate(flightSegmentPath, flightRouterState) {\n const [segment, parallelRoutes] = flightRouterState;\n // TODO-APP: Check if `as` can be replaced.\n const [currentSegment, parallelRouteKey] = flightSegmentPath;\n // Check if current segment matches the existing segment.\n if (!(0, _matchsegments.matchSegment)(currentSegment, segment)) {\n // If dynamic parameter in tree doesn't match up with segment path a hard navigation is triggered.\n if (Array.isArray(currentSegment)) {\n return true;\n }\n // If the existing segment did not match soft navigation is triggered.\n return false;\n }\n const lastSegment = flightSegmentPath.length <= 2;\n if (lastSegment) {\n return false;\n }\n return shouldHardNavigate((0, _flightdatahelpers.getNextFlightSegmentPath)(flightSegmentPath), parallelRoutes[parallelRouteKey]);\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=should-hard-navigate.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvcm91dGVyLXJlZHVjZXIvc2hvdWxkLWhhcmQtbmF2aWdhdGUuanMiLCJtYXBwaW5ncyI6Ijs7OztzREFTZ0JBOzs7ZUFBQUE7OzsrQ0FKeUI7MkNBQ1o7QUFHdEIsU0FBU0EsbUJBQ2RDLGlCQUFpQyxFQUNqQ0MsaUJBQW9DO0lBRXBDLE1BQU0sQ0FBQ0MsU0FBU0MsZUFBZSxHQUFHRjtJQUNsQywyQ0FBMkM7SUFDM0MsTUFBTSxDQUFDRyxnQkFBZ0JDLGlCQUFpQixHQUFHTDtJQUszQyx5REFBeUQ7SUFDekQsSUFBSSxDQUFDTSxDQUFBQSxHQUFBQSxlQUFBQSxZQUFBQSxFQUFhRixnQkFBZ0JGLFVBQVU7UUFDMUMsa0dBQWtHO1FBQ2xHLElBQUlLLE1BQU1DLE9BQU8sQ0FBQ0osaUJBQWlCO1lBQ2pDLE9BQU87UUFDVDtRQUVBLHNFQUFzRTtRQUN0RSxPQUFPO0lBQ1Q7SUFDQSxNQUFNSyxjQUFjVCxrQkFBa0JVLE1BQU0sSUFBSTtJQUVoRCxJQUFJRCxhQUFhO1FBQ2YsT0FBTztJQUNUO0lBRUEsT0FBT1YsbUJBQ0xZLENBQUFBLEdBQUFBLG1CQUFBQSx3QkFBQUEsRUFBeUJYLG9CQUN6QkcsY0FBYyxDQUFDRSxpQkFBaUI7QUFFcEMiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL3NyYy9jbGllbnQvY29tcG9uZW50cy9yb3V0ZXItcmVkdWNlci9zaG91bGQtaGFyZC1uYXZpZ2F0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEZsaWdodFJvdXRlclN0YXRlLFxuICBGbGlnaHREYXRhUGF0aCxcbiAgU2VnbWVudCxcbn0gZnJvbSAnLi4vLi4vLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQgeyBnZXROZXh0RmxpZ2h0U2VnbWVudFBhdGggfSBmcm9tICcuLi8uLi9mbGlnaHQtZGF0YS1oZWxwZXJzJ1xuaW1wb3J0IHsgbWF0Y2hTZWdtZW50IH0gZnJvbSAnLi4vbWF0Y2gtc2VnbWVudHMnXG5cbi8vIFRPRE8tQVBQOiBmbGlnaHRTZWdtZW50UGF0aCB3aWxsIGJlIGVtcHR5IGluIGNhc2Ugb2Ygc3RhdGljIHJlc3BvbnNlLCBuZWVkcyB0byBiZSBoYW5kbGVkLlxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEhhcmROYXZpZ2F0ZShcbiAgZmxpZ2h0U2VnbWVudFBhdGg6IEZsaWdodERhdGFQYXRoLFxuICBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IGJvb2xlYW4ge1xuICBjb25zdCBbc2VnbWVudCwgcGFyYWxsZWxSb3V0ZXNdID0gZmxpZ2h0Um91dGVyU3RhdGVcbiAgLy8gVE9ETy1BUFA6IENoZWNrIGlmIGBhc2AgY2FuIGJlIHJlcGxhY2VkLlxuICBjb25zdCBbY3VycmVudFNlZ21lbnQsIHBhcmFsbGVsUm91dGVLZXldID0gZmxpZ2h0U2VnbWVudFBhdGggYXMgW1xuICAgIFNlZ21lbnQsXG4gICAgc3RyaW5nLFxuICBdXG5cbiAgLy8gQ2hlY2sgaWYgY3VycmVudCBzZWdtZW50IG1hdGNoZXMgdGhlIGV4aXN0aW5nIHNlZ21lbnQuXG4gIGlmICghbWF0Y2hTZWdtZW50KGN1cnJlbnRTZWdtZW50LCBzZWdtZW50KSkge1xuICAgIC8vIElmIGR5bmFtaWMgcGFyYW1ldGVyIGluIHRyZWUgZG9lc24ndCBtYXRjaCB1cCB3aXRoIHNlZ21lbnQgcGF0aCBhIGhhcmQgbmF2aWdhdGlvbiBpcyB0cmlnZ2VyZWQuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFNlZ21lbnQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIElmIHRoZSBleGlzdGluZyBzZWdtZW50IGRpZCBub3QgbWF0Y2ggc29mdCBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZC5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBsYXN0U2VnbWVudCA9IGZsaWdodFNlZ21lbnRQYXRoLmxlbmd0aCA8PSAyXG5cbiAgaWYgKGxhc3RTZWdtZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gc2hvdWxkSGFyZE5hdmlnYXRlKFxuICAgIGdldE5leHRGbGlnaHRTZWdtZW50UGF0aChmbGlnaHRTZWdtZW50UGF0aCksXG4gICAgcGFyYWxsZWxSb3V0ZXNbcGFyYWxsZWxSb3V0ZUtleV1cbiAgKVxufVxuIl0sIm5hbWVzIjpbInNob3VsZEhhcmROYXZpZ2F0ZSIsImZsaWdodFNlZ21lbnRQYXRoIiwiZmxpZ2h0Um91dGVyU3RhdGUiLCJzZWdtZW50IiwicGFyYWxsZWxSb3V0ZXMiLCJjdXJyZW50U2VnbWVudCIsInBhcmFsbGVsUm91dGVLZXkiLCJtYXRjaFNlZ21lbnQiLCJBcnJheSIsImlzQXJyYXkiLCJsYXN0U2VnbWVudCIsImxlbmd0aCIsImdldE5leHRGbGlnaHRTZWdtZW50UGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js": /*!**********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js ***! \**********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * Entry point to the Segment Cache implementation.\n *\n * All code related to the Segment Cache lives `segment-cache-impl` directory.\n * Callers access it through this indirection.\n *\n * This is to ensure the code is dead code eliminated from the bundle if the\n * flag is disabled.\n *\n * TODO: This is super tedious. Since experimental flags are an essential part\n * of our workflow, we should establish a better pattern for dead code\n * elimination. Ideally it would be done at the bundler level, like how React's\n * build process works. In the React repo, you don't even need to add any extra\n * configuration per experiment — if the code is not reachable, it gets stripped\n * from the build automatically by Rollup. Or, shorter term, we could stub out\n * experimental modules at build time by updating the build config, i.e. a more\n * automated version of what I'm doing manually in this file.\n */ \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 FetchStrategy: function() {\n return FetchStrategy;\n },\n NavigationResultTag: function() {\n return NavigationResultTag;\n },\n PrefetchPriority: function() {\n return PrefetchPriority;\n },\n cancelPrefetchTask: function() {\n return cancelPrefetchTask;\n },\n createCacheKey: function() {\n return createCacheKey;\n },\n getCurrentCacheVersion: function() {\n return getCurrentCacheVersion;\n },\n isPrefetchTaskDirty: function() {\n return isPrefetchTaskDirty;\n },\n navigate: function() {\n return navigate;\n },\n prefetch: function() {\n return prefetch;\n },\n reschedulePrefetchTask: function() {\n return reschedulePrefetchTask;\n },\n revalidateEntireCache: function() {\n return revalidateEntireCache;\n },\n schedulePrefetchTask: function() {\n return schedulePrefetchTask;\n }\n});\nconst notEnabled = ()=>{\n throw Object.defineProperty(new Error('Segment Cache experiment is not enabled. This is a bug in Next.js.'), \"__NEXT_ERROR_CODE\", {\n value: \"E654\",\n enumerable: false,\n configurable: true\n });\n};\nconst prefetch = false ? 0 : notEnabled;\nconst navigate = false ? 0 : notEnabled;\nconst revalidateEntireCache = false ? 0 : notEnabled;\nconst getCurrentCacheVersion = false ? 0 : notEnabled;\nconst schedulePrefetchTask = false ? 0 : notEnabled;\nconst cancelPrefetchTask = false ? 0 : notEnabled;\nconst reschedulePrefetchTask = false ? 0 : notEnabled;\nconst isPrefetchTaskDirty = false ? 0 : notEnabled;\nconst createCacheKey = false ? 0 : notEnabled;\nvar NavigationResultTag = /*#__PURE__*/ function(NavigationResultTag) {\n NavigationResultTag[NavigationResultTag[\"MPA\"] = 0] = \"MPA\";\n NavigationResultTag[NavigationResultTag[\"Success\"] = 1] = \"Success\";\n NavigationResultTag[NavigationResultTag[\"NoOp\"] = 2] = \"NoOp\";\n NavigationResultTag[NavigationResultTag[\"Async\"] = 3] = \"Async\";\n return NavigationResultTag;\n}({});\nvar PrefetchPriority = /*#__PURE__*/ function(PrefetchPriority) {\n /**\n * Assigned to the most recently hovered/touched link. Special network\n * bandwidth is reserved for this task only. There's only ever one Intent-\n * priority task at a time; when a new Intent task is scheduled, the previous\n * one is bumped down to Default.\n */ PrefetchPriority[PrefetchPriority[\"Intent\"] = 2] = \"Intent\";\n /**\n * The default priority for prefetch tasks.\n */ PrefetchPriority[PrefetchPriority[\"Default\"] = 1] = \"Default\";\n /**\n * Assigned to tasks when they spawn non-blocking background work, like\n * revalidating a partially cached entry to see if more data is available.\n */ PrefetchPriority[PrefetchPriority[\"Background\"] = 0] = \"Background\";\n return PrefetchPriority;\n}({});\nvar FetchStrategy = /*#__PURE__*/ function(FetchStrategy) {\n // Deliberately ordered so we can easily compare two segments\n // and determine if one segment is \"more specific\" than another\n // (i.e. if it's likely that it contains more data)\n FetchStrategy[FetchStrategy[\"LoadingBoundary\"] = 0] = \"LoadingBoundary\";\n FetchStrategy[FetchStrategy[\"PPR\"] = 1] = \"PPR\";\n FetchStrategy[FetchStrategy[\"PPRRuntime\"] = 2] = \"PPRRuntime\";\n FetchStrategy[FetchStrategy[\"Full\"] = 3] = \"Full\";\n return FetchStrategy;\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=segment-cache.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvc2VnbWVudC1jYWNoZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkM7Ozs7Ozs7Ozs7OztJQStIaUJBLGFBQWE7ZUFBYkE7O0lBN0JBQyxtQkFBbUI7ZUFBbkJBOztJQVVBQyxnQkFBZ0I7ZUFBaEJBOztJQW5ETEMsa0JBQWtCO2VBQWxCQTs7SUEyQkFDLGNBQWM7ZUFBZEE7O0lBN0NBQyxzQkFBc0I7ZUFBdEJBOztJQW9DQUMsbUJBQW1CO2VBQW5CQTs7SUF0REFDLFFBQVE7ZUFBUkE7O0lBVEFDLFFBQVE7ZUFBUkE7O0lBc0RBQyxzQkFBc0I7ZUFBdEJBOztJQXBDQUMscUJBQXFCO2VBQXJCQTs7SUFrQkFDLG9CQUFvQjtlQUFwQkE7OztBQTFDYixNQUFNQyxhQUFrQjtJQUN0QixNQUFNLHFCQUVMLENBRkssSUFBSUMsTUFDUix1RUFESTtlQUFBO29CQUFBO3NCQUFBO0lBRU47QUFDRjtBQUVPLE1BQU1MLFdBQ1hNLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFFQyxNQUFNTCxXQUNYTyxNQUF1QyxHQUNuQyxDQUlDLEdBQ0RGO0FBRUMsTUFBTUYsd0JBQ1hJLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFFQyxNQUFNUCx5QkFDWFMsTUFBdUMsR0FDbkMsQ0FJQyxHQUNERjtBQUVDLE1BQU1ELHVCQUNYRyxNQUF1QyxHQUNuQyxDQUlDLEdBQ0RGO0FBRUMsTUFBTVQscUJBQ1hXLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFFQyxNQUFNSCx5QkFDWEssTUFBdUMsR0FDbkMsQ0FJQyxHQUNERjtBQUVDLE1BQU1OLHNCQUNYUSxNQUF1QyxHQUNuQyxDQUlDLEdBQ0RGO0FBRUMsTUFBTVIsaUJBQ1hVLE1BQXVDLEdBQ25DLENBSUMsR0FDREY7QUFPQyxJQUFXWCxzQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsbUJBQUFBOzs7OztXQUFBQTs7QUFVWCxJQUFXQyxtQkFBQUEsV0FBQUEsR0FBQUEsU0FBQUEsZ0JBQUFBO0lBQ2hCOzs7OztHQUtDO0lBRUQ7O0dBRUM7SUFFRDs7O0dBR0M7V0FmZUE7O0FBbUJYLElBQVdGLGdCQUFBQSxXQUFBQSxHQUFBQSxTQUFBQSxhQUFBQTtJQUNoQiw2REFBNkQ7SUFDN0QsK0RBQStEO0lBQy9ELG1EQUFtRDs7Ozs7V0FIbkNBIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFbnRyeSBwb2ludCB0byB0aGUgU2VnbWVudCBDYWNoZSBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBBbGwgY29kZSByZWxhdGVkIHRvIHRoZSBTZWdtZW50IENhY2hlIGxpdmVzIGBzZWdtZW50LWNhY2hlLWltcGxgIGRpcmVjdG9yeS5cbiAqIENhbGxlcnMgYWNjZXNzIGl0IHRocm91Z2ggdGhpcyBpbmRpcmVjdGlvbi5cbiAqXG4gKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGUgY29kZSBpcyBkZWFkIGNvZGUgZWxpbWluYXRlZCBmcm9tIHRoZSBidW5kbGUgaWYgdGhlXG4gKiBmbGFnIGlzIGRpc2FibGVkLlxuICpcbiAqIFRPRE86IFRoaXMgaXMgc3VwZXIgdGVkaW91cy4gU2luY2UgZXhwZXJpbWVudGFsIGZsYWdzIGFyZSBhbiBlc3NlbnRpYWwgcGFydFxuICogb2Ygb3VyIHdvcmtmbG93LCB3ZSBzaG91bGQgZXN0YWJsaXNoIGEgYmV0dGVyIHBhdHRlcm4gZm9yIGRlYWQgY29kZVxuICogZWxpbWluYXRpb24uIElkZWFsbHkgaXQgd291bGQgYmUgZG9uZSBhdCB0aGUgYnVuZGxlciBsZXZlbCwgbGlrZSBob3cgUmVhY3Qnc1xuICogYnVpbGQgcHJvY2VzcyB3b3Jrcy4gSW4gdGhlIFJlYWN0IHJlcG8sIHlvdSBkb24ndCBldmVuIG5lZWQgdG8gYWRkIGFueSBleHRyYVxuICogY29uZmlndXJhdGlvbiBwZXIgZXhwZXJpbWVudCDigJQgaWYgdGhlIGNvZGUgaXMgbm90IHJlYWNoYWJsZSwgaXQgZ2V0cyBzdHJpcHBlZFxuICogZnJvbSB0aGUgYnVpbGQgYXV0b21hdGljYWxseSBieSBSb2xsdXAuIE9yLCBzaG9ydGVyIHRlcm0sIHdlIGNvdWxkIHN0dWIgb3V0XG4gKiBleHBlcmltZW50YWwgbW9kdWxlcyBhdCBidWlsZCB0aW1lIGJ5IHVwZGF0aW5nIHRoZSBidWlsZCBjb25maWcsIGkuZS4gYSBtb3JlXG4gKiBhdXRvbWF0ZWQgdmVyc2lvbiBvZiB3aGF0IEknbSBkb2luZyBtYW51YWxseSBpbiB0aGlzIGZpbGUuXG4gKi9cblxuZXhwb3J0IHR5cGUgeyBOYXZpZ2F0aW9uUmVzdWx0IH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlLWltcGwvbmF2aWdhdGlvbidcbmV4cG9ydCB0eXBlIHsgUHJlZmV0Y2hUYXNrIH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJ1xuZXhwb3J0IHR5cGUgeyBOb3JtYWxpemVkU2VhcmNoIH0gZnJvbSAnLi9zZWdtZW50LWNhY2hlLWltcGwvY2FjaGUta2V5J1xuXG5jb25zdCBub3RFbmFibGVkOiBhbnkgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcbiAgICAnU2VnbWVudCBDYWNoZSBleHBlcmltZW50IGlzIG5vdCBlbmFibGVkLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMuJ1xuICApXG59XG5cbmV4cG9ydCBjb25zdCBwcmVmZXRjaDogdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvcHJlZmV0Y2gnKS5wcmVmZXRjaCA9XG4gIHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXF1aXJlKCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9wcmVmZXRjaCcpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3ByZWZldGNoJylcbiAgICAgICAgKS5wcmVmZXRjaCguLi5hcmdzKVxuICAgICAgfVxuICAgIDogbm90RW5hYmxlZFxuXG5leHBvcnQgY29uc3QgbmF2aWdhdGU6IHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL25hdmlnYXRpb24nKS5uYXZpZ2F0ZSA9XG4gIHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXF1aXJlKCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9uYXZpZ2F0aW9uJykgYXMgdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvbmF2aWdhdGlvbicpXG4gICAgICAgICkubmF2aWdhdGUoLi4uYXJncylcbiAgICAgIH1cbiAgICA6IG5vdEVuYWJsZWRcblxuZXhwb3J0IGNvbnN0IHJldmFsaWRhdGVFbnRpcmVDYWNoZTogdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvY2FjaGUnKS5yZXZhbGlkYXRlRW50aXJlQ2FjaGUgPVxuICBwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEVcbiAgICA/IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcmVxdWlyZSgnLi9zZWdtZW50LWNhY2hlLWltcGwvY2FjaGUnKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZScpXG4gICAgICAgICkucmV2YWxpZGF0ZUVudGlyZUNhY2hlKC4uLmFyZ3MpXG4gICAgICB9XG4gICAgOiBub3RFbmFibGVkXG5cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Q2FjaGVWZXJzaW9uOiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZScpLmdldEN1cnJlbnRDYWNoZVZlcnNpb24gPVxuICBwcm9jZXNzLmVudi5fX05FWFRfQ0xJRU5UX1NFR01FTlRfQ0FDSEVcbiAgICA/IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgcmVxdWlyZSgnLi9zZWdtZW50LWNhY2hlLWltcGwvY2FjaGUnKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZScpXG4gICAgICAgICkuZ2V0Q3VycmVudENhY2hlVmVyc2lvbiguLi5hcmdzKVxuICAgICAgfVxuICAgIDogbm90RW5hYmxlZFxuXG5leHBvcnQgY29uc3Qgc2NoZWR1bGVQcmVmZXRjaFRhc2s6IHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpLnNjaGVkdWxlUHJlZmV0Y2hUYXNrID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpXG4gICAgICAgICkuc2NoZWR1bGVQcmVmZXRjaFRhc2soLi4uYXJncylcbiAgICAgIH1cbiAgICA6IG5vdEVuYWJsZWRcblxuZXhwb3J0IGNvbnN0IGNhbmNlbFByZWZldGNoVGFzazogdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJykuY2FuY2VsUHJlZmV0Y2hUYXNrID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpXG4gICAgICAgICkuY2FuY2VsUHJlZmV0Y2hUYXNrKC4uLmFyZ3MpXG4gICAgICB9XG4gICAgOiBub3RFbmFibGVkXG5cbmV4cG9ydCBjb25zdCByZXNjaGVkdWxlUHJlZmV0Y2hUYXNrOiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9zY2hlZHVsZXInKS5yZXNjaGVkdWxlUHJlZmV0Y2hUYXNrID1cbiAgcHJvY2Vzcy5lbnYuX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFXG4gICAgPyBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIHJlcXVpcmUoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpIGFzIHR5cGVvZiBpbXBvcnQoJy4vc2VnbWVudC1jYWNoZS1pbXBsL3NjaGVkdWxlcicpXG4gICAgICAgICkucmVzY2hlZHVsZVByZWZldGNoVGFzayguLi5hcmdzKVxuICAgICAgfVxuICAgIDogbm90RW5hYmxlZFxuXG5leHBvcnQgY29uc3QgaXNQcmVmZXRjaFRhc2tEaXJ0eTogdHlwZW9mIGltcG9ydCgnLi9zZWdtZW50LWNhY2hlLWltcGwvc2NoZWR1bGVyJykuaXNQcmVmZXRjaFRhc2tEaXJ0eSA9XG4gIHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXF1aXJlKCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9zY2hlZHVsZXInKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9zY2hlZHVsZXInKVxuICAgICAgICApLmlzUHJlZmV0Y2hUYXNrRGlydHkoLi4uYXJncylcbiAgICAgIH1cbiAgICA6IG5vdEVuYWJsZWRcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNhY2hlS2V5OiB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZS1rZXknKS5jcmVhdGVDYWNoZUtleSA9XG4gIHByb2Nlc3MuZW52Ll9fTkVYVF9DTElFTlRfU0VHTUVOVF9DQUNIRVxuICAgID8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICByZXF1aXJlKCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZS1rZXknKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3NlZ21lbnQtY2FjaGUtaW1wbC9jYWNoZS1rZXknKVxuICAgICAgICApLmNyZWF0ZUNhY2hlS2V5KC4uLmFyZ3MpXG4gICAgICB9XG4gICAgOiBub3RFbmFibGVkXG5cbi8qKlxuICogQmVsb3cgYXJlIHB1YmxpYyBjb25zdGFudHMuIFRoZXkncmUgc21hbGwgZW5vdWdoIHRoYXQgd2UgZG9uJ3QgbmVlZCB0b1xuICogRENFIHRoZW0uXG4gKi9cblxuZXhwb3J0IGNvbnN0IGVudW0gTmF2aWdhdGlvblJlc3VsdFRhZyB7XG4gIE1QQSxcbiAgU3VjY2VzcyxcbiAgTm9PcCxcbiAgQXN5bmMsXG59XG5cbi8qKlxuICogVGhlIHByaW9yaXR5IG9mIHRoZSBwcmVmZXRjaCB0YXNrLiBIaWdoZXIgbnVtYmVycyBhcmUgaGlnaGVyIHByaW9yaXR5LlxuICovXG5leHBvcnQgY29uc3QgZW51bSBQcmVmZXRjaFByaW9yaXR5IHtcbiAgLyoqXG4gICAqIEFzc2lnbmVkIHRvIHRoZSBtb3N0IHJlY2VudGx5IGhvdmVyZWQvdG91Y2hlZCBsaW5rLiBTcGVjaWFsIG5ldHdvcmtcbiAgICogYmFuZHdpZHRoIGlzIHJlc2VydmVkIGZvciB0aGlzIHRhc2sgb25seS4gVGhlcmUncyBvbmx5IGV2ZXIgb25lIEludGVudC1cbiAgICogcHJpb3JpdHkgdGFzayBhdCBhIHRpbWU7IHdoZW4gYSBuZXcgSW50ZW50IHRhc2sgaXMgc2NoZWR1bGVkLCB0aGUgcHJldmlvdXNcbiAgICogb25lIGlzIGJ1bXBlZCBkb3duIHRvIERlZmF1bHQuXG4gICAqL1xuICBJbnRlbnQgPSAyLFxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcHJpb3JpdHkgZm9yIHByZWZldGNoIHRhc2tzLlxuICAgKi9cbiAgRGVmYXVsdCA9IDEsXG4gIC8qKlxuICAgKiBBc3NpZ25lZCB0byB0YXNrcyB3aGVuIHRoZXkgc3Bhd24gbm9uLWJsb2NraW5nIGJhY2tncm91bmQgd29yaywgbGlrZVxuICAgKiByZXZhbGlkYXRpbmcgYSBwYXJ0aWFsbHkgY2FjaGVkIGVudHJ5IHRvIHNlZSBpZiBtb3JlIGRhdGEgaXMgYXZhaWxhYmxlLlxuICAgKi9cbiAgQmFja2dyb3VuZCA9IDAsXG59XG5cbmV4cG9ydCBjb25zdCBlbnVtIEZldGNoU3RyYXRlZ3kge1xuICAvLyBEZWxpYmVyYXRlbHkgb3JkZXJlZCBzbyB3ZSBjYW4gZWFzaWx5IGNvbXBhcmUgdHdvIHNlZ21lbnRzXG4gIC8vIGFuZCBkZXRlcm1pbmUgaWYgb25lIHNlZ21lbnQgaXMgXCJtb3JlIHNwZWNpZmljXCIgdGhhbiBhbm90aGVyXG4gIC8vIChpLmUuIGlmIGl0J3MgbGlrZWx5IHRoYXQgaXQgY29udGFpbnMgbW9yZSBkYXRhKVxuICBMb2FkaW5nQm91bmRhcnkgPSAwLFxuICBQUFIgPSAxLFxuICBQUFJSdW50aW1lID0gMixcbiAgRnVsbCA9IDMsXG59XG5cbi8qKlxuICogQSBzdWJzZXQgb2YgZmV0Y2ggc3RyYXRlZ2llcyB1c2VkIGZvciBwcmVmZXRjaCB0YXNrcy5cbiAqIEEgcHJlZmV0Y2ggdGFzayBjYW4ndCBrbm93IGlmIGl0IHNob3VsZCB1c2UgYFBQUmAgb3IgYExvYWRpbmdCb3VuZGFyeWBcbiAqIHVudGlsIHdlIGNvbXBsZXRlIHRoZSBpbml0aWFsIHRyZWUgcHJlZmV0Y2ggcmVxdWVzdCwgc28gd2UgdXNlIGBQUFJgIHRvIHNpZ25hbCBib3RoIGNhc2VzXG4gKiBhbmQgYWRqdXN0IGl0IGJhc2VkIG9uIHRoZSByb3V0ZSB3aGVuIGFjdHVhbGx5IGZldGNoaW5nLlxuICogKi9cbmV4cG9ydCB0eXBlIFByZWZldGNoVGFza0ZldGNoU3RyYXRlZ3kgPVxuICB8IEZldGNoU3RyYXRlZ3kuUFBSXG4gIHwgRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lXG4gIHwgRmV0Y2hTdHJhdGVneS5GdWxsXG4iXSwibmFtZXMiOlsiRmV0Y2hTdHJhdGVneSIsIk5hdmlnYXRpb25SZXN1bHRUYWciLCJQcmVmZXRjaFByaW9yaXR5IiwiY2FuY2VsUHJlZmV0Y2hUYXNrIiwiY3JlYXRlQ2FjaGVLZXkiLCJnZXRDdXJyZW50Q2FjaGVWZXJzaW9uIiwiaXNQcmVmZXRjaFRhc2tEaXJ0eSIsIm5hdmlnYXRlIiwicHJlZmV0Y2giLCJyZXNjaGVkdWxlUHJlZmV0Y2hUYXNrIiwicmV2YWxpZGF0ZUVudGlyZUNhY2hlIiwic2NoZWR1bGVQcmVmZXRjaFRhc2siLCJub3RFbmFibGVkIiwiRXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0NMSUVOVF9TRUdNRU5UX0NBQ0hFIiwiYXJncyIsInJlcXVpcmUiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/segment-cache.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unauthorized.js": /*!*********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unauthorized.js ***! \*********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unauthorized\", ({\n enumerable: true,\n get: function() {\n return unauthorized;\n }\n}));\nconst _httpaccessfallback = __webpack_require__(/*! ./http-access-fallback/http-access-fallback */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js\");\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */ const DIGEST = \"\" + _httpaccessfallback.HTTP_ERROR_FALLBACK_ERROR_CODE + \";401\";\nfunction unauthorized() {\n if (true) {\n throw Object.defineProperty(new Error(\"`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled.\"), \"__NEXT_ERROR_CODE\", {\n value: \"E411\",\n enumerable: false,\n configurable: true\n });\n }\n // eslint-disable-next-line no-throw-literal\n const error = Object.defineProperty(new Error(DIGEST), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.digest = DIGEST;\n throw error;\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=unauthorized.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5hdXRob3JpemVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Z0RBc0JnQkE7OztlQUFBQTs7O2dEQW5CVDtBQUVQLGdDQUFnQztBQUNoQzs7Ozs7Ozs7Ozs7O0NBWUMsR0FFRCxNQUFNQyxTQUFVLEtBQUVDLG9CQUFBQSw4QkFBOEIsR0FBQztBQUUxQyxTQUFTRjtJQUNkLElBQUksSUFBZ0QsRUFBRTtRQUNwRCxNQUFNLHFCQUVMLENBRkssSUFBSU0sTUFDUCxnSEFERzttQkFBQTt3QkFBQTswQkFBQTtRQUVOO0lBQ0Y7SUFFQSw0Q0FBNEM7SUFDNUMsTUFBTUMsUUFBUSxxQkFBaUIsQ0FBakIsSUFBSUQsTUFBTUwsU0FBVjtlQUFBO29CQUFBO3NCQUFBO0lBQWdCO0lBQzVCTSxNQUFrQ0MsTUFBTSxHQUFHUDtJQUM3QyxNQUFNTTtBQUNSIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3VuYXV0aG9yaXplZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUsXG4gIHR5cGUgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IsXG59IGZyb20gJy4vaHR0cC1hY2Nlc3MtZmFsbGJhY2svaHR0cC1hY2Nlc3MtZmFsbGJhY2snXG5cbi8vIFRPRE86IEFkZCBgdW5hdXRob3JpemVkYCBkb2NzXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHlvdSB0byByZW5kZXIgdGhlIFt1bmF1dGhvcml6ZWQuanMgZmlsZV0oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZmlsZS1jb252ZW50aW9ucy91bmF1dGhvcml6ZWQpXG4gKiB3aXRoaW4gYSByb3V0ZSBzZWdtZW50IGFzIHdlbGwgYXMgaW5qZWN0IGEgdGFnLlxuICpcbiAqIGB1bmF1dGhvcml6ZWQoKWAgY2FuIGJlIHVzZWQgaW5cbiAqIFtTZXJ2ZXIgQ29tcG9uZW50c10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzKSxcbiAqIFtSb3V0ZSBIYW5kbGVyc10oaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcm91dGluZy9yb3V0ZS1oYW5kbGVycyksIGFuZFxuICogW1NlcnZlciBBY3Rpb25zXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL3NlcnZlci1hY3Rpb25zLWFuZC1tdXRhdGlvbnMpLlxuICpcbiAqXG4gKiBSZWFkIG1vcmU6IFtOZXh0LmpzIERvY3M6IGB1bmF1dGhvcml6ZWRgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdW5hdXRob3JpemVkKVxuICovXG5cbmNvbnN0IERJR0VTVCA9IGAke0hUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERX07NDAxYFxuXG5leHBvcnQgZnVuY3Rpb24gdW5hdXRob3JpemVkKCk6IG5ldmVyIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5fX05FWFRfRVhQRVJJTUVOVEFMX0FVVEhfSU5URVJSVVBUUykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBcXGB1bmF1dGhvcml6ZWQoKVxcYCBpcyBleHBlcmltZW50YWwgYW5kIG9ubHkgYWxsb3dlZCB0byBiZSB1c2VkIHdoZW4gXFxgZXhwZXJpbWVudGFsLmF1dGhJbnRlcnJ1cHRzXFxgIGlzIGVuYWJsZWQuYFxuICAgIClcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKERJR0VTVCkgYXMgSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3JcbiAgOyhlcnJvciBhcyBIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikuZGlnZXN0ID0gRElHRVNUXG4gIHRocm93IGVycm9yXG59XG4iXSwibmFtZXMiOlsidW5hdXRob3JpemVkIiwiRElHRVNUIiwiSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9FWFBFUklNRU5UQUxfQVVUSF9JTlRFUlJVUFRTIiwiRXJyb3IiLCJlcnJvciIsImRpZ2VzdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unauthorized.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unrecognized-action-error.js": /*!**********************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unrecognized-action-error.js ***! \**********************************************************************************************************************************************************/ /***/ ((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 UnrecognizedActionError: function() {\n return UnrecognizedActionError;\n },\n unstable_isUnrecognizedActionError: function() {\n return unstable_isUnrecognizedActionError;\n }\n});\nclass UnrecognizedActionError extends Error {\n constructor(...args){\n super(...args);\n this.name = 'UnrecognizedActionError';\n }\n}\nfunction unstable_isUnrecognizedActionError(error) {\n return !!(error && typeof error === 'object' && error instanceof UnrecognizedActionError);\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=unrecognized-action-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5yZWNvZ25pemVkLWFjdGlvbi1lcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUFBYUEsdUJBQXVCO2VBQXZCQTs7SUF5QkdDLGtDQUFrQztlQUFsQ0E7OztBQXpCVCxNQUFNRCxnQ0FBZ0NFO0lBQzNDQyxZQUFZLEdBQUdDLElBQXlDLENBQUU7UUFDeEQsS0FBSyxJQUFJQTtRQUNULElBQUksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2Q7QUFDRjtBQW9CTyxTQUFTSixtQ0FDZEssS0FBYztJQUVkLE9BQU8sQ0FBQyxDQUNOQSxDQUFBQSxTQUNBLE9BQU9BLFVBQVUsWUFDakJBLGlCQUFpQk4sdUJBQUFBLENBQXNCO0FBRTNDIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3VucmVjb2duaXplZC1hY3Rpb24tZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFVucmVjb2duaXplZEFjdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvciguLi5hcmdzOiBDb25zdHJ1Y3RvclBhcmFtZXRlcnM8dHlwZW9mIEVycm9yPikge1xuICAgIHN1cGVyKC4uLmFyZ3MpXG4gICAgdGhpcy5uYW1lID0gJ1VucmVjb2duaXplZEFjdGlvbkVycm9yJ1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIHNlcnZlciBhY3Rpb24gY2FsbCBmYWlsZWQgYmVjYXVzZSB0aGUgc2VydmVyIGFjdGlvbiB3YXMgbm90IHJlY29nbml6ZWQgYnkgdGhlIHNlcnZlci5cbiAqIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIGFyZSBub3QgZnJvbSB0aGUgc2FtZSBkZXBsb3ltZW50LlxuICpcbiAqIEV4YW1wbGUgdXNhZ2U6XG4gKiBgYGB0c1xuICogdHJ5IHtcbiAqICAgYXdhaXQgbXlTZXJ2ZXJBY3Rpb24oKTtcbiAqIH0gY2F0Y2ggKGVycikge1xuICogICBpZiAodW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvcihlcnIpKSB7XG4gKiAgICAgLy8gVGhlIGNsaWVudCBpcyBmcm9tIGEgZGlmZmVyZW50IGRlcGxveW1lbnQgdGhhbiB0aGUgc2VydmVyLlxuICogICAgIC8vIFJlbG9hZGluZyB0aGUgcGFnZSB3aWxsIGZpeCB0aGlzIG1pc21hdGNoLlxuICogICAgIHdpbmRvdy5hbGVydChcIlBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIGFuZCB0cnkgYWdhaW5cIik7XG4gKiAgICAgcmV0dXJuO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqICovXG5leHBvcnQgZnVuY3Rpb24gdW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvcihcbiAgZXJyb3I6IHVua25vd25cbik6IGVycm9yIGlzIFVucmVjb2duaXplZEFjdGlvbkVycm9yIHtcbiAgcmV0dXJuICEhKFxuICAgIGVycm9yICYmXG4gICAgdHlwZW9mIGVycm9yID09PSAnb2JqZWN0JyAmJlxuICAgIGVycm9yIGluc3RhbmNlb2YgVW5yZWNvZ25pemVkQWN0aW9uRXJyb3JcbiAgKVxufVxuIl0sIm5hbWVzIjpbIlVucmVjb2duaXplZEFjdGlvbkVycm9yIiwidW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJhcmdzIiwibmFtZSIsImVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unrecognized-action-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unresolved-thenable.js": /*!****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unresolved-thenable.js ***! \****************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * Create a \"Thenable\" that does not resolve. This is used to suspend indefinitely when data is not available yet.\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unresolvedThenable\", ({\n enumerable: true,\n get: function() {\n return unresolvedThenable;\n }\n}));\nconst unresolvedThenable = {\n then: ()=>{}\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=unresolved-thenable.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5yZXNvbHZlZC10aGVuYWJsZS5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQzs7OztzREFDWUE7OztlQUFBQTs7O0FBQU4sTUFBTUEscUJBQXFCO0lBQ2hDQyxNQUFNLEtBQU87QUFDZiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy91bnJlc29sdmVkLXRoZW5hYmxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3JlYXRlIGEgXCJUaGVuYWJsZVwiIHRoYXQgZG9lcyBub3QgcmVzb2x2ZS4gVGhpcyBpcyB1c2VkIHRvIHN1c3BlbmQgaW5kZWZpbml0ZWx5IHdoZW4gZGF0YSBpcyBub3QgYXZhaWxhYmxlIHlldC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVucmVzb2x2ZWRUaGVuYWJsZSA9IHtcbiAgdGhlbjogKCkgPT4ge30sXG59IGFzIFByb21pc2VMaWtlPHZvaWQ+XG4iXSwibmFtZXMiOlsidW5yZXNvbHZlZFRoZW5hYmxlIiwidGhlbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unresolved-thenable.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.browser.js": /*!*********************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.browser.js ***! \*********************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _isnextroutererror = __webpack_require__(/*! ./is-next-router-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/is-next-router-error.js\");\nfunction unstable_rethrow(error) {\n if ((0, _isnextroutererror.isNextRouterError)(error) || (0, _bailouttocsr.isBailoutToCSRError)(error)) {\n throw error;\n }\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause);\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=unstable-rethrow.browser.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5zdGFibGUtcmV0aHJvdy5icm93c2VyLmpzIiwibWFwcGluZ3MiOiI7Ozs7b0RBR2dCQTs7O2VBQUFBOzs7MENBSG9COytDQUNGO0FBRTNCLFNBQVNBLGlCQUFpQkMsS0FBYztJQUM3QyxJQUFJQyxDQUFBQSxHQUFBQSxtQkFBQUEsaUJBQUFBLEVBQWtCRCxVQUFVRSxDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JGLFFBQVE7UUFDMUQsTUFBTUE7SUFDUjtJQUVBLElBQUlBLGlCQUFpQkcsU0FBUyxXQUFXSCxPQUFPO1FBQzlDRCxpQkFBaUJDLE1BQU1JLEtBQUs7SUFDOUI7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy91bnN0YWJsZS1yZXRocm93LmJyb3dzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNCYWlsb3V0VG9DU1JFcnJvciB9IGZyb20gJy4uLy4uL3NoYXJlZC9saWIvbGF6eS1keW5hbWljL2JhaWxvdXQtdG8tY3NyJ1xuaW1wb3J0IHsgaXNOZXh0Um91dGVyRXJyb3IgfSBmcm9tICcuL2lzLW5leHQtcm91dGVyLWVycm9yJ1xuXG5leHBvcnQgZnVuY3Rpb24gdW5zdGFibGVfcmV0aHJvdyhlcnJvcjogdW5rbm93bik6IHZvaWQge1xuICBpZiAoaXNOZXh0Um91dGVyRXJyb3IoZXJyb3IpIHx8IGlzQmFpbG91dFRvQ1NSRXJyb3IoZXJyb3IpKSB7XG4gICAgdGhyb3cgZXJyb3JcbiAgfVxuXG4gIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICdjYXVzZScgaW4gZXJyb3IpIHtcbiAgICB1bnN0YWJsZV9yZXRocm93KGVycm9yLmNhdXNlKVxuICB9XG59XG4iXSwibmFtZXMiOlsidW5zdGFibGVfcmV0aHJvdyIsImVycm9yIiwiaXNOZXh0Um91dGVyRXJyb3IiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiRXJyb3IiLCJjYXVzZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.browser.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.js": /*!*************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.js ***! \*************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"unstable_rethrow\", ({\n enumerable: true,\n get: function() {\n return unstable_rethrow;\n }\n}));\nconst unstable_rethrow = false ? 0 : (__webpack_require__(/*! ./unstable-rethrow.browser */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.browser.js\").unstable_rethrow);\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=unstable-rethrow.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdW5zdGFibGUtcmV0aHJvdy5qcyIsIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUM7Ozs7b0RBQ1lBOzs7ZUFBQUE7OztBQUFOLE1BQU1BLG1CQUNYLE1BQTZCLEdBRXZCRSxDQUNnQixHQUVoQkEsaVBBQ2dCIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9jb21wb25lbnRzL3Vuc3RhYmxlLXJldGhyb3cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIHRvIHJldGhyb3cgaW50ZXJuYWwgTmV4dC5qcyBlcnJvcnMgc28gdGhhdCB0aGV5IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBmcmFtZXdvcmsuXG4gKiBXaGVuIHdyYXBwaW5nIGFuIEFQSSB0aGF0IHVzZXMgZXJyb3JzIHRvIGludGVycnVwdCBjb250cm9sIGZsb3csIHlvdSBzaG91bGQgdXNlIHRoaXMgZnVuY3Rpb24gYmVmb3JlIHlvdSBkbyBhbnkgZXJyb3IgaGFuZGxpbmcuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0aHJvdyB0aGUgZXJyb3IgaWYgaXQgaXMgYSBOZXh0LmpzIGVycm9yIHNvIGl0IGNhbiBiZSBoYW5kbGVkLCBvdGhlcndpc2UgaXQgd2lsbCBkbyBub3RoaW5nLlxuICpcbiAqIFJlYWQgbW9yZTogW05leHQuanMgRG9jczogYHVuc3RhYmxlX3JldGhyb3dgXShodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS9mdW5jdGlvbnMvdW5zdGFibGVfcmV0aHJvdylcbiAqL1xuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX3JldGhyb3cgPVxuICB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJ1xuICAgID8gKFxuICAgICAgICByZXF1aXJlKCcuL3Vuc3RhYmxlLXJldGhyb3cuc2VydmVyJykgYXMgdHlwZW9mIGltcG9ydCgnLi91bnN0YWJsZS1yZXRocm93LnNlcnZlcicpXG4gICAgICApLnVuc3RhYmxlX3JldGhyb3dcbiAgICA6IChcbiAgICAgICAgcmVxdWlyZSgnLi91bnN0YWJsZS1yZXRocm93LmJyb3dzZXInKSBhcyB0eXBlb2YgaW1wb3J0KCcuL3Vuc3RhYmxlLXJldGhyb3cuYnJvd3NlcicpXG4gICAgICApLnVuc3RhYmxlX3JldGhyb3dcbiJdLCJuYW1lcyI6WyJ1bnN0YWJsZV9yZXRocm93Iiwid2luZG93IiwicmVxdWlyZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/unstable-rethrow.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/use-action-queue.js": /*!*************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/use-action-queue.js ***! \*************************************************************************************************************************************************/ /***/ ((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 dispatchAppRouterAction: function() {\n return dispatchAppRouterAction;\n },\n useActionQueue: function() {\n return useActionQueue;\n }\n});\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\"));\nconst _isthenable = __webpack_require__(/*! ../../shared/lib/is-thenable */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/is-thenable.js\");\n// The app router state lives outside of React, so we can import the dispatch\n// method directly wherever we need it, rather than passing it around via props\n// or context.\nlet dispatch = null;\nfunction dispatchAppRouterAction(action) {\n if (dispatch === null) {\n throw Object.defineProperty(new Error('Internal Next.js error: Router action dispatched before initialization.'), \"__NEXT_ERROR_CODE\", {\n value: \"E668\",\n enumerable: false,\n configurable: true\n });\n }\n dispatch(action);\n}\nfunction useActionQueue(actionQueue) {\n _s();\n const [state, setState] = _react.default.useState(actionQueue.state);\n // Because of a known issue that requires to decode Flight streams inside the\n // render phase, we have to be a bit clever and assign the dispatch method to\n // a module-level variable upon initialization. The useState hook in this\n // module only exists to synchronize state that lives outside of React.\n // Ideally, what we'd do instead is pass the state as a prop to root.render;\n // this is conceptually how we're modeling the app router state, despite the\n // weird implementation details.\n if (true) {\n const { useAppDevRenderingIndicator } = __webpack_require__(/*! ../../next-devtools/userspace/use-app-dev-rendering-indicator */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/use-app-dev-rendering-indicator.js\");\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const appDevRenderingIndicator = useAppDevRenderingIndicator();\n dispatch = (action)=>{\n appDevRenderingIndicator(()=>{\n actionQueue.dispatch(action, setState);\n });\n };\n } else {}\n return (0, _isthenable.isThenable)(state) ? (0, _react.use)(state) : state;\n}\n_s(useActionQueue, \"Rp0Tj1zyE8LTecjN/cjTzn46xPo=\");\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=use-action-queue.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvdXNlLWFjdGlvbi1xdWV1ZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztJQWVnQkEsdUJBQXVCO2VBQXZCQTs7SUFTQUMsY0FBYztlQUFkQTs7Ozs2RUF2Qlc7d0NBQ0E7QUFRM0IsNkVBQTZFO0FBQzdFLCtFQUErRTtBQUMvRSxjQUFjO0FBQ2QsSUFBSUMsV0FBNEM7QUFFekMsU0FBU0Ysd0JBQXdCRyxNQUFzQjtJQUM1RCxJQUFJRCxhQUFhLE1BQU07UUFDckIsTUFBTSxxQkFFTCxDQUZLLElBQUlFLE1BQ1IsNEVBREk7bUJBQUE7d0JBQUE7MEJBQUE7UUFFTjtJQUNGO0lBQ0FGLFNBQVNDO0FBQ1g7QUFFTyx3QkFDTEUsV0FBaUM7O0lBRWpDLE1BQU0sQ0FBQ0MsT0FBT0MsU0FBUyxHQUFHQyxPQUFBQSxPQUFLLENBQUNDLFFBQVEsQ0FBZUosWUFBWUMsS0FBSztJQUV4RSw2RUFBNkU7SUFDN0UsNkVBQTZFO0lBQzdFLHlFQUF5RTtJQUN6RSx1RUFBdUU7SUFDdkUsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSxnQ0FBZ0M7SUFDaEMsSUFaY0wsSUFZVSxFQUFtQjtRQUN6QyxNQUFNLEVBQUVZLDJCQUEyQixFQUFFLEdBQ25DQyxtQkFBT0EsQ0FBQyx5UEFBK0Q7UUFDekUsc0RBQXNEO1FBQ3RELE1BQU1DLDJCQUEyQkY7UUFFakNYLFdBQVcsQ0FBQ0M7WUFDVlkseUJBQXlCO2dCQUN2QlYsWUFBWUgsUUFBUSxDQUFDQyxRQUFRSTtZQUMvQjtRQUNGO0lBQ0YsT0FBTyxFQUdOO0lBRUQsT0FBT1MsQ0FBQUEsR0FBQUEsWUFBQUEsVUFBQUEsRUFBV1YsU0FBU1csQ0FBQUEsR0FBQUEsT0FBQUEsR0FBQUEsRUFBSVgsU0FBU0E7QUFDMUM7R0E3QmdCTCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvY29tcG9uZW50cy91c2UtYWN0aW9uLXF1ZXVlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRGlzcGF0Y2ggfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdCwgeyB1c2UgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGlzVGhlbmFibGUgfSBmcm9tICcuLi8uLi9zaGFyZWQvbGliL2lzLXRoZW5hYmxlJ1xuaW1wb3J0IHR5cGUgeyBBcHBSb3V0ZXJBY3Rpb25RdWV1ZSB9IGZyb20gJy4vYXBwLXJvdXRlci1pbnN0YW5jZSdcbmltcG9ydCB0eXBlIHtcbiAgQXBwUm91dGVyU3RhdGUsXG4gIFJlZHVjZXJBY3Rpb25zLFxuICBSZWR1Y2VyU3RhdGUsXG59IGZyb20gJy4vcm91dGVyLXJlZHVjZXIvcm91dGVyLXJlZHVjZXItdHlwZXMnXG5cbi8vIFRoZSBhcHAgcm91dGVyIHN0YXRlIGxpdmVzIG91dHNpZGUgb2YgUmVhY3QsIHNvIHdlIGNhbiBpbXBvcnQgdGhlIGRpc3BhdGNoXG4vLyBtZXRob2QgZGlyZWN0bHkgd2hlcmV2ZXIgd2UgbmVlZCBpdCwgcmF0aGVyIHRoYW4gcGFzc2luZyBpdCBhcm91bmQgdmlhIHByb3BzXG4vLyBvciBjb250ZXh0LlxubGV0IGRpc3BhdGNoOiBEaXNwYXRjaDxSZWR1Y2VyQWN0aW9ucz4gfCBudWxsID0gbnVsbFxuXG5leHBvcnQgZnVuY3Rpb24gZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24oYWN0aW9uOiBSZWR1Y2VyQWN0aW9ucykge1xuICBpZiAoZGlzcGF0Y2ggPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnSW50ZXJuYWwgTmV4dC5qcyBlcnJvcjogUm91dGVyIGFjdGlvbiBkaXNwYXRjaGVkIGJlZm9yZSBpbml0aWFsaXphdGlvbi4nXG4gICAgKVxuICB9XG4gIGRpc3BhdGNoKGFjdGlvbilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUFjdGlvblF1ZXVlKFxuICBhY3Rpb25RdWV1ZTogQXBwUm91dGVyQWN0aW9uUXVldWVcbik6IEFwcFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSBSZWFjdC51c2VTdGF0ZTxSZWR1Y2VyU3RhdGU+KGFjdGlvblF1ZXVlLnN0YXRlKVxuXG4gIC8vIEJlY2F1c2Ugb2YgYSBrbm93biBpc3N1ZSB0aGF0IHJlcXVpcmVzIHRvIGRlY29kZSBGbGlnaHQgc3RyZWFtcyBpbnNpZGUgdGhlXG4gIC8vIHJlbmRlciBwaGFzZSwgd2UgaGF2ZSB0byBiZSBhIGJpdCBjbGV2ZXIgYW5kIGFzc2lnbiB0aGUgZGlzcGF0Y2ggbWV0aG9kIHRvXG4gIC8vIGEgbW9kdWxlLWxldmVsIHZhcmlhYmxlIHVwb24gaW5pdGlhbGl6YXRpb24uIFRoZSB1c2VTdGF0ZSBob29rIGluIHRoaXNcbiAgLy8gbW9kdWxlIG9ubHkgZXhpc3RzIHRvIHN5bmNocm9uaXplIHN0YXRlIHRoYXQgbGl2ZXMgb3V0c2lkZSBvZiBSZWFjdC5cbiAgLy8gSWRlYWxseSwgd2hhdCB3ZSdkIGRvIGluc3RlYWQgaXMgcGFzcyB0aGUgc3RhdGUgYXMgYSBwcm9wIHRvIHJvb3QucmVuZGVyO1xuICAvLyB0aGlzIGlzIGNvbmNlcHR1YWxseSBob3cgd2UncmUgbW9kZWxpbmcgdGhlIGFwcCByb3V0ZXIgc3RhdGUsIGRlc3BpdGUgdGhlXG4gIC8vIHdlaXJkIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgeyB1c2VBcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IgfSA9XG4gICAgICByZXF1aXJlKCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS91c2UtYXBwLWRldi1yZW5kZXJpbmctaW5kaWNhdG9yJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvdXNlLWFwcC1kZXYtcmVuZGVyaW5nLWluZGljYXRvcicpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgY29uc3QgYXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yID0gdXNlQXBwRGV2UmVuZGVyaW5nSW5kaWNhdG9yKClcblxuICAgIGRpc3BhdGNoID0gKGFjdGlvbjogUmVkdWNlckFjdGlvbnMpID0+IHtcbiAgICAgIGFwcERldlJlbmRlcmluZ0luZGljYXRvcigoKSA9PiB7XG4gICAgICAgIGFjdGlvblF1ZXVlLmRpc3BhdGNoKGFjdGlvbiwgc2V0U3RhdGUpXG4gICAgICB9KVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBkaXNwYXRjaCA9IChhY3Rpb246IFJlZHVjZXJBY3Rpb25zKSA9PlxuICAgICAgYWN0aW9uUXVldWUuZGlzcGF0Y2goYWN0aW9uLCBzZXRTdGF0ZSlcbiAgfVxuXG4gIHJldHVybiBpc1RoZW5hYmxlKHN0YXRlKSA/IHVzZShzdGF0ZSkgOiBzdGF0ZVxufVxuIl0sIm5hbWVzIjpbImRpc3BhdGNoQXBwUm91dGVyQWN0aW9uIiwidXNlQWN0aW9uUXVldWUiLCJkaXNwYXRjaCIsImFjdGlvbiIsIkVycm9yIiwiYWN0aW9uUXVldWUiLCJzdGF0ZSIsInNldFN0YXRlIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsInVzZUFwcERldlJlbmRlcmluZ0luZGljYXRvciIsInJlcXVpcmUiLCJhcHBEZXZSZW5kZXJpbmdJbmRpY2F0b3IiLCJpc1RoZW5hYmxlIiwidXNlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/use-action-queue.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js": /*!***********************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js ***! \***********************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/// \n\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 default: function() {\n return HotReload;\n },\n waitForWebpackRuntimeHotUpdate: function() {\n return waitForWebpackRuntimeHotUpdate;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _jsxruntime = __webpack_require__(/*! react/jsx-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/jsx-runtime.js\");\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _stripansi = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! next/dist/compiled/strip-ansi */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/strip-ansi/index.js\"));\nconst _formatwebpackmessages = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../../../shared/lib/format-webpack-messages */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/format-webpack-messages.js\"));\nconst _navigation = __webpack_require__(/*! ../../../components/navigation */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation.js\");\nconst _shared = __webpack_require__(/*! ../shared */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/shared.js\");\nconst _nextdevtools = __webpack_require__(/*! next/dist/compiled/next-devtools */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/next-devtools/index.js\");\nconst _replayssronlyerrors = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/replay-ssr-only-errors */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js\");\nconst _appdevoverlayerrorboundary = __webpack_require__(/*! ../../../../next-devtools/userspace/app/app-dev-overlay-error-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\");\nconst _useerrorhandler = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-error-handler */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js\");\nconst _runtimeerrorhandler = __webpack_require__(/*! ../../runtime-error-handler */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/runtime-error-handler.js\");\nconst _usewebsocket = __webpack_require__(/*! ./use-websocket */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js\");\nconst _hotreloadertypes = __webpack_require__(/*! ../../../../server/dev/hot-reloader-types */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/server/dev/hot-reloader-types.js\");\nconst _navigationuntracked = __webpack_require__(/*! ../../../components/navigation-untracked */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/navigation-untracked.js\");\nconst _reporthmrlatency = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../report-hmr-latency */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/report-hmr-latency.js\"));\nconst _turbopackhotreloadercommon = __webpack_require__(/*! ../turbopack-hot-reloader-common */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\");\nconst _approuterheaders = __webpack_require__(/*! ../../../components/app-router-headers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js\");\nconst _useforwardconsolelog = __webpack_require__(/*! ../../../../next-devtools/userspace/app/errors/use-forward-console-log */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/errors/use-forward-console-log.js\");\nlet mostRecentCompilationHash = null;\nlet __nextDevClientId = Math.round(Math.random() * 100 + Date.now());\nlet reloading = false;\nlet webpackStartMsSinceEpoch = null;\nconst turbopackHmr = false ? 0 : null;\nlet pendingHotUpdateWebpack = Promise.resolve();\nlet resolvePendingHotUpdateWebpack = ()=>{};\nfunction setPendingHotUpdateWebpack() {\n pendingHotUpdateWebpack = new Promise((resolve)=>{\n resolvePendingHotUpdateWebpack = ()=>{\n resolve();\n };\n });\n}\nfunction waitForWebpackRuntimeHotUpdate() {\n return pendingHotUpdateWebpack;\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/**\n * Is there a newer version of this code available?\n * For webpack: Check if the hash changed compared to __webpack_hash__\n * For Turbopack: Always true because it doesn't have __webpack_hash__\n */ function isUpdateAvailable() {\n if (false) {}\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 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 module.hot.removeStatusHandler(handler);\n fn();\n }\n }\n module.hot.addStatusHandler(handler);\n }\n}\nfunction performFullReload(err, sendMessage) {\n const stackTrace = err && (err.stack && err.stack.split('\\n').slice(0, 5).join('\\n') || err.message || err + '');\n sendMessage(JSON.stringify({\n event: 'client-full-reload',\n stackTrace,\n hadRuntimeError: !!_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError,\n dependencyChain: err ? err.dependencyChain : undefined\n }));\n if (reloading) return;\n reloading = true;\n window.location.reload();\n}\n// Attempt to update code on the fly, fall back to a hard reload.\nfunction tryApplyUpdatesWebpack(sendMessage) {\n if (!isUpdateAvailable() || !canApplyUpdates()) {\n resolvePendingHotUpdateWebpack();\n _nextdevtools.dispatcher.onBuildOk();\n (0, _reporthmrlatency.default)(sendMessage, [], webpackStartMsSinceEpoch, Date.now());\n return;\n }\n function handleApplyUpdates(err, updatedModules) {\n if (err || _runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || updatedModules == null) {\n if (err) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD);\n } else if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n }\n performFullReload(err, sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onBuildOk();\n if (isUpdateAvailable()) {\n // While we were updating, there was a new update! Do it again.\n tryApplyUpdatesWebpack(sendMessage);\n return;\n }\n _nextdevtools.dispatcher.onRefresh();\n resolvePendingHotUpdateWebpack();\n (0, _reporthmrlatency.default)(sendMessage, updatedModules, webpackStartMsSinceEpoch, Date.now());\n if (false) {}\n }\n // https://webpack.js.org/api/hot-module-replacement/#check\n module.hot.check(/* autoApply */ false).then((updatedModules)=>{\n if (updatedModules == null) {\n return null;\n }\n // We should always handle an update, even if updatedModules is empty (but\n // non-null) for any reason. That's what webpack would normally do:\n // https://github.com/webpack/webpack/blob/3aa6b6bc3a64/lib/hmr/HotModuleReplacement.runtime.js#L296-L298\n _nextdevtools.dispatcher.onBeforeRefresh();\n // https://webpack.js.org/api/hot-module-replacement/#apply\n return module.hot.apply();\n }).then((updatedModules)=>{\n handleApplyUpdates(null, updatedModules);\n }, (err)=>{\n handleApplyUpdates(err, null);\n });\n}\n/** Handles messages from the server for the App Router. */ function processMessage(obj, sendMessage, processTurbopackMessage, router, appIsrManifestRef, pathnameRef) {\n if (!('action' in obj)) {\n return;\n }\n function handleErrors(errors) {\n // \"Massage\" webpack messages.\n const formatted = (0, _formatwebpackmessages.default)({\n errors: errors,\n warnings: []\n });\n // Only show the first error.\n _nextdevtools.dispatcher.onBuildError(formatted.errors[0]);\n // Also log them to the console.\n for(let i = 0; i < formatted.errors.length; i++){\n console.error((0, _stripansi.default)(formatted.errors[i]));\n }\n // Do not attempt to reload now.\n // We will reload on next success instead.\n if (false) {}\n }\n function handleHotUpdate() {\n if (false) {} else {\n tryApplyUpdatesWebpack(sendMessage);\n }\n }\n switch(obj.action){\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ISR_MANIFEST:\n {\n if (true) {\n if (appIsrManifestRef) {\n appIsrManifestRef.current = obj.data;\n // handle initial status on receiving manifest\n // navigation is handled in useEffect for pathname changes\n // as we'll receive the updated manifest before usePathname\n // triggers for new value\n if (pathnameRef.current in obj.data) {\n _nextdevtools.dispatcher.onStaticIndicator(true);\n } else {\n _nextdevtools.dispatcher.onStaticIndicator(false);\n }\n }\n }\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILDING:\n {\n _nextdevtools.dispatcher.buildingIndicatorShow();\n if (false) {} else {\n webpackStartMsSinceEpoch = Date.now();\n setPendingHotUpdateWebpack();\n console.log('[Fast Refresh] rebuilding');\n }\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SYNC:\n {\n _nextdevtools.dispatcher.buildingIndicatorHide();\n if (obj.hash) {\n handleAvailableHash(obj.hash);\n }\n const { errors, warnings } = obj;\n // Is undefined when it's a 'built' event\n if ('versionInfo' in obj) _nextdevtools.dispatcher.onVersionInfo(obj.versionInfo);\n if ('debug' in obj && obj.debug) _nextdevtools.dispatcher.onDebugInfo(obj.debug);\n if ('devIndicator' in obj) _nextdevtools.dispatcher.onDevIndicator(obj.devIndicator);\n if ('devToolsConfig' in obj) _nextdevtools.dispatcher.onDevToolsConfig(obj.devToolsConfig);\n const hasErrors = Boolean(errors && errors.length);\n // Compilation with errors (e.g. syntax error or missing modules).\n if (hasErrors) {\n sendMessage(JSON.stringify({\n event: 'client-error',\n errorCount: errors.length,\n clientId: __nextDevClientId\n }));\n handleErrors(errors);\n return;\n }\n const hasWarnings = Boolean(warnings && warnings.length);\n if (hasWarnings) {\n sendMessage(JSON.stringify({\n event: 'client-warning',\n warningCount: warnings.length,\n clientId: __nextDevClientId\n }));\n // Print warnings to the console.\n const formattedMessages = (0, _formatwebpackmessages.default)({\n warnings: warnings,\n errors: []\n });\n for(let i = 0; i < formattedMessages.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)(formattedMessages.warnings[i]));\n }\n // No early return here as we need to apply modules in the same way between warnings only and compiles without warnings\n }\n sendMessage(JSON.stringify({\n event: 'client-success',\n clientId: __nextDevClientId\n }));\n if (obj.action === _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.BUILT) {\n handleHotUpdate();\n }\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED:\n {\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_CONNECTED,\n data: {\n sessionId: obj.data.sessionId\n }\n });\n break;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE:\n {\n turbopackHmr.onTurbopackMessage(obj);\n _nextdevtools.dispatcher.onBeforeRefresh();\n processTurbopackMessage({\n type: _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.TURBOPACK_MESSAGE,\n data: obj.data\n });\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError) {\n console.warn(_shared.REACT_REFRESH_FULL_RELOAD_FROM_ERROR);\n performFullReload(null, sendMessage);\n }\n _nextdevtools.dispatcher.onRefresh();\n break;\n }\n // TODO-APP: make server component change more granular\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.SERVER_COMPONENT_CHANGES:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onServerComponentChanges();\n sendMessage(JSON.stringify({\n event: 'server-component-reload-page',\n clientId: __nextDevClientId,\n hash: obj.hash\n }));\n // Store the latest hash in a session cookie so that it's sent back to the\n // server with any subsequent requests.\n document.cookie = _approuterheaders.NEXT_HMR_REFRESH_HASH_COOKIE + \"=\" + obj.hash + \";path=/\";\n if (_runtimeerrorhandler.RuntimeErrorHandler.hadRuntimeError || document.documentElement.id === '__next_error__') {\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n (0, _react.startTransition)(()=>{\n router.hmrRefresh();\n _nextdevtools.dispatcher.onRefresh();\n });\n if (false) {}\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.RELOAD_PAGE:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onReloadPage();\n sendMessage(JSON.stringify({\n event: 'client-reload-page',\n clientId: __nextDevClientId\n }));\n if (reloading) return;\n reloading = true;\n return window.location.reload();\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.ADDED_PAGE:\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.REMOVED_PAGE:\n {\n turbopackHmr == null ? void 0 : turbopackHmr.onPageAddRemove();\n // TODO-APP: potentially only refresh if the currently viewed page was added/removed.\n return router.hmrRefresh();\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 = Object.defineProperty(new Error(message), \"__NEXT_ERROR_CODE\", {\n value: \"E394\",\n enumerable: false,\n configurable: true\n });\n error.stack = stack;\n handleErrors([\n error\n ]);\n }\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEV_PAGES_MANIFEST_UPDATE:\n {\n return;\n }\n case _hotreloadertypes.HMR_ACTIONS_SENT_TO_BROWSER.DEVTOOLS_CONFIG:\n {\n _nextdevtools.dispatcher.onDevToolsConfig(obj.data);\n return;\n }\n default:\n {\n obj;\n }\n }\n}\nfunction HotReload(param) {\n let { assetPrefix, children, globalError } = param;\n (0, _useerrorhandler.useErrorHandler)(_nextdevtools.dispatcher.onUnhandledError, _nextdevtools.dispatcher.onUnhandledRejection);\n const webSocketRef = (0, _usewebsocket.useWebsocket)(assetPrefix);\n (0, _usewebsocket.useWebsocketPing)(webSocketRef);\n const sendMessage = (0, _usewebsocket.useSendMessage)(webSocketRef);\n (0, _useforwardconsolelog.useForwardConsoleLog)(webSocketRef);\n const processTurbopackMessage = (0, _usewebsocket.useTurbopack)(sendMessage, (err)=>performFullReload(err, sendMessage));\n const router = (0, _navigation.useRouter)();\n // We don't want access of the pathname for the dev tools to trigger a dynamic\n // access (as the dev overlay will never be present in production).\n const pathname = (0, _navigationuntracked.useUntrackedPathname)();\n const appIsrManifestRef = (0, _react.useRef)({});\n const pathnameRef = (0, _react.useRef)(pathname);\n if (true) {\n // this conditional is only for dead-code elimination which\n // isn't a runtime conditional only build-time so ignore hooks rule\n // eslint-disable-next-line react-hooks/rules-of-hooks\n (0, _react.useEffect)(()=>{\n pathnameRef.current = pathname;\n const appIsrManifest = appIsrManifestRef.current;\n if (appIsrManifest) {\n if (pathname && pathname in appIsrManifest) {\n try {\n _nextdevtools.dispatcher.onStaticIndicator(true);\n } catch (reason) {\n let message = '';\n if (reason instanceof DOMException) {\n var _reason_stack;\n // Most likely a SecurityError, because of an unavailable localStorage\n message = (_reason_stack = reason.stack) != null ? _reason_stack : reason.message;\n } else if (reason instanceof Error) {\n var _reason_stack1;\n message = 'Error: ' + reason.message + '\\n' + ((_reason_stack1 = reason.stack) != null ? _reason_stack1 : '');\n } else {\n message = 'Unexpected Exception: ' + reason;\n }\n console.warn('[HMR] ' + message);\n }\n } else {\n _nextdevtools.dispatcher.onStaticIndicator(false);\n }\n }\n }, [\n pathname\n ]);\n }\n (0, _react.useEffect)(()=>{\n const websocket = webSocketRef.current;\n if (!websocket) return;\n const handler = (event)=>{\n try {\n const obj = JSON.parse(event.data);\n processMessage(obj, sendMessage, processTurbopackMessage, router, appIsrManifestRef, pathnameRef);\n } catch (err) {\n (0, _shared.reportInvalidHmrMessage)(event, err);\n }\n };\n websocket.addEventListener('message', handler);\n return ()=>websocket.removeEventListener('message', handler);\n }, [\n sendMessage,\n router,\n webSocketRef,\n processTurbopackMessage,\n appIsrManifestRef\n ]);\n return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_appdevoverlayerrorboundary.AppDevOverlayErrorBoundary, {\n globalError: globalError,\n children: [\n /*#__PURE__*/ (0, _jsxruntime.jsx)(_replayssronlyerrors.ReplaySsrOnlyErrors, {\n onBlockingError: _nextdevtools.dispatcher.openErrorOverlay\n }),\n children\n ]\n });\n}\n_c = HotReload;\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-reloader-app.js.map\nvar _c;\n$RefreshReg$(_c, \"HotReload\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvYXBwL2hvdC1yZWxvYWRlci1hcHAuanMiLCJtYXBwaW5ncyI6IkFBQUEsNkNBQTZDOzs7Ozs7Ozs7Ozs7O0lBeWM3QyxPQWlHQztlQWpHdUJBOztJQXBaUkMsOEJBQThCO2VBQTlCQTs7Ozs7bUNBbERtQztnRkFDN0I7NEZBQ1k7d0NBQ1I7b0NBS25COzBDQUNvQjtpREFDUzt3REFDTzs2Q0FDWDtpREFDSTswQ0FNN0I7OENBQ3FDO2lEQUtQO3VGQUNSO3dEQUNBOzhDQUNnQjtrREFFUjtBQUVyQyxJQUFJQyw0QkFBaUM7QUFDckMsSUFBSUMsb0JBQW9CQyxLQUFLQyxLQUFLLENBQUNELEtBQUtFLE1BQU0sS0FBSyxNQUFNQyxLQUFLQyxHQUFHO0FBQ2pFLElBQUlDLFlBQVk7QUFDaEIsSUFBSUMsMkJBQTBDO0FBQzlDLE1BQU1DLGVBQW9DQyxNQUFxQixHQUMzRCxDQUFrQixHQUNsQjtBQUVKLElBQUlJLDBCQUEwQkMsUUFBUUMsT0FBTztBQUM3QyxJQUFJQyxpQ0FBNkMsS0FBTztBQUN4RCxTQUFTQztJQUNQSiwwQkFBMEIsSUFBSUMsUUFBUSxDQUFDQztRQUNyQ0MsaUNBQWlDO1lBQy9CRDtRQUNGO0lBQ0Y7QUFDRjtBQUVPLFNBQVNqQjtJQUNkLE9BQU9lO0FBQ1Q7QUFFQSxrREFBa0Q7QUFDbEQsU0FBU0ssb0JBQW9CQyxJQUFZO0lBQ3ZDLHNDQUFzQztJQUN0Q3BCLDRCQUE0Qm9CO0FBQzlCO0FBRUE7Ozs7Q0FJQyxHQUNELFNBQVNDO0lBQ1AsSUFBSVgsS0FBcUIsRUFBRSxFQUUxQjtJQUVELDRCQUE0QixHQUM1QiwyREFBMkQ7SUFDM0QsOENBQThDO0lBQzlDLE9BQU9WLDhCQUE4QnNCLHVCQUFn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LDBCQUEwQjtRQUFDdEIsYUFBYUE7OzBCQUN2QyxxQkFBQ3VCLHFCQUFBQSxtQkFBbUI7Z0JBQUNDLGlCQUFpQnZILGNBQUFBLFVBQVUsQ0FBQ3dILGdCQUFnQjs7WUFDaEUxQjs7O0FBR1A7S0FqR3dCcEoiLCJzb3VyY2VzIjpbIi9ob21lL3NyYy9jbGllbnQvZGV2L2hvdC1yZWxvYWRlci9hcHAvaG90LXJlbG9hZGVyLWFwcC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJ3ZWJwYWNrL21vZHVsZS5kLnRzXCIgLz5cblxuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUVmZmVjdCwgc3RhcnRUcmFuc2l0aW9uLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBzdHJpcEFuc2kgZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL3N0cmlwLWFuc2knXG5pbXBvcnQgZm9ybWF0V2VicGFja01lc3NhZ2VzIGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9saWIvZm9ybWF0LXdlYnBhY2stbWVzc2FnZXMnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL25hdmlnYXRpb24nXG5pbXBvcnQge1xuICBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FELFxuICBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IsXG4gIHJlcG9ydEludmFsaWRIbXJNZXNzYWdlLFxufSBmcm9tICcuLi9zaGFyZWQnXG5pbXBvcnQgeyBkaXNwYXRjaGVyIH0gZnJvbSAnbmV4dC9kaXN0L2NvbXBpbGVkL25leHQtZGV2dG9vbHMnXG5pbXBvcnQgeyBSZXBsYXlTc3JPbmx5RXJyb3JzIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy9yZXBsYXktc3NyLW9ubHktZXJyb3JzJ1xuaW1wb3J0IHsgQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkgfSBmcm9tICcuLi8uLi8uLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvYXBwLWRldi1vdmVybGF5LWVycm9yLWJvdW5kYXJ5J1xuaW1wb3J0IHsgdXNlRXJyb3JIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycy91c2UtZXJyb3ItaGFuZGxlcidcbmltcG9ydCB7IFJ1bnRpbWVFcnJvckhhbmRsZXIgfSBmcm9tICcuLi8uLi9ydW50aW1lLWVycm9yLWhhbmRsZXInXG5pbXBvcnQge1xuICB1c2VTZW5kTWVzc2FnZSxcbiAgdXNlVHVyYm9wYWNrLFxuICB1c2VXZWJzb2NrZXQsXG4gIHVzZVdlYnNvY2tldFBpbmcsXG59IGZyb20gJy4vdXNlLXdlYnNvY2tldCdcbmltcG9ydCB7IEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUiB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUge1xuICBITVJfQUNUSU9OX1RZUEVTLFxuICBUdXJib3BhY2tNc2dUb0Jyb3dzZXIsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuaW1wb3J0IHsgdXNlVW50cmFja2VkUGF0aG5hbWUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL25hdmlnYXRpb24tdW50cmFja2VkJ1xuaW1wb3J0IHJlcG9ydEhtckxhdGVuY3kgZnJvbSAnLi4vLi4vcmVwb3J0LWhtci1sYXRlbmN5J1xuaW1wb3J0IHsgVHVyYm9wYWNrSG1yIH0gZnJvbSAnLi4vdHVyYm9wYWNrLWhvdC1yZWxvYWRlci1jb21tb24nXG5pbXBvcnQgeyBORVhUX0hNUl9SRUZSRVNIX0hBU0hfQ09PS0lFIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9hcHAtcm91dGVyLWhlYWRlcnMnXG5pbXBvcnQgdHlwZSB7IEdsb2JhbEVycm9yU3RhdGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2FwcC1yb3V0ZXItaW5zdGFuY2UnXG5pbXBvcnQgeyB1c2VGb3J3YXJkQ29uc29sZUxvZyB9IGZyb20gJy4uLy4uLy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvdXNlLWZvcndhcmQtY29uc29sZS1sb2cnXG5cbmxldCBtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoOiBhbnkgPSBudWxsXG5sZXQgX19uZXh0RGV2Q2xpZW50SWQgPSBNYXRoLnJvdW5kKE1hdGgucmFuZG9tKCkgKiAxMDAgKyBEYXRlLm5vdygpKVxubGV0IHJlbG9hZGluZyA9IGZhbHNlXG5sZXQgd2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoOiBudW1iZXIgfCBudWxsID0gbnVsbFxuY29uc3QgdHVyYm9wYWNrSG1yOiBUdXJib3BhY2tIbXIgfCBudWxsID0gcHJvY2Vzcy5lbnYuVFVSQk9QQUNLXG4gID8gbmV3IFR1cmJvcGFja0htcigpXG4gIDogbnVsbFxuXG5sZXQgcGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2sgPSBQcm9taXNlLnJlc29sdmUoKVxubGV0IHJlc29sdmVQZW5kaW5nSG90VXBkYXRlV2VicGFjazogKCkgPT4gdm9pZCA9ICgpID0+IHt9XG5mdW5jdGlvbiBzZXRQZW5kaW5nSG90VXBkYXRlV2VicGFjaygpIHtcbiAgcGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2sgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIHJlc29sdmVQZW5kaW5nSG90VXBkYXRlV2VicGFjayA9ICgpID0+IHtcbiAgICAgIHJlc29sdmUoKVxuICAgIH1cbiAgfSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhaXRGb3JXZWJwYWNrUnVudGltZUhvdFVwZGF0ZSgpIHtcbiAgcmV0dXJuIHBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrXG59XG5cbi8vIFRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGUgY29kZSBhdmFpbGFibGUuXG5mdW5jdGlvbiBoYW5kbGVBdmFpbGFibGVIYXNoKGhhc2g6IHN0cmluZykge1xuICAvLyBVcGRhdGUgbGFzdCBrbm93biBjb21waWxhdGlvbiBoYXNoLlxuICBtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoID0gaGFzaFxufVxuXG4vKipcbiAqIElzIHRoZXJlIGEgbmV3ZXIgdmVyc2lvbiBvZiB0aGlzIGNvZGUgYXZhaWxhYmxlP1xuICogRm9yIHdlYnBhY2s6IENoZWNrIGlmIHRoZSBoYXNoIGNoYW5nZWQgY29tcGFyZWQgdG8gX193ZWJwYWNrX2hhc2hfX1xuICogRm9yIFR1cmJvcGFjazogQWx3YXlzIHRydWUgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUgX193ZWJwYWNrX2hhc2hfX1xuICovXG5mdW5jdGlvbiBpc1VwZGF0ZUF2YWlsYWJsZSgpIHtcbiAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICAvKiBnbG9iYWxzIF9fd2VicGFja19oYXNoX18gKi9cbiAgLy8gX193ZWJwYWNrX2hhc2hfXyBpcyB0aGUgaGFzaCBvZiB0aGUgY3VycmVudCBjb21waWxhdGlvbi5cbiAgLy8gSXQncyBhIGdsb2JhbCB2YXJpYWJsZSBpbmplY3RlZCBieSBXZWJwYWNrLlxuICByZXR1cm4gbW9zdFJlY2VudENvbXBpbGF0aW9uSGFzaCAhPT0gX193ZWJwYWNrX2hhc2hfX1xufVxuXG4vLyBXZWJwYWNrIGRpc2FsbG93cyB1cGRhdGVzIGluIG90aGVyIHN0YXRlcy5cbmZ1bmN0aW9uIGNhbkFwcGx5VXBkYXRlcygpIHtcbiAgcmV0dXJuIG1vZHVsZS5ob3Quc3RhdHVzKCkgPT09ICdpZGxlJ1xufVxuZnVuY3Rpb24gYWZ0ZXJBcHBseVVwZGF0ZXMoZm46IGFueSkge1xuICBpZiAoY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICBmbigpXG4gIH0gZWxzZSB7XG4gICAgZnVuY3Rpb24gaGFuZGxlcihzdGF0dXM6IGFueSkge1xuICAgICAgaWYgKHN0YXR1cyA9PT0gJ2lkbGUnKSB7XG4gICAgICAgIG1vZHVsZS5ob3QucmVtb3ZlU3RhdHVzSGFuZGxlcihoYW5kbGVyKVxuICAgICAgICBmbigpXG4gICAgICB9XG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWRkU3RhdHVzSGFuZGxlcihoYW5kbGVyKVxuICB9XG59XG5cbmZ1bmN0aW9uIHBlcmZvcm1GdWxsUmVsb2FkKGVycjogYW55LCBzZW5kTWVzc2FnZTogYW55KSB7XG4gIGNvbnN0IHN0YWNrVHJhY2UgPVxuICAgIGVyciAmJlxuICAgICgoZXJyLnN0YWNrICYmIGVyci5zdGFjay5zcGxpdCgnXFxuJykuc2xpY2UoMCwgNSkuam9pbignXFxuJykpIHx8XG4gICAgICBlcnIubWVzc2FnZSB8fFxuICAgICAgZXJyICsgJycpXG5cbiAgc2VuZE1lc3NhZ2UoXG4gICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6ICdjbGllbnQtZnVsbC1yZWxvYWQnLFxuICAgICAgc3RhY2tUcmFjZSxcbiAgICAgIGhhZFJ1bnRpbWVFcnJvcjogISFSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvcixcbiAgICAgIGRlcGVuZGVuY3lDaGFpbjogZXJyID8gZXJyLmRlcGVuZGVuY3lDaGFpbiA6IHVuZGVmaW5lZCxcbiAgICB9KVxuICApXG5cbiAgaWYgKHJlbG9hZGluZykgcmV0dXJuXG4gIHJlbG9hZGluZyA9IHRydWVcbiAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpXG59XG5cbi8vIEF0dGVtcHQgdG8gdXBkYXRlIGNvZGUgb24gdGhlIGZseSwgZmFsbCBiYWNrIHRvIGEgaGFyZCByZWxvYWQuXG5mdW5jdGlvbiB0cnlBcHBseVVwZGF0ZXNXZWJwYWNrKHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKSB7XG4gIGlmICghaXNVcGRhdGVBdmFpbGFibGUoKSB8fCAhY2FuQXBwbHlVcGRhdGVzKCkpIHtcbiAgICByZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2soKVxuICAgIGRpc3BhdGNoZXIub25CdWlsZE9rKClcbiAgICByZXBvcnRIbXJMYXRlbmN5KHNlbmRNZXNzYWdlLCBbXSwgd2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoISwgRGF0ZS5ub3coKSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUFwcGx5VXBkYXRlcyhcbiAgICBlcnI6IGFueSxcbiAgICB1cGRhdGVkTW9kdWxlczogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGxcbiAgKSB7XG4gICAgaWYgKGVyciB8fCBSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvciB8fCB1cGRhdGVkTW9kdWxlcyA9PSBudWxsKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEKVxuICAgICAgfSBlbHNlIGlmIChSdW50aW1lRXJyb3JIYW5kbGVyLmhhZFJ1bnRpbWVFcnJvcikge1xuICAgICAgICBjb25zb2xlLndhcm4oUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRF9GUk9NX0VSUk9SKVxuICAgICAgfVxuICAgICAgcGVyZm9ybUZ1bGxSZWxvYWQoZXJyLCBzZW5kTWVzc2FnZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGRpc3BhdGNoZXIub25CdWlsZE9rKClcblxuICAgIGlmIChpc1VwZGF0ZUF2YWlsYWJsZSgpKSB7XG4gICAgICAvLyBXaGlsZSB3ZSB3ZXJlIHVwZGF0aW5nLCB0aGVyZSB3YXMgYSBuZXcgdXBkYXRlISBEbyBpdCBhZ2Fpbi5cbiAgICAgIHRyeUFwcGx5VXBkYXRlc1dlYnBhY2soc2VuZE1lc3NhZ2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBkaXNwYXRjaGVyLm9uUmVmcmVzaCgpXG4gICAgcmVzb2x2ZVBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrKClcbiAgICByZXBvcnRIbXJMYXRlbmN5KFxuICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICB1cGRhdGVkTW9kdWxlcyxcbiAgICAgIHdlYnBhY2tTdGFydE1zU2luY2VFcG9jaCEsXG4gICAgICBEYXRlLm5vdygpXG4gICAgKVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgIGFmdGVyQXBwbHlVcGRhdGVzKCgpID0+IHtcbiAgICAgICAgaWYgKHNlbGYuX19ORVhUX0hNUl9DQikge1xuICAgICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQigpXG4gICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvYXBpL2hvdC1tb2R1bGUtcmVwbGFjZW1lbnQvI2NoZWNrXG4gIG1vZHVsZS5ob3RcbiAgICAuY2hlY2soLyogYXV0b0FwcGx5ICovIGZhbHNlKVxuICAgIC50aGVuKCh1cGRhdGVkTW9kdWxlczogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwpID0+IHtcbiAgICAgIGlmICh1cGRhdGVkTW9kdWxlcyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG5cbiAgICAgIC8vIFdlIHNob3VsZCBhbHdheXMgaGFuZGxlIGFuIHVwZGF0ZSwgZXZlbiBpZiB1cGRhdGVkTW9kdWxlcyBpcyBlbXB0eSAoYnV0XG4gICAgICAvLyBub24tbnVsbCkgZm9yIGFueSByZWFzb24uIFRoYXQncyB3aGF0IHdlYnBhY2sgd291bGQgbm9ybWFsbHkgZG86XG4gICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2VicGFjay93ZWJwYWNrL2Jsb2IvM2FhNmI2YmMzYTY0L2xpYi9obXIvSG90TW9kdWxlUmVwbGFjZW1lbnQucnVudGltZS5qcyNMMjk2LUwyOThcbiAgICAgIGRpc3BhdGNoZXIub25CZWZvcmVSZWZyZXNoKClcbiAgICAgIC8vIGh0dHBzOi8vd2VicGFjay5qcy5vcmcvYXBpL2hvdC1tb2R1bGUtcmVwbGFjZW1lbnQvI2FwcGx5XG4gICAgICByZXR1cm4gbW9kdWxlLmhvdC5hcHBseSgpXG4gICAgfSlcbiAgICAudGhlbihcbiAgICAgICh1cGRhdGVkTW9kdWxlczogKHN0cmluZyB8IG51bWJlcilbXSB8IG51bGwpID0+IHtcbiAgICAgICAgaGFuZGxlQXBwbHlVcGRhdGVzKG51bGwsIHVwZGF0ZWRNb2R1bGVzKVxuICAgICAgfSxcbiAgICAgIChlcnI6IGFueSkgPT4ge1xuICAgICAgICBoYW5kbGVBcHBseVVwZGF0ZXMoZXJyLCBudWxsKVxuICAgICAgfVxuICAgIClcbn1cblxuLyoqIEhhbmRsZXMgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyIGZvciB0aGUgQXBwIFJvdXRlci4gKi9cbmZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlKFxuICBvYmo6IEhNUl9BQ1RJT05fVFlQRVMsXG4gIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkLFxuICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZTogKG1zZzogVHVyYm9wYWNrTXNnVG9Ccm93c2VyKSA9PiB2b2lkLFxuICByb3V0ZXI6IFJldHVyblR5cGU8dHlwZW9mIHVzZVJvdXRlcj4sXG4gIGFwcElzck1hbmlmZXN0UmVmOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VSZWY+LFxuICBwYXRobmFtZVJlZjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlUmVmPlxuKSB7XG4gIGlmICghKCdhY3Rpb24nIGluIG9iaikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUVycm9ycyhlcnJvcnM6IFJlYWRvbmx5QXJyYXk8dW5rbm93bj4pIHtcbiAgICAvLyBcIk1hc3NhZ2VcIiB3ZWJwYWNrIG1lc3NhZ2VzLlxuICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdFdlYnBhY2tNZXNzYWdlcyh7XG4gICAgICBlcnJvcnM6IGVycm9ycyxcbiAgICAgIHdhcm5pbmdzOiBbXSxcbiAgICB9KVxuXG4gICAgLy8gT25seSBzaG93IHRoZSBmaXJzdCBlcnJvci5cbiAgICBkaXNwYXRjaGVyLm9uQnVpbGRFcnJvcihmb3JtYXR0ZWQuZXJyb3JzWzBdKVxuXG4gICAgLy8gQWxzbyBsb2cgdGhlbSB0byB0aGUgY29uc29sZS5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZC5lcnJvcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnNvbGUuZXJyb3Ioc3RyaXBBbnNpKGZvcm1hdHRlZC5lcnJvcnNbaV0pKVxuICAgIH1cblxuICAgIC8vIERvIG5vdCBhdHRlbXB0IHRvIHJlbG9hZCBub3cuXG4gICAgLy8gV2Ugd2lsbCByZWxvYWQgb24gbmV4dCBzdWNjZXNzIGluc3RlYWQuXG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUpIHtcbiAgICAgIGlmIChzZWxmLl9fTkVYVF9ITVJfQ0IpIHtcbiAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKGZvcm1hdHRlZC5lcnJvcnNbMF0pXG4gICAgICAgIHNlbGYuX19ORVhUX0hNUl9DQiA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVIb3RVcGRhdGUoKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgY29uc3QgaG1yVXBkYXRlID0gdHVyYm9wYWNrSG1yIS5vbkJ1aWx0KClcbiAgICAgIGlmIChobXJVcGRhdGUgIT0gbnVsbCkge1xuICAgICAgICByZXBvcnRIbXJMYXRlbmN5KFxuICAgICAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgICAgIFsuLi5obXJVcGRhdGUudXBkYXRlZE1vZHVsZXNdLFxuICAgICAgICAgIGhtclVwZGF0ZS5zdGFydE1zU2luY2VFcG9jaCxcbiAgICAgICAgICBobXJVcGRhdGUuZW5kTXNTaW5jZUVwb2NoLFxuICAgICAgICAgIC8vIHN1cHByZXNzIHRoZSBgY2xpZW50LWhtci1sYXRlbmN5YCBldmVudCBpZiB0aGUgdXBkYXRlIHdhcyBhIG5vLW9wOlxuICAgICAgICAgIGhtclVwZGF0ZS5oYXNVcGRhdGVzXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGRpc3BhdGNoZXIub25CdWlsZE9rKClcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5QXBwbHlVcGRhdGVzV2VicGFjayhzZW5kTWVzc2FnZSlcbiAgICB9XG4gIH1cblxuICBzd2l0Y2ggKG9iai5hY3Rpb24pIHtcbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5JU1JfTUFOSUZFU1Q6IHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5fX05FWFRfREVWX0lORElDQVRPUikge1xuICAgICAgICBpZiAoYXBwSXNyTWFuaWZlc3RSZWYpIHtcbiAgICAgICAgICBhcHBJc3JNYW5pZmVzdFJlZi5jdXJyZW50ID0gb2JqLmRhdGFcblxuICAgICAgICAgIC8vIGhhbmRsZSBpbml0aWFsIHN0YXR1cyBvbiByZWNlaXZpbmcgbWFuaWZlc3RcbiAgICAgICAgICAvLyBuYXZpZ2F0aW9uIGlzIGhhbmRsZWQgaW4gdXNlRWZmZWN0IGZvciBwYXRobmFtZSBjaGFuZ2VzXG4gICAgICAgICAgLy8gYXMgd2UnbGwgcmVjZWl2ZSB0aGUgdXBkYXRlZCBtYW5pZmVzdCBiZWZvcmUgdXNlUGF0aG5hbWVcbiAgICAgICAgICAvLyB0cmlnZ2VycyBmb3IgbmV3IHZhbHVlXG4gICAgICAgICAgaWYgKChwYXRobmFtZVJlZi5jdXJyZW50IGFzIHN0cmluZykgaW4gb2JqLmRhdGEpIHtcbiAgICAgICAgICAgIGRpc3BhdGNoZXIub25TdGF0aWNJbmRpY2F0b3IodHJ1ZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGlzcGF0Y2hlci5vblN0YXRpY0luZGljYXRvcihmYWxzZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkJVSUxESU5HOiB7XG4gICAgICBkaXNwYXRjaGVyLmJ1aWxkaW5nSW5kaWNhdG9yU2hvdygpXG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5UVVJCT1BBQ0spIHtcbiAgICAgICAgdHVyYm9wYWNrSG1yIS5vbkJ1aWxkaW5nKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHdlYnBhY2tTdGFydE1zU2luY2VFcG9jaCA9IERhdGUubm93KClcbiAgICAgICAgc2V0UGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2soKVxuICAgICAgICBjb25zb2xlLmxvZygnW0Zhc3QgUmVmcmVzaF0gcmVidWlsZGluZycpXG4gICAgICB9XG4gICAgICBicmVha1xuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5CVUlMVDpcbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5TWU5DOiB7XG4gICAgICBkaXNwYXRjaGVyLmJ1aWxkaW5nSW5kaWNhdG9ySGlkZSgpXG5cbiAgICAgIGlmIChvYmouaGFzaCkge1xuICAgICAgICBoYW5kbGVBdmFpbGFibGVIYXNoKG9iai5oYXNoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGVycm9ycywgd2FybmluZ3MgfSA9IG9ialxuXG4gICAgICAvLyBJcyB1bmRlZmluZWQgd2hlbiBpdCdzIGEgJ2J1aWx0JyBldmVudFxuICAgICAgaWYgKCd2ZXJzaW9uSW5mbycgaW4gb2JqKSBkaXNwYXRjaGVyLm9uVmVyc2lvbkluZm8ob2JqLnZlcnNpb25JbmZvKVxuICAgICAgaWYgKCdkZWJ1ZycgaW4gb2JqICYmIG9iai5kZWJ1ZykgZGlzcGF0Y2hlci5vbkRlYnVnSW5mbyhvYmouZGVidWcpXG4gICAgICBpZiAoJ2RldkluZGljYXRvcicgaW4gb2JqKSBkaXNwYXRjaGVyLm9uRGV2SW5kaWNhdG9yKG9iai5kZXZJbmRpY2F0b3IpXG4gICAgICBpZiAoJ2RldlRvb2xzQ29uZmlnJyBpbiBvYmopXG4gICAgICAgIGRpc3BhdGNoZXIub25EZXZUb29sc0NvbmZpZyhvYmouZGV2VG9vbHNDb25maWcpXG5cbiAgICAgIGNvbnN0IGhhc0Vycm9ycyA9IEJvb2xlYW4oZXJyb3JzICYmIGVycm9ycy5sZW5ndGgpXG4gICAgICAvLyBDb21waWxhdGlvbiB3aXRoIGVycm9ycyAoZS5nLiBzeW50YXggZXJyb3Igb3IgbWlzc2luZyBtb2R1bGVzKS5cbiAgICAgIGlmIChoYXNFcnJvcnMpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZXZlbnQ6ICdjbGllbnQtZXJyb3InLFxuICAgICAgICAgICAgZXJyb3JDb3VudDogZXJyb3JzLmxlbmd0aCxcbiAgICAgICAgICAgIGNsaWVudElkOiBfX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICB9KVxuICAgICAgICApXG5cbiAgICAgICAgaGFuZGxlRXJyb3JzKGVycm9ycylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGhhc1dhcm5pbmdzID0gQm9vbGVhbih3YXJuaW5ncyAmJiB3YXJuaW5ncy5sZW5ndGgpXG4gICAgICBpZiAoaGFzV2FybmluZ3MpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZXZlbnQ6ICdjbGllbnQtd2FybmluZycsXG4gICAgICAgICAgICB3YXJuaW5nQ291bnQ6IHdhcm5pbmdzLmxlbmd0aCxcbiAgICAgICAgICAgIGNsaWVudElkOiBfX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICB9KVxuICAgICAgICApXG5cbiAgICAgICAgLy8gUHJpbnQgd2FybmluZ3MgdG8gdGhlIGNvbnNvbGUuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZE1lc3NhZ2VzID0gZm9ybWF0V2VicGFja01lc3NhZ2VzKHtcbiAgICAgICAgICB3YXJuaW5nczogd2FybmluZ3MsXG4gICAgICAgICAgZXJyb3JzOiBbXSxcbiAgICAgICAgfSlcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZvcm1hdHRlZE1lc3NhZ2VzLndhcm5pbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPT09IDUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgJ1RoZXJlIHdlcmUgbW9yZSB3YXJuaW5ncyBpbiBvdGhlciBmaWxlcy5cXG4nICtcbiAgICAgICAgICAgICAgICAnWW91IGNhbiBmaW5kIGEgY29tcGxldGUgbG9nIGluIHRoZSB0ZXJtaW5hbC4nXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLndhcm4oc3RyaXBBbnNpKGZvcm1hdHRlZE1lc3NhZ2VzLndhcm5pbmdzW2ldKSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE5vIGVhcmx5IHJldHVybiBoZXJlIGFzIHdlIG5lZWQgdG8gYXBwbHkgbW9kdWxlcyBpbiB0aGUgc2FtZSB3YXkgYmV0d2VlbiB3YXJuaW5ncyBvbmx5IGFuZCBjb21waWxlcyB3aXRob3V0IHdhcm5pbmdzXG4gICAgICB9XG5cbiAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnQ6ICdjbGllbnQtc3VjY2VzcycsXG4gICAgICAgICAgY2xpZW50SWQ6IF9fbmV4dERldkNsaWVudElkLFxuICAgICAgICB9KVxuICAgICAgKVxuXG4gICAgICBpZiAob2JqLmFjdGlvbiA9PT0gSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLkJVSUxUKSB7XG4gICAgICAgIGhhbmRsZUhvdFVwZGF0ZSgpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuVFVSQk9QQUNLX0NPTk5FQ1RFRDoge1xuICAgICAgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2Uoe1xuICAgICAgICB0eXBlOiBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuVFVSQk9QQUNLX0NPTk5FQ1RFRCxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHNlc3Npb25JZDogb2JqLmRhdGEuc2Vzc2lvbklkLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlRVUkJPUEFDS19NRVNTQUdFOiB7XG4gICAgICB0dXJib3BhY2tIbXIhLm9uVHVyYm9wYWNrTWVzc2FnZShvYmopXG4gICAgICBkaXNwYXRjaGVyLm9uQmVmb3JlUmVmcmVzaCgpXG4gICAgICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSh7XG4gICAgICAgIHR5cGU6IEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5UVVJCT1BBQ0tfTUVTU0FHRSxcbiAgICAgICAgZGF0YTogb2JqLmRhdGEsXG4gICAgICB9KVxuICAgICAgaWYgKFJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IpXG4gICAgICAgIHBlcmZvcm1GdWxsUmVsb2FkKG51bGwsIHNlbmRNZXNzYWdlKVxuICAgICAgfVxuICAgICAgZGlzcGF0Y2hlci5vblJlZnJlc2goKVxuICAgICAgYnJlYWtcbiAgICB9XG4gICAgLy8gVE9ETy1BUFA6IG1ha2Ugc2VydmVyIGNvbXBvbmVudCBjaGFuZ2UgbW9yZSBncmFudWxhclxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNFUlZFUl9DT01QT05FTlRfQ0hBTkdFUzoge1xuICAgICAgdHVyYm9wYWNrSG1yPy5vblNlcnZlckNvbXBvbmVudENoYW5nZXMoKVxuICAgICAgc2VuZE1lc3NhZ2UoXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudDogJ3NlcnZlci1jb21wb25lbnQtcmVsb2FkLXBhZ2UnLFxuICAgICAgICAgIGNsaWVudElkOiBfX25leHREZXZDbGllbnRJZCxcbiAgICAgICAgICBoYXNoOiBvYmouaGFzaCxcbiAgICAgICAgfSlcbiAgICAgIClcblxuICAgICAgLy8gU3RvcmUgdGhlIGxhdGVzdCBoYXNoIGluIGEgc2Vzc2lvbiBjb29raWUgc28gdGhhdCBpdCdzIHNlbnQgYmFjayB0byB0aGVcbiAgICAgIC8vIHNlcnZlciB3aXRoIGFueSBzdWJzZXF1ZW50IHJlcXVlc3RzLlxuICAgICAgZG9jdW1lbnQuY29va2llID0gYCR7TkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRX09JHtvYmouaGFzaH07cGF0aD0vYFxuXG4gICAgICBpZiAoXG4gICAgICAgIFJ1bnRpbWVFcnJvckhhbmRsZXIuaGFkUnVudGltZUVycm9yIHx8XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pZCA9PT0gJ19fbmV4dF9lcnJvcl9fJ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChyZWxvYWRpbmcpIHJldHVyblxuICAgICAgICByZWxvYWRpbmcgPSB0cnVlXG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICAgIH1cblxuICAgICAgc3RhcnRUcmFuc2l0aW9uKCgpID0+IHtcbiAgICAgICAgcm91dGVyLmhtclJlZnJlc2goKVxuICAgICAgICBkaXNwYXRjaGVyLm9uUmVmcmVzaCgpXG4gICAgICB9KVxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgICBpZiAoc2VsZi5fX05FWFRfSE1SX0NCKSB7XG4gICAgICAgICAgc2VsZi5fX05FWFRfSE1SX0NCKClcbiAgICAgICAgICBzZWxmLl9fTkVYVF9ITVJfQ0IgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlJFTE9BRF9QQUdFOiB7XG4gICAgICB0dXJib3BhY2tIbXI/Lm9uUmVsb2FkUGFnZSgpXG4gICAgICBzZW5kTWVzc2FnZShcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGV2ZW50OiAnY2xpZW50LXJlbG9hZC1wYWdlJyxcbiAgICAgICAgICBjbGllbnRJZDogX19uZXh0RGV2Q2xpZW50SWQsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICBpZiAocmVsb2FkaW5nKSByZXR1cm5cbiAgICAgIHJlbG9hZGluZyA9IHRydWVcbiAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKClcbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuQURERURfUEFHRTpcbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5SRU1PVkVEX1BBR0U6IHtcbiAgICAgIHR1cmJvcGFja0htcj8ub25QYWdlQWRkUmVtb3ZlKClcbiAgICAgIC8vIFRPRE8tQVBQOiBwb3RlbnRpYWxseSBvbmx5IHJlZnJlc2ggaWYgdGhlIGN1cnJlbnRseSB2aWV3ZWQgcGFnZSB3YXMgYWRkZWQvcmVtb3ZlZC5cbiAgICAgIHJldHVybiByb3V0ZXIuaG1yUmVmcmVzaCgpXG4gICAgfVxuICAgIGNhc2UgSE1SX0FDVElPTlNfU0VOVF9UT19CUk9XU0VSLlNFUlZFUl9FUlJPUjoge1xuICAgICAgY29uc3QgeyBlcnJvckpTT04gfSA9IG9ialxuICAgICAgaWYgKGVycm9ySlNPTikge1xuICAgICAgICBjb25zdCB7IG1lc3NhZ2UsIHN0YWNrIH0gPSBKU09OLnBhcnNlKGVycm9ySlNPTilcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSlcbiAgICAgICAgZXJyb3Iuc3RhY2sgPSBzdGFja1xuICAgICAgICBoYW5kbGVFcnJvcnMoW2Vycm9yXSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYXNlIEhNUl9BQ1RJT05TX1NFTlRfVE9fQlJPV1NFUi5ERVZfUEFHRVNfTUFOSUZFU1RfVVBEQVRFOiB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FzZSBITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIuREVWVE9PTFNfQ09ORklHOiB7XG4gICAgICBkaXNwYXRjaGVyLm9uRGV2VG9vbHNDb25maWcob2JqLmRhdGEpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgb2JqIHNhdGlzZmllcyBuZXZlclxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBIb3RSZWxvYWQoe1xuICBhc3NldFByZWZpeCxcbiAgY2hpbGRyZW4sXG4gIGdsb2JhbEVycm9yLFxufToge1xuICBhc3NldFByZWZpeDogc3RyaW5nXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZ2xvYmFsRXJyb3I6IEdsb2JhbEVycm9yU3RhdGVcbn0pIHtcbiAgdXNlRXJyb3JIYW5kbGVyKGRpc3BhdGNoZXIub25VbmhhbmRsZWRFcnJvciwgZGlzcGF0Y2hlci5vblVuaGFuZGxlZFJlamVjdGlvbilcblxuICBjb25zdCB3ZWJTb2NrZXRSZWYgPSB1c2VXZWJzb2NrZXQoYXNzZXRQcmVmaXgpXG5cbiAgdXNlV2Vic29ja2V0UGluZyh3ZWJTb2NrZXRSZWYpXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlU2VuZE1lc3NhZ2Uod2ViU29ja2V0UmVmKVxuICB1c2VGb3J3YXJkQ29uc29sZUxvZyh3ZWJTb2NrZXRSZWYpXG4gIGNvbnN0IHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlID0gdXNlVHVyYm9wYWNrKHNlbmRNZXNzYWdlLCAoZXJyKSA9PlxuICAgIHBlcmZvcm1GdWxsUmVsb2FkKGVyciwgc2VuZE1lc3NhZ2UpXG4gIClcblxuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKVxuXG4gIC8vIFdlIGRvbid0IHdhbnQgYWNjZXNzIG9mIHRoZSBwYXRobmFtZSBmb3IgdGhlIGRldiB0b29scyB0byB0cmlnZ2VyIGEgZHluYW1pY1xuICAvLyBhY2Nlc3MgKGFzIHRoZSBkZXYgb3ZlcmxheSB3aWxsIG5ldmVyIGJlIHByZXNlbnQgaW4gcHJvZHVjdGlvbikuXG4gIGNvbnN0IHBhdGhuYW1lID0gdXNlVW50cmFja2VkUGF0aG5hbWUoKVxuICBjb25zdCBhcHBJc3JNYW5pZmVzdFJlZiA9IHVzZVJlZjxSZWNvcmQ8c3RyaW5nLCBmYWxzZSB8IG51bWJlcj4+KHt9KVxuICBjb25zdCBwYXRobmFtZVJlZiA9IHVzZVJlZihwYXRobmFtZSlcblxuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0RFVl9JTkRJQ0FUT1IpIHtcbiAgICAvLyB0aGlzIGNvbmRpdGlvbmFsIGlzIG9ubHkgZm9yIGRlYWQtY29kZSBlbGltaW5hdGlvbiB3aGljaFxuICAgIC8vIGlzbid0IGEgcnVudGltZSBjb25kaXRpb25hbCBvbmx5IGJ1aWxkLXRpbWUgc28gaWdub3JlIGhvb2tzIHJ1bGVcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgcGF0aG5hbWVSZWYuY3VycmVudCA9IHBhdGhuYW1lXG5cbiAgICAgIGNvbnN0IGFwcElzck1hbmlmZXN0ID0gYXBwSXNyTWFuaWZlc3RSZWYuY3VycmVudFxuXG4gICAgICBpZiAoYXBwSXNyTWFuaWZlc3QpIHtcbiAgICAgICAgaWYgKHBhdGhuYW1lICYmIHBhdGhuYW1lIGluIGFwcElzck1hbmlmZXN0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGRpc3BhdGNoZXIub25TdGF0aWNJbmRpY2F0b3IodHJ1ZSlcbiAgICAgICAgICB9IGNhdGNoIChyZWFzb24pIHtcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gJydcblxuICAgICAgICAgICAgaWYgKHJlYXNvbiBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbikge1xuICAgICAgICAgICAgICAvLyBNb3N0IGxpa2VseSBhIFNlY3VyaXR5RXJyb3IsIGJlY2F1c2Ugb2YgYW4gdW5hdmFpbGFibGUgbG9jYWxTdG9yYWdlXG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSByZWFzb24uc3RhY2sgPz8gcmVhc29uLm1lc3NhZ2VcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVhc29uIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgbWVzc2FnZSA9ICdFcnJvcjogJyArIHJlYXNvbi5tZXNzYWdlICsgJ1xcbicgKyAocmVhc29uLnN0YWNrID8/ICcnKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWVzc2FnZSA9ICdVbmV4cGVjdGVkIEV4Y2VwdGlvbjogJyArIHJlYXNvblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tITVJdICcgKyBtZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkaXNwYXRjaGVyLm9uU3RhdGljSW5kaWNhdG9yKGZhbHNlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW3BhdGhuYW1lXSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgd2Vic29ja2V0ID0gd2ViU29ja2V0UmVmLmN1cnJlbnRcbiAgICBpZiAoIXdlYnNvY2tldCkgcmV0dXJuXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQ8YW55PikgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb2JqID0gSlNPTi5wYXJzZShldmVudC5kYXRhKVxuICAgICAgICBwcm9jZXNzTWVzc2FnZShcbiAgICAgICAgICBvYmosXG4gICAgICAgICAgc2VuZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvY2Vzc1R1cmJvcGFja01lc3NhZ2UsXG4gICAgICAgICAgcm91dGVyLFxuICAgICAgICAgIGFwcElzck1hbmlmZXN0UmVmLFxuICAgICAgICAgIHBhdGhuYW1lUmVmXG4gICAgICAgIClcbiAgICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgICByZXBvcnRJbnZhbGlkSG1yTWVzc2FnZShldmVudCwgZXJyKVxuICAgICAgfVxuICAgIH1cblxuICAgIHdlYnNvY2tldC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgaGFuZGxlcilcbiAgICByZXR1cm4gKCkgPT4gd2Vic29ja2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBoYW5kbGVyKVxuICB9LCBbXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgcm91dGVyLFxuICAgIHdlYlNvY2tldFJlZixcbiAgICBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSxcbiAgICBhcHBJc3JNYW5pZmVzdFJlZixcbiAgXSlcbiAgcmV0dXJuIChcbiAgICA8QXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkgZ2xvYmFsRXJyb3I9e2dsb2JhbEVycm9yfT5cbiAgICAgIDxSZXBsYXlTc3JPbmx5RXJyb3JzIG9uQmxvY2tpbmdFcnJvcj17ZGlzcGF0Y2hlci5vcGVuRXJyb3JPdmVybGF5fSAvPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnk+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJIb3RSZWxvYWQiLCJ3YWl0Rm9yV2VicGFja1J1bnRpbWVIb3RVcGRhdGUiLCJtb3N0UmVjZW50Q29tcGlsYXRpb25IYXNoIiwiX19uZXh0RGV2Q2xpZW50SWQiLCJNYXRoIiwicm91bmQiLCJyYW5kb20iLCJEYXRlIiwibm93IiwicmVsb2FkaW5nIiwid2VicGFja1N0YXJ0TXNTaW5jZUVwb2NoIiwidHVyYm9wYWNrSG1yIiwicHJvY2VzcyIsImVudiIsIlRVUkJPUEFDSyIsIlR1cmJvcGFja0htciIsInBlbmRpbmdIb3RVcGRhdGVXZWJwYWNrIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXNvbHZlUGVuZGluZ0hvdFVwZGF0ZVdlYnBhY2siLCJzZXRQZW5kaW5nSG90VXBkYXRlV2VicGFjayIsImhhbmRsZUF2YWlsYWJsZUhhc2giLCJoYXNoIiwiaXNVcGRhdGVBdmFpbGFibGUiLCJfX3dlYnBhY2tfaGFzaF9fIiwiY2FuQXBwbHlVcGRhdGVzIiwibW9kdWxlIiwiaG90Iiwic3RhdHVzIiwiYWZ0ZXJBcHBseVVwZGF0ZXMiLCJmbiIsImhhbmRsZXIiLCJyZW1vdmVTdGF0dXNIYW5kbGVyIiwiYWRkU3RhdHVzSGFuZGxlciIsInBlcmZvcm1GdWxsUmVsb2FkIiwiZXJyIiwic2VuZE1lc3NhZ2UiLCJzdGFja1RyYWNlIiwic3RhY2siLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIm1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlbnQiLCJoYWRSdW50aW1lRXJyb3IiLCJSdW50aW1lRXJyb3JIYW5kbGVyIiwiZGVwZW5kZW5jeUNoYWluIiwidW5kZWZpbmVkIiwid2luZG93IiwibG9jYXRpb24iLCJyZWxvYWQiLCJ0cnlBcHBseVVwZGF0ZXNXZWJwYWNrIiwiZGlzcGF0Y2hlciIsIm9uQnVpbGRPayIsInJlcG9ydEhtckxhdGVuY3kiLCJoYW5kbGVBcHBseVVwZGF0ZXMiLCJ1cGRhdGVkTW9kdWxlcyIsImNvbnNvbGUiLCJ3YXJuIiwiUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRCIsIlJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQURfRlJPTV9FUlJPUiIsIm9uUmVmcmVzaCIsIl9fTkVYVF9URVNUX01PREUiLCJzZWxmIiwiX19ORVhUX0hNUl9DQiIsImNoZWNrIiwidGhlbiIsIm9uQmVmb3JlUmVmcmVzaCIsImFwcGx5IiwicHJvY2Vzc01lc3NhZ2UiLCJvYmoiLCJwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZSIsInJvdXRlciIsImFwcElzck1hbmlmZXN0UmVmIiwicGF0aG5hbWVSZWYiLCJoYW5kbGVFcnJvcnMiLCJlcnJvcnMiLCJmb3JtYXR0ZWQiLCJmb3JtYXRXZWJwYWNrTWVzc2FnZXMiLCJ3YXJuaW5ncyIsIm9uQnVpbGRFcnJvciIsImkiLCJsZW5ndGgiLCJlcnJvciIsInN0cmlwQW5zaSIsImhhbmRsZUhvdFVwZGF0ZSIsImhtclVwZGF0ZSIsIm9uQnVpbHQiLCJzdGFydE1zU2luY2VFcG9jaCIsImVuZE1zU2luY2VFcG9jaCIsImhhc1VwZGF0ZXMiLCJhY3Rpb24iLCJITVJfQUNUSU9OU19TRU5UX1RPX0JST1dTRVIiLCJJU1JfTUFOSUZFU1QiLCJfX05FWFRfREVWX0lORElDQVRPUiIsImN1cnJlbnQiLCJkYXRhIiwib25TdGF0aWNJbmRpY2F0b3IiLCJCVUlMRElORyIsImJ1aWxkaW5nSW5kaWNhdG9yU2hvdyIsIm9uQnVpbGRpbmciLCJsb2ciLCJCVUlMVCIsIlNZTkMiLCJidWlsZGluZ0luZGljYXRvckhpZGUiLCJvblZlcnNpb25JbmZvIiwidmVyc2lvbkluZm8iLCJkZWJ1ZyIsIm9uRGVidWdJbmZvIiwib25EZXZJbmRpY2F0b3IiLCJkZXZJbmRpY2F0b3IiLCJvbkRldlRvb2xzQ29uZmlnIiwiZGV2VG9vbHNDb25maWciLCJoYXNFcnJvcnMiLCJCb29sZWFuIiwiZXJyb3JDb3VudCIsImNsaWVudElkIiwiaGFzV2FybmluZ3MiLCJ3YXJuaW5nQ291bnQiLCJmb3JtYXR0ZWRNZXNzYWdlcyIsIlRVUkJPUEFDS19DT05ORUNURUQiLCJ0eXBlIiwic2Vzc2lvbklkIiwiVFVSQk9QQUNLX01FU1NBR0UiLCJvblR1cmJvcGFja01lc3NhZ2UiLCJTRVJWRVJfQ09NUE9ORU5UX0NIQU5HRVMiLCJvblNlcnZlckNvbXBvbmVudENoYW5nZXMiLCJkb2N1bWVudCIsImNvb2tpZSIsIk5FWFRfSE1SX1JFRlJFU0hfSEFTSF9DT09LSUUiLCJkb2N1bWVudEVsZW1lbnQiLCJpZCIsInN0YXJ0VHJhbnNpdGlvbiIsImhtclJlZnJlc2giLCJSRUxPQURfUEFHRSIsIm9uUmVsb2FkUGFnZSIsIkFEREVEX1BBR0UiLCJSRU1PVkVEX1BBR0UiLCJvblBhZ2VBZGRSZW1vdmUiLCJTRVJWRVJfRVJST1IiLCJlcnJvckpTT04iLCJwYXJzZSIsIkVycm9yIiwiREVWX1BBR0VTX01BTklGRVNUX1VQREFURSIsIkRFVlRPT0xTX0NPTkZJRyIsImFzc2V0UHJlZml4IiwiY2hpbGRyZW4iLCJnbG9iYWxFcnJvciIsInVzZUVycm9ySGFuZGxlciIsIm9uVW5oYW5kbGVkRXJyb3IiLCJvblVuaGFuZGxlZFJlamVjdGlvbiIsIndlYlNvY2tldFJlZiIsInVzZVdlYnNvY2tldCIsInVzZVdlYnNvY2tldFBpbmciLCJ1c2VTZW5kTWVzc2FnZSIsInVzZUZvcndhcmRDb25zb2xlTG9nIiwidXNlVHVyYm9wYWNrIiwidXNlUm91dGVyIiwicGF0aG5hbWUiLCJ1c2VVbnRyYWNrZWRQYXRobmFtZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsImFwcElzck1hbmlmZXN0IiwicmVhc29uIiwiRE9NRXhjZXB0aW9uIiwid2Vic29ja2V0IiwicmVwb3J0SW52YWxpZEhtck1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIkFwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5IiwiUmVwbGF5U3NyT25seUVycm9ycyIsIm9uQmxvY2tpbmdFcnJvciIsIm9wZW5FcnJvck92ZXJsYXkiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js": /*!********************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js ***! \********************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_wildcard.js\");\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 useSendMessage: function() {\n return useSendMessage;\n },\n useTurbopack: function() {\n return useTurbopack;\n },\n useWebsocket: function() {\n return useWebsocket;\n },\n useWebsocketPing: function() {\n return useWebsocketPing;\n }\n});\nconst _react = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react/index.js\");\nconst _approutercontextsharedruntime = __webpack_require__(/*! ../../../../shared/lib/app-router-context.shared-runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js\");\nconst _getsocketurl = __webpack_require__(/*! ../get-socket-url */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\");\nfunction useWebsocket(assetPrefix) {\n const webSocketRef = (0, _react.useRef)(undefined);\n (0, _react.useEffect)(()=>{\n if (webSocketRef.current) {\n return;\n }\n const url = (0, _getsocketurl.getSocketUrl)(assetPrefix);\n webSocketRef.current = new window.WebSocket(\"\" + url + \"/_next/webpack-hmr\");\n }, [\n assetPrefix\n ]);\n return webSocketRef;\n}\nfunction useSendMessage(webSocketRef) {\n const sendMessage = (0, _react.useCallback)((data)=>{\n const socket = webSocketRef.current;\n if (!socket || socket.readyState !== socket.OPEN) {\n return;\n }\n return socket.send(data);\n }, [\n webSocketRef\n ]);\n return sendMessage;\n}\nfunction useTurbopack(sendMessage, onUpdateError) {\n const turbopackState = (0, _react.useRef)({\n init: false,\n // Until the dynamic import resolves, queue any turbopack messages which will be replayed.\n queue: [],\n callback: undefined\n });\n const processTurbopackMessage = (0, _react.useCallback)((msg)=>{\n const { callback, queue } = turbopackState.current;\n if (callback) {\n callback(msg);\n } else {\n queue.push(msg);\n }\n }, []);\n (0, _react.useEffect)(()=>{\n const { current: initCurrent } = turbopackState;\n // TODO(WEB-1589): only install if `process.turbopack` set.\n if (initCurrent.init) {\n return;\n }\n initCurrent.init = true;\n Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! @vercel/turbopack-ecmascript-runtime/browser/dev/hmr-client/hmr-client.ts */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/noop-turbopack-hmr.js\"))).then((param)=>{\n let { connect } = param;\n const { current } = turbopackState;\n connect({\n addMessageListener (cb) {\n current.callback = cb;\n // Replay all Turbopack messages before we were able to establish the HMR client.\n for (const msg of current.queue){\n cb(msg);\n }\n current.queue = undefined;\n },\n sendMessage,\n onUpdateError\n });\n });\n }, [\n sendMessage,\n onUpdateError\n ]);\n return processTurbopackMessage;\n}\nfunction useWebsocketPing(websocketRef) {\n _s();\n const sendMessage = useSendMessage(websocketRef);\n const { tree } = (0, _react.useContext)(_approutercontextsharedruntime.GlobalLayoutRouterContext);\n (0, _react.useEffect)(()=>{\n // Never send pings when using Turbopack as it's not used.\n // Pings were originally used to keep track of active routes in on-demand-entries with webpack.\n if (false) {}\n // Taken from on-demand-entries-client.js\n const interval = setInterval(()=>{\n sendMessage(JSON.stringify({\n event: 'ping',\n tree,\n appDirRoute: true\n }));\n }, 2500);\n return ()=>clearInterval(interval);\n }, [\n tree,\n sendMessage\n ]);\n}\n_s(useWebsocketPing, \"wUse5NG7XMV1uhKK1kY0LLDje8k=\", false, function() {\n return [\n useSendMessage\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=use-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvYXBwL3VzZS13ZWJzb2NrZXQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBcUJnQkEsY0FBYztlQUFkQTs7SUFjQUMsWUFBWTtlQUFaQTs7SUE5QkFDLFlBQVk7ZUFBWkE7O0lBc0ZBQyxnQkFBZ0I7ZUFBaEJBOzs7bUNBM0YyQzsyREFDakI7MENBQ2I7QUFHdEIsU0FBU0QsYUFBYUUsV0FBbUI7SUFDOUMsTUFBTUMsZUFBZUMsQ0FBQUEsR0FBQUEsT0FBQUEsTUFBTSxFQUFZQztJQUV2Q0MsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSLElBQUlILGFBQWFJLE9BQU8sRUFBRTtZQUN4QjtRQUNGO1FBRUEsTUFBTUMsTUFBTUMsQ0FBQUEsR0FBQUEsY0FBQUEsWUFBQUEsRUFBYVA7UUFFekJDLGFBQWFJLE9BQU8sR0FBRyxJQUFJRyxPQUFPQyxTQUFTLENBQUUsS0FBRUgsTUFBSTtJQUNyRCxHQUFHO1FBQUNOO0tBQVk7SUFFaEIsT0FBT0M7QUFDVDtBQUVPLFNBQVNMLGVBQWVLLFlBQTZDO0lBQzFFLE1BQU1TLGNBQWNDLENBQUFBLEdBQUFBLE9BQUFBLFdBQUFBLEVBQ2xCLENBQUNDO1FBQ0MsTUFBTUMsU0FBU1osYUFBYUksT0FBTztRQUNuQyxJQUFJLENBQUNRLFVBQVVBLE9BQU9DLFVBQVUsS0FBS0QsT0FBT0UsSUFBSSxFQUFFO1lBQ2hEO1FBQ0Y7UUFDQSxPQUFPRixPQUFPRyxJQUFJLENBQUNKO0lBQ3JCLEdBQ0E7UUFBQ1g7S0FBYTtJQUVoQixPQUFPUztBQUNUO0FBRU8sU0FBU2IsYUFDZGEsV0FBOEMsRUFDOUNPLGFBQXFDO0lBRXJDLE1BQU1DLGlCQUFpQmhCLENBQUFBLEdBQUFBLE9BQUFBLE1BQUFBLEVBSXBCO1FBQ0RpQixNQUFNO1FBQ04sMEZBQTBGO1FBQzFGQyxPQUFPLEVBQUU7UUFDVEMsVUFBVWxCO0lBQ1o7SUFFQSxNQUFNbUIsMEJBQTBCWCxDQUFBQSxHQUFBQSxPQUFBQSxXQUFBQSxFQUFZLENBQUNZO1FBQzNDLE1BQU0sRUFBRUYsUUFBUSxFQUFFRCxLQUFLLEVBQUUsR0FBR0YsZUFBZWIsT0FBTztRQUNsRCxJQUFJZ0IsVUFBVTtZQUNaQSxTQUFTRTtRQUNYLE9BQU87WUFDTEgsTUFBT0ksSUFBSSxDQUFDRDtRQUNkO0lBQ0YsR0FBRyxFQUFFO0lBRUxuQixDQUFBQSxHQUFBQSxPQUFBQSxTQUFBQSxFQUFVO1FBQ1IsTUFBTSxFQUFFQyxTQUFTb0IsV0FBVyxFQUFFLEdBQUdQO1FBQ2pDLDJEQUEyRDtRQUMzRCxJQUFJTyxZQUFZTixJQUFJLEVBQUU7WUFDcEI7UUFDRjtRQUNBTSxZQUFZTixJQUFJLEdBQUc7NkVBRW5CLG1CQUNFLENBQ0EsK09BQ0FPLElBQUksQ0FBQztnQkFBQyxFQUFFQyxPQUFPLEVBQUU7WUFDakIsTUFBTSxFQUFFdEIsT0FBTyxFQUFFLEdBQUdhO1lBQ3BCUyxRQUFRO2dCQUNOQyxvQkFBbUJDLEVBQXdDO29CQUN6RHhCLFFBQVFnQixRQUFRLEdBQUdRO29CQUVuQixpRkFBaUY7b0JBQ2pGLEtBQUssTUFBTU4sT0FBT2xCLFFBQVFlLEtBQUssQ0FBRzt3QkFDaENTLEdBQUdOO29CQUNMO29CQUNBbEIsUUFBUWUsS0FBSyxHQUFHakI7Z0JBQ2xCO2dCQUNBTztnQkFDQU87WUFDRjtRQUNGO0lBQ0YsR0FBRztRQUFDUDtRQUFhTztLQUFjO0lBRS9CLE9BQU9LO0FBQ1Q7QUFFTywwQkFDTFEsWUFBNkM7O0lBRTdDLE1BQU1wQiw2QkFBNkJvQjtJQUNuQyxNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyxDQUFBQSxHQUFBQSxPQUFBQSxVQUFBQSxFQUFXQywrQkFBQUEseUJBQXlCO0lBRXJEN0IsQ0FBQUEsR0FBQUEsT0FBQUEsU0FBQUEsRUFBVTtRQUNSLDBEQUEwRDtRQUMxRCwrRkFBK0Y7UUFDL0YsSUFBSThCLEtBQXFCLEVBQUUsRUFFMUI7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTUcsV0FBV0MsWUFBWTtZQUMzQjVCLFlBQ0U2QixLQUFLQyxTQUFTLENBQUM7Z0JBQ2JDLE9BQU87Z0JBQ1BWO2dCQUNBVyxhQUFhO1lBQ2Y7UUFFSixHQUFHO1FBQ0gsT0FBTyxJQUFNQyxjQUFjTjtJQUM3QixHQUFHO1FBQUNOO1FBQU1yQjtLQUFZO0FBQ3hCO0dBekJnQlg7O1FBR01IIiwic291cmNlcyI6WyIvaG9tZS9zcmMvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvYXBwL3VzZS13ZWJzb2NrZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2xpYi9hcHAtcm91dGVyLWNvbnRleHQuc2hhcmVkLXJ1bnRpbWUnXG5pbXBvcnQgeyBnZXRTb2NrZXRVcmwgfSBmcm9tICcuLi9nZXQtc29ja2V0LXVybCdcbmltcG9ydCB0eXBlIHsgVHVyYm9wYWNrTXNnVG9Ccm93c2VyIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmVyL2Rldi9ob3QtcmVsb2FkZXItdHlwZXMnXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VXZWJzb2NrZXQoYXNzZXRQcmVmaXg6IHN0cmluZykge1xuICBjb25zdCB3ZWJTb2NrZXRSZWYgPSB1c2VSZWY8V2ViU29ja2V0Pih1bmRlZmluZWQpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod2ViU29ja2V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IGdldFNvY2tldFVybChhc3NldFByZWZpeClcblxuICAgIHdlYlNvY2tldFJlZi5jdXJyZW50ID0gbmV3IHdpbmRvdy5XZWJTb2NrZXQoYCR7dXJsfS9fbmV4dC93ZWJwYWNrLWhtcmApXG4gIH0sIFthc3NldFByZWZpeF0pXG5cbiAgcmV0dXJuIHdlYlNvY2tldFJlZlxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlU2VuZE1lc3NhZ2Uod2ViU29ja2V0UmVmOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VXZWJzb2NrZXQ+KSB7XG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGRhdGE6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc29ja2V0ID0gd2ViU29ja2V0UmVmLmN1cnJlbnRcbiAgICAgIGlmICghc29ja2V0IHx8IHNvY2tldC5yZWFkeVN0YXRlICE9PSBzb2NrZXQuT1BFTikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJldHVybiBzb2NrZXQuc2VuZChkYXRhKVxuICAgIH0sXG4gICAgW3dlYlNvY2tldFJlZl1cbiAgKVxuICByZXR1cm4gc2VuZE1lc3NhZ2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVR1cmJvcGFjayhcbiAgc2VuZE1lc3NhZ2U6IFJldHVyblR5cGU8dHlwZW9mIHVzZVNlbmRNZXNzYWdlPixcbiAgb25VcGRhdGVFcnJvcjogKGVycjogdW5rbm93bikgPT4gdm9pZFxuKSB7XG4gIGNvbnN0IHR1cmJvcGFja1N0YXRlID0gdXNlUmVmPHtcbiAgICBpbml0OiBib29sZWFuXG4gICAgcXVldWU6IEFycmF5PFR1cmJvcGFja01zZ1RvQnJvd3Nlcj4gfCB1bmRlZmluZWRcbiAgICBjYWxsYmFjazogKChtc2c6IFR1cmJvcGFja01zZ1RvQnJvd3NlcikgPT4gdm9pZCkgfCB1bmRlZmluZWRcbiAgfT4oe1xuICAgIGluaXQ6IGZhbHNlLFxuICAgIC8vIFVudGlsIHRoZSBkeW5hbWljIGltcG9ydCByZXNvbHZlcywgcXVldWUgYW55IHR1cmJvcGFjayBtZXNzYWdlcyB3aGljaCB3aWxsIGJlIHJlcGxheWVkLlxuICAgIHF1ZXVlOiBbXSxcbiAgICBjYWxsYmFjazogdW5kZWZpbmVkLFxuICB9KVxuXG4gIGNvbnN0IHByb2Nlc3NUdXJib3BhY2tNZXNzYWdlID0gdXNlQ2FsbGJhY2soKG1zZzogVHVyYm9wYWNrTXNnVG9Ccm93c2VyKSA9PiB7XG4gICAgY29uc3QgeyBjYWxsYmFjaywgcXVldWUgfSA9IHR1cmJvcGFja1N0YXRlLmN1cnJlbnRcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrKG1zZylcbiAgICB9IGVsc2Uge1xuICAgICAgcXVldWUhLnB1c2gobXNnKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB7IGN1cnJlbnQ6IGluaXRDdXJyZW50IH0gPSB0dXJib3BhY2tTdGF0ZVxuICAgIC8vIFRPRE8oV0VCLTE1ODkpOiBvbmx5IGluc3RhbGwgaWYgYHByb2Nlc3MudHVyYm9wYWNrYCBzZXQuXG4gICAgaWYgKGluaXRDdXJyZW50LmluaXQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpbml0Q3VycmVudC5pbml0ID0gdHJ1ZVxuXG4gICAgaW1wb3J0KFxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciByZXF1aXJlcyBcIm1vZHVsZVJlc29sdXRpb25cIjogXCJub2RlMTZcIiBpbiB0c2NvbmZpZy5qc29uIGFuZCBub3QgLnRzIGV4dGVuc2lvblxuICAgICAgJ0B2ZXJjZWwvdHVyYm9wYWNrLWVjbWFzY3JpcHQtcnVudGltZS9icm93c2VyL2Rldi9obXItY2xpZW50L2htci1jbGllbnQudHMnXG4gICAgKS50aGVuKCh7IGNvbm5lY3QgfSkgPT4ge1xuICAgICAgY29uc3QgeyBjdXJyZW50IH0gPSB0dXJib3BhY2tTdGF0ZVxuICAgICAgY29ubmVjdCh7XG4gICAgICAgIGFkZE1lc3NhZ2VMaXN0ZW5lcihjYjogKG1zZzogVHVyYm9wYWNrTXNnVG9Ccm93c2VyKSA9PiB2b2lkKSB7XG4gICAgICAgICAgY3VycmVudC5jYWxsYmFjayA9IGNiXG5cbiAgICAgICAgICAvLyBSZXBsYXkgYWxsIFR1cmJvcGFjayBtZXNzYWdlcyBiZWZvcmUgd2Ugd2VyZSBhYmxlIHRvIGVzdGFibGlzaCB0aGUgSE1SIGNsaWVudC5cbiAgICAgICAgICBmb3IgKGNvbnN0IG1zZyBvZiBjdXJyZW50LnF1ZXVlISkge1xuICAgICAgICAgICAgY2IobXNnKVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50LnF1ZXVlID0gdW5kZWZpbmVkXG4gICAgICAgIH0sXG4gICAgICAgIHNlbmRNZXNzYWdlLFxuICAgICAgICBvblVwZGF0ZUVycm9yLFxuICAgICAgfSlcbiAgICB9KVxuICB9LCBbc2VuZE1lc3NhZ2UsIG9uVXBkYXRlRXJyb3JdKVxuXG4gIHJldHVybiBwcm9jZXNzVHVyYm9wYWNrTWVzc2FnZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlV2Vic29ja2V0UGluZyhcbiAgd2Vic29ja2V0UmVmOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VXZWJzb2NrZXQ+XG4pIHtcbiAgY29uc3Qgc2VuZE1lc3NhZ2UgPSB1c2VTZW5kTWVzc2FnZSh3ZWJzb2NrZXRSZWYpXG4gIGNvbnN0IHsgdHJlZSB9ID0gdXNlQ29udGV4dChHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0KVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gTmV2ZXIgc2VuZCBwaW5ncyB3aGVuIHVzaW5nIFR1cmJvcGFjayBhcyBpdCdzIG5vdCB1c2VkLlxuICAgIC8vIFBpbmdzIHdlcmUgb3JpZ2luYWxseSB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWN0aXZlIHJvdXRlcyBpbiBvbi1kZW1hbmQtZW50cmllcyB3aXRoIHdlYnBhY2suXG4gICAgaWYgKHByb2Nlc3MuZW52LlRVUkJPUEFDSykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gVGFrZW4gZnJvbSBvbi1kZW1hbmQtZW50cmllcy1jbGllbnQuanNcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNlbmRNZXNzYWdlKFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnQ6ICdwaW5nJyxcbiAgICAgICAgICB0cmVlLFxuICAgICAgICAgIGFwcERpclJvdXRlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgIH0sIDI1MDApXG4gICAgcmV0dXJuICgpID0+IGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpXG4gIH0sIFt0cmVlLCBzZW5kTWVzc2FnZV0pXG59XG4iXSwibmFtZXMiOlsidXNlU2VuZE1lc3NhZ2UiLCJ1c2VUdXJib3BhY2siLCJ1c2VXZWJzb2NrZXQiLCJ1c2VXZWJzb2NrZXRQaW5nIiwiYXNzZXRQcmVmaXgiLCJ3ZWJTb2NrZXRSZWYiLCJ1c2VSZWYiLCJ1bmRlZmluZWQiLCJ1c2VFZmZlY3QiLCJjdXJyZW50IiwidXJsIiwiZ2V0U29ja2V0VXJsIiwid2luZG93IiwiV2ViU29ja2V0Iiwic2VuZE1lc3NhZ2UiLCJ1c2VDYWxsYmFjayIsImRhdGEiLCJzb2NrZXQiLCJyZWFkeVN0YXRlIiwiT1BFTiIsInNlbmQiLCJvblVwZGF0ZUVycm9yIiwidHVyYm9wYWNrU3RhdGUiLCJpbml0IiwicXVldWUiLCJjYWxsYmFjayIsInByb2Nlc3NUdXJib3BhY2tNZXNzYWdlIiwibXNnIiwicHVzaCIsImluaXRDdXJyZW50IiwidGhlbiIsImNvbm5lY3QiLCJhZGRNZXNzYWdlTGlzdGVuZXIiLCJjYiIsIndlYnNvY2tldFJlZiIsInRyZWUiLCJ1c2VDb250ZXh0IiwiR2xvYmFsTGF5b3V0Um91dGVyQ29udGV4dCIsInByb2Nlc3MiLCJlbnYiLCJUVVJCT1BBQ0siLCJpbnRlcnZhbCIsInNldEludGVydmFsIiwiSlNPTiIsInN0cmluZ2lmeSIsImV2ZW50IiwiYXBwRGlyUm91dGUiLCJjbGVhckludGVydmFsIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/app/use-websocket.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js": /*!*****************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js ***! \*****************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"getSocketUrl\", ({\n enumerable: true,\n get: function() {\n return getSocketUrl;\n }\n}));\nconst _normalizedassetprefix = __webpack_require__(/*! ../../../shared/lib/normalized-asset-prefix */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/normalized-asset-prefix.js\");\nfunction getSocketProtocol(assetPrefix) {\n let protocol = window.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 getSocketUrl(assetPrefix) {\n const prefix = (0, _normalizedassetprefix.normalizedAssetPrefix)(assetPrefix);\n const protocol = getSocketProtocol(assetPrefix || '');\n if (URL.canParse(prefix)) {\n // since normalized asset prefix is ensured to be a URL format,\n // we can safely replace the protocol\n return prefix.replace(/^http/, 'ws');\n }\n const { hostname, port } = window.location;\n return protocol + \"//\" + hostname + (port ? \":\" + port : '') + prefix;\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=get-socket-url.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvZ2V0LXNvY2tldC11cmwuanMiLCJtYXBwaW5ncyI6Ijs7OztnREFhZ0JBOzs7ZUFBQUE7OzttREFic0I7QUFFdEMsU0FBU0Msa0JBQWtCQyxXQUFtQjtJQUM1QyxJQUFJQyxXQUFXQyxPQUFPQyxRQUFRLENBQUNGLFFBQVE7SUFFdkMsSUFBSTtRQUNGLHVCQUF1QjtRQUN2QkEsV0FBVyxJQUFJRyxJQUFJSixhQUFhQyxRQUFRO0lBQzFDLEVBQUUsVUFBTSxDQUFDO0lBRVQsT0FBT0EsYUFBYSxVQUFVLFFBQVE7QUFDeEM7QUFFTyxTQUFTSCxhQUFhRSxXQUErQjtJQUMxRCxNQUFNSyxTQUFTQyxDQUFBQSxHQUFBQSx1QkFBQUEscUJBQUFBLEVBQXNCTjtJQUNyQyxNQUFNQyxXQUFXRixrQkFBa0JDLGVBQWU7SUFFbEQsSUFBSUksSUFBSUcsUUFBUSxDQUFDRixTQUFTO1FBQ3hCLCtEQUErRDtRQUMvRCxxQ0FBcUM7UUFDckMsT0FBT0EsT0FBT0csT0FBTyxDQUFDLFNBQVM7SUFDakM7SUFFQSxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFLEdBQUdSLE9BQU9DLFFBQVE7SUFDMUMsT0FBVUYsV0FBUyxPQUFJUSxXQUFXQyxDQUFBQSxPQUFRLE1BQUdBLE9BQVMsR0FBQyxHQUFJTDtBQUM3RCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL2dldC1zb2NrZXQtdXJsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG5vcm1hbGl6ZWRBc3NldFByZWZpeCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9saWIvbm9ybWFsaXplZC1hc3NldC1wcmVmaXgnXG5cbmZ1bmN0aW9uIGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgcHJvdG9jb2wgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2xcblxuICB0cnkge1xuICAgIC8vIGFzc2V0UHJlZml4IGlzIGEgdXJsXG4gICAgcHJvdG9jb2wgPSBuZXcgVVJMKGFzc2V0UHJlZml4KS5wcm90b2NvbFxuICB9IGNhdGNoIHt9XG5cbiAgcmV0dXJuIHByb3RvY29sID09PSAnaHR0cDonID8gJ3dzOicgOiAnd3NzOidcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNvY2tldFVybChhc3NldFByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgY29uc3QgcHJlZml4ID0gbm9ybWFsaXplZEFzc2V0UHJlZml4KGFzc2V0UHJlZml4KVxuICBjb25zdCBwcm90b2NvbCA9IGdldFNvY2tldFByb3RvY29sKGFzc2V0UHJlZml4IHx8ICcnKVxuXG4gIGlmIChVUkwuY2FuUGFyc2UocHJlZml4KSkge1xuICAgIC8vIHNpbmNlIG5vcm1hbGl6ZWQgYXNzZXQgcHJlZml4IGlzIGVuc3VyZWQgdG8gYmUgYSBVUkwgZm9ybWF0LFxuICAgIC8vIHdlIGNhbiBzYWZlbHkgcmVwbGFjZSB0aGUgcHJvdG9jb2xcbiAgICByZXR1cm4gcHJlZml4LnJlcGxhY2UoL15odHRwLywgJ3dzJylcbiAgfVxuXG4gIGNvbnN0IHsgaG9zdG5hbWUsIHBvcnQgfSA9IHdpbmRvdy5sb2NhdGlvblxuICByZXR1cm4gYCR7cHJvdG9jb2x9Ly8ke2hvc3RuYW1lfSR7cG9ydCA/IGA6JHtwb3J0fWAgOiAnJ30ke3ByZWZpeH1gXG59XG4iXSwibmFtZXMiOlsiZ2V0U29ja2V0VXJsIiwiZ2V0U29ja2V0UHJvdG9jb2wiLCJhc3NldFByZWZpeCIsInByb3RvY29sIiwid2luZG93IiwibG9jYXRpb24iLCJVUkwiLCJwcmVmaXgiLCJub3JtYWxpemVkQXNzZXRQcmVmaXgiLCJjYW5QYXJzZSIsInJlcGxhY2UiLCJob3N0bmFtZSIsInBvcnQiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/get-socket-url.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/shared.js": /*!*********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/shared.js ***! \*********************************************************************************************************************************************/ /***/ ((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 REACT_REFRESH_FULL_RELOAD: function() {\n return REACT_REFRESH_FULL_RELOAD;\n },\n REACT_REFRESH_FULL_RELOAD_FROM_ERROR: function() {\n return REACT_REFRESH_FULL_RELOAD_FROM_ERROR;\n },\n reportInvalidHmrMessage: function() {\n return reportInvalidHmrMessage;\n }\n});\nconst REACT_REFRESH_FULL_RELOAD = '[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.';\nconst REACT_REFRESH_FULL_RELOAD_FROM_ERROR = '[Fast Refresh] performing full reload because your application had an unrecoverable error';\nfunction reportInvalidHmrMessage(message, err) {\n console.warn('[HMR] Invalid message: ' + JSON.stringify(message) + '\\n' + (err instanceof Error && (err == null ? void 0 : err.stack) || ''));\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=shared.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvc2hhcmVkLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUVhQSx5QkFBeUI7ZUFBekJBOztJQVFBQyxvQ0FBb0M7ZUFBcENBOztJQUdHQyx1QkFBdUI7ZUFBdkJBOzs7QUFYVCxNQUFNRiw0QkFDWCw4Q0FDQSxtSUFDQSxxSUFDQSwrR0FDQSw4SEFDQTtBQUVLLE1BQU1DLHVDQUNYO0FBRUssU0FBU0Msd0JBQ2RDLE9BQWlELEVBQ2pEQyxHQUFZO0lBRVpDLFFBQVFDLElBQUksQ0FDViw0QkFDRUMsS0FBS0MsU0FBUyxDQUFDTCxXQUNmLE9BQ0MsQ0FBQ0MsZUFBZUssVUFBU0wsT0FBQUEsT0FBQUEsS0FBQUEsSUFBQUEsSUFBS00sS0FBQUEsS0FBVSxHQUFDO0FBRWhEIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9zcmMvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvc2hhcmVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSE1SX0FDVElPTl9UWVBFUyB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuXG5leHBvcnQgY29uc3QgUkVBQ1RfUkVGUkVTSF9GVUxMX1JFTE9BRCA9XG4gICdbRmFzdCBSZWZyZXNoXSBwZXJmb3JtaW5nIGZ1bGwgcmVsb2FkXFxuXFxuJyArXG4gIFwiRmFzdCBSZWZyZXNoIHdpbGwgcGVyZm9ybSBhIGZ1bGwgcmVsb2FkIHdoZW4geW91IGVkaXQgYSBmaWxlIHRoYXQncyBpbXBvcnRlZCBieSBtb2R1bGVzIG91dHNpZGUgb2YgdGhlIFJlYWN0IHJlbmRlcmluZyB0cmVlLlxcblwiICtcbiAgJ1lvdSBtaWdodCBoYXZlIGEgZmlsZSB3aGljaCBleHBvcnRzIGEgUmVhY3QgY29tcG9uZW50IGJ1dCBhbHNvIGV4cG9ydHMgYSB2YWx1ZSB0aGF0IGlzIGltcG9ydGVkIGJ5IGEgbm9uLVJlYWN0IGNvbXBvbmVudCBmaWxlLlxcbicgK1xuICAnQ29uc2lkZXIgbWlncmF0aW5nIHRoZSBub24tUmVhY3QgY29tcG9uZW50IGV4cG9ydCB0byBhIHNlcGFyYXRlIGZpbGUgYW5kIGltcG9ydGluZyBpdCBpbnRvIGJvdGggZmlsZXMuXFxuXFxuJyArXG4gICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRoZSBwYXJlbnQgY29tcG9uZW50IG9mIHRoZSBjb21wb25lbnQgeW91IGVkaXRlZCBpcyBhIGNsYXNzIGNvbXBvbmVudCwgd2hpY2ggZGlzYWJsZXMgRmFzdCBSZWZyZXNoLlxcbicgK1xuICAnRmFzdCBSZWZyZXNoIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwYXJlbnQgZnVuY3Rpb24gY29tcG9uZW50IGluIHlvdXIgUmVhY3QgdHJlZS4nXG5cbmV4cG9ydCBjb25zdCBSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IgPVxuICAnW0Zhc3QgUmVmcmVzaF0gcGVyZm9ybWluZyBmdWxsIHJlbG9hZCBiZWNhdXNlIHlvdXIgYXBwbGljYXRpb24gaGFkIGFuIHVucmVjb3ZlcmFibGUgZXJyb3InXG5cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRJbnZhbGlkSG1yTWVzc2FnZShcbiAgbWVzc2FnZTogSE1SX0FDVElPTl9UWVBFUyB8IE1lc3NhZ2VFdmVudDx1bmtub3duPixcbiAgZXJyOiB1bmtub3duXG4pIHtcbiAgY29uc29sZS53YXJuKFxuICAgICdbSE1SXSBJbnZhbGlkIG1lc3NhZ2U6ICcgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkgK1xuICAgICAgJ1xcbicgK1xuICAgICAgKChlcnIgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnI/LnN0YWNrKSB8fCAnJylcbiAgKVxufVxuIl0sIm5hbWVzIjpbIlJFQUNUX1JFRlJFU0hfRlVMTF9SRUxPQUQiLCJSRUFDVF9SRUZSRVNIX0ZVTExfUkVMT0FEX0ZST01fRVJST1IiLCJyZXBvcnRJbnZhbGlkSG1yTWVzc2FnZSIsIm1lc3NhZ2UiLCJlcnIiLCJjb25zb2xlIiwid2FybiIsIkpTT04iLCJzdHJpbmdpZnkiLCJFcnJvciIsInN0YWNrIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/shared.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js": /*!********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js ***! \********************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"TurbopackHmr\", ({\n enumerable: true,\n get: function() {\n return TurbopackHmr;\n }\n}));\nconst _class_private_field_loose_base = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_base */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_base.js\");\nconst _class_private_field_loose_key = __webpack_require__(/*! @swc/helpers/_/_class_private_field_loose_key */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_class_private_field_loose_key.js\");\n// How long to wait before reporting the HMR start, used to suppress irrelevant\n// `BUILDING` events. Does not impact reported latency.\nconst TURBOPACK_HMR_START_DELAY_MS = 100;\nvar _updatedModules = /*#__PURE__*/ _class_private_field_loose_key._(\"_updatedModules\"), _startMsSinceEpoch = /*#__PURE__*/ _class_private_field_loose_key._(\"_startMsSinceEpoch\"), _lastUpdateMsSinceEpoch = /*#__PURE__*/ _class_private_field_loose_key._(\"_lastUpdateMsSinceEpoch\"), _deferredReportHmrStartId = /*#__PURE__*/ _class_private_field_loose_key._(\"_deferredReportHmrStartId\"), _reportedHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_reportedHmrStart\"), // as it reports *any* compilation, including fully no-op/cached compilations\n// and those unrelated to HMR. Fixing this would require significant\n// architectural changes.\n//\n// Work around this by deferring any \"rebuilding\" message by 100ms. If we get\n// a BUILT event within that threshold and nothing has changed, just suppress\n// the message entirely.\n_runDeferredReportHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_runDeferredReportHmrStart\"), _cancelDeferredReportHmrStart = /*#__PURE__*/ _class_private_field_loose_key._(\"_cancelDeferredReportHmrStart\"), /** Helper for other `onEvent` methods. */ _onUpdate = /*#__PURE__*/ _class_private_field_loose_key._(\"_onUpdate\");\nclass TurbopackHmr {\n onBuilding() {\n _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] = undefined;\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch] = Date.now();\n // report the HMR start after a short delay\n _class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] = setTimeout(()=>_class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart](), self.__NEXT_HMR_TURBOPACK_REPORT_NOISY_NOOP_EVENTS ? 0 : TURBOPACK_HMR_START_DELAY_MS);\n }\n onTurbopackMessage(msg) {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n const updatedModules = extractModulesFromTurbopackMessage(msg.data);\n for (const module1 of updatedModules){\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules].add(module1);\n }\n }\n onServerComponentChanges() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n onReloadPage() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n onPageAddRemove() {\n _class_private_field_loose_base._(this, _onUpdate)[_onUpdate]();\n }\n /**\n * @returns `null` if the caller should ignore the update entirely. Returns an\n * object with `hasUpdates: false` if the caller should report the end of\n * the HMR in the browser console, but the HMR was a no-op.\n */ onBuilt() {\n // Check that we got *any* `TurbopackMessageAction`, even if\n // `updatedModules` is empty (not everything gets recorded there).\n //\n // There's also a case where `onBuilt` gets called before `onBuilding`,\n // which can happen during initial page load. Ignore that too!\n const hasUpdates = _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] != null && _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch] != null;\n if (!hasUpdates && !_class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart]) {\n // suppress the update entirely\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n return null;\n }\n _class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart]();\n var _class_private_field_loose_base__lastUpdateMsSinceEpoch;\n const result = {\n hasUpdates,\n updatedModules: _class_private_field_loose_base._(this, _updatedModules)[_updatedModules],\n startMsSinceEpoch: _class_private_field_loose_base._(this, _startMsSinceEpoch)[_startMsSinceEpoch],\n endMsSinceEpoch: (_class_private_field_loose_base__lastUpdateMsSinceEpoch = _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch]) != null ? _class_private_field_loose_base__lastUpdateMsSinceEpoch : Date.now()\n };\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules] = new Set();\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = false;\n return result;\n }\n constructor(){\n Object.defineProperty(this, _runDeferredReportHmrStart, {\n value: runDeferredReportHmrStart\n });\n Object.defineProperty(this, _cancelDeferredReportHmrStart, {\n value: cancelDeferredReportHmrStart\n });\n Object.defineProperty(this, _onUpdate, {\n value: onUpdate\n });\n Object.defineProperty(this, _updatedModules, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _startMsSinceEpoch, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _lastUpdateMsSinceEpoch, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _deferredReportHmrStartId, {\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, _reportedHmrStart, {\n writable: true,\n value: void 0\n });\n _class_private_field_loose_base._(this, _updatedModules)[_updatedModules] = new Set();\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = false;\n }\n}\nfunction runDeferredReportHmrStart() {\n if (_class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] != null) {\n console.log('[Fast Refresh] rebuilding');\n _class_private_field_loose_base._(this, _reportedHmrStart)[_reportedHmrStart] = true;\n _class_private_field_loose_base._(this, _cancelDeferredReportHmrStart)[_cancelDeferredReportHmrStart]();\n }\n}\nfunction cancelDeferredReportHmrStart() {\n clearTimeout(_class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId]);\n _class_private_field_loose_base._(this, _deferredReportHmrStartId)[_deferredReportHmrStartId] = undefined;\n}\nfunction onUpdate() {\n _class_private_field_loose_base._(this, _runDeferredReportHmrStart)[_runDeferredReportHmrStart]();\n _class_private_field_loose_base._(this, _lastUpdateMsSinceEpoch)[_lastUpdateMsSinceEpoch] = Date.now();\n}\nfunction extractModulesFromTurbopackMessage(data) {\n const updatedModules = new Set();\n const updates = Array.isArray(data) ? data : [\n data\n ];\n for (const update of updates){\n // TODO this won't capture changes to CSS since they don't result in a \"merged\" update\n if (update.type !== 'partial' || update.instruction.type !== 'ChunkListUpdate' || update.instruction.merged === undefined) {\n continue;\n }\n for (const mergedUpdate of update.instruction.merged){\n for (const name of Object.keys(mergedUpdate.entries)){\n const res = /(.*)\\s+\\[.*/.exec(name);\n if (res === null) {\n console.error('[Turbopack HMR] Expected module to match pattern: ' + name);\n continue;\n }\n updatedModules.add(res[1]);\n }\n }\n }\n return updatedModules;\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=turbopack-hot-reloader-common.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ob3QtcmVsb2FkZXIvdHVyYm9wYWNrLWhvdC1yZWxvYWRlci1jb21tb24uanMiLCJtYXBwaW5ncyI6Ijs7OztnREFvQmFBOzs7ZUFBQUE7Ozs7O0FBWGIsK0VBQStFO0FBQy9FLHVEQUF1RDtBQUN2RCxNQUFNQywrQkFBK0I7SUFVbkMscUZBQ0EsMkZBQ0EscUdBQ0EseUdBQ0EseUZBT0EsNEVBQTRFLENBQ0M7QUFDN0Usb0VBQW9FO0FBQ3BFLHlCQUF5QjtBQUN6QixFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUM3RSx3QkFBd0I7QUFDeEIsMkdBUUEsaUhBb0JBLHdDQUF3QyxHQUN4QztBQWpESyxNQUFNRDtJQWlDWEUsYUFBYTtRQUNYLHNDQUFJLEVBQUMsb0RBQTBCQztRQUMvQixzQ0FBSSxFQUFDO1FBQ0wsc0NBQUksRUFBQywwQ0FBcUJDLEtBQUtDLEdBQUc7UUFFbEMsMkNBQTJDO1FBQzNDLHNDQUFJLEVBQUMsd0RBQTRCQyxXQUMvQixJQUFNLHNDQUFJLEVBQUMsMkRBRVhDLEtBQUtDLDZDQUE2QyxHQUM5QyxJQUNBUCxpQkFIc0U7SUFLOUU7SUFRQVEsbUJBQW1CQyxHQUEyQixFQUFFO1FBQzlDLHNDQUFJLEVBQUM7UUFDTCxNQUFNQyxpQkFBaUJDLG1DQUFtQ0YsSUFBSUcsSUFBSTtRQUNsRSxLQUFLLE1BQU1DLFdBQVVILGVBQWdCO1lBQ25DLHNDQUFJLEVBQUMsa0NBQWdCSSxHQUFHLENBQUNEO1FBQzNCO0lBQ0Y7SUFFQUUsMkJBQTJCO1FBQ3pCLHNDQUFJLEVBQUM7SUFDUDtJQUVBQyxlQUFlO1FBQ2Isc0NBQUksRUFBQztJQUNQO0lBRUFDLGtCQUFrQjtRQUNoQixzQ0FBSSxFQUFDO0lBQ1A7SUFFQTs7OztHQUlDLEdBQ0RDLFVBQTRCO1FBQzFCLDREQUE0RDtRQUM1RCxrRUFBa0U7UUFDbEUsRUFBRTtRQUNGLHVFQUF1RTtRQUN2RSw4REFBOEQ7UUFDOUQsTUFBTUMsYUFDSixzQ0FBSSxFQUFDLHFEQUEyQixRQUFRLHNDQUFJLEVBQUMsMkNBQXNCO1FBQ3JFLElBQUksQ0FBQ0EsY0FBYyxDQUFDLHNDQUFJLEVBQUMsdUNBQW1CO1lBQzFDLCtCQUErQjtZQUMvQixzQ0FBSSxFQUFDO1lBQ0wsT0FBTztRQUNUO1FBQ0Esc0NBQUksRUFBQzs7UUFFTCxNQUFNQyxTQUFTO1lBQ2JEO1lBQ0FULGNBQWMsRUFBRSxzQ0FBSSxFQUFDO1lBQ3JCVyxpQkFBaUIsRUFBRSxzQ0FBSSxFQUFDO1lBQ3hCQyxpQkFBaUIsaUdBQUksRUFBQyx1SEFBMkJuQixLQUFLQyxHQUFHO1FBQzNEO1FBQ0Esc0NBQUksRUFBQyxvQ0FBa0IsSUFBSW1CO1FBQzNCLHNDQUFJLEVBQUMsd0NBQW9CO1FBQ3pCLE9BQU9IO0lBQ1Q7SUFoR0FJLGFBQWM7UUFhZDttQkFBQTs7UUFRQTttQkFBQTs7UUFxQkE7bUJBQUE7O1FBaERBOzttQkFBQTs7UUFDQTs7bUJBQUE7O1FBQ0E7O21CQUFBOztRQUNBOzttQkFBQTs7UUFDQTs7bUJBQUE7O1FBR0Usc0NBQUksRUFBQyxvQ0FBa0IsSUFBSUQ7UUFDM0Isc0NBQUksRUFBQyx3Q0FBb0I7SUFDM0I7QUE4RkY7QUFwRkU7SUFDRSxJQUFJLHNDQUFJLEVBQUMseURBQTZCLE1BQU07UUFDMUNFLFFBQVFDLEdBQUcsQ0FBQztRQUNaLHNDQUFJLEVBQUMsd0NBQW9CO1FBQ3pCLHNDQUFJLEVBQUM7SUFDUDtBQUNGO0FBRUE7SUFDRUMsYUFBYSxzQ0FBSSxFQUFDO0lBQ2xCLHNDQUFJLEVBQUMsd0RBQTRCekI7QUFDbkM7QUFrQkE7SUFDRSxzQ0FBSSxFQUFDO0lBQ0wsc0NBQUksRUFBQyxvREFBMEJDLEtBQUtDLEdBQUc7QUFDekM7QUFzREYsU0FBU08sbUNBQ1BDLElBQXlDO0lBRXpDLE1BQU1GLGlCQUE4QixJQUFJYTtJQUV4QyxNQUFNSyxVQUFVQyxNQUFNQyxPQUFPLENBQUNsQixRQUFRQSxPQUFPO1FBQUNBO0tBQUs7SUFDbkQsS0FBSyxNQUFNbUIsVUFBVUgsUUFBUztRQUM1QixzRkFBc0Y7UUFDdEYsSUFDRUcsT0FBT0MsSUFBSSxLQUFLLGFBQ2hCRCxPQUFPRSxXQUFXLENBQUNELElBQUksS0FBSyxxQkFDNUJELE9BQU9FLFdBQVcsQ0FBQ0MsTUFBTSxLQUFLaEMsV0FDOUI7WUFDQTtRQUNGO1FBRUEsS0FBSyxNQUFNaUMsZ0JBQWdCSixPQUFPRSxXQUFXLENBQUNDLE1BQU0sQ0FBRTtZQUNwRCxLQUFLLE1BQU1FLFFBQVFDLE9BQU9DLElBQUksQ0FBQ0gsYUFBYUksT0FBTyxFQUFHO2dCQUNwRCxNQUFNQyxNQUFNLGNBQWNDLElBQUksQ0FBQ0w7Z0JBQy9CLElBQUlJLFFBQVEsTUFBTTtvQkFDaEJmLFFBQVFpQixLQUFLLENBQ1gsdURBQXVETjtvQkFFekQ7Z0JBQ0Y7Z0JBRUExQixlQUFlSSxHQUFHLENBQUMwQixHQUFHLENBQUMsRUFBRTtZQUMzQjtRQUNGO0lBQ0Y7SUFFQSxPQUFPOUI7QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvc3JjL2NsaWVudC9kZXYvaG90LXJlbG9hZGVyL3R1cmJvcGFjay1ob3QtcmVsb2FkZXItY29tbW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHVyYm9wYWNrTWVzc2FnZUFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NlcnZlci9kZXYvaG90LXJlbG9hZGVyLXR5cGVzJ1xuaW1wb3J0IHR5cGUgeyBVcGRhdGUgYXMgVHVyYm9wYWNrVXBkYXRlIH0gZnJvbSAnLi4vLi4vLi4vYnVpbGQvc3djL3R5cGVzJ1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fTkVYVF9ITVJfVFVSQk9QQUNLX1JFUE9SVF9OT0lTWV9OT09QX0VWRU5UUzogYm9vbGVhbiB8IHVuZGVmaW5lZFxuICB9XG59XG5cbi8vIEhvdyBsb25nIHRvIHdhaXQgYmVmb3JlIHJlcG9ydGluZyB0aGUgSE1SIHN0YXJ0LCB1c2VkIHRvIHN1cHByZXNzIGlycmVsZXZhbnRcbi8vIGBCVUlMRElOR2AgZXZlbnRzLiBEb2VzIG5vdCBpbXBhY3QgcmVwb3J0ZWQgbGF0ZW5jeS5cbmNvbnN0IFRVUkJPUEFDS19ITVJfU1RBUlRfREVMQVlfTVMgPSAxMDBcblxuaW50ZXJmYWNlIEhtclVwZGF0ZSB7XG4gIGhhc1VwZGF0ZXM6IGJvb2xlYW5cbiAgdXBkYXRlZE1vZHVsZXM6IFNldDxzdHJpbmc+XG4gIHN0YXJ0TXNTaW5jZUVwb2NoOiBudW1iZXJcbiAgZW5kTXNTaW5jZUVwb2NoOiBudW1iZXJcbn1cblxuZXhwb3J0IGNsYXNzIFR1cmJvcGFja0htciB7XG4gICN1cGRhdGVkTW9kdWxlczogU2V0PHN0cmluZz5cbiAgI3N0YXJ0TXNTaW5jZUVwb2NoOiBudW1iZXIgfCB1bmRlZmluZWRcbiAgI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2g6IG51bWJlciB8IHVuZGVmaW5lZFxuICAjZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZFxuICAjcmVwb3J0ZWRIbXJTdGFydDogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuI3VwZGF0ZWRNb2R1bGVzID0gbmV3IFNldCgpXG4gICAgdGhpcy4jcmVwb3J0ZWRIbXJTdGFydCA9IGZhbHNlXG4gIH1cblxuICAvLyBIQUNLOiBUdXJib3BhY2sgdGVuZHMgdG8gZ2VuZXJhdGUgYSBsb3Qgb2YgaXJyZWxldmFudCBcIkJVSUxESU5HXCIgYWN0aW9ucyxcbiAgLy8gYXMgaXQgcmVwb3J0cyAqYW55KiBjb21waWxhdGlvbiwgaW5jbHVkaW5nIGZ1bGx5IG5vLW9wL2NhY2hlZCBjb21waWxhdGlvbnNcbiAgLy8gYW5kIHRob3NlIHVucmVsYXRlZCB0byBITVIuIEZpeGluZyB0aGlzIHdvdWxkIHJlcXVpcmUgc2lnbmlmaWNhbnRcbiAgLy8gYXJjaGl0ZWN0dXJhbCBjaGFuZ2VzLlxuICAvL1xuICAvLyBXb3JrIGFyb3VuZCB0aGlzIGJ5IGRlZmVycmluZyBhbnkgXCJyZWJ1aWxkaW5nXCIgbWVzc2FnZSBieSAxMDBtcy4gSWYgd2UgZ2V0XG4gIC8vIGEgQlVJTFQgZXZlbnQgd2l0aGluIHRoYXQgdGhyZXNob2xkIGFuZCBub3RoaW5nIGhhcyBjaGFuZ2VkLCBqdXN0IHN1cHByZXNzXG4gIC8vIHRoZSBtZXNzYWdlIGVudGlyZWx5LlxuICAjcnVuRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpIHtcbiAgICBpZiAodGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkICE9IG51bGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbRmFzdCBSZWZyZXNoXSByZWJ1aWxkaW5nJylcbiAgICAgIHRoaXMuI3JlcG9ydGVkSG1yU3RhcnQgPSB0cnVlXG4gICAgICB0aGlzLiNjYW5jZWxEZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICB9XG4gIH1cblxuICAjY2FuY2VsRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkKVxuICAgIHRoaXMuI2RlZmVycmVkUmVwb3J0SG1yU3RhcnRJZCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgb25CdWlsZGluZygpIHtcbiAgICB0aGlzLiNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoID0gdW5kZWZpbmVkXG4gICAgdGhpcy4jY2FuY2VsRGVmZXJyZWRSZXBvcnRIbXJTdGFydCgpXG4gICAgdGhpcy4jc3RhcnRNc1NpbmNlRXBvY2ggPSBEYXRlLm5vdygpXG5cbiAgICAvLyByZXBvcnQgdGhlIEhNUiBzdGFydCBhZnRlciBhIHNob3J0IGRlbGF5XG4gICAgdGhpcy4jZGVmZXJyZWRSZXBvcnRIbXJTdGFydElkID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHRoaXMuI3J1bkRlZmVycmVkUmVwb3J0SG1yU3RhcnQoKSxcbiAgICAgIC8vIGRlYnVnZ2luZyBmZWF0dXJlOiBkb24ndCBkZWZlci9zdXBwcmVzcyBub2lzeSBuby1vcCBITVIgdXBkYXRlIG1lc3NhZ2VzXG4gICAgICBzZWxmLl9fTkVYVF9ITVJfVFVSQk9QQUNLX1JFUE9SVF9OT0lTWV9OT09QX0VWRU5UU1xuICAgICAgICA/IDBcbiAgICAgICAgOiBUVVJCT1BBQ0tfSE1SX1NUQVJUX0RFTEFZX01TXG4gICAgKVxuICB9XG5cbiAgLyoqIEhlbHBlciBmb3Igb3RoZXIgYG9uRXZlbnRgIG1ldGhvZHMuICovXG4gICNvblVwZGF0ZSgpIHtcbiAgICB0aGlzLiNydW5EZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICB0aGlzLiNsYXN0VXBkYXRlTXNTaW5jZUVwb2NoID0gRGF0ZS5ub3coKVxuICB9XG5cbiAgb25UdXJib3BhY2tNZXNzYWdlKG1zZzogVHVyYm9wYWNrTWVzc2FnZUFjdGlvbikge1xuICAgIHRoaXMuI29uVXBkYXRlKClcbiAgICBjb25zdCB1cGRhdGVkTW9kdWxlcyA9IGV4dHJhY3RNb2R1bGVzRnJvbVR1cmJvcGFja01lc3NhZ2UobXNnLmRhdGEpXG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgdXBkYXRlZE1vZHVsZXMpIHtcbiAgICAgIHRoaXMuI3VwZGF0ZWRNb2R1bGVzLmFkZChtb2R1bGUpXG4gICAgfVxuICB9XG5cbiAgb25TZXJ2ZXJDb21wb25lbnRDaGFuZ2VzKCkge1xuICAgIHRoaXMuI29uVXBkYXRlKClcbiAgfVxuXG4gIG9uUmVsb2FkUGFnZSgpIHtcbiAgICB0aGlzLiNvblVwZGF0ZSgpXG4gIH1cblxuICBvblBhZ2VBZGRSZW1vdmUoKSB7XG4gICAgdGhpcy4jb25VcGRhdGUoKVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIGBudWxsYCBpZiB0aGUgY2FsbGVyIHNob3VsZCBpZ25vcmUgdGhlIHVwZGF0ZSBlbnRpcmVseS4gUmV0dXJucyBhblxuICAgKiAgIG9iamVjdCB3aXRoIGBoYXNVcGRhdGVzOiBmYWxzZWAgaWYgdGhlIGNhbGxlciBzaG91bGQgcmVwb3J0IHRoZSBlbmQgb2ZcbiAgICogICB0aGUgSE1SIGluIHRoZSBicm93c2VyIGNvbnNvbGUsIGJ1dCB0aGUgSE1SIHdhcyBhIG5vLW9wLlxuICAgKi9cbiAgb25CdWlsdCgpOiBIbXJVcGRhdGUgfCBudWxsIHtcbiAgICAvLyBDaGVjayB0aGF0IHdlIGdvdCAqYW55KiBgVHVyYm9wYWNrTWVzc2FnZUFjdGlvbmAsIGV2ZW4gaWZcbiAgICAvLyBgdXBkYXRlZE1vZHVsZXNgIGlzIGVtcHR5IChub3QgZXZlcnl0aGluZyBnZXRzIHJlY29yZGVkIHRoZXJlKS5cbiAgICAvL1xuICAgIC8vIFRoZXJlJ3MgYWxzbyBhIGNhc2Ugd2hlcmUgYG9uQnVpbHRgIGdldHMgY2FsbGVkIGJlZm9yZSBgb25CdWlsZGluZ2AsXG4gICAgLy8gd2hpY2ggY2FuIGhhcHBlbiBkdXJpbmcgaW5pdGlhbCBwYWdlIGxvYWQuIElnbm9yZSB0aGF0IHRvbyFcbiAgICBjb25zdCBoYXNVcGRhdGVzID1cbiAgICAgIHRoaXMuI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2ggIT0gbnVsbCAmJiB0aGlzLiNzdGFydE1zU2luY2VFcG9jaCAhPSBudWxsXG4gICAgaWYgKCFoYXNVcGRhdGVzICYmICF0aGlzLiNyZXBvcnRlZEhtclN0YXJ0KSB7XG4gICAgICAvLyBzdXBwcmVzcyB0aGUgdXBkYXRlIGVudGlyZWx5XG4gICAgICB0aGlzLiNjYW5jZWxEZWZlcnJlZFJlcG9ydEhtclN0YXJ0KClcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICAgIHRoaXMuI3J1bkRlZmVycmVkUmVwb3J0SG1yU3RhcnQoKVxuXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaGFzVXBkYXRlcyxcbiAgICAgIHVwZGF0ZWRNb2R1bGVzOiB0aGlzLiN1cGRhdGVkTW9kdWxlcyxcbiAgICAgIHN0YXJ0TXNTaW5jZUVwb2NoOiB0aGlzLiNzdGFydE1zU2luY2VFcG9jaCEsXG4gICAgICBlbmRNc1NpbmNlRXBvY2g6IHRoaXMuI2xhc3RVcGRhdGVNc1NpbmNlRXBvY2ggPz8gRGF0ZS5ub3coKSxcbiAgICB9XG4gICAgdGhpcy4jdXBkYXRlZE1vZHVsZXMgPSBuZXcgU2V0KClcbiAgICB0aGlzLiNyZXBvcnRlZEhtclN0YXJ0ID0gZmFsc2VcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cblxuZnVuY3Rpb24gZXh0cmFjdE1vZHVsZXNGcm9tVHVyYm9wYWNrTWVzc2FnZShcbiAgZGF0YTogVHVyYm9wYWNrVXBkYXRlIHwgVHVyYm9wYWNrVXBkYXRlW11cbik6IFNldDxzdHJpbmc+IHtcbiAgY29uc3QgdXBkYXRlZE1vZHVsZXM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpXG5cbiAgY29uc3QgdXBkYXRlcyA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhIDogW2RhdGFdXG4gIGZvciAoY29uc3QgdXBkYXRlIG9mIHVwZGF0ZXMpIHtcbiAgICAvLyBUT0RPIHRoaXMgd29uJ3QgY2FwdHVyZSBjaGFuZ2VzIHRvIENTUyBzaW5jZSB0aGV5IGRvbid0IHJlc3VsdCBpbiBhIFwibWVyZ2VkXCIgdXBkYXRlXG4gICAgaWYgKFxuICAgICAgdXBkYXRlLnR5cGUgIT09ICdwYXJ0aWFsJyB8fFxuICAgICAgdXBkYXRlLmluc3RydWN0aW9uLnR5cGUgIT09ICdDaHVua0xpc3RVcGRhdGUnIHx8XG4gICAgICB1cGRhdGUuaW5zdHJ1Y3Rpb24ubWVyZ2VkID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBtZXJnZWRVcGRhdGUgb2YgdXBkYXRlLmluc3RydWN0aW9uLm1lcmdlZCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG1lcmdlZFVwZGF0ZS5lbnRyaWVzKSkge1xuICAgICAgICBjb25zdCByZXMgPSAvKC4qKVxccytcXFsuKi8uZXhlYyhuYW1lKVxuICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICdbVHVyYm9wYWNrIEhNUl0gRXhwZWN0ZWQgbW9kdWxlIHRvIG1hdGNoIHBhdHRlcm46ICcgKyBuYW1lXG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICB1cGRhdGVkTW9kdWxlcy5hZGQocmVzWzFdKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1cGRhdGVkTW9kdWxlc1xufVxuIl0sIm5hbWVzIjpbIlR1cmJvcGFja0htciIsIlRVUkJPUEFDS19ITVJfU1RBUlRfREVMQVlfTVMiLCJvbkJ1aWxkaW5nIiwidW5kZWZpbmVkIiwiRGF0ZSIsIm5vdyIsInNldFRpbWVvdXQiLCJzZWxmIiwiX19ORVhUX0hNUl9UVVJCT1BBQ0tfUkVQT1JUX05PSVNZX05PT1BfRVZFTlRTIiwib25UdXJib3BhY2tNZXNzYWdlIiwibXNnIiwidXBkYXRlZE1vZHVsZXMiLCJleHRyYWN0TW9kdWxlc0Zyb21UdXJib3BhY2tNZXNzYWdlIiwiZGF0YSIsIm1vZHVsZSIsImFkZCIsIm9uU2VydmVyQ29tcG9uZW50Q2hhbmdlcyIsIm9uUmVsb2FkUGFnZSIsIm9uUGFnZUFkZFJlbW92ZSIsIm9uQnVpbHQiLCJoYXNVcGRhdGVzIiwicmVzdWx0Iiwic3RhcnRNc1NpbmNlRXBvY2giLCJlbmRNc1NpbmNlRXBvY2giLCJTZXQiLCJjb25zdHJ1Y3RvciIsImNvbnNvbGUiLCJsb2ciLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVzIiwiQXJyYXkiLCJpc0FycmF5IiwidXBkYXRlIiwidHlwZSIsImluc3RydWN0aW9uIiwibWVyZ2VkIiwibWVyZ2VkVXBkYXRlIiwibmFtZSIsIk9iamVjdCIsImtleXMiLCJlbnRyaWVzIiwicmVzIiwiZXhlYyIsImVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/hot-reloader/turbopack-hot-reloader-common.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/noop-turbopack-hmr.js": /*!********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/noop-turbopack-hmr.js ***! \********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// The Turbopack HMR client can't be properly omitted at the moment (WEB-1589),\n// so instead we remap its import to this file in webpack builds.\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"connect\", ({\n enumerable: true,\n get: function() {\n return connect;\n }\n}));\nfunction connect() {}\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=noop-turbopack-hmr.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ub29wLXR1cmJvcGFjay1obXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsK0VBQStFO0FBQy9FLGlFQUFpRTs7Ozs7MkNBQ2pEQTs7O2VBQUFBOzs7QUFBVCxTQUFTQSxXQUFXIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9kZXYvbm9vcC10dXJib3BhY2staG1yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBUdXJib3BhY2sgSE1SIGNsaWVudCBjYW4ndCBiZSBwcm9wZXJseSBvbWl0dGVkIGF0IHRoZSBtb21lbnQgKFdFQi0xNTg5KSxcbi8vIHNvIGluc3RlYWQgd2UgcmVtYXAgaXRzIGltcG9ydCB0byB0aGlzIGZpbGUgaW4gd2VicGFjayBidWlsZHMuXG5leHBvcnQgZnVuY3Rpb24gY29ubmVjdCgpIHt9XG4iXSwibmFtZXMiOlsiY29ubmVjdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/noop-turbopack-hmr.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/report-hmr-latency.js": /*!********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/report-hmr-latency.js ***! \********************************************************************************************************************************************/ /***/ ((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 reportHmrLatency;\n }\n}));\nfunction reportHmrLatency(sendMessage, updatedModules, startMsSinceEpoch, endMsSinceEpoch, hasUpdate) {\n if (hasUpdate === void 0) hasUpdate = true;\n const latencyMs = endMsSinceEpoch - startMsSinceEpoch;\n console.log(\"[Fast Refresh] done in \" + latencyMs + \"ms\");\n if (!hasUpdate) {\n return;\n }\n sendMessage(JSON.stringify({\n event: 'client-hmr-latency',\n id: window.__nextDevClientId,\n startTime: startMsSinceEpoch,\n endTime: endMsSinceEpoch,\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(latencyMs);\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=report-hmr-latency.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9yZXBvcnQtaG1yLWxhdGVuY3kuanMiLCJtYXBwaW5ncyI6Ijs7OzsyQ0FpQkE7OztlQUF3QkE7OztBQUFULFNBQVNBLGlCQUN0QkMsV0FBc0MsRUFDdENDLGNBQThDLEVBQzlDQyxpQkFBeUIsRUFDekJDLGVBQXVCLEVBQ3ZCQyxTQUF5QjtJQUF6QkEsSUFBQUEsY0FBQUEsS0FBQUEsR0FBQUEsWUFBcUI7SUFFckIsTUFBTUMsWUFBWUYsa0JBQWtCRDtJQUNwQ0ksUUFBUUMsR0FBRyxDQUFFLDRCQUF5QkYsWUFBVTtJQUNoRCxJQUFJLENBQUNELFdBQVc7UUFDZDtJQUNGO0lBQ0FKLFlBQ0VRLEtBQUtDLFNBQVMsQ0FBQztRQUNiQyxPQUFPO1FBQ1BDLElBQUlDLE9BQU9DLGlCQUFpQjtRQUM1QkMsV0FBV1o7UUFDWGEsU0FBU1o7UUFDVGEsTUFBTUosT0FBT0ssUUFBUSxDQUFDQyxRQUFRO1FBQzlCakI7UUFDQSxvRUFBb0U7UUFDcEUsc0RBQXNEO1FBQ3REa0IsY0FBY0MsU0FBU0MsZUFBZSxLQUFLO0lBQzdDO0lBRUYsSUFBSUMsS0FBS0MscUJBQXFCLEVBQUU7UUFDOUJELEtBQUtDLHFCQUFxQixDQUFDbEI7SUFDN0I7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvZGV2L3JlcG9ydC1obXItbGF0ZW5jeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIF9fTkVYVF9ITVJfTEFURU5DWV9DQjogKChsYXRlbmN5TXM6IG51bWJlcikgPT4gdm9pZCkgfCB1bmRlZmluZWRcbiAgfVxufVxuXG4vKipcbiAqIExvZ3MgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21wbGV0ZWQgSE1SIHRvIHRoZSBjb25zb2xlLCB0aGUgc2VydmVyICh2aWEgYVxuICogYGNsaWVudC1obXItbGF0ZW5jeWAgZXZlbnQpLCBhbmQgdG8gYHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCYCAoYSBkZWJ1Z2dpbmdcbiAqIGhvb2spLlxuICpcbiAqIEBwYXJhbSBoYXNVcGRhdGUgU2V0IHRoaXMgdG8gYGZhbHNlYCB0byBhdm9pZCByZXBvcnRpbmcgdGhlIEhNUiBldmVudCB2aWEgYVxuICogICBgY2xpZW50LWhtci1sYXRlbmN5YCBldmVudCBvciB0byBgc2VsZi5fX05FWFRfSE1SX0xBVEVOQ1lfQ0JgLiBVc2VkIGJ5XG4gKiAgIHR1cmJvcGFjayB3aGVuIHdlIG11c3QgcmVwb3J0IGEgbWVzc2FnZSB0byB0aGUgYnJvd3NlciBjb25zb2xlIChiZWNhdXNlIHdlXG4gKiAgIGFscmVhZHkgbG9nZ2VkIGEgXCJyZWJ1aWxkaW5nXCIgbWVzc2FnZSksIGJ1dCBpdCdzIG5vdCBhIHJlYWwgSE1SLCBzbyB3ZVxuICogICBkb24ndCB3YW50IHRvIGltcGFjdCBvdXIgdGVsZW1ldHJ5LlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXBvcnRIbXJMYXRlbmN5KFxuICBzZW5kTWVzc2FnZTogKG1lc3NhZ2U6IHN0cmluZykgPT4gdm9pZCxcbiAgdXBkYXRlZE1vZHVsZXM6IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyPixcbiAgc3RhcnRNc1NpbmNlRXBvY2g6IG51bWJlcixcbiAgZW5kTXNTaW5jZUVwb2NoOiBudW1iZXIsXG4gIGhhc1VwZGF0ZTogYm9vbGVhbiA9IHRydWVcbikge1xuICBjb25zdCBsYXRlbmN5TXMgPSBlbmRNc1NpbmNlRXBvY2ggLSBzdGFydE1zU2luY2VFcG9jaFxuICBjb25zb2xlLmxvZyhgW0Zhc3QgUmVmcmVzaF0gZG9uZSBpbiAke2xhdGVuY3lNc31tc2ApXG4gIGlmICghaGFzVXBkYXRlKSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgc2VuZE1lc3NhZ2UoXG4gICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZXZlbnQ6ICdjbGllbnQtaG1yLWxhdGVuY3knLFxuICAgICAgaWQ6IHdpbmRvdy5fX25leHREZXZDbGllbnRJZCxcbiAgICAgIHN0YXJ0VGltZTogc3RhcnRNc1NpbmNlRXBvY2gsXG4gICAgICBlbmRUaW1lOiBlbmRNc1NpbmNlRXBvY2gsXG4gICAgICBwYWdlOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsXG4gICAgICB1cGRhdGVkTW9kdWxlcyxcbiAgICAgIC8vIFdoZXRoZXIgdGhlIHBhZ2UgKHRhYikgd2FzIGhpZGRlbiBhdCB0aGUgdGltZSB0aGUgZXZlbnQgb2NjdXJyZWQuXG4gICAgICAvLyBUaGlzIGNhbiBpbXBhY3QgdGhlIGFjY3VyYWN5IG9mIHRoZSBldmVudCdzIHRpbWluZy5cbiAgICAgIGlzUGFnZUhpZGRlbjogZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlID09PSAnaGlkZGVuJyxcbiAgICB9KVxuICApXG4gIGlmIChzZWxmLl9fTkVYVF9ITVJfTEFURU5DWV9DQikge1xuICAgIHNlbGYuX19ORVhUX0hNUl9MQVRFTkNZX0NCKGxhdGVuY3lNcylcbiAgfVxufVxuIl0sIm5hbWVzIjpbInJlcG9ydEhtckxhdGVuY3kiLCJzZW5kTWVzc2FnZSIsInVwZGF0ZWRNb2R1bGVzIiwic3RhcnRNc1NpbmNlRXBvY2giLCJlbmRNc1NpbmNlRXBvY2giLCJoYXNVcGRhdGUiLCJsYXRlbmN5TXMiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImV2ZW50IiwiaWQiLCJ3aW5kb3ciLCJfX25leHREZXZDbGllbnRJZCIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJwYWdlIiwibG9jYXRpb24iLCJwYXRobmFtZSIsImlzUGFnZUhpZGRlbiIsImRvY3VtZW50IiwidmlzaWJpbGl0eVN0YXRlIiwic2VsZiIsIl9fTkVYVF9ITVJfTEFURU5DWV9DQiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/report-hmr-latency.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/runtime-error-handler.js": /*!***********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/runtime-error-handler.js ***! \***********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"RuntimeErrorHandler\", ({\n enumerable: true,\n get: function() {\n return RuntimeErrorHandler;\n }\n}));\nconst RuntimeErrorHandler = {\n hadRuntimeError: 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=runtime-error-handler.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2Rldi9ydW50aW1lLWVycm9yLWhhbmRsZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozt1REFBYUE7OztlQUFBQTs7O0FBQU4sTUFBTUEsc0JBQXNCO0lBQ2pDQyxpQkFBaUI7QUFDbkIiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L2Rldi9ydW50aW1lLWVycm9yLWhhbmRsZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFJ1bnRpbWVFcnJvckhhbmRsZXIgPSB7XG4gIGhhZFJ1bnRpbWVFcnJvcjogZmFsc2UsXG59XG4iXSwibmFtZXMiOlsiUnVudGltZUVycm9ySGFuZGxlciIsImhhZFJ1bnRpbWVFcnJvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/dev/runtime-error-handler.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js": /*!*****************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js ***! \*****************************************************************************************************************************************/ /***/ ((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 getFlightDataPartsFromPath: function() {\n return getFlightDataPartsFromPath;\n },\n getNextFlightSegmentPath: function() {\n return getNextFlightSegmentPath;\n },\n normalizeFlightData: function() {\n return normalizeFlightData;\n },\n prepareFlightRouterStateForRequest: function() {\n return prepareFlightRouterStateForRequest;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nfunction getFlightDataPartsFromPath(flightDataPath) {\n // Pick the last 4 items from the `FlightDataPath` to get the [tree, seedData, viewport, isHeadPartial].\n const flightDataPathLength = 4;\n // tree, seedData, and head are *always* the last three items in the `FlightDataPath`.\n const [tree, seedData, head, isHeadPartial] = flightDataPath.slice(-flightDataPathLength);\n // The `FlightSegmentPath` is everything except the last three items. For a root render, it won't be present.\n const segmentPath = flightDataPath.slice(0, -flightDataPathLength);\n var _segmentPath_;\n return {\n // TODO: Unify these two segment path helpers. We are inconsistently pushing an empty segment (\"\")\n // to the start of the segment path in some places which makes it hard to use solely the segment path.\n // Look for \"// TODO-APP: remove ''\" in the codebase.\n pathToSegment: segmentPath.slice(0, -1),\n segmentPath,\n // if the `FlightDataPath` corresponds with the root, there'll be no segment path,\n // in which case we default to ''.\n segment: (_segmentPath_ = segmentPath[segmentPath.length - 1]) != null ? _segmentPath_ : '',\n tree,\n seedData,\n head,\n isHeadPartial,\n isRootRender: flightDataPath.length === flightDataPathLength\n };\n}\nfunction getNextFlightSegmentPath(flightSegmentPath) {\n // Since `FlightSegmentPath` is a repeated tuple of `Segment` and `ParallelRouteKey`, we slice off two items\n // to get the next segment path.\n return flightSegmentPath.slice(2);\n}\nfunction normalizeFlightData(flightData) {\n // FlightData can be a string when the server didn't respond with a proper flight response,\n // or when a redirect happens, to signal to the client that it needs to perform an MPA navigation.\n if (typeof flightData === 'string') {\n return flightData;\n }\n return flightData.map((flightDataPath)=>getFlightDataPartsFromPath(flightDataPath));\n}\nfunction prepareFlightRouterStateForRequest(flightRouterState, isHmrRefresh) {\n // HMR requests need the complete, unmodified state for proper functionality\n if (isHmrRefresh) {\n return encodeURIComponent(JSON.stringify(flightRouterState));\n }\n return encodeURIComponent(JSON.stringify(stripClientOnlyDataFromFlightRouterState(flightRouterState)));\n}\n/**\n * Recursively strips client-only data from FlightRouterState while preserving\n * server-needed information for proper rendering decisions.\n */ function stripClientOnlyDataFromFlightRouterState(flightRouterState) {\n const [segment, parallelRoutes, _url, refreshMarker, isRootLayout, hasLoadingBoundary] = flightRouterState;\n // __PAGE__ segments are always fetched from the server, so there's\n // no need to send them up\n const cleanedSegment = stripSearchParamsFromPageSegment(segment);\n // Recursively process parallel routes\n const cleanedParallelRoutes = {};\n for (const [key, childState] of Object.entries(parallelRoutes)){\n cleanedParallelRoutes[key] = stripClientOnlyDataFromFlightRouterState(childState);\n }\n const result = [\n cleanedSegment,\n cleanedParallelRoutes,\n null,\n shouldPreserveRefreshMarker(refreshMarker) ? refreshMarker : null\n ];\n // Append optional fields if present\n if (isRootLayout !== undefined) {\n result[4] = isRootLayout;\n }\n if (hasLoadingBoundary !== undefined) {\n result[5] = hasLoadingBoundary;\n }\n return result;\n}\n/**\n * Strips search parameters from __PAGE__ segments to prevent sensitive\n * client-side data from being sent to the server.\n */ function stripSearchParamsFromPageSegment(segment) {\n if (typeof segment === 'string' && segment.startsWith(_segment.PAGE_SEGMENT_KEY + '?')) {\n return _segment.PAGE_SEGMENT_KEY;\n }\n return segment;\n}\n/**\n * Determines whether the refresh marker should be sent to the server\n * Client-only markers like 'refresh' are stripped, while server-needed markers\n * like 'refetch' and 'inside-shared-layout' are preserved.\n */ function shouldPreserveRefreshMarker(refreshMarker) {\n return Boolean(refreshMarker && refreshMarker !== 'refresh');\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=flight-data-helpers.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2ZsaWdodC1kYXRhLWhlbHBlcnMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBZ0NnQkEsMEJBQTBCO2VBQTFCQTs7SUE0QkFDLHdCQUF3QjtlQUF4QkE7O0lBUUFDLG1CQUFtQjtlQUFuQkE7O0lBc0JBQyxrQ0FBa0M7ZUFBbENBOzs7cUNBakZpQjtBQXVCMUIsU0FBU0gsMkJBQ2RJLGNBQThCO0lBRTlCLHdHQUF3RztJQUN4RyxNQUFNQyx1QkFBdUI7SUFDN0Isc0ZBQXNGO0lBQ3RGLE1BQU0sQ0FBQ0MsTUFBTUMsVUFBVUMsTUFBTUMsY0FBYyxHQUN6Q0wsZUFBZU0sS0FBSyxDQUFDLENBQUNMO0lBQ3hCLDZHQUE2RztJQUM3RyxNQUFNTSxjQUFjUCxlQUFlTSxLQUFLLENBQUMsR0FBRyxDQUFDTDtRQVVsQ007SUFSWCxPQUFPO1FBQ0wsa0dBQWtHO1FBQ2xHLHNHQUFzRztRQUN0RyxxREFBcUQ7UUFDckRDLGVBQWVELFlBQVlELEtBQUssQ0FBQyxHQUFHLENBQUM7UUFDckNDO1FBQ0Esa0ZBQWtGO1FBQ2xGLGtDQUFrQztRQUNsQ0UsU0FBU0YsQ0FBQUEsZ0JBQUFBLFdBQVcsQ0FBQ0EsWUFBWUcsTUFBTSxHQUFHLE9BQUUsT0FBbkNILGdCQUF1QztRQUNoREw7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQU0sY0FBY1gsZUFBZVUsTUFBTSxLQUFLVDtJQUMxQztBQUNGO0FBRU8sU0FBU0oseUJBQ2RlLGlCQUFvQztJQUVwQyw0R0FBNEc7SUFDNUcsZ0NBQWdDO0lBQ2hDLE9BQU9BLGtCQUFrQk4sS0FBSyxDQUFDO0FBQ2pDO0FBRU8sU0FBU1Isb0JBQ2RlLFVBQXNCO0lBRXRCLDJGQUEyRjtJQUMzRixrR0FBa0c7SUFDbEcsSUFBSSxPQUFPQSxlQUFlLFVBQVU7UUFDbEMsT0FBT0E7SUFDVDtJQUVBLE9BQU9BLFdBQVdDLEdBQUcsQ0FBQyxDQUFDZCxpQkFDckJKLDJCQUEyQkk7QUFFL0I7QUFVTyxTQUFTRCxtQ0FDZGdCLGlCQUFvQyxFQUNwQ0MsWUFBc0I7SUFFdEIsNEVBQTRFO0lBQzVFLElBQUlBLGNBQWM7UUFDaEIsT0FBT0MsbUJBQW1CQyxLQUFLQyxTQUFTLENBQUNKO0lBQzNDO0lBRUEsT0FBT0UsbUJBQ0xDLEtBQUtDLFNBQVMsQ0FBQ0MseUNBQXlDTDtBQUU1RDtBQUVBOzs7Q0FHQyxHQUNELFNBQVNLLHlDQUNQTCxpQkFBb0M7SUFFcEMsTUFBTSxDQUNKTixTQUNBWSxnQkFDQUMsTUFDQUMsZUFDQUMsY0FDQUMsbUJBQ0QsR0FBR1Y7SUFFSixtRUFBbUU7SUFDbkUsMEJBQTBCO0lBQzFCLE1BQU1XLGlCQUFpQkMsaUNBQWlDbEI7SUFFeEQsc0NBQXNDO0lBQ3RDLE1BQU1tQix3QkFBOEQsQ0FBQztJQUNyRSxLQUFLLE1BQU0sQ0FBQ0MsS0FBS0MsV0FBVyxJQUFJQyxPQUFPQyxPQUFPLENBQUNYLGdCQUFpQjtRQUM5RE8scUJBQXFCLENBQUNDLElBQUksR0FDeEJULHlDQUF5Q1U7SUFDN0M7SUFFQSxNQUFNRyxTQUE0QjtRQUNoQ1A7UUFDQUU7UUFDQTtRQUNBTSw0QkFBNEJYLGlCQUFpQkEsZ0JBQWdCO0tBQzlEO0lBRUQsb0NBQW9DO0lBQ3BDLElBQUlDLGlCQUFpQlcsV0FBVztRQUM5QkYsTUFBTSxDQUFDLEVBQUUsR0FBR1Q7SUFDZDtJQUNBLElBQUlDLHVCQUF1QlUsV0FBVztRQUNwQ0YsTUFBTSxDQUFDLEVBQUUsR0FBR1I7SUFDZDtJQUVBLE9BQU9RO0FBQ1Q7QUFFQTs7O0NBR0MsR0FDRCxTQUFTTixpQ0FBaUNsQixPQUFnQjtJQUN4RCxJQUNFLE9BQU9BLFlBQVksWUFDbkJBLFFBQVEyQixVQUFVLENBQUNDLFNBQUFBLGdCQUFnQixHQUFHLE1BQ3RDO1FBQ0EsT0FBT0EsU0FBQUEsZ0JBQWdCO0lBQ3pCO0lBQ0EsT0FBTzVCO0FBQ1Q7QUFFQTs7OztDQUlDLEdBQ0QsU0FBU3lCLDRCQUNQWCxhQUFtQztJQUVuQyxPQUFPZSxRQUFRZixpQkFBaUJBLGtCQUFrQjtBQUNwRCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3NyYy9jbGllbnQvZmxpZ2h0LWRhdGEtaGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIENhY2hlTm9kZVNlZWREYXRhLFxuICBGbGlnaHREYXRhLFxuICBGbGlnaHREYXRhUGF0aCxcbiAgRmxpZ2h0Um91dGVyU3RhdGUsXG4gIEZsaWdodFNlZ21lbnRQYXRoLFxuICBTZWdtZW50LFxufSBmcm9tICcuLi9zZXJ2ZXIvYXBwLXJlbmRlci90eXBlcydcbmltcG9ydCB0eXBlIHsgSGVhZERhdGEgfSBmcm9tICcuLi9zaGFyZWQvbGliL2FwcC1yb3V0ZXItY29udGV4dC5zaGFyZWQtcnVudGltZSdcbmltcG9ydCB7IFBBR0VfU0VHTUVOVF9LRVkgfSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5cbmV4cG9ydCB0eXBlIE5vcm1hbGl6ZWRGbGlnaHREYXRhID0ge1xuICAvKipcbiAgICogVGhlIGZ1bGwgYEZsaWdodFNlZ21lbnRQYXRoYCBpbmNsdXNpdmUgb2YgdGhlIGZpbmFsIGBTZWdtZW50YFxuICAgKi9cbiAgc2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoXG4gIC8qKlxuICAgKiBUaGUgYEZsaWdodFNlZ21lbnRQYXRoYCBleGNsdXNpdmUgb2YgdGhlIGZpbmFsIGBTZWdtZW50YFxuICAgKi9cbiAgcGF0aFRvU2VnbWVudDogRmxpZ2h0U2VnbWVudFBhdGhcbiAgc2VnbWVudDogU2VnbWVudFxuICB0cmVlOiBGbGlnaHRSb3V0ZXJTdGF0ZVxuICBzZWVkRGF0YTogQ2FjaGVOb2RlU2VlZERhdGEgfCBudWxsXG4gIGhlYWQ6IEhlYWREYXRhXG4gIGlzSGVhZFBhcnRpYWw6IGJvb2xlYW5cbiAgaXNSb290UmVuZGVyOiBib29sZWFuXG59XG5cbi8vIFRPRE86IFdlIHNob3VsZCBvbmx5IGhhdmUgdG8gZXhwb3J0IGBub3JtYWxpemVGbGlnaHREYXRhYCwgaG93ZXZlciBiZWNhdXNlIHRoZSBpbml0aWFsIGZsaWdodCBkYXRhXG4vLyB0aGF0IGdldHMgcGFzc2VkIHRvIGBjcmVhdGVJbml0aWFsUm91dGVyU3RhdGVgIGRvZXNuJ3QgY29uZm9ybSB0byB0aGUgYEZsaWdodERhdGFQYXRoYCB0eXBlIChpdCdzIG1pc3NpbmcgdGhlIHJvb3Qgc2VnbWVudClcbi8vIHdlJ3JlIGN1cnJlbnRseSBleHBvcnRpbmcgaXQgc28gd2UgY2FuIHVzZSBpdCBkaXJlY3RseS4gVGhpcyBzaG91bGQgYmUgZml4ZWQgYXMgcGFydCBvZiB0aGUgdW5pZmljYXRpb24gb2Zcbi8vIHRoZSBkaWZmZXJlbnQgd2F5cyB3ZSBleHByZXNzIGBGbGlnaHRTZWdtZW50UGF0aGAuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgoXG4gIGZsaWdodERhdGFQYXRoOiBGbGlnaHREYXRhUGF0aFxuKTogTm9ybWFsaXplZEZsaWdodERhdGEge1xuICAvLyBQaWNrIHRoZSBsYXN0IDQgaXRlbXMgZnJvbSB0aGUgYEZsaWdodERhdGFQYXRoYCB0byBnZXQgdGhlIFt0cmVlLCBzZWVkRGF0YSwgdmlld3BvcnQsIGlzSGVhZFBhcnRpYWxdLlxuICBjb25zdCBmbGlnaHREYXRhUGF0aExlbmd0aCA9IDRcbiAgLy8gdHJlZSwgc2VlZERhdGEsIGFuZCBoZWFkIGFyZSAqYWx3YXlzKiB0aGUgbGFzdCB0aHJlZSBpdGVtcyBpbiB0aGUgYEZsaWdodERhdGFQYXRoYC5cbiAgY29uc3QgW3RyZWUsIHNlZWREYXRhLCBoZWFkLCBpc0hlYWRQYXJ0aWFsXSA9XG4gICAgZmxpZ2h0RGF0YVBhdGguc2xpY2UoLWZsaWdodERhdGFQYXRoTGVuZ3RoKVxuICAvLyBUaGUgYEZsaWdodFNlZ21lbnRQYXRoYCBpcyBldmVyeXRoaW5nIGV4Y2VwdCB0aGUgbGFzdCB0aHJlZSBpdGVtcy4gRm9yIGEgcm9vdCByZW5kZXIsIGl0IHdvbid0IGJlIHByZXNlbnQuXG4gIGNvbnN0IHNlZ21lbnRQYXRoID0gZmxpZ2h0RGF0YVBhdGguc2xpY2UoMCwgLWZsaWdodERhdGFQYXRoTGVuZ3RoKVxuXG4gIHJldHVybiB7XG4gICAgLy8gVE9ETzogVW5pZnkgdGhlc2UgdHdvIHNlZ21lbnQgcGF0aCBoZWxwZXJzLiBXZSBhcmUgaW5jb25zaXN0ZW50bHkgcHVzaGluZyBhbiBlbXB0eSBzZWdtZW50IChcIlwiKVxuICAgIC8vIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VnbWVudCBwYXRoIGluIHNvbWUgcGxhY2VzIHdoaWNoIG1ha2VzIGl0IGhhcmQgdG8gdXNlIHNvbGVseSB0aGUgc2VnbWVudCBwYXRoLlxuICAgIC8vIExvb2sgZm9yIFwiLy8gVE9ETy1BUFA6IHJlbW92ZSAnJ1wiIGluIHRoZSBjb2RlYmFzZS5cbiAgICBwYXRoVG9TZWdtZW50OiBzZWdtZW50UGF0aC5zbGljZSgwLCAtMSksXG4gICAgc2VnbWVudFBhdGgsXG4gICAgLy8gaWYgdGhlIGBGbGlnaHREYXRhUGF0aGAgY29ycmVzcG9uZHMgd2l0aCB0aGUgcm9vdCwgdGhlcmUnbGwgYmUgbm8gc2VnbWVudCBwYXRoLFxuICAgIC8vIGluIHdoaWNoIGNhc2Ugd2UgZGVmYXVsdCB0byAnJy5cbiAgICBzZWdtZW50OiBzZWdtZW50UGF0aFtzZWdtZW50UGF0aC5sZW5ndGggLSAxXSA/PyAnJyxcbiAgICB0cmVlLFxuICAgIHNlZWREYXRhLFxuICAgIGhlYWQsXG4gICAgaXNIZWFkUGFydGlhbCxcbiAgICBpc1Jvb3RSZW5kZXI6IGZsaWdodERhdGFQYXRoLmxlbmd0aCA9PT0gZmxpZ2h0RGF0YVBhdGhMZW5ndGgsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE5leHRGbGlnaHRTZWdtZW50UGF0aChcbiAgZmxpZ2h0U2VnbWVudFBhdGg6IEZsaWdodFNlZ21lbnRQYXRoXG4pOiBGbGlnaHRTZWdtZW50UGF0aCB7XG4gIC8vIFNpbmNlIGBGbGlnaHRTZWdtZW50UGF0aGAgaXMgYSByZXBlYXRlZCB0dXBsZSBvZiBgU2VnbWVudGAgYW5kIGBQYXJhbGxlbFJvdXRlS2V5YCwgd2Ugc2xpY2Ugb2ZmIHR3byBpdGVtc1xuICAvLyB0byBnZXQgdGhlIG5leHQgc2VnbWVudCBwYXRoLlxuICByZXR1cm4gZmxpZ2h0U2VnbWVudFBhdGguc2xpY2UoMilcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUZsaWdodERhdGEoXG4gIGZsaWdodERhdGE6IEZsaWdodERhdGFcbik6IE5vcm1hbGl6ZWRGbGlnaHREYXRhW10gfCBzdHJpbmcge1xuICAvLyBGbGlnaHREYXRhIGNhbiBiZSBhIHN0cmluZyB3aGVuIHRoZSBzZXJ2ZXIgZGlkbid0IHJlc3BvbmQgd2l0aCBhIHByb3BlciBmbGlnaHQgcmVzcG9uc2UsXG4gIC8vIG9yIHdoZW4gYSByZWRpcmVjdCBoYXBwZW5zLCB0byBzaWduYWwgdG8gdGhlIGNsaWVudCB0aGF0IGl0IG5lZWRzIHRvIHBlcmZvcm0gYW4gTVBBIG5hdmlnYXRpb24uXG4gIGlmICh0eXBlb2YgZmxpZ2h0RGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmxpZ2h0RGF0YVxuICB9XG5cbiAgcmV0dXJuIGZsaWdodERhdGEubWFwKChmbGlnaHREYXRhUGF0aCkgPT5cbiAgICBnZXRGbGlnaHREYXRhUGFydHNGcm9tUGF0aChmbGlnaHREYXRhUGF0aClcbiAgKVxufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwcmVwYXJlIHRoZSBmbGlnaHQgcm91dGVyIHN0YXRlIGZvciB0aGUgcmVxdWVzdC5cbiAqIEl0IHJlbW92ZXMgbWFya2VycyB0aGF0IGFyZSBub3QgbmVlZGVkIGJ5IHRoZSBzZXJ2ZXIsIGFuZCBhcmUgcHVyZWx5IHVzZWRcbiAqIGZvciBzdGFzaGluZyBzdGF0ZSBvbiB0aGUgY2xpZW50LlxuICogQHBhcmFtIGZsaWdodFJvdXRlclN0YXRlIC0gVGhlIGZsaWdodCByb3V0ZXIgc3RhdGUgdG8gcHJlcGFyZS5cbiAqIEBwYXJhbSBpc0htclJlZnJlc2ggLSBXaGV0aGVyIHRoaXMgaXMgYW4gSE1SIHJlZnJlc2ggcmVxdWVzdC5cbiAqIEByZXR1cm5zIFRoZSBwcmVwYXJlZCBmbGlnaHQgcm91dGVyIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdChcbiAgZmxpZ2h0Um91dGVyU3RhdGU6IEZsaWdodFJvdXRlclN0YXRlLFxuICBpc0htclJlZnJlc2g/OiBib29sZWFuXG4pOiBzdHJpbmcge1xuICAvLyBITVIgcmVxdWVzdHMgbmVlZCB0aGUgY29tcGxldGUsIHVubW9kaWZpZWQgc3RhdGUgZm9yIHByb3BlciBmdW5jdGlvbmFsaXR5XG4gIGlmIChpc0htclJlZnJlc2gpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZsaWdodFJvdXRlclN0YXRlKSlcbiAgfVxuXG4gIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoXG4gICAgSlNPTi5zdHJpbmdpZnkoc3RyaXBDbGllbnRPbmx5RGF0YUZyb21GbGlnaHRSb3V0ZXJTdGF0ZShmbGlnaHRSb3V0ZXJTdGF0ZSkpXG4gIClcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBzdHJpcHMgY2xpZW50LW9ubHkgZGF0YSBmcm9tIEZsaWdodFJvdXRlclN0YXRlIHdoaWxlIHByZXNlcnZpbmdcbiAqIHNlcnZlci1uZWVkZWQgaW5mb3JtYXRpb24gZm9yIHByb3BlciByZW5kZXJpbmcgZGVjaXNpb25zLlxuICovXG5mdW5jdGlvbiBzdHJpcENsaWVudE9ubHlEYXRhRnJvbUZsaWdodFJvdXRlclN0YXRlKFxuICBmbGlnaHRSb3V0ZXJTdGF0ZTogRmxpZ2h0Um91dGVyU3RhdGVcbik6IEZsaWdodFJvdXRlclN0YXRlIHtcbiAgY29uc3QgW1xuICAgIHNlZ21lbnQsXG4gICAgcGFyYWxsZWxSb3V0ZXMsXG4gICAgX3VybCwgLy8gSW50ZW50aW9uYWxseSB1bnVzZWQgLSBVUkxzIGFyZSBjbGllbnQtb25seVxuICAgIHJlZnJlc2hNYXJrZXIsXG4gICAgaXNSb290TGF5b3V0LFxuICAgIGhhc0xvYWRpbmdCb3VuZGFyeSxcbiAgXSA9IGZsaWdodFJvdXRlclN0YXRlXG5cbiAgLy8gX19QQUdFX18gc2VnbWVudHMgYXJlIGFsd2F5cyBmZXRjaGVkIGZyb20gdGhlIHNlcnZlciwgc28gdGhlcmUnc1xuICAvLyBubyBuZWVkIHRvIHNlbmQgdGhlbSB1cFxuICBjb25zdCBjbGVhbmVkU2VnbWVudCA9IHN0cmlwU2VhcmNoUGFyYW1zRnJvbVBhZ2VTZWdtZW50KHNlZ21lbnQpXG5cbiAgLy8gUmVjdXJzaXZlbHkgcHJvY2VzcyBwYXJhbGxlbCByb3V0ZXNcbiAgY29uc3QgY2xlYW5lZFBhcmFsbGVsUm91dGVzOiB7IFtrZXk6IHN0cmluZ106IEZsaWdodFJvdXRlclN0YXRlIH0gPSB7fVxuICBmb3IgKGNvbnN0IFtrZXksIGNoaWxkU3RhdGVdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFsbGVsUm91dGVzKSkge1xuICAgIGNsZWFuZWRQYXJhbGxlbFJvdXRlc1trZXldID1cbiAgICAgIHN0cmlwQ2xpZW50T25seURhdGFGcm9tRmxpZ2h0Um91dGVyU3RhdGUoY2hpbGRTdGF0ZSlcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogRmxpZ2h0Um91dGVyU3RhdGUgPSBbXG4gICAgY2xlYW5lZFNlZ21lbnQsXG4gICAgY2xlYW5lZFBhcmFsbGVsUm91dGVzLFxuICAgIG51bGwsIC8vIFVSTHMgb21pdHRlZCAtIHNlcnZlciByZWNvbnN0cnVjdHMgcGF0aHMgZnJvbSBzZWdtZW50c1xuICAgIHNob3VsZFByZXNlcnZlUmVmcmVzaE1hcmtlcihyZWZyZXNoTWFya2VyKSA/IHJlZnJlc2hNYXJrZXIgOiBudWxsLFxuICBdXG5cbiAgLy8gQXBwZW5kIG9wdGlvbmFsIGZpZWxkcyBpZiBwcmVzZW50XG4gIGlmIChpc1Jvb3RMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlc3VsdFs0XSA9IGlzUm9vdExheW91dFxuICB9XG4gIGlmIChoYXNMb2FkaW5nQm91bmRhcnkgIT09IHVuZGVmaW5lZCkge1xuICAgIHJlc3VsdFs1XSA9IGhhc0xvYWRpbmdCb3VuZGFyeVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG4vKipcbiAqIFN0cmlwcyBzZWFyY2ggcGFyYW1ldGVycyBmcm9tIF9fUEFHRV9fIHNlZ21lbnRzIHRvIHByZXZlbnQgc2Vuc2l0aXZlXG4gKiBjbGllbnQtc2lkZSBkYXRhIGZyb20gYmVpbmcgc2VudCB0byB0aGUgc2VydmVyLlxuICovXG5mdW5jdGlvbiBzdHJpcFNlYXJjaFBhcmFtc0Zyb21QYWdlU2VnbWVudChzZWdtZW50OiBTZWdtZW50KTogU2VnbWVudCB7XG4gIGlmIChcbiAgICB0eXBlb2Ygc2VnbWVudCA9PT0gJ3N0cmluZycgJiZcbiAgICBzZWdtZW50LnN0YXJ0c1dpdGgoUEFHRV9TRUdNRU5UX0tFWSArICc/JylcbiAgKSB7XG4gICAgcmV0dXJuIFBBR0VfU0VHTUVOVF9LRVlcbiAgfVxuICByZXR1cm4gc2VnbWVudFxufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0aGUgcmVmcmVzaCBtYXJrZXIgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIHNlcnZlclxuICogQ2xpZW50LW9ubHkgbWFya2VycyBsaWtlICdyZWZyZXNoJyBhcmUgc3RyaXBwZWQsIHdoaWxlIHNlcnZlci1uZWVkZWQgbWFya2Vyc1xuICogbGlrZSAncmVmZXRjaCcgYW5kICdpbnNpZGUtc2hhcmVkLWxheW91dCcgYXJlIHByZXNlcnZlZC5cbiAqL1xuZnVuY3Rpb24gc2hvdWxkUHJlc2VydmVSZWZyZXNoTWFya2VyKFxuICByZWZyZXNoTWFya2VyOiBGbGlnaHRSb3V0ZXJTdGF0ZVszXVxuKTogYm9vbGVhbiB7XG4gIHJldHVybiBCb29sZWFuKHJlZnJlc2hNYXJrZXIgJiYgcmVmcmVzaE1hcmtlciAhPT0gJ3JlZnJlc2gnKVxufVxuIl0sIm5hbWVzIjpbImdldEZsaWdodERhdGFQYXJ0c0Zyb21QYXRoIiwiZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoIiwibm9ybWFsaXplRmxpZ2h0RGF0YSIsInByZXBhcmVGbGlnaHRSb3V0ZXJTdGF0ZUZvclJlcXVlc3QiLCJmbGlnaHREYXRhUGF0aCIsImZsaWdodERhdGFQYXRoTGVuZ3RoIiwidHJlZSIsInNlZWREYXRhIiwiaGVhZCIsImlzSGVhZFBhcnRpYWwiLCJzbGljZSIsInNlZ21lbnRQYXRoIiwicGF0aFRvU2VnbWVudCIsInNlZ21lbnQiLCJsZW5ndGgiLCJpc1Jvb3RSZW5kZXIiLCJmbGlnaHRTZWdtZW50UGF0aCIsImZsaWdodERhdGEiLCJtYXAiLCJmbGlnaHRSb3V0ZXJTdGF0ZSIsImlzSG1yUmVmcmVzaCIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdHJpcENsaWVudE9ubHlEYXRhRnJvbUZsaWdodFJvdXRlclN0YXRlIiwicGFyYWxsZWxSb3V0ZXMiLCJfdXJsIiwicmVmcmVzaE1hcmtlciIsImlzUm9vdExheW91dCIsImhhc0xvYWRpbmdCb3VuZGFyeSIsImNsZWFuZWRTZWdtZW50Iiwic3RyaXBTZWFyY2hQYXJhbXNGcm9tUGFnZVNlZ21lbnQiLCJjbGVhbmVkUGFyYWxsZWxSb3V0ZXMiLCJrZXkiLCJjaGlsZFN0YXRlIiwiT2JqZWN0IiwiZW50cmllcyIsInJlc3VsdCIsInNob3VsZFByZXNlcnZlUmVmcmVzaE1hcmtlciIsInVuZGVmaW5lZCIsInN0YXJ0c1dpdGgiLCJQQUdFX1NFR01FTlRfS0VZIiwiQm9vbGVhbiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/flight-data-helpers.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/has-base-path.js": /*!***********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/has-base-path.js ***! \***********************************************************************************************************************************/ /***/ ((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 */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2hhcy1iYXNlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OzsrQ0FJZ0JBOzs7ZUFBQUE7OzsyQ0FKYztBQUU5QixNQUFNQyxXQUFZQyxNQUFrQyxJQUFlO0FBRTVELFNBQVNGLFlBQVlLLElBQVk7SUFDdEMsT0FBT0MsQ0FBQUEsR0FBQUEsZUFBQUEsYUFBQUEsRUFBY0QsTUFBTUo7QUFDN0IiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS9zcmMvY2xpZW50L2hhcy1iYXNlLXBhdGgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGF0aEhhc1ByZWZpeCB9IGZyb20gJy4uL3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL3BhdGgtaGFzLXByZWZpeCdcblxuY29uc3QgYmFzZVBhdGggPSAocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCBhcyBzdHJpbmcpIHx8ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNCYXNlUGF0aChwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHBhdGhIYXNQcmVmaXgocGF0aCwgYmFzZVBhdGgpXG59XG4iXSwibmFtZXMiOlsiaGFzQmFzZVBhdGgiLCJiYXNlUGF0aCIsInByb2Nlc3MiLCJlbnYiLCJfX05FWFRfUk9VVEVSX0JBU0VQQVRIIiwicGF0aCIsInBhdGhIYXNQcmVmaXgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/has-base-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/lib/console.js": /*!*********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/lib/console.js ***! \*********************************************************************************************************************************/ /***/ ((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 formatConsoleArgs: function() {\n return formatConsoleArgs;\n },\n parseConsoleArgs: function() {\n return parseConsoleArgs;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../lib/is-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/lib/is-error.js\"));\nfunction formatObject(arg, depth) {\n switch(typeof arg){\n case 'object':\n if (arg === null) {\n return 'null';\n } else if (Array.isArray(arg)) {\n let result = '[';\n if (depth < 1) {\n for(let i = 0; i < arg.length; i++){\n if (result !== '[') {\n result += ',';\n }\n if (Object.prototype.hasOwnProperty.call(arg, i)) {\n result += formatObject(arg[i], depth + 1);\n }\n }\n } else {\n result += arg.length > 0 ? '...' : '';\n }\n result += ']';\n return result;\n } else if (arg instanceof Error) {\n return arg + '';\n } else {\n const keys = Object.keys(arg);\n let result = '{';\n if (depth < 1) {\n for(let i = 0; i < keys.length; i++){\n const key = keys[i];\n const desc = Object.getOwnPropertyDescriptor(arg, 'key');\n if (desc && !desc.get && !desc.set) {\n const jsonKey = JSON.stringify(key);\n if (jsonKey !== '\"' + key + '\"') {\n result += jsonKey + ': ';\n } else {\n result += key + ': ';\n }\n result += formatObject(desc.value, depth + 1);\n }\n }\n } else {\n result += keys.length > 0 ? '...' : '';\n }\n result += '}';\n return result;\n }\n case 'string':\n return JSON.stringify(arg);\n case 'number':\n case 'bigint':\n case 'boolean':\n case 'symbol':\n case 'undefined':\n case 'function':\n default:\n return String(arg);\n }\n}\nfunction formatConsoleArgs(args) {\n let message;\n let idx;\n if (typeof args[0] === 'string') {\n message = args[0];\n idx = 1;\n } else {\n message = '';\n idx = 0;\n }\n let result = '';\n let startQuote = false;\n for(let i = 0; i < message.length; ++i){\n const char = message[i];\n if (char !== '%' || i === message.length - 1 || idx >= args.length) {\n result += char;\n continue;\n }\n const code = message[++i];\n switch(code){\n case 'c':\n {\n // TODO: We should colorize with HTML instead of turning into a string.\n // Ignore for now.\n result = startQuote ? \"\" + result + \"]\" : \"[\" + result;\n startQuote = !startQuote;\n idx++;\n break;\n }\n case 'O':\n case 'o':\n {\n result += formatObject(args[idx++], 0);\n break;\n }\n case 'd':\n case 'i':\n {\n result += parseInt(args[idx++], 10);\n break;\n }\n case 'f':\n {\n result += parseFloat(args[idx++]);\n break;\n }\n case 's':\n {\n result += String(args[idx++]);\n break;\n }\n default:\n result += '%' + code;\n }\n }\n for(; idx < args.length; idx++){\n result += (idx > 0 ? ' ' : '') + formatObject(args[idx], 0);\n }\n return result;\n}\nfunction parseConsoleArgs(args) {\n // See\n // https://github.com/facebook/react/blob/65a56d0e99261481c721334a3ec4561d173594cd/packages/react-devtools-shared/src/backend/flight/renderer.js#L88-L93\n //\n // Logs replayed from the server look like this:\n // [\n // \"%c%s%c%o\\n\\n%s\\n\\n%s\\n\",\n // \"background: #e6e6e6; ...\",\n // \" Server \", // can also be e.g. \" Prerender \"\n // \"\",\n // Error,\n // \"The above error occurred in the component.\",\n // ...\n // ]\n if (args.length > 3 && typeof args[0] === 'string' && args[0].startsWith('%c%s%c') && typeof args[1] === 'string' && typeof args[2] === 'string' && typeof args[3] === 'string') {\n const environmentName = args[2];\n const maybeError = args[4];\n return {\n environmentName: environmentName.trim(),\n error: (0, _iserror.default)(maybeError) ? maybeError : null\n };\n }\n return {\n environmentName: null,\n error: null\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=console.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2xpYi9jb25zb2xlLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQTZEZ0JBLGlCQUFpQjtlQUFqQkE7O0lBMkRBQyxnQkFBZ0I7ZUFBaEJBOzs7OzhFQXhISTtBQUVwQixTQUFTQyxhQUFhQyxHQUFZLEVBQUVDLEtBQWE7SUFDL0MsT0FBUSxPQUFPRDtRQUNiLEtBQUs7WUFDSCxJQUFJQSxRQUFRLE1BQU07Z0JBQ2hCLE9BQU87WUFDVCxPQUFPLElBQUlFLE1BQU1DLE9BQU8sQ0FBQ0gsTUFBTTtnQkFDN0IsSUFBSUksU0FBUztnQkFDYixJQUFJSCxRQUFRLEdBQUc7b0JBQ2IsSUFBSyxJQUFJSSxJQUFJLEdBQUdBLElBQUlMLElBQUlNLE1BQU0sRUFBRUQsSUFBSzt3QkFDbkMsSUFBSUQsV0FBVyxLQUFLOzRCQUNsQkEsVUFBVTt3QkFDWjt3QkFDQSxJQUFJRyxPQUFPQyxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDVixLQUFLSyxJQUFJOzRCQUNoREQsVUFBVUwsYUFBYUMsR0FBRyxDQUFDSyxFQUFFLEVBQUVKLFFBQVE7d0JBQ3pDO29CQUNGO2dCQUNGLE9BQU87b0JBQ0xHLFVBQVVKLElBQUlNLE1BQU0sR0FBRyxJQUFJLFFBQVE7Z0JBQ3JDO2dCQUNBRixVQUFVO2dCQUNWLE9BQU9BO1lBQ1QsT0FBTyxJQUFJSixlQUFlVyxPQUFPO2dCQUMvQixPQUFPWCxNQUFNO1lBQ2YsT0FBTztnQkFDTCxNQUFNWSxPQUFPTCxPQUFPSyxJQUFJLENBQUNaO2dCQUN6QixJQUFJSSxTQUFTO2dCQUNiLElBQUlILFFBQVEsR0FBRztvQkFDYixJQUFLLElBQUlJLElBQUksR0FBR0EsSUFBSU8sS0FBS04sTUFBTSxFQUFFRCxJQUFLO3dCQUNwQyxNQUFNUSxNQUFNRCxJQUFJLENBQUNQLEVBQUU7d0JBQ25CLE1BQU1TLE9BQU9QLE9BQU9RLHdCQUF3QixDQUFDZixLQUFLO3dCQUNsRCxJQUFJYyxRQUFRLENBQUNBLEtBQUtFLEdBQUcsSUFBSSxDQUFDRixLQUFLRyxHQUFHLEVBQUU7NEJBQ2xDLE1BQU1DLFVBQVVDLEtBQUtDLFNBQVMsQ0FBQ1A7NEJBQy9CLElBQUlLLFlBQVksTUFBTUwsTUFBTSxLQUFLO2dDQUMvQlQsVUFBVWMsVUFBVTs0QkFDdEIsT0FBTztnQ0FDTGQsVUFBVVMsTUFBTTs0QkFDbEI7NEJBQ0FULFVBQVVMLGFBQWFlLEtBQUtPLEtBQUssRUFBRXBCLFFBQVE7d0JBQzdDO29CQUNGO2dCQUNGLE9BQU87b0JBQ0xHLFVBQVVRLEtBQUtOLE1BQU0sR0FBRyxJQUFJLFFBQVE7Z0JBQ3RDO2dCQUNBRixVQUFVO2dCQUNWLE9BQU9BO1lBQ1Q7UUFDRixLQUFLO1lBQ0gsT0FBT2UsS0FBS0MsU0FBUyxDQUFDcEI7UUFDeEIsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0wsS0FBSztRQUNMLEtBQUs7UUFDTCxLQUFLO1FBQ0w7WUFDRSxPQUFPc0IsT0FBT3RCO0lBQ2xCO0FBQ0Y7QUFFTyxTQUFTSCxrQkFBa0IwQixJQUFlO0lBQy9DLElBQUlDO0lBQ0osSUFBSUM7SUFDSixJQUFJLE9BQU9GLElBQUksQ0FBQyxFQUFFLEtBQUssVUFBVTtRQUMvQkMsVUFBVUQsSUFBSSxDQUFDLEVBQUU7UUFDakJFLE1BQU07SUFDUixPQUFPO1FBQ0xELFVBQVU7UUFDVkMsTUFBTTtJQUNSO0lBQ0EsSUFBSXJCLFNBQVM7SUFDYixJQUFJc0IsYUFBYTtJQUNqQixJQUFLLElBQUlyQixJQUFJLEdBQUdBLElBQUltQixRQUFRbEIsTUFBTSxFQUFFLEVBQUVELEVBQUc7UUFDdkMsTUFBTXNCLE9BQU9ILE9BQU8sQ0FBQ25CLEVBQUU7UUFDdkIsSUFBSXNCLFNBQVMsT0FBT3RCLE1BQU1tQixRQUFRbEIsTUFBTSxHQUFHLEtBQUttQixPQUFPRixLQUFLakIsTUFBTSxFQUFFO1lBQ2xFRixVQUFVdUI7WUFDVjtRQUNGO1FBRUEsTUFBTUMsT0FBT0osT0FBTyxDQUFDLEVBQUVuQixFQUFFO1FBQ3pCLE9BQVF1QjtZQUNOLEtBQUs7Z0JBQUs7b0JBQ1IsdUVBQXVFO29CQUN2RSxrQkFBa0I7b0JBQ2xCeEIsU0FBU3NCLGFBQWMsS0FBRXRCLFNBQU8sTUFBTSxNQUFHQTtvQkFDekNzQixhQUFhLENBQUNBO29CQUNkRDtvQkFDQTtnQkFDRjtZQUNBLEtBQUs7WUFDTCxLQUFLO2dCQUFLO29CQUNSckIsVUFBVUwsYUFBYXdCLElBQUksQ0FBQ0UsTUFBTSxFQUFFO29CQUNwQztnQkFDRjtZQUNBLEtBQUs7WUFDTCxLQUFLO2dCQUFLO29CQUNSckIsVUFBVXlCLFNBQVNOLElBQUksQ0FBQ0UsTUFBTSxFQUFTO29CQUN2QztnQkFDRjtZQUNBLEtBQUs7Z0JBQUs7b0JBQ1JyQixVQUFVMEIsV0FBV1AsSUFBSSxDQUFDRSxNQUFNO29CQUNoQztnQkFDRjtZQUNBLEtBQUs7Z0JBQUs7b0JBQ1JyQixVQUFVa0IsT0FBT0MsSUFBSSxDQUFDRSxNQUFNO29CQUM1QjtnQkFDRjtZQUNBO2dCQUNFckIsVUFBVSxNQUFNd0I7UUFDcEI7SUFDRjtJQUVBLE1BQU9ILE1BQU1GLEtBQUtqQixNQUFNLEVBQUVtQixNQUFPO1FBQy9CckIsVUFBV3FCLENBQUFBLE1BQU0sSUFBSSxNQUFNLEdBQUMsR0FBSzFCLGFBQWF3QixJQUFJLENBQUNFLElBQUksRUFBRTtJQUMzRDtJQUVBLE9BQU9yQjtBQUNUO0FBRU8sU0FBU04saUJBQWlCeUIsSUFBZTtJQUk5QyxNQUFNO0lBQ04sd0pBQXdKO0lBQ3hKLEVBQUU7SUFDRixnREFBZ0Q7SUFDaEQsSUFBSTtJQUNKLDhCQUE4QjtJQUM5QixnQ0FBZ0M7SUFDaEMsa0RBQWtEO0lBQ2xELFFBQVE7SUFDUixXQUFXO0lBQ1gseURBQXlEO0lBQ3pELFFBQVE7SUFDUixJQUFJO0lBQ0osSUFDRUEsS0FBS2pCLE1BQU0sR0FBRyxLQUNkLE9BQU9pQixJQUFJLENBQUMsRUFBRSxLQUFLLFlBQ25CQSxJQUFJLENBQUMsRUFBRSxDQUFDUSxVQUFVLENBQUMsYUFDbkIsT0FBT1IsSUFBSSxDQUFDLEVBQUUsS0FBSyxZQUNuQixPQUFPQSxJQUFJLENBQUMsRUFBRSxLQUFLLFlBQ25CLE9BQU9BLElBQUksQ0FBQyxFQUFFLEtBQUssVUFDbkI7UUFDQSxNQUFNUyxrQkFBa0JULElBQUksQ0FBQyxFQUFFO1FBQy9CLE1BQU1VLGFBQWFWLElBQUksQ0FBQyxFQUFFO1FBRTFCLE9BQU87WUFDTFMsaUJBQWlCQSxnQkFBZ0JFLElBQUk7WUFDckNDLE9BQU9DLENBQUFBLEdBQUFBLFNBQUFBLE9BQUFBLEVBQVFILGNBQWNBLGFBQWE7UUFDNUM7SUFDRjtJQUVBLE9BQU87UUFDTEQsaUJBQWlCO1FBQ2pCRyxPQUFPO0lBQ1Q7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvbGliL2NvbnNvbGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi4vLi4vbGliL2lzLWVycm9yJ1xuXG5mdW5jdGlvbiBmb3JtYXRPYmplY3QoYXJnOiB1bmtub3duLCBkZXB0aDogbnVtYmVyKSB7XG4gIHN3aXRjaCAodHlwZW9mIGFyZykge1xuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBpZiAoYXJnID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiAnbnVsbCdcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAnWydcbiAgICAgICAgaWYgKGRlcHRoIDwgMSkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSAnWycpIHtcbiAgICAgICAgICAgICAgcmVzdWx0ICs9ICcsJ1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmcsIGkpKSB7XG4gICAgICAgICAgICAgIHJlc3VsdCArPSBmb3JtYXRPYmplY3QoYXJnW2ldLCBkZXB0aCArIDEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSBhcmcubGVuZ3RoID4gMCA/ICcuLi4nIDogJydcbiAgICAgICAgfVxuICAgICAgICByZXN1bHQgKz0gJ10nXG4gICAgICAgIHJldHVybiByZXN1bHRcbiAgICAgIH0gZWxzZSBpZiAoYXJnIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGFyZyArICcnXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYXJnKVxuICAgICAgICBsZXQgcmVzdWx0ID0gJ3snXG4gICAgICAgIGlmIChkZXB0aCA8IDEpIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV1cbiAgICAgICAgICAgIGNvbnN0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZywgJ2tleScpXG4gICAgICAgICAgICBpZiAoZGVzYyAmJiAhZGVzYy5nZXQgJiYgIWRlc2Muc2V0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IGpzb25LZXkgPSBKU09OLnN0cmluZ2lmeShrZXkpXG4gICAgICAgICAgICAgIGlmIChqc29uS2V5ICE9PSAnXCInICsga2V5ICsgJ1wiJykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBqc29uS2V5ICsgJzogJ1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBrZXkgKyAnOiAnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmVzdWx0ICs9IGZvcm1hdE9iamVjdChkZXNjLnZhbHVlLCBkZXB0aCArIDEpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdCArPSBrZXlzLmxlbmd0aCA+IDAgPyAnLi4uJyA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ICs9ICd9J1xuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmcpXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICBjYXNlICdiaWdpbnQnOlxuICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICBjYXNlICdmdW5jdGlvbic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBTdHJpbmcoYXJnKVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb25zb2xlQXJncyhhcmdzOiB1bmtub3duW10pOiBzdHJpbmcge1xuICBsZXQgbWVzc2FnZTogc3RyaW5nXG4gIGxldCBpZHg6IG51bWJlclxuICBpZiAodHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnKSB7XG4gICAgbWVzc2FnZSA9IGFyZ3NbMF1cbiAgICBpZHggPSAxXG4gIH0gZWxzZSB7XG4gICAgbWVzc2FnZSA9ICcnXG4gICAgaWR4ID0gMFxuICB9XG4gIGxldCByZXN1bHQgPSAnJ1xuICBsZXQgc3RhcnRRdW90ZSA9IGZhbHNlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWVzc2FnZS5sZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IGNoYXIgPSBtZXNzYWdlW2ldXG4gICAgaWYgKGNoYXIgIT09ICclJyB8fCBpID09PSBtZXNzYWdlLmxlbmd0aCAtIDEgfHwgaWR4ID49IGFyZ3MubGVuZ3RoKSB7XG4gICAgICByZXN1bHQgKz0gY2hhclxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBjb2RlID0gbWVzc2FnZVsrK2ldXG4gICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICBjYXNlICdjJzoge1xuICAgICAgICAvLyBUT0RPOiBXZSBzaG91bGQgY29sb3JpemUgd2l0aCBIVE1MIGluc3RlYWQgb2YgdHVybmluZyBpbnRvIGEgc3RyaW5nLlxuICAgICAgICAvLyBJZ25vcmUgZm9yIG5vdy5cbiAgICAgICAgcmVzdWx0ID0gc3RhcnRRdW90ZSA/IGAke3Jlc3VsdH1dYCA6IGBbJHtyZXN1bHR9YFxuICAgICAgICBzdGFydFF1b3RlID0gIXN0YXJ0UXVvdGVcbiAgICAgICAgaWR4KytcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ08nOlxuICAgICAgY2FzZSAnbyc6IHtcbiAgICAgICAgcmVzdWx0ICs9IGZvcm1hdE9iamVjdChhcmdzW2lkeCsrXSwgMClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2QnOlxuICAgICAgY2FzZSAnaSc6IHtcbiAgICAgICAgcmVzdWx0ICs9IHBhcnNlSW50KGFyZ3NbaWR4KytdIGFzIGFueSwgMTApXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdmJzoge1xuICAgICAgICByZXN1bHQgKz0gcGFyc2VGbG9hdChhcmdzW2lkeCsrXSBhcyBhbnkpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlICdzJzoge1xuICAgICAgICByZXN1bHQgKz0gU3RyaW5nKGFyZ3NbaWR4KytdKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVzdWx0ICs9ICclJyArIGNvZGVcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgaWR4IDwgYXJncy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgcmVzdWx0ICs9IChpZHggPiAwID8gJyAnIDogJycpICsgZm9ybWF0T2JqZWN0KGFyZ3NbaWR4XSwgMClcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29uc29sZUFyZ3MoYXJnczogdW5rbm93bltdKToge1xuICBlbnZpcm9ubWVudE5hbWU6IHN0cmluZyB8IG51bGxcbiAgZXJyb3I6IEVycm9yIHwgbnVsbFxufSB7XG4gIC8vIFNlZVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi82NWE1NmQwZTk5MjYxNDgxYzcyMTMzNGEzZWM0NTYxZDE3MzU5NGNkL3BhY2thZ2VzL3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9mbGlnaHQvcmVuZGVyZXIuanMjTDg4LUw5M1xuICAvL1xuICAvLyBMb2dzIHJlcGxheWVkIGZyb20gdGhlIHNlcnZlciBsb29rIGxpa2UgdGhpczpcbiAgLy8gW1xuICAvLyAgIFwiJWMlcyVjJW9cXG5cXG4lc1xcblxcbiVzXFxuXCIsXG4gIC8vICAgXCJiYWNrZ3JvdW5kOiAjZTZlNmU2OyAuLi5cIixcbiAgLy8gICBcIiBTZXJ2ZXIgXCIsIC8vIGNhbiBhbHNvIGJlIGUuZy4gXCIgUHJlcmVuZGVyIFwiXG4gIC8vICAgXCJcIixcbiAgLy8gICBFcnJvcixcbiAgLy8gICBcIlRoZSBhYm92ZSBlcnJvciBvY2N1cnJlZCBpbiB0aGUgPFBhZ2U+IGNvbXBvbmVudC5cIixcbiAgLy8gICAuLi5cbiAgLy8gXVxuICBpZiAoXG4gICAgYXJncy5sZW5ndGggPiAzICYmXG4gICAgdHlwZW9mIGFyZ3NbMF0gPT09ICdzdHJpbmcnICYmXG4gICAgYXJnc1swXS5zdGFydHNXaXRoKCclYyVzJWMnKSAmJlxuICAgIHR5cGVvZiBhcmdzWzFdID09PSAnc3RyaW5nJyAmJlxuICAgIHR5cGVvZiBhcmdzWzJdID09PSAnc3RyaW5nJyAmJlxuICAgIHR5cGVvZiBhcmdzWzNdID09PSAnc3RyaW5nJ1xuICApIHtcbiAgICBjb25zdCBlbnZpcm9ubWVudE5hbWUgPSBhcmdzWzJdXG4gICAgY29uc3QgbWF5YmVFcnJvciA9IGFyZ3NbNF1cblxuICAgIHJldHVybiB7XG4gICAgICBlbnZpcm9ubWVudE5hbWU6IGVudmlyb25tZW50TmFtZS50cmltKCksXG4gICAgICBlcnJvcjogaXNFcnJvcihtYXliZUVycm9yKSA/IG1heWJlRXJyb3IgOiBudWxsLFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW52aXJvbm1lbnROYW1lOiBudWxsLFxuICAgIGVycm9yOiBudWxsLFxuICB9XG59XG4iXSwibmFtZXMiOlsiZm9ybWF0Q29uc29sZUFyZ3MiLCJwYXJzZUNvbnNvbGVBcmdzIiwiZm9ybWF0T2JqZWN0IiwiYXJnIiwiZGVwdGgiLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJpIiwibGVuZ3RoIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiRXJyb3IiLCJrZXlzIiwia2V5IiwiZGVzYyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsInNldCIsImpzb25LZXkiLCJKU09OIiwic3RyaW5naWZ5IiwidmFsdWUiLCJTdHJpbmciLCJhcmdzIiwibWVzc2FnZSIsImlkeCIsInN0YXJ0UXVvdGUiLCJjaGFyIiwiY29kZSIsInBhcnNlSW50IiwicGFyc2VGbG9hdCIsInN0YXJ0c1dpdGgiLCJlbnZpcm9ubWVudE5hbWUiLCJtYXliZUVycm9yIiwidHJpbSIsImVycm9yIiwiaXNFcnJvciJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/lib/console.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/normalize-trailing-slash.js": /*!**********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/normalize-trailing-slash.js ***! \**********************************************************************************************************************************************/ /***/ ((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 */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js\");\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/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 (false) {}\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaC5qcyIsIm1hcHBpbmdzIjoiOzs7OzhEQU9hQTs7O2VBQUFBOzs7aURBUHVCO3VDQUNWO0FBTW5CLE1BQU1BLDZCQUE2QixDQUFDQztJQUN6QyxJQUFJLENBQUNBLEtBQUtDLFVBQVUsQ0FBQyxRQUFRQyxTQUF3QyxFQUFFO1FBQ3JFLE9BQU9GO0lBQ1Q7SUFFQSxNQUFNLEVBQUVLLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsQ0FBQUEsR0FBQUEsV0FBQUEsU0FBQUEsRUFBVVI7SUFDNUMsSUFBSUUsS0FBaUMsRUFBRSxFQVF0QztJQUVELE9BQVEsS0FBRVMsQ0FBQUEsR0FBQUEscUJBQUFBLG1CQUFBQSxFQUFvQk4sWUFBWUMsUUFBUUM7QUFDcEQiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS9zcmMvY2xpZW50L25vcm1hbGl6ZS10cmFpbGluZy1zbGFzaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW1vdmVUcmFpbGluZ1NsYXNoIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcmVtb3ZlLXRyYWlsaW5nLXNsYXNoJ1xuaW1wb3J0IHsgcGFyc2VQYXRoIH0gZnJvbSAnLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aCdcblxuLyoqXG4gKiBOb3JtYWxpemVzIHRoZSB0cmFpbGluZyBzbGFzaCBvZiBhIHBhdGggYWNjb3JkaW5nIHRvIHRoZSBgdHJhaWxpbmdTbGFzaGAgb3B0aW9uXG4gKiBpbiBgbmV4dC5jb25maWcuanNgLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2ggPSAocGF0aDogc3RyaW5nKSA9PiB7XG4gIGlmICghcGF0aC5zdGFydHNXaXRoKCcvJykgfHwgcHJvY2Vzcy5lbnYuX19ORVhUX01BTlVBTF9UUkFJTElOR19TTEFTSCkge1xuICAgIHJldHVybiBwYXRoXG4gIH1cblxuICBjb25zdCB7IHBhdGhuYW1lLCBxdWVyeSwgaGFzaCB9ID0gcGFyc2VQYXRoKHBhdGgpXG4gIGlmIChwcm9jZXNzLmVudi5fX05FWFRfVFJBSUxJTkdfU0xBU0gpIHtcbiAgICBpZiAoL1xcLlteL10rXFwvPyQvLnRlc3QocGF0aG5hbWUpKSB7XG4gICAgICByZXR1cm4gYCR7cmVtb3ZlVHJhaWxpbmdTbGFzaChwYXRobmFtZSl9JHtxdWVyeX0ke2hhc2h9YFxuICAgIH0gZWxzZSBpZiAocGF0aG5hbWUuZW5kc1dpdGgoJy8nKSkge1xuICAgICAgcmV0dXJuIGAke3BhdGhuYW1lfSR7cXVlcnl9JHtoYXNofWBcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGAke3BhdGhuYW1lfS8ke3F1ZXJ5fSR7aGFzaH1gXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGAke3JlbW92ZVRyYWlsaW5nU2xhc2gocGF0aG5hbWUpfSR7cXVlcnl9JHtoYXNofWBcbn1cbiJdLCJuYW1lcyI6WyJub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCIsInBhdGgiLCJzdGFydHNXaXRoIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9NQU5VQUxfVFJBSUxJTkdfU0xBU0giLCJwYXRobmFtZSIsInF1ZXJ5IiwiaGFzaCIsInBhcnNlUGF0aCIsIl9fTkVYVF9UUkFJTElOR19TTEFTSCIsInRlc3QiLCJyZW1vdmVUcmFpbGluZ1NsYXNoIiwiZW5kc1dpdGgiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/normalize-trailing-slash.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js": /*!*********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js ***! \*********************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// This file is only used in app router due to the specific error state handling.\n\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 onCaughtError: function() {\n return onCaughtError;\n },\n onUncaughtError: function() {\n return onUncaughtError;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _isnextroutererror = __webpack_require__(/*! ../components/is-next-router-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/is-next-router-error.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _reportglobalerror = __webpack_require__(/*! ./report-global-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/report-global-error.js\");\nconst _errorboundary = __webpack_require__(/*! ../components/error-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/error-boundary.js\");\nconst _globalerror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../components/builtin/global-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/builtin/global-error.js\"));\nconst devToolErrorMod = true ? __webpack_require__(/*! ../../next-devtools/userspace/app/errors */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/errors/index.js\") : 0;\nfunction onCaughtError(thrownValue, errorInfo) {\n var _errorInfo_errorBoundary;\n const errorBoundaryComponent = (_errorInfo_errorBoundary = errorInfo.errorBoundary) == null ? void 0 : _errorInfo_errorBoundary.constructor;\n let isImplicitErrorBoundary;\n if (true) {\n const { AppDevOverlayErrorBoundary } = __webpack_require__(/*! ../../next-devtools/userspace/app/app-dev-overlay-error-boundary */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/app-dev-overlay-error-boundary.js\");\n isImplicitErrorBoundary = errorBoundaryComponent === AppDevOverlayErrorBoundary;\n }\n isImplicitErrorBoundary = isImplicitErrorBoundary || errorBoundaryComponent === _errorboundary.ErrorBoundaryHandler && errorInfo.errorBoundary.props.errorComponent === _globalerror.default;\n // Skip the segment explorer triggered error\n if (true) {\n const { SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE } = __webpack_require__(/*! ../../next-devtools/userspace/app/segment-explorer-node */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\");\n if (thrownValue instanceof Error && thrownValue.message === SEGMENT_EXPLORER_SIMULATED_ERROR_MESSAGE) {\n return;\n }\n }\n if (isImplicitErrorBoundary) {\n // We don't consider errors caught unless they're caught by an explicit error\n // boundary. The built-in ones are considered implicit.\n // This mimics how the same app would behave without Next.js.\n return onUncaughtError(thrownValue);\n }\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(thrownValue) || (0, _isnextroutererror.isNextRouterError)(thrownValue)) return;\n if (true) {\n var _errorInfo_componentStack;\n const errorBoundaryName = (errorBoundaryComponent == null ? void 0 : errorBoundaryComponent.displayName) || (errorBoundaryComponent == null ? void 0 : errorBoundaryComponent.name) || 'Unknown';\n const componentThatErroredFrame = errorInfo == null ? void 0 : (_errorInfo_componentStack = errorInfo.componentStack) == null ? void 0 : _errorInfo_componentStack.split('\\n')[1];\n var // example 1: at Page (http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1)\n // example 2: Page@http://localhost:3000/_next/static/chunks/pages/index.js?ts=1631600000000:2:1\n _componentThatErroredFrame_match;\n // Match chrome or safari stack trace\n const matches = (_componentThatErroredFrame_match = componentThatErroredFrame == null ? void 0 : componentThatErroredFrame.match(/\\s+at (\\w+)\\s+|(\\w+)@/)) != null ? _componentThatErroredFrame_match : [];\n const componentThatErroredName = matches[1] || matches[2] || 'Unknown';\n // Create error location with errored component and error boundary, to match the behavior of default React onCaughtError handler.\n const errorBoundaryMessage = \"It was handled by the <\" + errorBoundaryName + \"> error boundary.\";\n const componentErrorMessage = componentThatErroredName ? \"The above error occurred in the <\" + componentThatErroredName + \"> component.\" : \"The above error occurred in one of your components.\";\n const errorLocation = componentErrorMessage + \" \" + errorBoundaryMessage;\n const error = devToolErrorMod.decorateDevError(thrownValue);\n // Log and report the error with location but without modifying the error stack\n devToolErrorMod.originConsoleError('%o\\n\\n%s', thrownValue, errorLocation);\n devToolErrorMod.handleClientError(error);\n } else {}\n}\nfunction onUncaughtError(thrownValue) {\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(thrownValue) || (0, _isnextroutererror.isNextRouterError)(thrownValue)) return;\n if (true) {\n const error = devToolErrorMod.decorateDevError(thrownValue);\n // TODO: Add an adendum to the overlay telling people about custom error boundaries.\n (0, _reportglobalerror.reportGlobalError)(error);\n } else {}\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=error-boundary-callbacks.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3MvZXJyb3ItYm91bmRhcnktY2FsbGJhY2tzLmpzIiwibWFwcGluZ3MiOiJBQUFBLGlGQUFpRjs7Ozs7Ozs7Ozs7OztJQWtCakVBLGFBQWE7ZUFBYkE7O0lBK0VBQyxpQkFBZTtlQUFmQTs7OzsrQ0E5RmtCOzBDQUNFOytDQUNGOzJDQUNHO2tGQUNKO0FBRWpDLE1BQU1DLGtCQXdGVUQsS0F2Rk0sR0FDZkssbUJBQU9BLENBQUMscU5BQTBDLElBQ25ELENBSUM7QUFFQSxTQUFTTixjQUNkYSxXQUFvQixFQUNwQkMsU0FBMEQ7UUFFM0JBO0lBQS9CLE1BQU1DLHlCQUFBQSxDQUF5QkQsMkJBQUFBLFVBQVVFLGFBQUFBLEtBQWEsZ0JBQXZCRix5QkFBeUJHLFdBQVc7SUFFbkUsSUFBSUM7SUFFSixJQUFJZixJQUFvQixFQUFtQjtRQUN6QyxNQUFNLEVBQUVnQiwwQkFBMEIsRUFBRSxHQUNsQ2IsbUJBQU9BLENBQUMsK1BBQWtFO1FBRTVFWSwwQkFDRUgsMkJBQTJCSTtJQUMvQjtJQUVBRCwwQkFDRUEsMkJBQ0NILDJCQUEyQkssZUFBQUEsb0JBQW9CLElBQzdDTixVQUFVRSxhQUFhLENBQ3JCSyxLQUFLLENBQUNDLGNBQWMsS0FBS0MsYUFBQUEsT0FBb0I7SUFFcEQsNENBQTRDO0lBQzVDLElBQUlwQixJQUFvQixFQUFtQjtRQUN6QyxNQUFNLEVBQUVxQix3Q0FBd0MsRUFBRSxHQUNoRGxCLG1CQUFPQSxDQUFDLDZPQUF5RDtRQUNuRSxJQUNFTyx1QkFBdUJZLFNBQ3ZCWixZQUFZYSxPQUFPLEtBQUtGLDBDQUN4QjtZQUNBO1FBQ0Y7SUFDRjtJQUVBLElBQUlOLHlCQUF5QjtRQUMzQiw2RUFBNkU7UUFDN0UsdURBQXVEO1FBQ3ZELDZEQUE2RDtRQUM3RCxPQUFPakIsZ0JBQWdCWTtJQUN6QjtJQUVBLDZFQUE2RTtJQUM3RSxJQUFJYyxDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JkLGdCQUFnQmUsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQmYsY0FBYztJQUV4RSxJQUFJVixJQUFvQixFQUFtQjtZQU9QVztRQU5sQyxNQUFNZSxvQkFFSixDQURBLDBCQUNDZCxPQUFBQSxFQURrQyxHQUNsQ0EsSUFBQUEsdUJBQWdDZSxXQUFBQSxNQUNqQ2YsMEJBQUFBLE9BQUFBLEtBQUFBLElBQUFBLHVCQUF3QmdCLElBQUFBLEtBQ3hCO1FBRUYsTUFBTUMsNEJBQTRCbEIsYUFBQUEsT0FBQUEsS0FBQUEsSUFBQUEsNkJBQUFBLFVBQVdtQixjQUFBQSxLQUFjLGdCQUF6Qm5CLDBCQUEyQm9CLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUl6RSxzREFBc0QsK0NBQytDO1FBQ3JHLGdHQUFnRztRQUNoR0Y7UUFMRixxQ0FBcUM7UUFDckMsTUFBTUcsVUFJSkgsQ0FBQUEsbUNBQUFBLDZCQUFBQSxPQUFBQSxLQUFBQSxJQUFBQSwwQkFBMkJJLEtBQUssQ0FBQyxvQ0FBakNKLG1DQUE2RCxFQUFFO1FBQ2pFLE1BQU1LLDJCQUEyQkYsT0FBTyxDQUFDLEVBQUUsSUFBSUEsT0FBTyxDQUFDLEVBQUUsSUFBSTtRQUU3RCxpSUFBaUk7UUFDakksTUFBTUcsdUJBQXdCLDRCQUF5QlQsb0JBQWtCO1FBQ3pFLE1BQU1VLHdCQUF3QkYsMkJBQ3pCLHNDQUFtQ0EsMkJBQXlCLGlCQUM1RDtRQUVMLE1BQU1HLGdCQUFtQkQsd0JBQXNCLE1BQUdEO1FBQ2xELE1BQU05QixRQUFRTixnQkFBZ0JLLGdCQUFnQixDQUFDTTtRQUUvQywrRUFBK0U7UUFDL0VYLGdCQUFnQlEsa0JBQWtCLENBQUMsWUFBWUcsYUFBYTJCO1FBRTVEdEMsZ0JBQWdCTyxpQkFBaUIsQ0FBQ0Q7SUFDcEMsT0FBTyxFQUVOO0FBQ0g7QUFFTyxTQUFTUCxnQkFBZ0JZLFdBQW9CO0lBQ2xELDZFQUE2RTtJQUM3RSxJQUFJYyxDQUFBQSxHQUFBQSxjQUFBQSxtQkFBQUEsRUFBb0JkLGdCQUFnQmUsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFpQixFQUFDZixjQUFjO0lBRXhFLElBQUlWLElBQW9CLEVBQW1CO1FBQ3pDLE1BQU1LLFFBQVFOLGdCQUFnQkssZ0JBQWdCLENBQUNNO1FBRS9DLG9GQUFvRjtRQUNwRjRCLENBQUFBLEdBQUFBLG1CQUFBQSxpQkFBQUEsRUFBa0JqQztJQUNwQixPQUFPLEVBRU47QUFDSCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL3NyYy9jbGllbnQvcmVhY3QtY2xpZW50LWNhbGxiYWNrcy9lcnJvci1ib3VuZGFyeS1jYWxsYmFja3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBmaWxlIGlzIG9ubHkgdXNlZCBpbiBhcHAgcm91dGVyIGR1ZSB0byB0aGUgc3BlY2lmaWMgZXJyb3Igc3RhdGUgaGFuZGxpbmcuXG5cbmltcG9ydCB0eXBlIHsgRXJyb3JJbmZvIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBpc05leHRSb3V0ZXJFcnJvciB9IGZyb20gJy4uL2NvbXBvbmVudHMvaXMtbmV4dC1yb3V0ZXItZXJyb3InXG5pbXBvcnQgeyBpc0JhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgeyByZXBvcnRHbG9iYWxFcnJvciB9IGZyb20gJy4vcmVwb3J0LWdsb2JhbC1lcnJvcidcbmltcG9ydCB7IEVycm9yQm91bmRhcnlIYW5kbGVyIH0gZnJvbSAnLi4vY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeSdcbmltcG9ydCBEZWZhdWx0RXJyb3JCb3VuZGFyeSBmcm9tICcuLi9jb21wb25lbnRzL2J1aWx0aW4vZ2xvYmFsLWVycm9yJ1xuXG5jb25zdCBkZXZUb29sRXJyb3JNb2Q6IHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMnKSA9XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbidcbiAgICA/IChyZXF1aXJlKCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzJykgYXMgdHlwZW9mIGltcG9ydCgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2Vycm9ycycpKVxuICAgIDoge1xuICAgICAgICBkZWNvcmF0ZURldkVycm9yOiAoZXJyb3I6IHVua25vd24pID0+IGVycm9yIGFzIEVycm9yLFxuICAgICAgICBoYW5kbGVDbGllbnRFcnJvcjogKCkgPT4ge30sXG4gICAgICAgIG9yaWdpbkNvbnNvbGVFcnJvcjogY29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpLFxuICAgICAgfVxuXG5leHBvcnQgZnVuY3Rpb24gb25DYXVnaHRFcnJvcihcbiAgdGhyb3duVmFsdWU6IHVua25vd24sXG4gIGVycm9ySW5mbzogRXJyb3JJbmZvICYgeyBlcnJvckJvdW5kYXJ5PzogUmVhY3QuQ29tcG9uZW50IH1cbikge1xuICBjb25zdCBlcnJvckJvdW5kYXJ5Q29tcG9uZW50ID0gZXJyb3JJbmZvLmVycm9yQm91bmRhcnk/LmNvbnN0cnVjdG9yXG5cbiAgbGV0IGlzSW1wbGljaXRFcnJvckJvdW5kYXJ5XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBjb25zdCB7IEFwcERldk92ZXJsYXlFcnJvckJvdW5kYXJ5IH0gPVxuICAgICAgcmVxdWlyZSgnLi4vLi4vbmV4dC1kZXZ0b29scy91c2Vyc3BhY2UvYXBwL2FwcC1kZXYtb3ZlcmxheS1lcnJvci1ib3VuZGFyeScpIGFzIHR5cGVvZiBpbXBvcnQoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9hcHAtZGV2LW92ZXJsYXktZXJyb3ItYm91bmRhcnknKVxuXG4gICAgaXNJbXBsaWNpdEVycm9yQm91bmRhcnkgPVxuICAgICAgZXJyb3JCb3VuZGFyeUNvbXBvbmVudCA9PT0gQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnlcbiAgfVxuXG4gIGlzSW1wbGljaXRFcnJvckJvdW5kYXJ5ID1cbiAgICBpc0ltcGxpY2l0RXJyb3JCb3VuZGFyeSB8fFxuICAgIChlcnJvckJvdW5kYXJ5Q29tcG9uZW50ID09PSBFcnJvckJvdW5kYXJ5SGFuZGxlciAmJlxuICAgICAgKGVycm9ySW5mby5lcnJvckJvdW5kYXJ5ISBhcyBJbnN0YW5jZVR5cGU8dHlwZW9mIEVycm9yQm91bmRhcnlIYW5kbGVyPilcbiAgICAgICAgLnByb3BzLmVycm9yQ29tcG9uZW50ID09PSBEZWZhdWx0RXJyb3JCb3VuZGFyeSlcblxuICAvLyBTa2lwIHRoZSBzZWdtZW50IGV4cGxvcmVyIHRyaWdnZXJlZCBlcnJvclxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IHsgU0VHTUVOVF9FWFBMT1JFUl9TSU1VTEFURURfRVJST1JfTUVTU0FHRSB9ID1cbiAgICAgIHJlcXVpcmUoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUnKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvc2VnbWVudC1leHBsb3Jlci1ub2RlJylcbiAgICBpZiAoXG4gICAgICB0aHJvd25WYWx1ZSBpbnN0YW5jZW9mIEVycm9yICYmXG4gICAgICB0aHJvd25WYWx1ZS5tZXNzYWdlID09PSBTRUdNRU5UX0VYUExPUkVSX1NJTVVMQVRFRF9FUlJPUl9NRVNTQUdFXG4gICAgKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gIH1cblxuICBpZiAoaXNJbXBsaWNpdEVycm9yQm91bmRhcnkpIHtcbiAgICAvLyBXZSBkb24ndCBjb25zaWRlciBlcnJvcnMgY2F1Z2h0IHVubGVzcyB0aGV5J3JlIGNhdWdodCBieSBhbiBleHBsaWNpdCBlcnJvclxuICAgIC8vIGJvdW5kYXJ5LiBUaGUgYnVpbHQtaW4gb25lcyBhcmUgY29uc2lkZXJlZCBpbXBsaWNpdC5cbiAgICAvLyBUaGlzIG1pbWljcyBob3cgdGhlIHNhbWUgYXBwIHdvdWxkIGJlaGF2ZSB3aXRob3V0IE5leHQuanMuXG4gICAgcmV0dXJuIG9uVW5jYXVnaHRFcnJvcih0aHJvd25WYWx1ZSlcbiAgfVxuXG4gIC8vIFNraXAgY2VydGFpbiBjdXN0b20gZXJyb3JzIHdoaWNoIGFyZSBub3QgZXhwZWN0ZWQgdG8gYmUgcmVwb3J0ZWQgb24gY2xpZW50XG4gIGlmIChpc0JhaWxvdXRUb0NTUkVycm9yKHRocm93blZhbHVlKSB8fCBpc05leHRSb3V0ZXJFcnJvcih0aHJvd25WYWx1ZSkpIHJldHVyblxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgY29uc3QgZXJyb3JCb3VuZGFyeU5hbWUgPVxuICAgICAgLy8gcmVhZCByZWFjdCBjb21wb25lbnQgZGlzcGxheU5hbWVcbiAgICAgIChlcnJvckJvdW5kYXJ5Q29tcG9uZW50IGFzIGFueSk/LmRpc3BsYXlOYW1lIHx8XG4gICAgICBlcnJvckJvdW5kYXJ5Q29tcG9uZW50Py5uYW1lIHx8XG4gICAgICAnVW5rbm93bidcblxuICAgIGNvbnN0IGNvbXBvbmVudFRoYXRFcnJvcmVkRnJhbWUgPSBlcnJvckluZm8/LmNvbXBvbmVudFN0YWNrPy5zcGxpdCgnXFxuJylbMV1cblxuICAgIC8vIE1hdGNoIGNocm9tZSBvciBzYWZhcmkgc3RhY2sgdHJhY2VcbiAgICBjb25zdCBtYXRjaGVzID1cbiAgICAgIC8vIHJlZ2V4IHRvIG1hdGNoIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzdGFjayB0cmFjZVxuICAgICAgLy8gZXhhbXBsZSAxOiBhdCBQYWdlIChodHRwOi8vbG9jYWxob3N0OjMwMDAvX25leHQvc3RhdGljL2NodW5rcy9wYWdlcy9pbmRleC5qcz90cz0xNjMxNjAwMDAwMDAwOjI6MSlcbiAgICAgIC8vIGV4YW1wbGUgMjogUGFnZUBodHRwOi8vbG9jYWxob3N0OjMwMDAvX25leHQvc3RhdGljL2NodW5rcy9wYWdlcy9pbmRleC5qcz90cz0xNjMxNjAwMDAwMDAwOjI6MVxuICAgICAgY29tcG9uZW50VGhhdEVycm9yZWRGcmFtZT8ubWF0Y2goL1xccythdCAoXFx3KylcXHMrfChcXHcrKUAvKSA/PyBbXVxuICAgIGNvbnN0IGNvbXBvbmVudFRoYXRFcnJvcmVkTmFtZSA9IG1hdGNoZXNbMV0gfHwgbWF0Y2hlc1syXSB8fCAnVW5rbm93bidcblxuICAgIC8vIENyZWF0ZSBlcnJvciBsb2NhdGlvbiB3aXRoIGVycm9yZWQgY29tcG9uZW50IGFuZCBlcnJvciBib3VuZGFyeSwgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGRlZmF1bHQgUmVhY3Qgb25DYXVnaHRFcnJvciBoYW5kbGVyLlxuICAgIGNvbnN0IGVycm9yQm91bmRhcnlNZXNzYWdlID0gYEl0IHdhcyBoYW5kbGVkIGJ5IHRoZSA8JHtlcnJvckJvdW5kYXJ5TmFtZX0+IGVycm9yIGJvdW5kYXJ5LmBcbiAgICBjb25zdCBjb21wb25lbnRFcnJvck1lc3NhZ2UgPSBjb21wb25lbnRUaGF0RXJyb3JlZE5hbWVcbiAgICAgID8gYFRoZSBhYm92ZSBlcnJvciBvY2N1cnJlZCBpbiB0aGUgPCR7Y29tcG9uZW50VGhhdEVycm9yZWROYW1lfT4gY29tcG9uZW50LmBcbiAgICAgIDogYFRoZSBhYm92ZSBlcnJvciBvY2N1cnJlZCBpbiBvbmUgb2YgeW91ciBjb21wb25lbnRzLmBcblxuICAgIGNvbnN0IGVycm9yTG9jYXRpb24gPSBgJHtjb21wb25lbnRFcnJvck1lc3NhZ2V9ICR7ZXJyb3JCb3VuZGFyeU1lc3NhZ2V9YFxuICAgIGNvbnN0IGVycm9yID0gZGV2VG9vbEVycm9yTW9kLmRlY29yYXRlRGV2RXJyb3IodGhyb3duVmFsdWUpXG5cbiAgICAvLyBMb2cgYW5kIHJlcG9ydCB0aGUgZXJyb3Igd2l0aCBsb2NhdGlvbiBidXQgd2l0aG91dCBtb2RpZnlpbmcgdGhlIGVycm9yIHN0YWNrXG4gICAgZGV2VG9vbEVycm9yTW9kLm9yaWdpbkNvbnNvbGVFcnJvcignJW9cXG5cXG4lcycsIHRocm93blZhbHVlLCBlcnJvckxvY2F0aW9uKVxuXG4gICAgZGV2VG9vbEVycm9yTW9kLmhhbmRsZUNsaWVudEVycm9yKGVycm9yKVxuICB9IGVsc2Uge1xuICAgIGRldlRvb2xFcnJvck1vZC5vcmlnaW5Db25zb2xlRXJyb3IodGhyb3duVmFsdWUpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG9uVW5jYXVnaHRFcnJvcih0aHJvd25WYWx1ZTogdW5rbm93bikge1xuICAvLyBTa2lwIGNlcnRhaW4gY3VzdG9tIGVycm9ycyB3aGljaCBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIHJlcG9ydGVkIG9uIGNsaWVudFxuICBpZiAoaXNCYWlsb3V0VG9DU1JFcnJvcih0aHJvd25WYWx1ZSkgfHwgaXNOZXh0Um91dGVyRXJyb3IodGhyb3duVmFsdWUpKSByZXR1cm5cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IGVycm9yID0gZGV2VG9vbEVycm9yTW9kLmRlY29yYXRlRGV2RXJyb3IodGhyb3duVmFsdWUpXG5cbiAgICAvLyBUT0RPOiBBZGQgYW4gYWRlbmR1bSB0byB0aGUgb3ZlcmxheSB0ZWxsaW5nIHBlb3BsZSBhYm91dCBjdXN0b20gZXJyb3IgYm91bmRhcmllcy5cbiAgICByZXBvcnRHbG9iYWxFcnJvcihlcnJvcilcbiAgfSBlbHNlIHtcbiAgICByZXBvcnRHbG9iYWxFcnJvcih0aHJvd25WYWx1ZSlcbiAgfVxufVxuIl0sIm5hbWVzIjpbIm9uQ2F1Z2h0RXJyb3IiLCJvblVuY2F1Z2h0RXJyb3IiLCJkZXZUb29sRXJyb3JNb2QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJyZXF1aXJlIiwiZGVjb3JhdGVEZXZFcnJvciIsImVycm9yIiwiaGFuZGxlQ2xpZW50RXJyb3IiLCJvcmlnaW5Db25zb2xlRXJyb3IiLCJjb25zb2xlIiwiYmluZCIsInRocm93blZhbHVlIiwiZXJyb3JJbmZvIiwiZXJyb3JCb3VuZGFyeUNvbXBvbmVudCIsImVycm9yQm91bmRhcnkiLCJjb25zdHJ1Y3RvciIsImlzSW1wbGljaXRFcnJvckJvdW5kYXJ5IiwiQXBwRGV2T3ZlcmxheUVycm9yQm91bmRhcnkiLCJFcnJvckJvdW5kYXJ5SGFuZGxlciIsInByb3BzIiwiZXJyb3JDb21wb25lbnQiLCJEZWZhdWx0RXJyb3JCb3VuZGFyeSIsIlNFR01FTlRfRVhQTE9SRVJfU0lNVUxBVEVEX0VSUk9SX01FU1NBR0UiLCJFcnJvciIsIm1lc3NhZ2UiLCJpc0JhaWxvdXRUb0NTUkVycm9yIiwiaXNOZXh0Um91dGVyRXJyb3IiLCJlcnJvckJvdW5kYXJ5TmFtZSIsImRpc3BsYXlOYW1lIiwibmFtZSIsImNvbXBvbmVudFRoYXRFcnJvcmVkRnJhbWUiLCJjb21wb25lbnRTdGFjayIsInNwbGl0IiwibWF0Y2hlcyIsIm1hdGNoIiwiY29tcG9uZW50VGhhdEVycm9yZWROYW1lIiwiZXJyb3JCb3VuZGFyeU1lc3NhZ2UiLCJjb21wb25lbnRFcnJvck1lc3NhZ2UiLCJlcnJvckxvY2F0aW9uIiwicmVwb3J0R2xvYmFsRXJyb3IiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/error-boundary-callbacks.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js": /*!*****************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js ***! \*****************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("// This module can be shared between both pages router and app router\n\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 isRecoverableError: function() {\n return isRecoverableError;\n },\n onRecoverableError: function() {\n return onRecoverableError;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"(app-pages-browser)/./node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_interop_require_default.js\");\nconst _bailouttocsr = __webpack_require__(/*! ../../shared/lib/lazy-dynamic/bailout-to-csr */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../../lib/is-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/lib/is-error.js\"));\nconst _reportglobalerror = __webpack_require__(/*! ./report-global-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/report-global-error.js\");\nconst recoverableErrors = new WeakSet();\nfunction isRecoverableError(error) {\n return recoverableErrors.has(error);\n}\nconst onRecoverableError = (error)=>{\n // x-ref: https://github.com/facebook/react/pull/28736\n let cause = (0, _iserror.default)(error) && 'cause' in error ? error.cause : error;\n // Skip certain custom errors which are not expected to be reported on client\n if ((0, _bailouttocsr.isBailoutToCSRError)(cause)) return;\n if (true) {\n const { decorateDevError } = __webpack_require__(/*! ../../next-devtools/userspace/app/errors/stitched-error */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js\");\n const causeError = decorateDevError(cause);\n recoverableErrors.add(causeError);\n cause = causeError;\n }\n (0, _reportglobalerror.reportGlobalError)(cause);\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3Mvb24tcmVjb3ZlcmFibGUtZXJyb3IuanMiLCJtYXBwaW5ncyI6IkFBQUEscUVBQXFFOzs7Ozs7Ozs7Ozs7O0lBU3JEQSxrQkFBa0I7ZUFBbEJBOztJQUlIQyxrQkFBa0I7ZUFBbEJBOzs7OzBDQVZ1Qjs4RUFDaEI7K0NBQ2M7QUFFbEMsTUFBTUMsb0JBQW9CLElBQUlDO0FBRXZCLFNBQVNILG1CQUFtQkksS0FBWTtJQUM3QyxPQUFPRixrQkFBa0JHLEdBQUcsQ0FBQ0Q7QUFDL0I7QUFFTyxNQUFNSCxxQkFBNkQsQ0FDeEVHO0lBRUEsc0RBQXNEO0lBQ3RELElBQUlFLFFBQVFDLENBQUFBLEdBQUFBLFNBQUFBLE9BQUFBLEVBQVFILFVBQVUsV0FBV0EsUUFBUUEsTUFBTUUsS0FBSyxHQUFHRjtJQUMvRCw2RUFBNkU7SUFDN0UsSUFBSUksQ0FBQUEsR0FBQUEsY0FBQUEsbUJBQUFBLEVBQW9CRixRQUFRO0lBRWhDLElBQUlHLElBQW9CLEVBQW1CO1FBQ3pDLE1BQU0sRUFBRUcsZ0JBQWdCLEVBQUUsR0FDeEJDLG1CQUFPQSxDQUFDLDZPQUF5RDtRQUNuRSxNQUFNQyxhQUFhRixpQkFBaUJOO1FBQ3BDSixrQkFBa0JhLEdBQUcsQ0FBQ0Q7UUFDdEJSLFFBQVFRO0lBQ1Y7SUFFQUUsQ0FBQUEsR0FBQUEsbUJBQUFBLGlCQUFBQSxFQUFrQlY7QUFDcEIiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9zcmMvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3Mvb24tcmVjb3ZlcmFibGUtZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhpcyBtb2R1bGUgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGJvdGggcGFnZXMgcm91dGVyIGFuZCBhcHAgcm91dGVyXG5cbmltcG9ydCB0eXBlIHsgSHlkcmF0aW9uT3B0aW9ucyB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnXG5pbXBvcnQgeyBpc0JhaWxvdXRUb0NTUkVycm9yIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2xpYi9sYXp5LWR5bmFtaWMvYmFpbG91dC10by1jc3InXG5pbXBvcnQgaXNFcnJvciBmcm9tICcuLi8uLi9saWIvaXMtZXJyb3InXG5pbXBvcnQgeyByZXBvcnRHbG9iYWxFcnJvciB9IGZyb20gJy4vcmVwb3J0LWdsb2JhbC1lcnJvcidcblxuY29uc3QgcmVjb3ZlcmFibGVFcnJvcnMgPSBuZXcgV2Vha1NldDxFcnJvcj4oKVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWNvdmVyYWJsZUVycm9yKGVycm9yOiBFcnJvcik6IGJvb2xlYW4ge1xuICByZXR1cm4gcmVjb3ZlcmFibGVFcnJvcnMuaGFzKGVycm9yKVxufVxuXG5leHBvcnQgY29uc3Qgb25SZWNvdmVyYWJsZUVycm9yOiBIeWRyYXRpb25PcHRpb25zWydvblJlY292ZXJhYmxlRXJyb3InXSA9IChcbiAgZXJyb3JcbikgPT4ge1xuICAvLyB4LXJlZjogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjg3MzZcbiAgbGV0IGNhdXNlID0gaXNFcnJvcihlcnJvcikgJiYgJ2NhdXNlJyBpbiBlcnJvciA/IGVycm9yLmNhdXNlIDogZXJyb3JcbiAgLy8gU2tpcCBjZXJ0YWluIGN1c3RvbSBlcnJvcnMgd2hpY2ggYXJlIG5vdCBleHBlY3RlZCB0byBiZSByZXBvcnRlZCBvbiBjbGllbnRcbiAgaWYgKGlzQmFpbG91dFRvQ1NSRXJyb3IoY2F1c2UpKSByZXR1cm5cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGNvbnN0IHsgZGVjb3JhdGVEZXZFcnJvciB9ID1cbiAgICAgIHJlcXVpcmUoJy4uLy4uL25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9lcnJvcnMvc3RpdGNoZWQtZXJyb3InKSBhcyB0eXBlb2YgaW1wb3J0KCcuLi8uLi9uZXh0LWRldnRvb2xzL3VzZXJzcGFjZS9hcHAvZXJyb3JzL3N0aXRjaGVkLWVycm9yJylcbiAgICBjb25zdCBjYXVzZUVycm9yID0gZGVjb3JhdGVEZXZFcnJvcihjYXVzZSlcbiAgICByZWNvdmVyYWJsZUVycm9ycy5hZGQoY2F1c2VFcnJvcilcbiAgICBjYXVzZSA9IGNhdXNlRXJyb3JcbiAgfVxuXG4gIHJlcG9ydEdsb2JhbEVycm9yKGNhdXNlKVxufVxuIl0sIm5hbWVzIjpbImlzUmVjb3ZlcmFibGVFcnJvciIsIm9uUmVjb3ZlcmFibGVFcnJvciIsInJlY292ZXJhYmxlRXJyb3JzIiwiV2Vha1NldCIsImVycm9yIiwiaGFzIiwiY2F1c2UiLCJpc0Vycm9yIiwiaXNCYWlsb3V0VG9DU1JFcnJvciIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsImRlY29yYXRlRGV2RXJyb3IiLCJyZXF1aXJlIiwiY2F1c2VFcnJvciIsImFkZCIsInJlcG9ydEdsb2JhbEVycm9yIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/on-recoverable-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/report-global-error.js": /*!****************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/report-global-error.js ***! \****************************************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"reportGlobalError\", ({\n enumerable: true,\n get: function() {\n return reportGlobalError;\n }\n}));\nconst reportGlobalError = typeof reportError === 'function' ? reportError : (error)=>{\n // TODO: Dispatch error event\n globalThis.console.error(error);\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=report-global-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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlYWN0LWNsaWVudC1jYWxsYmFja3MvcmVwb3J0LWdsb2JhbC1lcnJvci5qcyIsIm1hcHBpbmdzIjoiOzs7O3FEQUFhQTs7O2VBQUFBOzs7QUFBTixNQUFNQSxvQkFDWCxPQUFPQyxnQkFBZ0IsYUFFbkIsY0FFQSxDQUFDQztJQUNDLDZCQUE2QjtJQUM3QkMsV0FBV0MsT0FBTyxDQUFDRixLQUFLLENBQUNBO0FBQzNCIiwic291cmNlcyI6WyIvaG9tZS9zYWhhbW9uZS9Eb2N1bWVudHMvc3JjL2NsaWVudC9yZWFjdC1jbGllbnQtY2FsbGJhY2tzL3JlcG9ydC1nbG9iYWwtZXJyb3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJlcG9ydEdsb2JhbEVycm9yID1cbiAgdHlwZW9mIHJlcG9ydEVycm9yID09PSAnZnVuY3Rpb24nXG4gICAgPyAvLyBJbiBtb2Rlcm4gYnJvd3NlcnMsIHJlcG9ydEVycm9yIHdpbGwgZGlzcGF0Y2ggYW4gZXJyb3IgZXZlbnQsXG4gICAgICAvLyBlbXVsYXRpbmcgYW4gdW5jYXVnaHQgSmF2YVNjcmlwdCBlcnJvci5cbiAgICAgIHJlcG9ydEVycm9yXG4gICAgOiAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgLy8gVE9ETzogRGlzcGF0Y2ggZXJyb3IgZXZlbnRcbiAgICAgICAgZ2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgfVxuIl0sIm5hbWVzIjpbInJlcG9ydEdsb2JhbEVycm9yIiwicmVwb3J0RXJyb3IiLCJlcnJvciIsImdsb2JhbFRoaXMiLCJjb25zb2xlIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/react-client-callbacks/report-global-error.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/remove-base-path.js": /*!**************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/remove-base-path.js ***! \**************************************************************************************************************************************/ /***/ ((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 */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlbW92ZS1iYXNlLXBhdGguanMiLCJtYXBwaW5ncyI6Ijs7OztrREFJZ0JBOzs7ZUFBQUE7Ozt5Q0FKWTtBQUU1QixNQUFNQyxXQUFZQyxNQUFrQyxJQUFlO0FBRTVELFNBQVNGLGVBQWVLLElBQVk7SUFDekMsSUFBSUgsS0FBMEMsRUFBRSxFQUkvQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJRCxTQUFTTyxNQUFNLEtBQUssR0FBRyxPQUFPSDtJQUVsQ0EsT0FBT0EsS0FBS0ksS0FBSyxDQUFDUixTQUFTTyxNQUFNO0lBQ2pDLElBQUksQ0FBQ0gsS0FBS0ssVUFBVSxDQUFDLE1BQU1MLE9BQVEsTUFBR0E7SUFDdEMsT0FBT0E7QUFDVCIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3NyYy9jbGllbnQvcmVtb3ZlLWJhc2UtcGF0aC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBoYXNCYXNlUGF0aCB9IGZyb20gJy4vaGFzLWJhc2UtcGF0aCdcblxuY29uc3QgYmFzZVBhdGggPSAocHJvY2Vzcy5lbnYuX19ORVhUX1JPVVRFUl9CQVNFUEFUSCBhcyBzdHJpbmcpIHx8ICcnXG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVCYXNlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIKSB7XG4gICAgaWYgKCFoYXNCYXNlUGF0aChwYXRoKSkge1xuICAgICAgcmV0dXJuIHBhdGhcbiAgICB9XG4gIH1cblxuICAvLyBDYW4ndCB0cmltIHRoZSBiYXNlUGF0aCBpZiBpdCBoYXMgemVybyBsZW5ndGghXG4gIGlmIChiYXNlUGF0aC5sZW5ndGggPT09IDApIHJldHVybiBwYXRoXG5cbiAgcGF0aCA9IHBhdGguc2xpY2UoYmFzZVBhdGgubGVuZ3RoKVxuICBpZiAoIXBhdGguc3RhcnRzV2l0aCgnLycpKSBwYXRoID0gYC8ke3BhdGh9YFxuICByZXR1cm4gcGF0aFxufVxuIl0sIm5hbWVzIjpbInJlbW92ZUJhc2VQYXRoIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJoYXNCYXNlUGF0aCIsImxlbmd0aCIsInNsaWNlIiwic3RhcnRzV2l0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/remove-base-path.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/route-params.js": /*!**********************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/route-params.js ***! \**********************************************************************************************************************************/ /***/ ((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 doesStaticSegmentAppearInURL: function() {\n return doesStaticSegmentAppearInURL;\n },\n getCacheKeyForDynamicParam: function() {\n return getCacheKeyForDynamicParam;\n },\n getParamValueFromCacheKey: function() {\n return getParamValueFromCacheKey;\n },\n getRenderedPathname: function() {\n return getRenderedPathname;\n },\n getRenderedSearch: function() {\n return getRenderedSearch;\n },\n parseDynamicParamFromURLPart: function() {\n return parseDynamicParamFromURLPart;\n },\n urlToUrlWithoutFlightMarker: function() {\n return urlToUrlWithoutFlightMarker;\n }\n});\nconst _segment = __webpack_require__(/*! ../shared/lib/segment */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment.js\");\nconst _segmentvalueencoding = __webpack_require__(/*! ../shared/lib/segment-cache/segment-value-encoding */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js\");\nconst _approuterheaders = __webpack_require__(/*! ./components/app-router-headers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/components/app-router-headers.js\");\nfunction getRenderedSearch(response) {\n // If the server performed a rewrite, the search params used to render the\n // page will be different from the params in the request URL. In this case,\n // the response will include a header that gives the rewritten search query.\n const rewrittenQuery = response.headers.get(_approuterheaders.NEXT_REWRITTEN_QUERY_HEADER);\n if (rewrittenQuery !== null) {\n return rewrittenQuery === '' ? '' : '?' + rewrittenQuery;\n }\n // If the header is not present, there was no rewrite, so we use the search\n // query of the response URL.\n return urlToUrlWithoutFlightMarker(new URL(response.url)).search;\n}\nfunction getRenderedPathname(response) {\n // If the server performed a rewrite, the pathname used to render the\n // page will be different from the pathname in the request URL. In this case,\n // the response will include a header that gives the rewritten pathname.\n const rewrittenPath = response.headers.get(_approuterheaders.NEXT_REWRITTEN_PATH_HEADER);\n return rewrittenPath != null ? rewrittenPath : urlToUrlWithoutFlightMarker(new URL(response.url)).pathname;\n}\nfunction parseDynamicParamFromURLPart(paramType, pathnameParts, partIndex) {\n // This needs to match the behavior in get-dynamic-param.ts.\n switch(paramType){\n // Catchalls\n case 'c':\n case 'ci':\n {\n // Catchalls receive all the remaining URL parts. If there are no\n // remaining pathname parts, return an empty array.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : [];\n }\n // Optional catchalls\n case 'oc':\n {\n // Optional catchalls receive all the remaining URL parts, unless this is\n // the end of the pathname, in which case they return null.\n return partIndex < pathnameParts.length ? pathnameParts.slice(partIndex).map((s)=>encodeURIComponent(s)) : null;\n }\n // Dynamic\n case 'd':\n case 'di':\n {\n if (partIndex >= pathnameParts.length) {\n // The route tree expected there to be more parts in the URL than there\n // actually are. This could happen if the x-nextjs-rewritten-path header\n // is incorrectly set, or potentially due to bug in Next.js. TODO:\n // Should this be a hard error? During a prefetch, we can just abort.\n // During a client navigation, we could trigger a hard refresh. But if\n // it happens during initial render, we don't really have any\n // recovery options.\n return '';\n }\n return encodeURIComponent(pathnameParts[partIndex]);\n }\n default:\n paramType;\n return '';\n }\n}\nfunction doesStaticSegmentAppearInURL(segment) {\n // This is not a parameterized segment; however, we need to determine\n // whether or not this segment appears in the URL. For example, this route\n // groups do not appear in the URL, so they should be skipped. Any other\n // special cases must be handled here.\n // TODO: Consider encoding this directly into the router tree instead of\n // inferring it on the client based on the segment type. Something like\n // a `doesAppearInURL` flag in FlightRouterState.\n if (segment === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY || // For some reason, the loader tree sometimes includes extra __PAGE__\n // \"layouts\" when part of a parallel route. But it's not a leaf node.\n // Otherwise, we wouldn't need this special case because pages are\n // always leaf nodes.\n // TODO: Investigate why the loader produces these fake page segments.\n segment.startsWith(_segment.PAGE_SEGMENT_KEY) || // Route groups.\n segment[0] === '(' && segment.endsWith(')') || segment === _segment.DEFAULT_SEGMENT_KEY || segment === '/_not-found') {\n return false;\n } else {\n // All other segment types appear in the URL\n return true;\n }\n}\nfunction getCacheKeyForDynamicParam(paramValue, renderedSearch) {\n // This needs to match the logic in get-dynamic-param.ts, until we're able to\n // unify the various implementations so that these are always computed on\n // the client.\n if (typeof paramValue === 'string') {\n // TODO: Refactor or remove this helper function to accept a string rather\n // than the whole segment type. Also we can probably just append the\n // search string instead of turning it into JSON.\n const pageSegmentWithSearchParams = (0, _segment.addSearchParamsIfPageSegment)(paramValue, Object.fromEntries(new URLSearchParams(renderedSearch)));\n return pageSegmentWithSearchParams;\n } else if (paramValue === null) {\n return '';\n } else {\n return paramValue.join('/');\n }\n}\nfunction urlToUrlWithoutFlightMarker(url) {\n const urlWithoutFlightParameters = new URL(url);\n urlWithoutFlightParameters.searchParams.delete(_approuterheaders.NEXT_RSC_UNION_QUERY);\n if (false) {}\n return urlWithoutFlightParameters;\n}\nfunction getParamValueFromCacheKey(paramCacheKey, paramType) {\n // Turn the cache key string sent by the server (as part of FlightRouterState)\n // into a value that can be passed to `useParams` and client components.\n const isCatchAll = paramType === 'c' || paramType === 'oc';\n if (isCatchAll) {\n // Catch-all param keys are a concatenation of the path segments.\n // See equivalent logic in `getSelectedParams`.\n // TODO: We should just pass the array directly, rather than concatenate\n // it to a string and then split it back to an array. It needs to be an\n // array in some places, like when passing a key React, but we can convert\n // it at runtime in those places.\n return paramCacheKey.split('/');\n }\n return paramCacheKey;\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-params.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JvdXRlLXBhcmFtcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7SUE4RmdCQSw0QkFBNEI7ZUFBNUJBOztJQTRCQUMsMEJBQTBCO2VBQTFCQTs7SUF3Q0FDLHlCQUF5QjtlQUF6QkE7O0lBM0hBQyxtQkFBbUI7ZUFBbkJBOztJQWhCQUMsaUJBQWlCO2VBQWpCQTs7SUEwQkFDLDRCQUE0QjtlQUE1QkE7O0lBZ0dBQywyQkFBMkI7ZUFBM0JBOzs7cUNBNUlUO2tEQUNrQzs4Q0FLbEM7QUFZQSxTQUFTRixrQkFBa0JHLFFBQXFCO0lBQ3JELDBFQUEwRTtJQUMxRSwyRUFBMkU7SUFDM0UsNEVBQTRFO0lBQzVFLE1BQU1DLGlCQUFpQkQsU0FBU0UsT0FBTyxDQUFDQyxHQUFHLENBQUNDLGtCQUFBQSwyQkFBMkI7SUFDdkUsSUFBSUgsbUJBQW1CLE1BQU07UUFDM0IsT0FDRUEsbUJBQW1CLEtBQUssS0FBSyxNQUFNQTtJQUV2QztJQUNBLDJFQUEyRTtJQUMzRSw2QkFBNkI7SUFDN0IsT0FBT0YsNEJBQTRCLElBQUlNLElBQUlMLFNBQVNNLEdBQUcsR0FDcERDLE1BQU07QUFDWDtBQUVPLFNBQVNYLG9CQUFvQkksUUFBcUI7SUFDdkQscUVBQXFFO0lBQ3JFLDZFQUE2RTtJQUM3RSx3RUFBd0U7SUFDeEUsTUFBTVEsZ0JBQWdCUixTQUFTRSxPQUFPLENBQUNDLEdBQUcsQ0FBQ00sa0JBQUFBLDBCQUEwQjtJQUNyRSxPQUNFRCxpQkFBQUEsT0FBQUEsZ0JBQWlCVCw0QkFBNEIsSUFBSU0sSUFBSUwsU0FBU00sR0FBRyxHQUFHSSxRQUFRO0FBRWhGO0FBRU8sU0FBU1osNkJBQ2RhLFNBQWlDLEVBQ2pDQyxhQUE0QixFQUM1QkMsU0FBaUI7SUFF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dC9yb3V0ZS1wYXJhbXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEeW5hbWljUGFyYW1UeXBlc1Nob3J0IH0gZnJvbSAnLi4vc2VydmVyL2FwcC1yZW5kZXIvdHlwZXMnXG5pbXBvcnQge1xuICBhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50LFxuICBERUZBVUxUX1NFR01FTlRfS0VZLFxuICBQQUdFX1NFR01FTlRfS0VZLFxufSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQnXG5pbXBvcnQgeyBST09UX1NFR01FTlRfUkVRVUVTVF9LRVkgfSBmcm9tICcuLi9zaGFyZWQvbGliL3NlZ21lbnQtY2FjaGUvc2VnbWVudC12YWx1ZS1lbmNvZGluZydcbmltcG9ydCB7XG4gIE5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSLFxuICBORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIsXG4gIE5FWFRfUlNDX1VOSU9OX1FVRVJZLFxufSBmcm9tICcuL2NvbXBvbmVudHMvYXBwLXJvdXRlci1oZWFkZXJzJ1xuaW1wb3J0IHR5cGUgeyBOb3JtYWxpemVkU2VhcmNoIH0gZnJvbSAnLi9jb21wb25lbnRzL3NlZ21lbnQtY2FjaGUnXG5pbXBvcnQgdHlwZSB7IFJTQ1Jlc3BvbnNlIH0gZnJvbSAnLi9jb21wb25lbnRzL3JvdXRlci1yZWR1Y2VyL2ZldGNoLXNlcnZlci1yZXNwb25zZSdcblxuZXhwb3J0IHR5cGUgUm91dGVQYXJhbVZhbHVlID0gc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB8IG51bGxcblxuZXhwb3J0IHR5cGUgUm91dGVQYXJhbSA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIHZhbHVlOiBSb3V0ZVBhcmFtVmFsdWVcbiAgdHlwZTogRHluYW1pY1BhcmFtVHlwZXNTaG9ydFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVuZGVyZWRTZWFyY2gocmVzcG9uc2U6IFJTQ1Jlc3BvbnNlKTogTm9ybWFsaXplZFNlYXJjaCB7XG4gIC8vIElmIHRoZSBzZXJ2ZXIgcGVyZm9ybWVkIGEgcmV3cml0ZSwgdGhlIHNlYXJjaCBwYXJhbXMgdXNlZCB0byByZW5kZXIgdGhlXG4gIC8vIHBhZ2Ugd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcGFyYW1zIGluIHRoZSByZXF1ZXN0IFVSTC4gSW4gdGhpcyBjYXNlLFxuICAvLyB0aGUgcmVzcG9uc2Ugd2lsbCBpbmNsdWRlIGEgaGVhZGVyIHRoYXQgZ2l2ZXMgdGhlIHJld3JpdHRlbiBzZWFyY2ggcXVlcnkuXG4gIGNvbnN0IHJld3JpdHRlblF1ZXJ5ID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSKVxuICBpZiAocmV3cml0dGVuUXVlcnkgIT09IG51bGwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgcmV3cml0dGVuUXVlcnkgPT09ICcnID8gJycgOiAnPycgKyByZXdyaXR0ZW5RdWVyeVxuICAgICkgYXMgTm9ybWFsaXplZFNlYXJjaFxuICB9XG4gIC8vIElmIHRoZSBoZWFkZXIgaXMgbm90IHByZXNlbnQsIHRoZXJlIHdhcyBubyByZXdyaXRlLCBzbyB3ZSB1c2UgdGhlIHNlYXJjaFxuICAvLyBxdWVyeSBvZiB0aGUgcmVzcG9uc2UgVVJMLlxuICByZXR1cm4gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKG5ldyBVUkwocmVzcG9uc2UudXJsKSlcbiAgICAuc2VhcmNoIGFzIE5vcm1hbGl6ZWRTZWFyY2hcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbmRlcmVkUGF0aG5hbWUocmVzcG9uc2U6IFJTQ1Jlc3BvbnNlKTogc3RyaW5nIHtcbiAgLy8gSWYgdGhlIHNlcnZlciBwZXJmb3JtZWQgYSByZXdyaXRlLCB0aGUgcGF0aG5hbWUgdXNlZCB0byByZW5kZXIgdGhlXG4gIC8vIHBhZ2Ugd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgcGF0aG5hbWUgaW4gdGhlIHJlcXVlc3QgVVJMLiBJbiB0aGlzIGNhc2UsXG4gIC8vIHRoZSByZXNwb25zZSB3aWxsIGluY2x1ZGUgYSBoZWFkZXIgdGhhdCBnaXZlcyB0aGUgcmV3cml0dGVuIHBhdGhuYW1lLlxuICBjb25zdCByZXdyaXR0ZW5QYXRoID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoTkVYVF9SRVdSSVRURU5fUEFUSF9IRUFERVIpXG4gIHJldHVybiAoXG4gICAgcmV3cml0dGVuUGF0aCA/PyB1cmxUb1VybFdpdGhvdXRGbGlnaHRNYXJrZXIobmV3IFVSTChyZXNwb25zZS51cmwpKS5wYXRobmFtZVxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0KFxuICBwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnQsXG4gIHBhdGhuYW1lUGFydHM6IEFycmF5PHN0cmluZz4sXG4gIHBhcnRJbmRleDogbnVtYmVyXG4pOiBSb3V0ZVBhcmFtVmFsdWUge1xuICAvLyBUaGlzIG5lZWRzIHRvIG1hdGNoIHRoZSBiZWhhdmlvciBpbiBnZXQtZHluYW1pYy1wYXJhbS50cy5cbiAgc3dpdGNoIChwYXJhbVR5cGUpIHtcbiAgICAvLyBDYXRjaGFsbHNcbiAgICBjYXNlICdjJzpcbiAgICBjYXNlICdjaSc6IHtcbiAgICAgIC8vIENhdGNoYWxscyByZWNlaXZlIGFsbCB0aGUgcmVtYWluaW5nIFVSTCBwYXJ0cy4gSWYgdGhlcmUgYXJlIG5vXG4gICAgICAvLyByZW1haW5pbmcgcGF0aG5hbWUgcGFydHMsIHJldHVybiBhbiBlbXB0eSBhcnJheS5cbiAgICAgIHJldHVybiBwYXJ0SW5kZXggPCBwYXRobmFtZVBhcnRzLmxlbmd0aFxuICAgICAgICA/IHBhdGhuYW1lUGFydHMuc2xpY2UocGFydEluZGV4KS5tYXAoKHMpID0+IGVuY29kZVVSSUNvbXBvbmVudChzKSlcbiAgICAgICAgOiBbXVxuICAgIH1cbiAgICAvLyBPcHRpb25hbCBjYXRjaGFsbHNcbiAgICBjYXNlICdvYyc6IHtcbiAgICAgIC8vIE9wdGlvbmFsIGNhdGNoYWxscyByZWNlaXZlIGFsbCB0aGUgcmVtYWluaW5nIFVSTCBwYXJ0cywgdW5sZXNzIHRoaXMgaXNcbiAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIHBhdGhuYW1lLCBpbiB3aGljaCBjYXNlIHRoZXkgcmV0dXJuIG51bGwuXG4gICAgICByZXR1cm4gcGFydEluZGV4IDwgcGF0aG5hbWVQYXJ0cy5sZW5ndGhcbiAgICAgICAgPyBwYXRobmFtZVBhcnRzLnNsaWNlKHBhcnRJbmRleCkubWFwKChzKSA9PiBlbmNvZGVVUklDb21wb25lbnQocykpXG4gICAgICAgIDogbnVsbFxuICAgIH1cbiAgICAvLyBEeW5hbWljXG4gICAgY2FzZSAnZCc6XG4gICAgY2FzZSAnZGknOiB7XG4gICAgICBpZiAocGFydEluZGV4ID49IHBhdGhuYW1lUGFydHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIFRoZSByb3V0ZSB0cmVlIGV4cGVjdGVkIHRoZXJlIHRvIGJlIG1vcmUgcGFydHMgaW4gdGhlIFVSTCB0aGFuIHRoZXJlXG4gICAgICAgIC8vIGFjdHVhbGx5IGFyZS4gVGhpcyBjb3VsZCBoYXBwZW4gaWYgdGhlIHgtbmV4dGpzLXJld3JpdHRlbi1wYXRoIGhlYWRlclxuICAgICAgICAvLyBpcyBpbmNvcnJlY3RseSBzZXQsIG9yIHBvdGVudGlhbGx5IGR1ZSB0byBidWcgaW4gTmV4dC5qcy4gVE9ETzpcbiAgICAgICAgLy8gU2hvdWxkIHRoaXMgYmUgYSBoYXJkIGVycm9yPyBEdXJpbmcgYSBwcmVmZXRjaCwgd2UgY2FuIGp1c3QgYWJvcnQuXG4gICAgICAgIC8vIER1cmluZyBhIGNsaWVudCBuYXZpZ2F0aW9uLCB3ZSBjb3VsZCB0cmlnZ2VyIGEgaGFyZCByZWZyZXNoLiBCdXQgaWZcbiAgICAgICAgLy8gaXQgaGFwcGVucyBkdXJpbmcgaW5pdGlhbCByZW5kZXIsIHdlIGRvbid0IHJlYWxseSBoYXZlIGFueVxuICAgICAgICAvLyByZWNvdmVyeSBvcHRpb25zLlxuICAgICAgICByZXR1cm4gJydcbiAgICAgIH1cbiAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQocGF0aG5hbWVQYXJ0c1twYXJ0SW5kZXhdKVxuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcGFyYW1UeXBlIHNhdGlzZmllcyBuZXZlclxuICAgICAgcmV0dXJuICcnXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwoc2VnbWVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIC8vIFRoaXMgaXMgbm90IGEgcGFyYW1ldGVyaXplZCBzZWdtZW50OyBob3dldmVyLCB3ZSBuZWVkIHRvIGRldGVybWluZVxuICAvLyB3aGV0aGVyIG9yIG5vdCB0aGlzIHNlZ21lbnQgYXBwZWFycyBpbiB0aGUgVVJMLiBGb3IgZXhhbXBsZSwgdGhpcyByb3V0ZVxuICAvLyBncm91cHMgZG8gbm90IGFwcGVhciBpbiB0aGUgVVJMLCBzbyB0aGV5IHNob3VsZCBiZSBza2lwcGVkLiBBbnkgb3RoZXJcbiAgLy8gc3BlY2lhbCBjYXNlcyBtdXN0IGJlIGhhbmRsZWQgaGVyZS5cbiAgLy8gVE9ETzogQ29uc2lkZXIgZW5jb2RpbmcgdGhpcyBkaXJlY3RseSBpbnRvIHRoZSByb3V0ZXIgdHJlZSBpbnN0ZWFkIG9mXG4gIC8vIGluZmVycmluZyBpdCBvbiB0aGUgY2xpZW50IGJhc2VkIG9uIHRoZSBzZWdtZW50IHR5cGUuIFNvbWV0aGluZyBsaWtlXG4gIC8vIGEgYGRvZXNBcHBlYXJJblVSTGAgZmxhZyBpbiBGbGlnaHRSb3V0ZXJTdGF0ZS5cbiAgaWYgKFxuICAgIHNlZ21lbnQgPT09IFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWSB8fFxuICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdGhlIGxvYWRlciB0cmVlIHNvbWV0aW1lcyBpbmNsdWRlcyBleHRyYSBfX1BBR0VfX1xuICAgIC8vIFwibGF5b3V0c1wiIHdoZW4gcGFydCBvZiBhIHBhcmFsbGVsIHJvdXRlLiBCdXQgaXQncyBub3QgYSBsZWFmIG5vZGUuXG4gICAgLy8gT3RoZXJ3aXNlLCB3ZSB3b3VsZG4ndCBuZWVkIHRoaXMgc3BlY2lhbCBjYXNlIGJlY2F1c2UgcGFnZXMgYXJlXG4gICAgLy8gYWx3YXlzIGxlYWYgbm9kZXMuXG4gICAgLy8gVE9ETzogSW52ZXN0aWdhdGUgd2h5IHRoZSBsb2FkZXIgcHJvZHVjZXMgdGhlc2UgZmFrZSBwYWdlIHNlZ21lbnRzLlxuICAgIHNlZ21lbnQuc3RhcnRzV2l0aChQQUdFX1NFR01FTlRfS0VZKSB8fFxuICAgIC8vIFJvdXRlIGdyb3Vwcy5cbiAgICAoc2VnbWVudFswXSA9PT0gJygnICYmIHNlZ21lbnQuZW5kc1dpdGgoJyknKSkgfHxcbiAgICBzZWdtZW50ID09PSBERUZBVUxUX1NFR01FTlRfS0VZIHx8XG4gICAgc2VnbWVudCA9PT0gJy9fbm90LWZvdW5kJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICAvLyBBbGwgb3RoZXIgc2VnbWVudCB0eXBlcyBhcHBlYXIgaW4gdGhlIFVSTFxuICAgIHJldHVybiB0cnVlXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtKFxuICBwYXJhbVZhbHVlOiBSb3V0ZVBhcmFtVmFsdWUsXG4gIHJlbmRlcmVkU2VhcmNoOiBOb3JtYWxpemVkU2VhcmNoXG4pOiBzdHJpbmcge1xuICAvLyBUaGlzIG5lZWRzIHRvIG1hdGNoIHRoZSBsb2dpYyBpbiBnZXQtZHluYW1pYy1wYXJhbS50cywgdW50aWwgd2UncmUgYWJsZSB0b1xuICAvLyB1bmlmeSB0aGUgdmFyaW91cyBpbXBsZW1lbnRhdGlvbnMgc28gdGhhdCB0aGVzZSBhcmUgYWx3YXlzIGNvbXB1dGVkIG9uXG4gIC8vIHRoZSBjbGllbnQuXG4gIGlmICh0eXBlb2YgcGFyYW1WYWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUT0RPOiBSZWZhY3RvciBvciByZW1vdmUgdGhpcyBoZWxwZXIgZnVuY3Rpb24gdG8gYWNjZXB0IGEgc3RyaW5nIHJhdGhlclxuICAgIC8vIHRoYW4gdGhlIHdob2xlIHNlZ21lbnQgdHlwZS4gQWxzbyB3ZSBjYW4gcHJvYmFibHkganVzdCBhcHBlbmQgdGhlXG4gICAgLy8gc2VhcmNoIHN0cmluZyBpbnN0ZWFkIG9mIHR1cm5pbmcgaXQgaW50byBKU09OLlxuICAgIGNvbnN0IHBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtcyA9IGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQoXG4gICAgICBwYXJhbVZhbHVlLFxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBVUkxTZWFyY2hQYXJhbXMocmVuZGVyZWRTZWFyY2gpKVxuICAgICkgYXMgc3RyaW5nXG4gICAgcmV0dXJuIHBhZ2VTZWdtZW50V2l0aFNlYXJjaFBhcmFtc1xuICB9IGVsc2UgaWYgKHBhcmFtVmFsdWUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gJydcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcGFyYW1WYWx1ZS5qb2luKCcvJylcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKHVybDogVVJMKTogVVJMIHtcbiAgY29uc3QgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMgPSBuZXcgVVJMKHVybClcbiAgdXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMuc2VhcmNoUGFyYW1zLmRlbGV0ZShORVhUX1JTQ19VTklPTl9RVUVSWSlcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoXG4gICAgICBwcm9jZXNzLmVudi5fX05FWFRfQ09ORklHX09VVFBVVCA9PT0gJ2V4cG9ydCcgJiZcbiAgICAgIHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzLnBhdGhuYW1lLmVuZHNXaXRoKCcudHh0JylcbiAgICApIHtcbiAgICAgIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHVybFdpdGhvdXRGbGlnaHRQYXJhbWV0ZXJzXG4gICAgICBjb25zdCBsZW5ndGggPSBwYXRobmFtZS5lbmRzV2l0aCgnL2luZGV4LnR4dCcpID8gMTAgOiA0XG4gICAgICAvLyBTbGljZSBvZmYgYC9pbmRleC50eHRgIG9yIGAudHh0YCBmcm9tIHRoZSBlbmQgb2YgdGhlIHBhdGhuYW1lXG4gICAgICB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVycy5wYXRobmFtZSA9IHBhdGhuYW1lLnNsaWNlKDAsIC1sZW5ndGgpXG4gICAgfVxuICB9XG4gIHJldHVybiB1cmxXaXRob3V0RmxpZ2h0UGFyYW1ldGVyc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyYW1WYWx1ZUZyb21DYWNoZUtleShcbiAgcGFyYW1DYWNoZUtleTogc3RyaW5nLFxuICBwYXJhbVR5cGU6IER5bmFtaWNQYXJhbVR5cGVzU2hvcnRcbikge1xuICAvLyBUdXJuIHRoZSBjYWNoZSBrZXkgc3RyaW5nIHNlbnQgYnkgdGhlIHNlcnZlciAoYXMgcGFydCBvZiBGbGlnaHRSb3V0ZXJTdGF0ZSlcbiAgLy8gaW50byBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBgdXNlUGFyYW1zYCBhbmQgY2xpZW50IGNvbXBvbmVudHMuXG4gIGNvbnN0IGlzQ2F0Y2hBbGwgPSBwYXJhbVR5cGUgPT09ICdjJyB8fCBwYXJhbVR5cGUgPT09ICdvYydcbiAgaWYgKGlzQ2F0Y2hBbGwpIHtcbiAgICAvLyBDYXRjaC1hbGwgcGFyYW0ga2V5cyBhcmUgYSBjb25jYXRlbmF0aW9uIG9mIHRoZSBwYXRoIHNlZ21lbnRzLlxuICAgIC8vIFNlZSBlcXVpdmFsZW50IGxvZ2ljIGluIGBnZXRTZWxlY3RlZFBhcmFtc2AuXG4gICAgLy8gVE9ETzogV2Ugc2hvdWxkIGp1c3QgcGFzcyB0aGUgYXJyYXkgZGlyZWN0bHksIHJhdGhlciB0aGFuIGNvbmNhdGVuYXRlXG4gICAgLy8gaXQgdG8gYSBzdHJpbmcgYW5kIHRoZW4gc3BsaXQgaXQgYmFjayB0byBhbiBhcnJheS4gSXQgbmVlZHMgdG8gYmUgYW5cbiAgICAvLyBhcnJheSBpbiBzb21lIHBsYWNlcywgbGlrZSB3aGVuIHBhc3NpbmcgYSBrZXkgUmVhY3QsIGJ1dCB3ZSBjYW4gY29udmVydFxuICAgIC8vIGl0IGF0IHJ1bnRpbWUgaW4gdGhvc2UgcGxhY2VzLlxuICAgIHJldHVybiBwYXJhbUNhY2hlS2V5LnNwbGl0KCcvJylcbiAgfVxuICByZXR1cm4gcGFyYW1DYWNoZUtleVxufVxuIl0sIm5hbWVzIjpbImRvZXNTdGF0aWNTZWdtZW50QXBwZWFySW5VUkwiLCJnZXRDYWNoZUtleUZvckR5bmFtaWNQYXJhbSIsImdldFBhcmFtVmFsdWVGcm9tQ2FjaGVLZXkiLCJnZXRSZW5kZXJlZFBhdGhuYW1lIiwiZ2V0UmVuZGVyZWRTZWFyY2giLCJwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0IiwidXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyIiwicmVzcG9uc2UiLCJyZXdyaXR0ZW5RdWVyeSIsImhlYWRlcnMiLCJnZXQiLCJORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIiLCJVUkwiLCJ1cmwiLCJzZWFyY2giLCJyZXdyaXR0ZW5QYXRoIiwiTkVYVF9SRVdSSVRURU5fUEFUSF9IRUFERVIiLCJwYXRobmFtZSIsInBhcmFtVHlwZSIsInBhdGhuYW1lUGFydHMiLCJwYXJ0SW5kZXgiLCJsZW5ndGgiLCJzbGljZSIsIm1hcCIsInMiLCJlbmNvZGVVUklDb21wb25lbnQiLCJzZWdtZW50IiwiUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZIiwic3RhcnRzV2l0aCIsIlBBR0VfU0VHTUVOVF9LRVkiLCJlbmRzV2l0aCIsIkRFRkFVTFRfU0VHTUVOVF9LRVkiLCJwYXJhbVZhbHVlIiwicmVuZGVyZWRTZWFyY2giLCJwYWdlU2VnbWVudFdpdGhTZWFyY2hQYXJhbXMiLCJhZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50IiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJqb2luIiwidXJsV2l0aG91dEZsaWdodFBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJkZWxldGUiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIl9fTkVYVF9DT05GSUdfT1VUUFVUIiwicGFyYW1DYWNoZUtleSIsImlzQ2F0Y2hBbGwiLCJzcGxpdCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/route-params.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/set-attributes-from-props.js": /*!***********************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/set-attributes-from-props.js ***! \***********************************************************************************************************************************************/ /***/ ((module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"setAttributesFromProps\", ({\n enumerable: true,\n get: function() {\n return setAttributesFromProps;\n }\n}));\nconst DOMAttributeNames = {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv',\n noModule: 'noModule'\n};\nconst ignoreProps = [\n 'onLoad',\n 'onReady',\n 'dangerouslySetInnerHTML',\n 'children',\n 'onError',\n 'strategy',\n 'stylesheets'\n];\nfunction isBooleanScriptAttribute(attr) {\n return [\n 'async',\n 'defer',\n 'noModule'\n ].includes(attr);\n}\nfunction setAttributesFromProps(el, props) {\n for (const [p, value] of Object.entries(props)){\n if (!props.hasOwnProperty(p)) continue;\n if (ignoreProps.includes(p)) continue;\n // we don't render undefined props to the DOM\n if (value === undefined) {\n continue;\n }\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr)) {\n // Correctly assign boolean script attributes\n // https://github.com/vercel/next.js/pull/20748\n ;\n el[attr] = !!value;\n } else {\n el.setAttribute(attr, String(value));\n }\n // Remove falsy non-zero boolean attributes so they are correctly interpreted\n // (e.g. if we set them to false, this coerces to the string \"false\", which the browser interprets as true)\n if (value === false || el.tagName === 'SCRIPT' && isBooleanScriptAttribute(attr) && (!value || value === 'false')) {\n // Call setAttribute before, as we need to set and unset the attribute to override force async:\n // https://html.spec.whatwg.org/multipage/scripting.html#script-force-async\n el.setAttribute(attr, '');\n el.removeAttribute(attr);\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=set-attributes-from-props.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3NldC1hdHRyaWJ1dGVzLWZyb20tcHJvcHMuanMiLCJtYXBwaW5ncyI6Ijs7OzswREF3QmdCQTs7O2VBQUFBOzs7QUF4QmhCLE1BQU1DLG9CQUE0QztJQUNoREMsZUFBZTtJQUNmQyxXQUFXO0lBQ1hDLFNBQVM7SUFDVEMsV0FBVztJQUNYQyxVQUFVO0FBQ1o7QUFFQSxNQUFNQyxjQUFjO0lBQ2xCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFRCxTQUFTQyx5QkFDUEMsSUFBWTtJQUVaLE9BQU87UUFBQztRQUFTO1FBQVM7S0FBVyxDQUFDQyxRQUFRLENBQUNEO0FBQ2pEO0FBRU8sU0FBU1QsdUJBQXVCVyxFQUFlLEVBQUVDLEtBQWE7SUFDbkUsS0FBSyxNQUFNLENBQUNDLEdBQUdDLE1BQU0sSUFBSUMsT0FBT0MsT0FBTyxDQUFDSixPQUFRO1FBQzlDLElBQUksQ0FBQ0EsTUFBTUssY0FBYyxDQUFDSixJQUFJO1FBQzlCLElBQUlOLFlBQVlHLFFBQVEsQ0FBQ0csSUFBSTtRQUU3Qiw2Q0FBNkM7UUFDN0MsSUFBSUMsVUFBVUksV0FBVztZQUN2QjtRQUNGO1FBRUEsTUFBTVQsT0FBT1IsaUJBQWlCLENBQUNZLEVBQUUsSUFBSUEsRUFBRU0sV0FBVztRQUVsRCxJQUFJUixHQUFHUyxPQUFPLEtBQUssWUFBWVoseUJBQXlCQyxPQUFPO1lBQzdELDZDQUE2QztZQUM3QywrQ0FBK0M7O1lBQzdDRSxFQUF3QixDQUFDRixLQUFLLEdBQUcsQ0FBQyxDQUFDSztRQUN2QyxPQUFPO1lBQ0xILEdBQUdVLFlBQVksQ0FBQ1osTUFBTWEsT0FBT1I7UUFDL0I7UUFFQSw2RUFBNkU7UUFDN0UsMkdBQTJHO1FBQzNHLElBQ0VBLFVBQVUsU0FDVEgsR0FBR1MsT0FBTyxLQUFLLFlBQ2RaLHlCQUF5QkMsU0FDeEIsRUFBQ0ssU0FBU0EsVUFBVSxRQUFNLEVBQzdCO1lBQ0EsK0ZBQStGO1lBQy9GLDJFQUEyRTtZQUMzRUgsR0FBR1UsWUFBWSxDQUFDWixNQUFNO1lBQ3RCRSxHQUFHWSxlQUFlLENBQUNkO1FBQ3JCO0lBQ0Y7QUFDRiIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3NyYy9jbGllbnQvc2V0LWF0dHJpYnV0ZXMtZnJvbS1wcm9wcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBET01BdHRyaWJ1dGVOYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgYWNjZXB0Q2hhcnNldDogJ2FjY2VwdC1jaGFyc2V0JyxcbiAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuICBodG1sRm9yOiAnZm9yJyxcbiAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdicsXG4gIG5vTW9kdWxlOiAnbm9Nb2R1bGUnLFxufVxuXG5jb25zdCBpZ25vcmVQcm9wcyA9IFtcbiAgJ29uTG9hZCcsXG4gICdvblJlYWR5JyxcbiAgJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJyxcbiAgJ2NoaWxkcmVuJyxcbiAgJ29uRXJyb3InLFxuICAnc3RyYXRlZ3knLFxuICAnc3R5bGVzaGVldHMnLFxuXVxuXG5mdW5jdGlvbiBpc0Jvb2xlYW5TY3JpcHRBdHRyaWJ1dGUoXG4gIGF0dHI6IHN0cmluZ1xuKTogYXR0ciBpcyAnYXN5bmMnIHwgJ2RlZmVyJyB8ICdub01vZHVsZScge1xuICByZXR1cm4gWydhc3luYycsICdkZWZlcicsICdub01vZHVsZSddLmluY2x1ZGVzKGF0dHIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRBdHRyaWJ1dGVzRnJvbVByb3BzKGVsOiBIVE1MRWxlbWVudCwgcHJvcHM6IG9iamVjdCkge1xuICBmb3IgKGNvbnN0IFtwLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcHMpKSB7XG4gICAgaWYgKCFwcm9wcy5oYXNPd25Qcm9wZXJ0eShwKSkgY29udGludWVcbiAgICBpZiAoaWdub3JlUHJvcHMuaW5jbHVkZXMocCkpIGNvbnRpbnVlXG5cbiAgICAvLyB3ZSBkb24ndCByZW5kZXIgdW5kZWZpbmVkIHByb3BzIHRvIHRoZSBET01cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBjb25zdCBhdHRyID0gRE9NQXR0cmlidXRlTmFtZXNbcF0gfHwgcC50b0xvd2VyQ2FzZSgpXG5cbiAgICBpZiAoZWwudGFnTmFtZSA9PT0gJ1NDUklQVCcgJiYgaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlKGF0dHIpKSB7XG4gICAgICAvLyBDb3JyZWN0bHkgYXNzaWduIGJvb2xlYW4gc2NyaXB0IGF0dHJpYnV0ZXNcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS92ZXJjZWwvbmV4dC5qcy9wdWxsLzIwNzQ4XG4gICAgICA7KGVsIGFzIEhUTUxTY3JpcHRFbGVtZW50KVthdHRyXSA9ICEhdmFsdWVcbiAgICB9IGVsc2Uge1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsIFN0cmluZyh2YWx1ZSkpXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGZhbHN5IG5vbi16ZXJvIGJvb2xlYW4gYXR0cmlidXRlcyBzbyB0aGV5IGFyZSBjb3JyZWN0bHkgaW50ZXJwcmV0ZWRcbiAgICAvLyAoZS5nLiBpZiB3ZSBzZXQgdGhlbSB0byBmYWxzZSwgdGhpcyBjb2VyY2VzIHRvIHRoZSBzdHJpbmcgXCJmYWxzZVwiLCB3aGljaCB0aGUgYnJvd3NlciBpbnRlcnByZXRzIGFzIHRydWUpXG4gICAgaWYgKFxuICAgICAgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgICAoZWwudGFnTmFtZSA9PT0gJ1NDUklQVCcgJiZcbiAgICAgICAgaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlKGF0dHIpICYmXG4gICAgICAgICghdmFsdWUgfHwgdmFsdWUgPT09ICdmYWxzZScpKVxuICAgICkge1xuICAgICAgLy8gQ2FsbCBzZXRBdHRyaWJ1dGUgYmVmb3JlLCBhcyB3ZSBuZWVkIHRvIHNldCBhbmQgdW5zZXQgdGhlIGF0dHJpYnV0ZSB0byBvdmVycmlkZSBmb3JjZSBhc3luYzpcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NjcmlwdGluZy5odG1sI3NjcmlwdC1mb3JjZS1hc3luY1xuICAgICAgZWwuc2V0QXR0cmlidXRlKGF0dHIsICcnKVxuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKGF0dHIpXG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsic2V0QXR0cmlidXRlc0Zyb21Qcm9wcyIsIkRPTUF0dHJpYnV0ZU5hbWVzIiwiYWNjZXB0Q2hhcnNldCIsImNsYXNzTmFtZSIsImh0bWxGb3IiLCJodHRwRXF1aXYiLCJub01vZHVsZSIsImlnbm9yZVByb3BzIiwiaXNCb29sZWFuU2NyaXB0QXR0cmlidXRlIiwiYXR0ciIsImluY2x1ZGVzIiwiZWwiLCJwcm9wcyIsInAiLCJ2YWx1ZSIsIk9iamVjdCIsImVudHJpZXMiLCJoYXNPd25Qcm9wZXJ0eSIsInVuZGVmaW5lZCIsInRvTG93ZXJDYXNlIiwidGFnTmFtZSIsInNldEF0dHJpYnV0ZSIsIlN0cmluZyIsInJlbW92ZUF0dHJpYnV0ZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/client/set-attributes-from-props.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js": /*!***********************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js ***! \***********************************************************************************************************************************************************************/ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\n/**\n * MIT License\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\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 */\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n// This file is copied from the Metro JavaScript bundler, with minor tweaks for\n// webpack 4 compatibility.\n//\n// https://github.com/facebook/metro/blob/d6b9685c730d0d63577db40f41369157f28dfa3a/packages/metro/src/lib/polyfills/require.js\nconst runtime_1 = __importDefault(__webpack_require__(/*! next/dist/compiled/react-refresh/runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-refresh/runtime.js\"));\nfunction isSafeExport(key) {\n return (key === '__esModule' ||\n key === '__N_SSG' ||\n key === '__N_SSP' ||\n // TODO: remove this key from page config instead of allow listing it\n key === 'config');\n}\nfunction registerExportsForReactRefresh(moduleExports, moduleID) {\n runtime_1.default.register(moduleExports, moduleID + ' %exports%');\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n // (This is important for legacy environments.)\n return;\n }\n for (var key in moduleExports) {\n if (isSafeExport(key)) {\n continue;\n }\n try {\n var exportValue = moduleExports[key];\n }\n catch (_a) {\n // This might fail due to circular dependencies\n continue;\n }\n var typeID = moduleID + ' %exports% ' + key;\n runtime_1.default.register(exportValue, typeID);\n }\n}\nfunction getRefreshBoundarySignature(moduleExports) {\n var signature = [];\n signature.push(runtime_1.default.getFamilyByType(moduleExports));\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n // (This is important for legacy environments.)\n return signature;\n }\n for (var key in moduleExports) {\n if (isSafeExport(key)) {\n continue;\n }\n try {\n var exportValue = moduleExports[key];\n }\n catch (_a) {\n // This might fail due to circular dependencies\n continue;\n }\n signature.push(key);\n signature.push(runtime_1.default.getFamilyByType(exportValue));\n }\n return signature;\n}\nfunction isReactRefreshBoundary(moduleExports) {\n if (runtime_1.default.isLikelyComponentType(moduleExports)) {\n return true;\n }\n if (moduleExports == null || typeof moduleExports !== 'object') {\n // Exit if we can't iterate over exports.\n return false;\n }\n var hasExports = false;\n var areAllExportsComponents = true;\n for (var key in moduleExports) {\n hasExports = true;\n if (isSafeExport(key)) {\n continue;\n }\n try {\n var exportValue = moduleExports[key];\n }\n catch (_a) {\n // This might fail due to circular dependencies\n return false;\n }\n if (!runtime_1.default.isLikelyComponentType(exportValue)) {\n areAllExportsComponents = false;\n }\n }\n return hasExports && areAllExportsComponents;\n}\nfunction shouldInvalidateReactRefreshBoundary(prevSignature, nextSignature) {\n if (prevSignature.length !== nextSignature.length) {\n return true;\n }\n for (var i = 0; i < nextSignature.length; i++) {\n if (prevSignature[i] !== nextSignature[i]) {\n return true;\n }\n }\n return false;\n}\nvar isUpdateScheduled = false;\n// This function aggregates updates from multiple modules into a single React Refresh call.\nfunction scheduleUpdate() {\n if (isUpdateScheduled) {\n return;\n }\n isUpdateScheduled = true;\n function canApplyUpdate(status) {\n return status === 'idle';\n }\n function applyUpdate() {\n isUpdateScheduled = false;\n try {\n runtime_1.default.performReactRefresh();\n }\n catch (err) {\n console.warn('Warning: Failed to re-render. We will retry on the next Fast Refresh event.\\n' +\n err);\n }\n }\n if (canApplyUpdate(module.hot.status())) {\n // Apply update on the next tick.\n Promise.resolve().then(() => {\n applyUpdate();\n });\n return;\n }\n const statusHandler = (status) => {\n if (canApplyUpdate(status)) {\n module.hot.removeStatusHandler(statusHandler);\n applyUpdate();\n }\n };\n // Apply update once the HMR runtime's status is idle.\n module.hot.addStatusHandler(statusHandler);\n}\n// Needs to be compatible with IE11\nexports[\"default\"] = {\n registerExportsForReactRefresh: registerExportsForReactRefresh,\n isReactRefreshBoundary: isReactRefreshBoundary,\n shouldInvalidateReactRefreshBoundary: shouldInvalidateReactRefreshBoundary,\n getRefreshBoundarySignature: getRefreshBoundarySignature,\n scheduleUpdate: scheduleUpdate,\n};\n//# sourceMappingURL=helpers.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtcmVmcmVzaC11dGlscy9kaXN0L2ludGVybmFsL2hlbHBlcnMuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQSw4Q0FBNkMsRUFBRSxhQUFhLEVBQUM7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsbUJBQU8sQ0FBQywyTUFBMEM7QUFDcEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsMEJBQTBCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsVUFBVTtBQUNqQztBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLFVBQVU7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFVBQVU7QUFDZDtBQUNBO0FBQ0Esa0JBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsiL2hvbWUvc2FoYW1vbmUvRG9jdW1lbnRzL0xhIEJhbnF1aXNlL3dlYnNpdGUtZnJvbnQvYmFucXVpc2Utd2Vic2l0ZS9ub2RlX21vZHVsZXMvLnBucG0vbmV4dEAxNS41LjNfcmVhY3QtZG9tQDE5LjEuMV9yZWFjdEAxOS4xLjFfX3JlYWN0QDE5LjEuMS9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL0BuZXh0L3JlYWN0LXJlZnJlc2gtdXRpbHMvZGlzdC9pbnRlcm5hbC9oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBNSVQgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLlxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbiAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuICogU09GVFdBUkUuXG4gKi9cbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIFRoaXMgZmlsZSBpcyBjb3BpZWQgZnJvbSB0aGUgTWV0cm8gSmF2YVNjcmlwdCBidW5kbGVyLCB3aXRoIG1pbm9yIHR3ZWFrcyBmb3Jcbi8vIHdlYnBhY2sgNCBjb21wYXRpYmlsaXR5LlxuLy9cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9tZXRyby9ibG9iL2Q2Yjk2ODVjNzMwZDBkNjM1NzdkYjQwZjQxMzY5MTU3ZjI4ZGZhM2EvcGFja2FnZXMvbWV0cm8vc3JjL2xpYi9wb2x5ZmlsbHMvcmVxdWlyZS5qc1xuY29uc3QgcnVudGltZV8xID0gX19pbXBvcnREZWZhdWx0KHJlcXVpcmUoXCJuZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QtcmVmcmVzaC9ydW50aW1lXCIpKTtcbmZ1bmN0aW9uIGlzU2FmZUV4cG9ydChrZXkpIHtcbiAgICByZXR1cm4gKGtleSA9PT0gJ19fZXNNb2R1bGUnIHx8XG4gICAgICAgIGtleSA9PT0gJ19fTl9TU0cnIHx8XG4gICAgICAgIGtleSA9PT0gJ19fTl9TU1AnIHx8XG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSB0aGlzIGtleSBmcm9tIHBhZ2UgY29uZmlnIGluc3RlYWQgb2YgYWxsb3cgbGlzdGluZyBpdFxuICAgICAgICBrZXkgPT09ICdjb25maWcnKTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyRXhwb3J0c0ZvclJlYWN0UmVmcmVzaChtb2R1bGVFeHBvcnRzLCBtb2R1bGVJRCkge1xuICAgIHJ1bnRpbWVfMS5kZWZhdWx0LnJlZ2lzdGVyKG1vZHVsZUV4cG9ydHMsIG1vZHVsZUlEICsgJyAlZXhwb3J0cyUnKTtcbiAgICBpZiAobW9kdWxlRXhwb3J0cyA9PSBudWxsIHx8IHR5cGVvZiBtb2R1bGVFeHBvcnRzICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBFeGl0IGlmIHdlIGNhbid0IGl0ZXJhdGUgb3ZlciBleHBvcnRzLlxuICAgICAgICAvLyAoVGhpcyBpcyBpbXBvcnRhbnQgZm9yIGxlZ2FjeSBlbnZpcm9ubWVudHMuKVxuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAodmFyIGtleSBpbiBtb2R1bGVFeHBvcnRzKSB7XG4gICAgICAgIGlmIChpc1NhZmVFeHBvcnQoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBleHBvcnRWYWx1ZSA9IG1vZHVsZUV4cG9ydHNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgZmFpbCBkdWUgdG8gY2lyY3VsYXIgZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdHlwZUlEID0gbW9kdWxlSUQgKyAnICVleHBvcnRzJSAnICsga2V5O1xuICAgICAgICBydW50aW1lXzEuZGVmYXVsdC5yZWdpc3RlcihleHBvcnRWYWx1ZSwgdHlwZUlEKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRSZWZyZXNoQm91bmRhcnlTaWduYXR1cmUobW9kdWxlRXhwb3J0cykge1xuICAgIHZhciBzaWduYXR1cmUgPSBbXTtcbiAgICBzaWduYXR1cmUucHVzaChydW50aW1lXzEuZGVmYXVsdC5nZXRGYW1pbHlCeVR5cGUobW9kdWxlRXhwb3J0cykpO1xuICAgIGlmIChtb2R1bGVFeHBvcnRzID09IG51bGwgfHwgdHlwZW9mIG1vZHVsZUV4cG9ydHMgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIEV4aXQgaWYgd2UgY2FuJ3QgaXRlcmF0ZSBvdmVyIGV4cG9ydHMuXG4gICAgICAgIC8vIChUaGlzIGlzIGltcG9ydGFudCBmb3IgbGVnYWN5IGVudmlyb25tZW50cy4pXG4gICAgICAgIHJldHVybiBzaWduYXR1cmU7XG4gICAgfVxuICAgIGZvciAodmFyIGtleSBpbiBtb2R1bGVFeHBvcnRzKSB7XG4gICAgICAgIGlmIChpc1NhZmVFeHBvcnQoa2V5KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciBleHBvcnRWYWx1ZSA9IG1vZHVsZUV4cG9ydHNba2V5XTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgZmFpbCBkdWUgdG8gY2lyY3VsYXIgZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBzaWduYXR1cmUucHVzaChrZXkpO1xuICAgICAgICBzaWduYXR1cmUucHVzaChydW50aW1lXzEuZGVmYXVsdC5nZXRGYW1pbHlCeVR5cGUoZXhwb3J0VmFsdWUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpZ25hdHVyZTtcbn1cbmZ1bmN0aW9uIGlzUmVhY3RSZWZyZXNoQm91bmRhcnkobW9kdWxlRXhwb3J0cykge1xuICAgIGlmIChydW50aW1lXzEuZGVmYXVsdC5pc0xpa2VseUNvbXBvbmVudFR5cGUobW9kdWxlRXhwb3J0cykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChtb2R1bGVFeHBvcnRzID09IG51bGwgfHwgdHlwZW9mIG1vZHVsZUV4cG9ydHMgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIEV4aXQgaWYgd2UgY2FuJ3QgaXRlcmF0ZSBvdmVyIGV4cG9ydHMuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdmFyIGhhc0V4cG9ydHMgPSBmYWxzZTtcbiAgICB2YXIgYXJlQWxsRXhwb3J0c0NvbXBvbmVudHMgPSB0cnVlO1xuICAgIGZvciAodmFyIGtleSBpbiBtb2R1bGVFeHBvcnRzKSB7XG4gICAgICAgIGhhc0V4cG9ydHMgPSB0cnVlO1xuICAgICAgICBpZiAoaXNTYWZlRXhwb3J0KGtleSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgZXhwb3J0VmFsdWUgPSBtb2R1bGVFeHBvcnRzW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IGZhaWwgZHVlIHRvIGNpcmN1bGFyIGRlcGVuZGVuY2llc1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcnVudGltZV8xLmRlZmF1bHQuaXNMaWtlbHlDb21wb25lbnRUeXBlKGV4cG9ydFZhbHVlKSkge1xuICAgICAgICAgICAgYXJlQWxsRXhwb3J0c0NvbXBvbmVudHMgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGFzRXhwb3J0cyAmJiBhcmVBbGxFeHBvcnRzQ29tcG9uZW50cztcbn1cbmZ1bmN0aW9uIHNob3VsZEludmFsaWRhdGVSZWFjdFJlZnJlc2hCb3VuZGFyeShwcmV2U2lnbmF0dXJlLCBuZXh0U2lnbmF0dXJlKSB7XG4gICAgaWYgKHByZXZTaWduYXR1cmUubGVuZ3RoICE9PSBuZXh0U2lnbmF0dXJlLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0U2lnbmF0dXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChwcmV2U2lnbmF0dXJlW2ldICE9PSBuZXh0U2lnbmF0dXJlW2ldKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG52YXIgaXNVcGRhdGVTY2hlZHVsZWQgPSBmYWxzZTtcbi8vIFRoaXMgZnVuY3Rpb24gYWdncmVnYXRlcyB1cGRhdGVzIGZyb20gbXVsdGlwbGUgbW9kdWxlcyBpbnRvIGEgc2luZ2xlIFJlYWN0IFJlZnJlc2ggY2FsbC5cbmZ1bmN0aW9uIHNjaGVkdWxlVXBkYXRlKCkge1xuICAgIGlmIChpc1VwZGF0ZVNjaGVkdWxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGlzVXBkYXRlU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBmdW5jdGlvbiBjYW5BcHBseVVwZGF0ZShzdGF0dXMpIHtcbiAgICAgICAgcmV0dXJuIHN0YXR1cyA9PT0gJ2lkbGUnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBhcHBseVVwZGF0ZSgpIHtcbiAgICAgICAgaXNVcGRhdGVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJ1bnRpbWVfMS5kZWZhdWx0LnBlcmZvcm1SZWFjdFJlZnJlc2goKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IEZhaWxlZCB0byByZS1yZW5kZXIuIFdlIHdpbGwgcmV0cnkgb24gdGhlIG5leHQgRmFzdCBSZWZyZXNoIGV2ZW50LlxcbicgK1xuICAgICAgICAgICAgICAgIGVycik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNhbkFwcGx5VXBkYXRlKG1vZHVsZS5ob3Quc3RhdHVzKCkpKSB7XG4gICAgICAgIC8vIEFwcGx5IHVwZGF0ZSBvbiB0aGUgbmV4dCB0aWNrLlxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGFwcGx5VXBkYXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHN0YXR1c0hhbmRsZXIgPSAoc3RhdHVzKSA9PiB7XG4gICAgICAgIGlmIChjYW5BcHBseVVwZGF0ZShzdGF0dXMpKSB7XG4gICAgICAgICAgICBtb2R1bGUuaG90LnJlbW92ZVN0YXR1c0hhbmRsZXIoc3RhdHVzSGFuZGxlcik7XG4gICAgICAgICAgICBhcHBseVVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICAvLyBBcHBseSB1cGRhdGUgb25jZSB0aGUgSE1SIHJ1bnRpbWUncyBzdGF0dXMgaXMgaWRsZS5cbiAgICBtb2R1bGUuaG90LmFkZFN0YXR1c0hhbmRsZXIoc3RhdHVzSGFuZGxlcik7XG59XG4vLyBOZWVkcyB0byBiZSBjb21wYXRpYmxlIHdpdGggSUUxMVxuZXhwb3J0cy5kZWZhdWx0ID0ge1xuICAgIHJlZ2lzdGVyRXhwb3J0c0ZvclJlYWN0UmVmcmVzaDogcmVnaXN0ZXJFeHBvcnRzRm9yUmVhY3RSZWZyZXNoLFxuICAgIGlzUmVhY3RSZWZyZXNoQm91bmRhcnk6IGlzUmVhY3RSZWZyZXNoQm91bmRhcnksXG4gICAgc2hvdWxkSW52YWxpZGF0ZVJlYWN0UmVmcmVzaEJvdW5kYXJ5OiBzaG91bGRJbnZhbGlkYXRlUmVhY3RSZWZyZXNoQm91bmRhcnksXG4gICAgZ2V0UmVmcmVzaEJvdW5kYXJ5U2lnbmF0dXJlOiBnZXRSZWZyZXNoQm91bmRhcnlTaWduYXR1cmUsXG4gICAgc2NoZWR1bGVVcGRhdGU6IHNjaGVkdWxlVXBkYXRlLFxufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhlbHBlcnMuanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js": /*!**************************************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js ***! \**************************************************************************************************************************************************************/ /***/ (function(__unused_webpack_module, exports, __webpack_require__) { "use strict"; eval(__webpack_require__.ts("\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nconst runtime_1 = __importDefault(__webpack_require__(/*! next/dist/compiled/react-refresh/runtime */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/react-refresh/runtime.js\"));\nconst helpers_1 = __importDefault(__webpack_require__(/*! ./internal/helpers */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/internal/helpers.js\"));\n// Hook into ReactDOM initialization\nruntime_1.default.injectIntoGlobalHook(self);\n// Register global helpers\nself.$RefreshHelpers$ = helpers_1.default;\n// Register a helper for module execution interception\nself.$RefreshInterceptModuleExecution$ = function (webpackModuleId) {\n var prevRefreshReg = self.$RefreshReg$;\n var prevRefreshSig = self.$RefreshSig$;\n self.$RefreshReg$ = function (type, id) {\n runtime_1.default.register(type, webpackModuleId + ' ' + id);\n };\n self.$RefreshSig$ = runtime_1.default.createSignatureFunctionForTransform;\n // Modeled after `useEffect` cleanup pattern:\n // https://react.dev/learn/synchronizing-with-effects#step-3-add-cleanup-if-needed\n return function () {\n self.$RefreshReg$ = prevRefreshReg;\n self.$RefreshSig$ = prevRefreshSig;\n };\n};\n//# sourceMappingURL=runtime.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvQG5leHQvcmVhY3QtcmVmcmVzaC11dGlscy9kaXN0L3J1bnRpbWUuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYjtBQUNBLDZDQUE2QztBQUM3QztBQUNBLDhDQUE2QyxFQUFFLGFBQWEsRUFBQztBQUM3RCxrQ0FBa0MsbUJBQU8sQ0FBQywyTUFBMEM7QUFDcEYsa0NBQWtDLG1CQUFPLENBQUMsK01BQW9CO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS93ZWJzaXRlLWZyb250L2JhbnF1aXNlLXdlYnNpdGUvbm9kZV9tb2R1bGVzLy5wbnBtL25leHRAMTUuNS4zX3JlYWN0LWRvbUAxOS4xLjFfcmVhY3RAMTkuMS4xX19yZWFjdEAxOS4xLjEvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9AbmV4dC9yZWFjdC1yZWZyZXNoLXV0aWxzL2Rpc3QvcnVudGltZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmNvbnN0IHJ1bnRpbWVfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0LXJlZnJlc2gvcnVudGltZVwiKSk7XG5jb25zdCBoZWxwZXJzXzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIi4vaW50ZXJuYWwvaGVscGVyc1wiKSk7XG4vLyBIb29rIGludG8gUmVhY3RET00gaW5pdGlhbGl6YXRpb25cbnJ1bnRpbWVfMS5kZWZhdWx0LmluamVjdEludG9HbG9iYWxIb29rKHNlbGYpO1xuLy8gUmVnaXN0ZXIgZ2xvYmFsIGhlbHBlcnNcbnNlbGYuJFJlZnJlc2hIZWxwZXJzJCA9IGhlbHBlcnNfMS5kZWZhdWx0O1xuLy8gUmVnaXN0ZXIgYSBoZWxwZXIgZm9yIG1vZHVsZSBleGVjdXRpb24gaW50ZXJjZXB0aW9uXG5zZWxmLiRSZWZyZXNoSW50ZXJjZXB0TW9kdWxlRXhlY3V0aW9uJCA9IGZ1bmN0aW9uICh3ZWJwYWNrTW9kdWxlSWQpIHtcbiAgICB2YXIgcHJldlJlZnJlc2hSZWcgPSBzZWxmLiRSZWZyZXNoUmVnJDtcbiAgICB2YXIgcHJldlJlZnJlc2hTaWcgPSBzZWxmLiRSZWZyZXNoU2lnJDtcbiAgICBzZWxmLiRSZWZyZXNoUmVnJCA9IGZ1bmN0aW9uICh0eXBlLCBpZCkge1xuICAgICAgICBydW50aW1lXzEuZGVmYXVsdC5yZWdpc3Rlcih0eXBlLCB3ZWJwYWNrTW9kdWxlSWQgKyAnICcgKyBpZCk7XG4gICAgfTtcbiAgICBzZWxmLiRSZWZyZXNoU2lnJCA9IHJ1bnRpbWVfMS5kZWZhdWx0LmNyZWF0ZVNpZ25hdHVyZUZ1bmN0aW9uRm9yVHJhbnNmb3JtO1xuICAgIC8vIE1vZGVsZWQgYWZ0ZXIgYHVzZUVmZmVjdGAgY2xlYW51cCBwYXR0ZXJuOlxuICAgIC8vIGh0dHBzOi8vcmVhY3QuZGV2L2xlYXJuL3N5bmNocm9uaXppbmctd2l0aC1lZmZlY3RzI3N0ZXAtMy1hZGQtY2xlYW51cC1pZi1uZWVkZWRcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmLiRSZWZyZXNoUmVnJCA9IHByZXZSZWZyZXNoUmVnO1xuICAgICAgICBzZWxmLiRSZWZyZXNoU2lnJCA9IHByZXZSZWZyZXNoU2lnO1xuICAgIH07XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cnVudGltZS5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/next-devtools/index.js": /*!*******************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/next-devtools/index.js ***! \*******************************************************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/process.js\");\nvar __webpack_modules__={\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/devtools-indicator/devtools-indicator.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`[data-nextjs-toast] {\n &[data-hidden='true'] {\n display: none;\n }\n}\n\n.dev-tools-indicator-menu {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-alpha-400);\n background-clip: padding-box;\n box-shadow: var(--shadow-menu);\n border-radius: var(--rounded-xl);\n position: absolute;\n font-family: var(--font-stack-sans);\n z-index: 3;\n overflow: hidden;\n opacity: 0;\n outline: 0;\n min-width: 248px;\n transition: opacity var(--animate-out-duration-ms)\n var(--animate-out-timing-function);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n}\n\n.dev-tools-indicator-inner {\n padding: 6px;\n width: 100%;\n}\n\n.dev-tools-indicator-item {\n display: flex;\n align-items: center;\n padding: 8px 6px;\n height: var(--size-36);\n border-radius: 6px;\n text-decoration: none !important;\n user-select: none;\n white-space: nowrap;\n\n svg {\n width: var(--size-16);\n height: var(--size-16);\n }\n\n &:focus-visible {\n outline: 0;\n }\n}\n\n.dev-tools-indicator-footer {\n background: var(--color-background-200);\n padding: 6px;\n border-top: 1px solid var(--color-gray-400);\n width: 100%;\n}\n\n.dev-tools-indicator-item[data-selected='true'] {\n cursor: pointer;\n background-color: var(--color-gray-200);\n}\n\n.dev-tools-indicator-label {\n font-size: var(--size-14);\n line-height: var(--size-20);\n color: var(--color-gray-1000);\n}\n\n.dev-tools-indicator-value {\n font-size: var(--size-14);\n line-height: var(--size-20);\n color: var(--color-gray-900);\n margin-left: auto;\n}\n\n.dev-tools-indicator-issue-count {\n --color-primary: var(--color-gray-800);\n --color-secondary: var(--color-gray-100);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n min-width: var(--size-40);\n height: var(--size-24);\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-alpha-400);\n background-clip: padding-box;\n box-shadow: var(--shadow-small);\n padding: 2px;\n color: var(--color-gray-1000);\n border-radius: 128px;\n font-weight: 500;\n font-size: var(--size-13);\n font-variant-numeric: tabular-nums;\n\n &[data-has-issues='true'] {\n --color-primary: var(--color-red-800);\n --color-secondary: var(--color-red-100);\n }\n\n .dev-tools-indicator-issue-count-indicator {\n width: var(--size-8);\n height: var(--size-8);\n background: var(--color-primary);\n box-shadow: 0 0 0 2px var(--color-secondary);\n border-radius: 50%;\n }\n}\n\n.dev-tools-indicator-shortcut {\n display: flex;\n gap: 4px;\n\n kbd {\n width: var(--size-20);\n height: var(--size-20);\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: var(--rounded-md);\n border: 1px solid var(--color-gray-400);\n font-family: var(--font-stack-sans);\n background: var(--color-background-100);\n color: var(--color-gray-1000);\n text-align: center;\n font-size: var(--size-12);\n line-height: var(--size-16);\n }\n}\n\n.dev-tools-grabbing {\n cursor: grabbing;\n\n > * {\n pointer-events: none;\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/devtools-indicator/devtools-indicator.css\"],names:[],mappings:\"AAAA;EACE;IACE,aAAa;EACf;AACF;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,uCAAuC;EACvC,6CAA6C;EAC7C,4BAA4B;EAC5B,8BAA8B;EAC9B,gCAAgC;EAChC,kBAAkB;EAClB,mCAAmC;EACnC,UAAU;EACV,gBAAgB;EAChB,UAAU;EACV,UAAU;EACV,gBAAgB;EAChB;sCACoC;;EAEpC;IACE,UAAU;IACV,QAAQ;EACV;AACF;;AAEA;EACE,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,sBAAsB;EACtB,kBAAkB;EAClB,gCAAgC;EAChC,iBAAiB;EACjB,mBAAmB;;EAEnB;IACE,qBAAqB;IACrB,sBAAsB;EACxB;;EAEA;IACE,UAAU;EACZ;AACF;;AAEA;EACE,uCAAuC;EACvC,YAAY;EACZ,2CAA2C;EAC3C,WAAW;AACb;;AAEA;EACE,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,yBAAyB;EACzB,2BAA2B;EAC3B,6BAA6B;AAC/B;;AAEA;EACE,yBAAyB;EACzB,2BAA2B;EAC3B,4BAA4B;EAC5B,iBAAiB;AACnB;;AAEA;EACE,sCAAsC;EACtC,wCAAwC;EACxC,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,yBAAyB;EACzB,sBAAsB;EACtB,uCAAuC;EACvC,6CAA6C;EAC7C,4BAA4B;EAC5B,+BAA+B;EAC/B,YAAY;EACZ,6BAA6B;EAC7B,oBAAoB;EACpB,gBAAgB;EAChB,yBAAyB;EACzB,kCAAkC;;EAElC;IACE,qCAAqC;IACrC,uCAAuC;EACzC;;EAEA;IACE,oBAAoB;IACpB,qBAAqB;IACrB,gCAAgC;IAChC,4CAA4C;IAC5C,kBAAkB;EACpB;AACF;;AAEA;EACE,aAAa;EACb,QAAQ;;EAER;IACE,qBAAqB;IACrB,sBAAsB;IACtB,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,gCAAgC;IAChC,uCAAuC;IACvC,mCAAmC;IACnC,uCAAuC;IACvC,6BAA6B;IAC7B,kBAAkB;IAClB,yBAAyB;IACzB,2BAA2B;EAC7B;AACF;;AAEA;EACE,gBAAgB;;EAEhB;IACE,oBAAoB;EACtB;AACF\",sourcesContent:[\"[data-nextjs-toast] {\\n &[data-hidden='true'] {\\n display: none;\\n }\\n}\\n\\n.dev-tools-indicator-menu {\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n background-clip: padding-box;\\n box-shadow: var(--shadow-menu);\\n border-radius: var(--rounded-xl);\\n position: absolute;\\n font-family: var(--font-stack-sans);\\n z-index: 3;\\n overflow: hidden;\\n opacity: 0;\\n outline: 0;\\n min-width: 248px;\\n transition: opacity var(--animate-out-duration-ms)\\n var(--animate-out-timing-function);\\n\\n &[data-rendered='true'] {\\n opacity: 1;\\n scale: 1;\\n }\\n}\\n\\n.dev-tools-indicator-inner {\\n padding: 6px;\\n width: 100%;\\n}\\n\\n.dev-tools-indicator-item {\\n display: flex;\\n align-items: center;\\n padding: 8px 6px;\\n height: var(--size-36);\\n border-radius: 6px;\\n text-decoration: none !important;\\n user-select: none;\\n white-space: nowrap;\\n\\n svg {\\n width: var(--size-16);\\n height: var(--size-16);\\n }\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n}\\n\\n.dev-tools-indicator-footer {\\n background: var(--color-background-200);\\n padding: 6px;\\n border-top: 1px solid var(--color-gray-400);\\n width: 100%;\\n}\\n\\n.dev-tools-indicator-item[data-selected='true'] {\\n cursor: pointer;\\n background-color: var(--color-gray-200);\\n}\\n\\n.dev-tools-indicator-label {\\n font-size: var(--size-14);\\n line-height: var(--size-20);\\n color: var(--color-gray-1000);\\n}\\n\\n.dev-tools-indicator-value {\\n font-size: var(--size-14);\\n line-height: var(--size-20);\\n color: var(--color-gray-900);\\n margin-left: auto;\\n}\\n\\n.dev-tools-indicator-issue-count {\\n --color-primary: var(--color-gray-800);\\n --color-secondary: var(--color-gray-100);\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n min-width: var(--size-40);\\n height: var(--size-24);\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n background-clip: padding-box;\\n box-shadow: var(--shadow-small);\\n padding: 2px;\\n color: var(--color-gray-1000);\\n border-radius: 128px;\\n font-weight: 500;\\n font-size: var(--size-13);\\n font-variant-numeric: tabular-nums;\\n\\n &[data-has-issues='true'] {\\n --color-primary: var(--color-red-800);\\n --color-secondary: var(--color-red-100);\\n }\\n\\n .dev-tools-indicator-issue-count-indicator {\\n width: var(--size-8);\\n height: var(--size-8);\\n background: var(--color-primary);\\n box-shadow: 0 0 0 2px var(--color-secondary);\\n border-radius: 50%;\\n }\\n}\\n\\n.dev-tools-indicator-shortcut {\\n display: flex;\\n gap: 4px;\\n\\n kbd {\\n width: var(--size-20);\\n height: var(--size-20);\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: var(--rounded-md);\\n border: 1px solid var(--color-gray-400);\\n font-family: var(--font-stack-sans);\\n background: var(--color-background-100);\\n color: var(--color-gray-1000);\\n text-align: center;\\n font-size: var(--size-12);\\n line-height: var(--size-16);\\n }\\n}\\n\\n.dev-tools-grabbing {\\n cursor: grabbing;\\n\\n > * {\\n pointer-events: none;\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-handle.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.resize-container {\n position: absolute;\n /* todo: better z index */\n z-index: 10;\n /* todo: is this needed */\n background: transparent;\n}\n\n.resize-line {\n position: absolute;\n /* todo smarter z index */\n z-index: -1;\n pointer-events: none;\n /* a normal exit animation curve- at this point the exit animation is */\n /* immediately responsive so we don't need a bespoke curve */\n transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n /* todo: better var? */\n border: 1px solid var(--color-gray-400);\n}\n\n/* start really fast because we start super hidden initially behind the panel, otherwise feels like an unintended animation delay */\n.resize-container:hover ~ .resize-line {\n transition: transform 0.25s cubic-bezier(0.23, 1, 0.32, 0.9);\n}\n\n.resize-container.right,\n.resize-container.left {\n top: 0;\n height: 100%;\n width: 22px;\n cursor: ew-resize;\n}\n\n/* todo: don't hard code all these values/use vars */\n\n.resize-container.bottom,\n.resize-container.top {\n left: 0;\n width: 100%;\n height: 22px;\n cursor: ns-resize;\n}\n\n.resize-container.top {\n top: -7px;\n}\n.resize-container.bottom {\n bottom: -7px;\n}\n.resize-container.left {\n left: -7px;\n}\n.resize-container.right {\n right: -7px;\n}\n\n.resize-container.top-left,\n.resize-container.top-right,\n.resize-container.bottom-left,\n.resize-container.bottom-right {\n width: 26px;\n height: 26px;\n z-index: 15;\n}\n\n.resize-container.top-left {\n top: -5px;\n left: -5px;\n cursor: nwse-resize;\n}\n.resize-container.top-right {\n top: -5px;\n right: -5px;\n cursor: nesw-resize;\n}\n.resize-container.bottom-left {\n bottom: -5px;\n left: -5px;\n cursor: nesw-resize;\n}\n.resize-container.bottom-right {\n bottom: -5px;\n right: -5px;\n cursor: nwse-resize;\n}\n\n.resize-line.top,\n.resize-line.bottom {\n height: 18px;\n width: 100%;\n background-color: var(--color-background-200);\n}\n\n.resize-line.left,\n.resize-line.right {\n width: 18px;\n height: 100%;\n background-color: var(--color-background-200);\n}\n\n.resize-line.top {\n top: -7px;\n left: calc(-1 * var(--border-left, 2px));\n width: calc(100% + var(--border-horizontal, 4px));\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n transform: translateY(18px);\n}\n\n.resize-line.bottom {\n bottom: -7px;\n left: calc(-1 * var(--border-left, 2px));\n width: calc(100% + var(--border-horizontal, 4px));\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n transform: translateY(-18px);\n}\n\n.resize-line.left {\n top: calc(-1 * var(--border-top, 2px));\n left: -7px;\n height: calc(100% + var(--border-vertical, 4px));\n border-radius: var(--rounded-lg) 0 0 var(--rounded-lg);\n transform: translateX(18px);\n}\n\n.resize-line.right {\n top: calc(-1 * var(--border-top, 2px));\n right: -7px;\n height: calc(100% + var(--border-vertical, 4px));\n border-radius: 0 var(--rounded-lg) var(--rounded-lg) 0;\n transform: translateX(-18px);\n}\n\n.resize-container.right:hover ~ .resize-line.right,\n.resize-container.left:hover ~ .resize-line.left,\n.resize-line.right.dragging,\n.resize-line.left.dragging {\n transform: translateX(0);\n}\n\n.resize-container.bottom:hover ~ .resize-line.bottom,\n.resize-container.top:hover ~ .resize-line.top,\n.resize-line.bottom.dragging,\n.resize-line.top.dragging {\n transform: translateY(0);\n}\n\n/* make sure that we don't show multiple handles at once\n * we should only ever show the currently resizing handle\n * regardless of hover state \n */\n.resize-container.no-hover.right:hover ~ .resize-line.right {\n transform: translateX(-20px);\n}\n.resize-container.no-hover.left:hover ~ .resize-line.left {\n transform: translateX(20px);\n}\n.resize-container.no-hover.bottom:hover ~ .resize-line.bottom {\n transform: translateY(-20px);\n}\n.resize-container.no-hover.top:hover ~ .resize-line.top {\n transform: translateY(20px);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/devtools-panel/resize/resize-handle.css\"],names:[],mappings:\"AAAA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;EACX,yBAAyB;EACzB,uBAAuB;AACzB;;AAEA;EACE,kBAAkB;EAClB,yBAAyB;EACzB,WAAW;EACX,oBAAoB;EACpB,uEAAuE;EACvE,4DAA4D;EAC5D,uDAAuD;EACvD,sBAAsB;EACtB,uCAAuC;AACzC;;AAEA,mIAAmI;AACnI;EACE,4DAA4D;AAC9D;;AAEA;;EAEE,MAAM;EACN,YAAY;EACZ,WAAW;EACX,iBAAiB;AACnB;;AAEA,oDAAoD;;AAEpD;;EAEE,OAAO;EACP,WAAW;EACX,YAAY;EACZ,iBAAiB;AACnB;;AAEA;EACE,SAAS;AACX;AACA;EACE,YAAY;AACd;AACA;EACE,UAAU;AACZ;AACA;EACE,WAAW;AACb;;AAEA;;;;EAIE,WAAW;EACX,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,SAAS;EACT,UAAU;EACV,mBAAmB;AACrB;AACA;EACE,SAAS;EACT,WAAW;EACX,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,UAAU;EACV,mBAAmB;AACrB;AACA;EACE,YAAY;EACZ,WAAW;EACX,mBAAmB;AACrB;;AAEA;;EAEE,YAAY;EACZ,WAAW;EACX,6CAA6C;AAC/C;;AAEA;;EAEE,WAAW;EACX,YAAY;EACZ,6CAA6C;AAC/C;;AAEA;EACE,SAAS;EACT,wCAAwC;EACxC,iDAAiD;EACjD,sDAAsD;EACtD,2BAA2B;AAC7B;;AAEA;EACE,YAAY;EACZ,wCAAwC;EACxC,iDAAiD;EACjD,sDAAsD;EACtD,4BAA4B;AAC9B;;AAEA;EACE,sCAAsC;EACtC,UAAU;EACV,gDAAgD;EAChD,sDAAsD;EACtD,2BAA2B;AAC7B;;AAEA;EACE,sCAAsC;EACtC,WAAW;EACX,gDAAgD;EAChD,sDAAsD;EACtD,4BAA4B;AAC9B;;AAEA;;;;EAIE,wBAAwB;AAC1B;;AAEA;;;;EAIE,wBAAwB;AAC1B;;AAEA;;;EAGE;AACF;EACE,4BAA4B;AAC9B;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,4BAA4B;AAC9B;AACA;EACE,2BAA2B;AAC7B\",sourcesContent:[\".resize-container {\\n position: absolute;\\n /* todo: better z index */\\n z-index: 10;\\n /* todo: is this needed */\\n background: transparent;\\n}\\n\\n.resize-line {\\n position: absolute;\\n /* todo smarter z index */\\n z-index: -1;\\n pointer-events: none;\\n /* a normal exit animation curve- at this point the exit animation is */\\n /* immediately responsive so we don't need a bespoke curve */\\n transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\\n /* todo: better var? */\\n border: 1px solid var(--color-gray-400);\\n}\\n\\n/* start really fast because we start super hidden initially behind the panel, otherwise feels like an unintended animation delay */\\n.resize-container:hover ~ .resize-line {\\n transition: transform 0.25s cubic-bezier(0.23, 1, 0.32, 0.9);\\n}\\n\\n.resize-container.right,\\n.resize-container.left {\\n top: 0;\\n height: 100%;\\n width: 22px;\\n cursor: ew-resize;\\n}\\n\\n/* todo: don't hard code all these values/use vars */\\n\\n.resize-container.bottom,\\n.resize-container.top {\\n left: 0;\\n width: 100%;\\n height: 22px;\\n cursor: ns-resize;\\n}\\n\\n.resize-container.top {\\n top: -7px;\\n}\\n.resize-container.bottom {\\n bottom: -7px;\\n}\\n.resize-container.left {\\n left: -7px;\\n}\\n.resize-container.right {\\n right: -7px;\\n}\\n\\n.resize-container.top-left,\\n.resize-container.top-right,\\n.resize-container.bottom-left,\\n.resize-container.bottom-right {\\n width: 26px;\\n height: 26px;\\n z-index: 15;\\n}\\n\\n.resize-container.top-left {\\n top: -5px;\\n left: -5px;\\n cursor: nwse-resize;\\n}\\n.resize-container.top-right {\\n top: -5px;\\n right: -5px;\\n cursor: nesw-resize;\\n}\\n.resize-container.bottom-left {\\n bottom: -5px;\\n left: -5px;\\n cursor: nesw-resize;\\n}\\n.resize-container.bottom-right {\\n bottom: -5px;\\n right: -5px;\\n cursor: nwse-resize;\\n}\\n\\n.resize-line.top,\\n.resize-line.bottom {\\n height: 18px;\\n width: 100%;\\n background-color: var(--color-background-200);\\n}\\n\\n.resize-line.left,\\n.resize-line.right {\\n width: 18px;\\n height: 100%;\\n background-color: var(--color-background-200);\\n}\\n\\n.resize-line.top {\\n top: -7px;\\n left: calc(-1 * var(--border-left, 2px));\\n width: calc(100% + var(--border-horizontal, 4px));\\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\\n transform: translateY(18px);\\n}\\n\\n.resize-line.bottom {\\n bottom: -7px;\\n left: calc(-1 * var(--border-left, 2px));\\n width: calc(100% + var(--border-horizontal, 4px));\\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\\n transform: translateY(-18px);\\n}\\n\\n.resize-line.left {\\n top: calc(-1 * var(--border-top, 2px));\\n left: -7px;\\n height: calc(100% + var(--border-vertical, 4px));\\n border-radius: var(--rounded-lg) 0 0 var(--rounded-lg);\\n transform: translateX(18px);\\n}\\n\\n.resize-line.right {\\n top: calc(-1 * var(--border-top, 2px));\\n right: -7px;\\n height: calc(100% + var(--border-vertical, 4px));\\n border-radius: 0 var(--rounded-lg) var(--rounded-lg) 0;\\n transform: translateX(-18px);\\n}\\n\\n.resize-container.right:hover ~ .resize-line.right,\\n.resize-container.left:hover ~ .resize-line.left,\\n.resize-line.right.dragging,\\n.resize-line.left.dragging {\\n transform: translateX(0);\\n}\\n\\n.resize-container.bottom:hover ~ .resize-line.bottom,\\n.resize-container.top:hover ~ .resize-line.top,\\n.resize-line.bottom.dragging,\\n.resize-line.top.dragging {\\n transform: translateY(0);\\n}\\n\\n/* make sure that we don't show multiple handles at once\\n * we should only ever show the currently resizing handle\\n * regardless of hover state \\n */\\n.resize-container.no-hover.right:hover ~ .resize-line.right {\\n transform: translateX(-20px);\\n}\\n.resize-container.no-hover.left:hover ~ .resize-line.left {\\n transform: translateX(20px);\\n}\\n.resize-container.no-hover.bottom:hover ~ .resize-line.bottom {\\n transform: translateY(-20px);\\n}\\n.resize-container.no-hover.top:hover ~ .resize-line.top {\\n transform: translateY(20px);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.segment-boundary-trigger {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 6px;\n line-height: 16px;\n font-weight: 500;\n color: var(--color-gray-1000);\n border-radius: 999px;\n border: none;\n font-size: var(--size-12);\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.segment-boundary-trigger-text {\n font-size: var(--size-12);\n font-weight: 500;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.segment-boundary-trigger-text .plus-icon {\n transition: transform 0.25s ease;\n}\n\n.segment-boundary-trigger-text:hover .plus-icon {\n color: var(--color-gray-800);\n}\n\n.segment-boundary-trigger svg {\n width: 14px;\n height: 14px;\n flex-shrink: 0;\n vertical-align: middle;\n}\n\n.segment-boundary-trigger:hover svg {\n color: var(--color-gray-700);\n}\n\n.segment-boundary-trigger[disabled] svg,\n.segment-boundary-trigger[disabled]:hover svg {\n color: var(--color-gray-400);\n cursor: not-allowed;\n}\n\n.segment-boundary-dropdown {\n padding: 8px;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-400);\n border-radius: 16px;\n min-width: 120px;\n user-select: none;\n cursor: default;\n box-shadow: 0px 4px 8px -4px color-mix(in srgb, var(--color-gray-900) 4%, transparent);\n}\n\n.segment-boundary-dropdown-positioner {\n z-index: var(--top-z-index);\n}\n\n.segment-boundary-dropdown-item {\n display: flex;\n align-items: center;\n padding: 8px;\n line-height: 20px;\n font-size: 14px;\n border-radius: 6px;\n color: var(--color-gray-1000);\n cursor: pointer;\n min-width: 220px;\n border: none;\n background: none;\n width: 100%;\n}\n\n.segment-boundary-dropdown-item[data-disabled] {\n color: var(--color-gray-400);\n cursor: not-allowed;\n}\n\n.segment-boundary-dropdown-item svg {\n margin-right: 12px;\n color: currentColor;\n}\n\n.segment-boundary-dropdown-item:hover {\n background: var(--color-gray-200);\n}\n\n.segment-boundary-dropdown-item:first-child {\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n}\n\n.segment-boundary-dropdown-item:last-child {\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.segment-boundary-group-label {\n padding: 8px;\n font-size: 13px;\n line-height: 16px;\n font-weight: 400;\n color: var(--color-gray-900);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\"],names:[],mappings:\"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,6BAA6B;EAC7B,oBAAoB;EACpB,YAAY;EACZ,yBAAyB;EACzB,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;EACjB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,gCAAgC;AAClC;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,cAAc;EACd,sBAAsB;AACxB;;AAEA;EACE,4BAA4B;AAC9B;;AAEA;;EAEE,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,YAAY;EACZ,uCAAuC;EACvC,uCAAuC;EACvC,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,sFAAsF;AACxF;;AAEA;EACE,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,YAAY;EACZ,iBAAiB;EACjB,eAAe;EACf,kBAAkB;EAClB,6BAA6B;EAC7B,eAAe;EACf,gBAAgB;EAChB,YAAY;EACZ,gBAAgB;EAChB,WAAW;AACb;;AAEA;EACE,4BAA4B;EAC5B,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;EAClB,mBAAmB;AACrB;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,2BAA2B;EAC3B,4BAA4B;AAC9B;;AAEA;EACE,8BAA8B;EAC9B,+BAA+B;AACjC;;AAEA;EACE,YAAY;EACZ,eAAe;EACf,iBAAiB;EACjB,gBAAgB;EAChB,4BAA4B;AAC9B\",sourcesContent:[\".segment-boundary-trigger {\\n display: flex;\\n align-items: center;\\n gap: 4px;\\n padding: 4px 6px;\\n line-height: 16px;\\n font-weight: 500;\\n color: var(--color-gray-1000);\\n border-radius: 999px;\\n border: none;\\n font-size: var(--size-12);\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n}\\n\\n.segment-boundary-trigger-text {\\n font-size: var(--size-12);\\n font-weight: 500;\\n user-select: none;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.segment-boundary-trigger-text .plus-icon {\\n transition: transform 0.25s ease;\\n}\\n\\n.segment-boundary-trigger-text:hover .plus-icon {\\n color: var(--color-gray-800);\\n}\\n\\n.segment-boundary-trigger svg {\\n width: 14px;\\n height: 14px;\\n flex-shrink: 0;\\n vertical-align: middle;\\n}\\n\\n.segment-boundary-trigger:hover svg {\\n color: var(--color-gray-700);\\n}\\n\\n.segment-boundary-trigger[disabled] svg,\\n.segment-boundary-trigger[disabled]:hover svg {\\n color: var(--color-gray-400);\\n cursor: not-allowed;\\n}\\n\\n.segment-boundary-dropdown {\\n padding: 8px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-400);\\n border-radius: 16px;\\n min-width: 120px;\\n user-select: none;\\n cursor: default;\\n box-shadow: 0px 4px 8px -4px color-mix(in srgb, var(--color-gray-900) 4%, transparent);\\n}\\n\\n.segment-boundary-dropdown-positioner {\\n z-index: var(--top-z-index);\\n}\\n\\n.segment-boundary-dropdown-item {\\n display: flex;\\n align-items: center;\\n padding: 8px;\\n line-height: 20px;\\n font-size: 14px;\\n border-radius: 6px;\\n color: var(--color-gray-1000);\\n cursor: pointer;\\n min-width: 220px;\\n border: none;\\n background: none;\\n width: 100%;\\n}\\n\\n.segment-boundary-dropdown-item[data-disabled] {\\n color: var(--color-gray-400);\\n cursor: not-allowed;\\n}\\n\\n.segment-boundary-dropdown-item svg {\\n margin-right: 12px;\\n color: currentColor;\\n}\\n\\n.segment-boundary-dropdown-item:hover {\\n background: var(--color-gray-200);\\n}\\n\\n.segment-boundary-dropdown-item:first-child {\\n border-top-left-radius: 4px;\\n border-top-right-radius: 4px;\\n}\\n\\n.segment-boundary-dropdown-item:last-child {\\n border-bottom-left-radius: 4px;\\n border-bottom-right-radius: 4px;\\n}\\n\\n.segment-boundary-group-label {\\n padding: 8px;\\n font-size: 13px;\\n line-height: 16px;\\n font-weight: 400;\\n color: var(--color-gray-900);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.segment-explorer-content {\n font-size: var(--size-14);\n padding: 0 8px;\n width: 100%;\n height: 100%;\n}\n\n.segment-explorer-page-route-bar {\n display: flex;\n align-items: center;\n padding: 14px 16px;\n background-color: var(--color-background-200);\n gap: 12px;\n}\n\n.segment-explorer-page-route-bar-path {\n font-size: var(--size-14);\n font-weight: 500;\n color: var(--color-gray-1000);\n font-family: var(--font-mono);\n white-space: nowrap;\n line-height: 20px;\n}\n\n.segment-explorer-item {\n margin: 4px 0;\n border-radius: 6px;\n}\n\n.segment-explorer-item:nth-child(even) {\n background-color: var(--color-background-200);\n}\n.segment-explorer-item-row {\n display: flex;\n flex-direction: column;\n padding-top: 10px;\n padding-bottom: 10px;\n padding-right: 4px;\n}\n.segment-explorer-item-row-main {\n display: flex;\n align-items: center;\n white-space: pre;\n cursor: default;\n color: var(--color-gray-1000);\n}\n\n.segment-explorer-children--intended {\n padding-left: 16px;\n}\n\n.segment-explorer-filename {\n display: inline-flex;\n width: 100%;\n align-items: center;\n}\n\n.segment-explorer-filename select {\n margin-left: auto;\n}\n.segment-explorer-filename--path {\n margin-right: 8px;\n}\n.segment-explorer-filename--path small {\n display: inline-block;\n width: 0;\n opacity: 0;\n}\n.segment-explorer-filename--name {\n color: var(--color-gray-800);\n}\n\n.segment-explorer-files {\n display: inline-flex;\n gap: 8px;\n margin-left: auto;\n}\n\n.segment-explorer-files + .segment-boundary-trigger {\n margin-left: 8px;\n}\n\n.segment-explorer-file-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 6px;\n height: 20px;\n border-radius: 16px;\n line-height: 16px;\n font-size: var(--size-12);\n font-weight: 500;\n user-select: none;\n cursor: pointer;\n background-color: var(--color-gray-300);\n color: var(--color-gray-1000);\n}\n.segment-explorer-file-label-text {\n display: inline-flex;\n align-items: center;\n}\n\n.segment-explorer-file-label--overridden {\n background-color: var(--color-amber-300);\n color: var(--color-amber-900);\n}\n\n.segment-explorer-file-label .code-icon {\n opacity: 0;\n margin-left: 0;\n width: 0;\n transition: all 0.15s ease-in-out;\n}\n.segment-explorer-file-label:hover .code-icon {\n opacity: 1;\n width: 12px;\n margin-left: 4px;\n}\n\n.segment-explorer-file-label:hover {\n filter: brightness(0.95);\n}\n\n.segment-explorer-file-label--builtin {\n background-color: transparent;\n color: var(--color-gray-900);\n border: 1px dashed var(--color-gray-500);\n height: 24px;\n cursor: default;\n}\n.segment-explorer-file-label--builtin svg {\n margin-left: 4px;\n margin-right: -4px;\n}\n\n/* Footer styles */\n.segment-explorer-footer {\n padding: 8px;\n border-top: 1px solid var(--color-gray-400);\n user-select: none;\n}\n\n.segment-explorer-footer-button {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n width: 100%;\n padding: 6px;\n background: var(--color-background-100);\n border: 1px solid var(--color-gray-400);\n border-radius: 6px;\n color: var(--color-gray-1000);\n font-size: var(--size-14);\n font-weight: 500;\n cursor: pointer;\n transition: background-color 0.15s ease;\n}\n\n.segment-explorer-footer-button:hover:not(:disabled) {\n background: var(--color-gray-200);\n}\n\n.segment-explorer-footer-button--disabled {\n cursor: not-allowed;\n}\n\n.segment-explorer-footer-text {\n text-align: center;\n}\n\n.segment-explorer-footer-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 20px;\n height: 20px;\n padding: 0 6px;\n background: var(--color-amber-300);\n color: var(--color-amber-900);\n border-radius: 10px;\n font-size: var(--size-12);\n font-weight: 600;\n line-height: 1;\n}\n\n.segment-explorer-file-label-tooltip--sm {\n white-space: nowrap;\n}\n\n.segment-explorer-file-label-tooltip--lg {\n min-width: 200px;\n}\n\n.segment-explorer-suggestions {\n display: inline-flex;\n gap: 8px;\n}\n\n.segment-explorer-suggestions-tooltip {\n width: 200px;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\"],names:[],mappings:\"AAAA;EACE,yBAAyB;EACzB,cAAc;EACd,WAAW;EACX,YAAY;AACd;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,kBAAkB;EAClB,6CAA6C;EAC7C,SAAS;AACX;;AAEA;EACE,yBAAyB;EACzB,gBAAgB;EAChB,6BAA6B;EAC7B,6BAA6B;EAC7B,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,kBAAkB;AACpB;;AAEA;EACE,6CAA6C;AAC/C;AACA;EACE,aAAa;EACb,sBAAsB;EACtB,iBAAiB;EACjB,oBAAoB;EACpB,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,mBAAmB;EACnB,gBAAgB;EAChB,eAAe;EACf,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,WAAW;EACX,mBAAmB;AACrB;;AAEA;EACE,iBAAiB;AACnB;AACA;EACE,iBAAiB;AACnB;AACA;EACE,qBAAqB;EACrB,QAAQ;EACR,UAAU;AACZ;AACA;EACE,4BAA4B;AAC9B;;AAEA;EACE,oBAAoB;EACpB,QAAQ;EACR,iBAAiB;AACnB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,cAAc;EACd,YAAY;EACZ,mBAAmB;EACnB,iBAAiB;EACjB,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,uCAAuC;EACvC,6BAA6B;AAC/B;AACA;EACE,oBAAoB;EACpB,mBAAmB;AACrB;;AAEA;EACE,wCAAwC;EACxC,6BAA6B;AAC/B;;AAEA;EACE,UAAU;EACV,cAAc;EACd,QAAQ;EACR,iCAAiC;AACnC;AACA;EACE,UAAU;EACV,WAAW;EACX,gBAAgB;AAClB;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,6BAA6B;EAC7B,4BAA4B;EAC5B,wCAAwC;EACxC,YAAY;EACZ,eAAe;AACjB;AACA;EACE,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA,kBAAkB;AAClB;EACE,YAAY;EACZ,2CAA2C;EAC3C,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,QAAQ;EACR,WAAW;EACX,YAAY;EACZ,uCAAuC;EACvC,uCAAuC;EACvC,kBAAkB;EAClB,6BAA6B;EAC7B,yBAAyB;EACzB,gBAAgB;EAChB,eAAe;EACf,uCAAuC;AACzC;;AAEA;EACE,iCAAiC;AACnC;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,eAAe;EACf,YAAY;EACZ,cAAc;EACd,kCAAkC;EAClC,6BAA6B;EAC7B,mBAAmB;EACnB,yBAAyB;EACzB,gBAAgB;EAChB,cAAc;AAChB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,oBAAoB;EACpB,QAAQ;AACV;;AAEA;EACE,YAAY;AACd\",sourcesContent:[\".segment-explorer-content {\\n font-size: var(--size-14);\\n padding: 0 8px;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.segment-explorer-page-route-bar {\\n display: flex;\\n align-items: center;\\n padding: 14px 16px;\\n background-color: var(--color-background-200);\\n gap: 12px;\\n}\\n\\n.segment-explorer-page-route-bar-path {\\n font-size: var(--size-14);\\n font-weight: 500;\\n color: var(--color-gray-1000);\\n font-family: var(--font-mono);\\n white-space: nowrap;\\n line-height: 20px;\\n}\\n\\n.segment-explorer-item {\\n margin: 4px 0;\\n border-radius: 6px;\\n}\\n\\n.segment-explorer-item:nth-child(even) {\\n background-color: var(--color-background-200);\\n}\\n.segment-explorer-item-row {\\n display: flex;\\n flex-direction: column;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n padding-right: 4px;\\n}\\n.segment-explorer-item-row-main {\\n display: flex;\\n align-items: center;\\n white-space: pre;\\n cursor: default;\\n color: var(--color-gray-1000);\\n}\\n\\n.segment-explorer-children--intended {\\n padding-left: 16px;\\n}\\n\\n.segment-explorer-filename {\\n display: inline-flex;\\n width: 100%;\\n align-items: center;\\n}\\n\\n.segment-explorer-filename select {\\n margin-left: auto;\\n}\\n.segment-explorer-filename--path {\\n margin-right: 8px;\\n}\\n.segment-explorer-filename--path small {\\n display: inline-block;\\n width: 0;\\n opacity: 0;\\n}\\n.segment-explorer-filename--name {\\n color: var(--color-gray-800);\\n}\\n\\n.segment-explorer-files {\\n display: inline-flex;\\n gap: 8px;\\n margin-left: auto;\\n}\\n\\n.segment-explorer-files + .segment-boundary-trigger {\\n margin-left: 8px;\\n}\\n\\n.segment-explorer-file-label {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 0 6px;\\n height: 20px;\\n border-radius: 16px;\\n line-height: 16px;\\n font-size: var(--size-12);\\n font-weight: 500;\\n user-select: none;\\n cursor: pointer;\\n background-color: var(--color-gray-300);\\n color: var(--color-gray-1000);\\n}\\n.segment-explorer-file-label-text {\\n display: inline-flex;\\n align-items: center;\\n}\\n\\n.segment-explorer-file-label--overridden {\\n background-color: var(--color-amber-300);\\n color: var(--color-amber-900);\\n}\\n\\n.segment-explorer-file-label .code-icon {\\n opacity: 0;\\n margin-left: 0;\\n width: 0;\\n transition: all 0.15s ease-in-out;\\n}\\n.segment-explorer-file-label:hover .code-icon {\\n opacity: 1;\\n width: 12px;\\n margin-left: 4px;\\n}\\n\\n.segment-explorer-file-label:hover {\\n filter: brightness(0.95);\\n}\\n\\n.segment-explorer-file-label--builtin {\\n background-color: transparent;\\n color: var(--color-gray-900);\\n border: 1px dashed var(--color-gray-500);\\n height: 24px;\\n cursor: default;\\n}\\n.segment-explorer-file-label--builtin svg {\\n margin-left: 4px;\\n margin-right: -4px;\\n}\\n\\n/* Footer styles */\\n.segment-explorer-footer {\\n padding: 8px;\\n border-top: 1px solid var(--color-gray-400);\\n user-select: none;\\n}\\n\\n.segment-explorer-footer-button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n gap: 8px;\\n width: 100%;\\n padding: 6px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-400);\\n border-radius: 6px;\\n color: var(--color-gray-1000);\\n font-size: var(--size-14);\\n font-weight: 500;\\n cursor: pointer;\\n transition: background-color 0.15s ease;\\n}\\n\\n.segment-explorer-footer-button:hover:not(:disabled) {\\n background: var(--color-gray-200);\\n}\\n\\n.segment-explorer-footer-button--disabled {\\n cursor: not-allowed;\\n}\\n\\n.segment-explorer-footer-text {\\n text-align: center;\\n}\\n\\n.segment-explorer-footer-badge {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n min-width: 20px;\\n height: 20px;\\n padding: 0 6px;\\n background: var(--color-amber-300);\\n color: var(--color-amber-900);\\n border-radius: 10px;\\n font-size: var(--size-12);\\n font-weight: 600;\\n line-height: 1;\\n}\\n\\n.segment-explorer-file-label-tooltip--sm {\\n white-space: nowrap;\\n}\\n\\n.segment-explorer-file-label-tooltip--lg {\\n min-width: 200px;\\n}\\n\\n.segment-explorer-suggestions {\\n display: inline-flex;\\n gap: 8px;\\n}\\n\\n.segment-explorer-suggestions-tooltip {\\n width: 200px;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/toast/style.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.nextjs-toast {\n position: fixed;\n z-index: var(--top-z-index);\n max-width: 420px;\n box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);\n}\n\n.nextjs-toast-errors-parent {\n padding: 16px;\n border-radius: var(--rounded-4xl);\n font-weight: 500;\n color: var(--color-ansi-bright-white);\n background-color: var(--color-ansi-red);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/toast/style.css\"],names:[],mappings:\"AAAA;EACE,eAAe;EACf,2BAA2B;EAC3B,gBAAgB;EAChB,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,iCAAiC;EACjC,gBAAgB;EAChB,qCAAqC;EACrC,uCAAuC;AACzC\",sourcesContent:[\".nextjs-toast {\\n position: fixed;\\n z-index: var(--top-z-index);\\n max-width: 420px;\\n box-shadow: 0px 16px 32px rgba(0, 0, 0, 0.25);\\n}\\n\\n.nextjs-toast-errors-parent {\\n padding: 16px;\\n border-radius: var(--rounded-4xl);\\n font-weight: 500;\\n color: var(--color-ansi-bright-white);\\n background-color: var(--color-ansi-red);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`.tooltip-wrapper {\n position: relative;\n display: inline-block;\n line-height: 1;\n}\n\n.tooltip {\n position: relative;\n padding: 6px 12px;\n border-radius: 8px;\n font-size: 14px;\n line-height: 1.4;\n pointer-events: none;\n color: var(--color-gray-100);\n background-color: var(--color-gray-1000);\n}\n\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-style: solid;\n border-width: var(--arrow-size, 6px);\n border-color: transparent;\n}\n\n.tooltip-arrow--top {\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px) 0\n var(--arrow-size, 6px);\n border-top-color: var(--color-gray-1000);\n bottom: 0;\n transform: translateY(100%);\n}\n\n.tooltip-arrow--bottom {\n border-width: 0 var(--arrow-size, 6px) var(--arrow-size, 6px)\n var(--arrow-size, 6px);\n border-bottom-color: var(--color-gray-1000);\n top: 0;\n transform: translateY(-100%);\n}\n\n.tooltip-arrow--left {\n border-width: var(--arrow-size, 6px) 0 var(--arrow-size, 6px)\n var(--arrow-size, 6px);\n border-left-color: var(--color-gray-1000);\n right: 0;\n transform: translateX(100%);\n}\n\n.tooltip-arrow--right {\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px)\n var(--arrow-size, 6px) 0;\n border-right-color: var(--color-gray-1000);\n left: 0;\n transform: translateX(-100%);\n}\n\n.tooltip-positioner {\n z-index: var(--top-z-index);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\"],names:[],mappings:\"AAAA;EACE,kBAAkB;EAClB,qBAAqB;EACrB,cAAc;AAChB;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;EACf,gBAAgB;EAChB,oBAAoB;EACpB,4BAA4B;EAC5B,wCAAwC;AAC1C;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,mBAAmB;EACnB,oCAAoC;EACpC,yBAAyB;AAC3B;;AAEA;EACE;0BACwB;EACxB,wCAAwC;EACxC,SAAS;EACT,2BAA2B;AAC7B;;AAEA;EACE;0BACwB;EACxB,2CAA2C;EAC3C,MAAM;EACN,4BAA4B;AAC9B;;AAEA;EACE;0BACwB;EACxB,yCAAyC;EACzC,QAAQ;EACR,2BAA2B;AAC7B;;AAEA;EACE;4BAC0B;EAC1B,0CAA0C;EAC1C,OAAO;EACP,4BAA4B;AAC9B;;AAEA;EACE,2BAA2B;AAC7B\",sourcesContent:[\".tooltip-wrapper {\\n position: relative;\\n display: inline-block;\\n line-height: 1;\\n}\\n\\n.tooltip {\\n position: relative;\\n padding: 6px 12px;\\n border-radius: 8px;\\n font-size: 14px;\\n line-height: 1.4;\\n pointer-events: none;\\n color: var(--color-gray-100);\\n background-color: var(--color-gray-1000);\\n}\\n\\n.tooltip-arrow {\\n position: absolute;\\n width: 0;\\n height: 0;\\n border-style: solid;\\n border-width: var(--arrow-size, 6px);\\n border-color: transparent;\\n}\\n\\n.tooltip-arrow--top {\\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px) 0\\n var(--arrow-size, 6px);\\n border-top-color: var(--color-gray-1000);\\n bottom: 0;\\n transform: translateY(100%);\\n}\\n\\n.tooltip-arrow--bottom {\\n border-width: 0 var(--arrow-size, 6px) var(--arrow-size, 6px)\\n var(--arrow-size, 6px);\\n border-bottom-color: var(--color-gray-1000);\\n top: 0;\\n transform: translateY(-100%);\\n}\\n\\n.tooltip-arrow--left {\\n border-width: var(--arrow-size, 6px) 0 var(--arrow-size, 6px)\\n var(--arrow-size, 6px);\\n border-left-color: var(--color-gray-1000);\\n right: 0;\\n transform: translateX(100%);\\n}\\n\\n.tooltip-arrow--right {\\n border-width: var(--arrow-size, 6px) var(--arrow-size, 6px)\\n var(--arrow-size, 6px) 0;\\n border-right-color: var(--color-gray-1000);\\n left: 0;\\n transform: translateX(-100%);\\n}\\n\\n.tooltip-positioner {\\n z-index: var(--top-z-index);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/global.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>f});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a),l=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/normalize.css\"),s=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/default-theme.css\"),c=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/dark-theme.css\"),u=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/colors.css\"),d=i()(o());d.i(l.Z),d.i(s.Z),d.i(c.Z),d.i(u.Z),d.push([e.id,`/* devtool global css variables */\n:host {\n /* variables */\n --top-z-index: 2147483647;\n}\n\n/* global styles */\n* {\n -webkit-font-smoothing: antialiased;\n}\n\n/* global reset for draggable content scrollbar styles */\n[data-nextjs-scrollable-content],\n[data-nextjs-scrollable-content] * {\n &::-webkit-scrollbar {\n width: 6px;\n height: 6px;\n border-radius: 0 0 1rem 1rem;\n margin-bottom: 1rem;\n }\n\n &::-webkit-scrollbar-button {\n display: none;\n }\n\n &::-webkit-scrollbar-track {\n border-radius: 0 0 1rem 1rem;\n background-color: var(--color-background-100);\n }\n\n &::-webkit-scrollbar-thumb {\n border-radius: 1rem;\n background-color: var(--color-gray-500);\n }\n}\n\n/* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n[data-nextjs-scrollable-content] {\n overflow: hidden;\n border-radius: inherit;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/global.css\"],names:[],mappings:\"AAKA,iCAAiC;AACjC;EACE,cAAc;EACd,yBAAyB;AAC3B;;AAEA,kBAAkB;AAClB;EACE,mCAAmC;AACrC;;AAEA,wDAAwD;AACxD;;EAEE;IACE,UAAU;IACV,WAAW;IACX,4BAA4B;IAC5B,mBAAmB;EACrB;;EAEA;IACE,aAAa;EACf;;EAEA;IACE,4BAA4B;IAC5B,6CAA6C;EAC/C;;EAEA;IACE,mBAAmB;IACnB,uCAAuC;EACzC;AACF;;AAEA,iFAAiF;AACjF;EACE,gBAAgB;EAChB,sBAAsB;AACxB\",sourcesContent:[\"@import './normalize.css';\\n@import './styles/default-theme.css';\\n@import './styles/dark-theme.css';\\n@import './styles/colors.css';\\n\\n/* devtool global css variables */\\n:host {\\n /* variables */\\n --top-z-index: 2147483647;\\n}\\n\\n/* global styles */\\n* {\\n -webkit-font-smoothing: antialiased;\\n}\\n\\n/* global reset for draggable content scrollbar styles */\\n[data-nextjs-scrollable-content],\\n[data-nextjs-scrollable-content] * {\\n &::-webkit-scrollbar {\\n width: 6px;\\n height: 6px;\\n border-radius: 0 0 1rem 1rem;\\n margin-bottom: 1rem;\\n }\\n\\n &::-webkit-scrollbar-button {\\n display: none;\\n }\\n\\n &::-webkit-scrollbar-track {\\n border-radius: 0 0 1rem 1rem;\\n background-color: var(--color-background-100);\\n }\\n\\n &::-webkit-scrollbar-thumb {\\n border-radius: 1rem;\\n background-color: var(--color-gray-500);\\n }\\n}\\n\\n/* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\\n[data-nextjs-scrollable-content] {\\n overflow: hidden;\\n border-radius: inherit;\\n}\\n\"],sourceRoot:\"\"}]);let f=d},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/menu/panel-router.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`/* Panel content padding styles */\n.panel-content {\n padding: 16px;\n padding-top: 8px;\n overflow: hidden;\n}\n\n/* User preferences wrapper styles */\n.user-preferences-wrapper {\n padding: 20px;\n padding-top: 8px;\n overflow: hidden;\n}\n\n/* Panel route base styles */\n.panel-route {\n opacity: var(--panel-opacity);\n transition: var(--panel-transition);\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/menu/panel-router.css\"],names:[],mappings:\"AAAA,iCAAiC;AACjC;EACE,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,oCAAoC;AACpC;EACE,aAAa;EACb,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA,4BAA4B;AAC5B;EACE,6BAA6B;EAC7B,mCAAmC;AACrC\",sourcesContent:[\"/* Panel content padding styles */\\n.panel-content {\\n padding: 16px;\\n padding-top: 8px;\\n overflow: hidden;\\n}\\n\\n/* User preferences wrapper styles */\\n.user-preferences-wrapper {\\n padding: 20px;\\n padding-top: 8px;\\n overflow: hidden;\\n}\\n\\n/* Panel route base styles */\\n.panel-route {\\n opacity: var(--panel-opacity);\\n transition: var(--panel-transition);\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/normalize.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`: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\narticle,\naside,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection {\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, 'Apple Color Emoji',\n 'Segoe UI Emoji', 'Segoe UI Symbol', '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}\n\n:host:not(button) {\n background-color: #fff;\n}\n\n[tabindex='-1']:focus:not(:focus-visible) {\n outline: 0 !important;\n}\n\nhr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n margin-bottom: 8px;\n}\n\np {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\nabbr[title],\nabbr[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\naddress {\n margin-bottom: 16px;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 16px;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 8px;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 16px;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 80%;\n}\n\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: #007bff;\n text-decoration: none;\n background-color: transparent;\n}\n\na:hover {\n color: #0056b3;\n text-decoration: underline;\n}\n\na:not([href]) {\n color: inherit;\n text-decoration: none;\n}\n\na:not([href]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\n 'Courier New', monospace;\n font-size: 1em;\n}\n\npre {\n margin-top: 0;\n margin-bottom: 16px;\n overflow: auto;\n}\n\nfigure {\n margin: 0 0 16px;\n}\n\nimg {\n vertical-align: middle;\n border-style: none;\n}\n\nsvg {\n overflow: hidden;\n vertical-align: middle;\n}\n\ntable {\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 12px;\n padding-bottom: 12px;\n color: #6c757d;\n text-align: left;\n caption-side: bottom;\n}\n\nth {\n text-align: inherit;\n}\n\nlabel {\n display: inline-block;\n margin-bottom: 8px;\n}\n\nbutton {\n border-radius: 0;\n border: 0;\n padding: 0;\n margin: 0;\n background: none;\n appearance: none;\n -webkit-appearance: none;\n}\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: none;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\ninput {\n overflow: visible;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\nselect {\n word-wrap: normal;\n}\n\nbutton,\n[type='button'],\n[type='reset'],\n[type='submit'] {\n -webkit-appearance: button;\n}\n\nbutton:not(:disabled),\n[type='button']:not(:disabled),\n[type='reset']:not(:disabled),\n[type='submit']:not(:disabled) {\n cursor: pointer;\n}\n\nbutton::-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\ninput[type='radio'],\ninput[type='checkbox'] {\n box-sizing: border-box;\n padding: 0;\n}\n\ninput[type='date'],\ninput[type='time'],\ninput[type='datetime-local'],\ninput[type='month'] {\n -webkit-appearance: listbox;\n}\n\ntextarea {\n overflow: auto;\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\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\nprogress {\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\noutput {\n display: inline-block;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\ntemplate {\n display: none;\n}\n\n[hidden] {\n display: none !important;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/normalize.css\"],names:[],mappings:\"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\",sourcesContent:[\":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\\narticle,\\naside,\\nfigcaption,\\nfigure,\\nfooter,\\nheader,\\nhgroup,\\nmain,\\nnav,\\nsection {\\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, 'Apple Color Emoji',\\n 'Segoe UI Emoji', 'Segoe UI Symbol', '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}\\n\\n:host:not(button) {\\n background-color: #fff;\\n}\\n\\n[tabindex='-1']:focus:not(:focus-visible) {\\n outline: 0 !important;\\n}\\n\\nhr {\\n box-sizing: content-box;\\n height: 0;\\n overflow: visible;\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-top: 0;\\n margin-bottom: 8px;\\n}\\n\\np {\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n\\nabbr[title],\\nabbr[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\\naddress {\\n margin-bottom: 16px;\\n font-style: normal;\\n line-height: inherit;\\n}\\n\\nol,\\nul,\\ndl {\\n margin-top: 0;\\n margin-bottom: 16px;\\n}\\n\\nol ol,\\nul ul,\\nol ul,\\nul ol {\\n margin-bottom: 0;\\n}\\n\\ndt {\\n font-weight: 700;\\n}\\n\\ndd {\\n margin-bottom: 8px;\\n margin-left: 0;\\n}\\n\\nblockquote {\\n margin: 0 0 16px;\\n}\\n\\nb,\\nstrong {\\n font-weight: bolder;\\n}\\n\\nsmall {\\n font-size: 80%;\\n}\\n\\nsub,\\nsup {\\n position: relative;\\n font-size: 75%;\\n line-height: 0;\\n vertical-align: baseline;\\n}\\n\\nsub {\\n bottom: -0.25em;\\n}\\n\\nsup {\\n top: -0.5em;\\n}\\n\\na {\\n color: #007bff;\\n text-decoration: none;\\n background-color: transparent;\\n}\\n\\na:hover {\\n color: #0056b3;\\n text-decoration: underline;\\n}\\n\\na:not([href]) {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\na:not([href]):hover {\\n color: inherit;\\n text-decoration: none;\\n}\\n\\npre,\\ncode,\\nkbd,\\nsamp {\\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',\\n 'Courier New', monospace;\\n font-size: 1em;\\n}\\n\\npre {\\n margin-top: 0;\\n margin-bottom: 16px;\\n overflow: auto;\\n}\\n\\nfigure {\\n margin: 0 0 16px;\\n}\\n\\nimg {\\n vertical-align: middle;\\n border-style: none;\\n}\\n\\nsvg {\\n overflow: hidden;\\n vertical-align: middle;\\n}\\n\\ntable {\\n border-collapse: collapse;\\n}\\n\\ncaption {\\n padding-top: 12px;\\n padding-bottom: 12px;\\n color: #6c757d;\\n text-align: left;\\n caption-side: bottom;\\n}\\n\\nth {\\n text-align: inherit;\\n}\\n\\nlabel {\\n display: inline-block;\\n margin-bottom: 8px;\\n}\\n\\nbutton {\\n border-radius: 0;\\n border: 0;\\n padding: 0;\\n margin: 0;\\n background: none;\\n appearance: none;\\n -webkit-appearance: none;\\n}\\n\\nbutton:focus {\\n outline: 1px dotted;\\n outline: 5px auto -webkit-focus-ring-color;\\n}\\n\\nbutton:focus:not(:focus-visible) {\\n outline: none;\\n}\\n\\ninput,\\nbutton,\\nselect,\\noptgroup,\\ntextarea {\\n margin: 0;\\n font-family: inherit;\\n font-size: inherit;\\n line-height: inherit;\\n}\\n\\nbutton,\\ninput {\\n overflow: visible;\\n}\\n\\nbutton,\\nselect {\\n text-transform: none;\\n}\\n\\nselect {\\n word-wrap: normal;\\n}\\n\\nbutton,\\n[type='button'],\\n[type='reset'],\\n[type='submit'] {\\n -webkit-appearance: button;\\n}\\n\\nbutton:not(:disabled),\\n[type='button']:not(:disabled),\\n[type='reset']:not(:disabled),\\n[type='submit']:not(:disabled) {\\n cursor: pointer;\\n}\\n\\nbutton::-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\\ninput[type='radio'],\\ninput[type='checkbox'] {\\n box-sizing: border-box;\\n padding: 0;\\n}\\n\\ninput[type='date'],\\ninput[type='time'],\\ninput[type='datetime-local'],\\ninput[type='month'] {\\n -webkit-appearance: listbox;\\n}\\n\\ntextarea {\\n overflow: auto;\\n resize: vertical;\\n}\\n\\nfieldset {\\n min-width: 0;\\n padding: 0;\\n margin: 0;\\n border: 0;\\n}\\n\\nlegend {\\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\\nprogress {\\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\\noutput {\\n display: inline-block;\\n}\\n\\nsummary {\\n display: list-item;\\n cursor: pointer;\\n}\\n\\ntemplate {\\n display: none;\\n}\\n\\n[hidden] {\\n display: none !important;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/panel/dynamic-panel.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`/* Panel container base styles with dynamic positioning and sizing */\n.dynamic-panel-container {\n position: fixed;\n z-index: 2147483646;\n outline: none;\n top: var(--panel-top, auto);\n bottom: var(--panel-bottom, auto);\n left: var(--panel-left, auto);\n right: var(--panel-right, auto);\n width: var(--panel-width);\n height: var(--panel-height);\n min-width: var(--panel-min-width);\n min-height: var(--panel-min-height);\n max-width: var(--panel-max-width);\n max-height: var(--panel-max-height);\n}\n\n/* Panel content container styles */\n.panel-content-container {\n position: relative;\n width: 100%;\n height: 100%;\n border: 1px solid var(--color-gray-alpha-400);\n border-radius: var(--rounded-xl);\n background: var(--color-background-100);\n display: flex;\n flex-direction: column;\n}\n\n/* Draggable content area styles */\n.draggable-content {\n flex: 1;\n overflow: auto;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/panel/dynamic-panel.css\"],names:[],mappings:\"AAAA,oEAAoE;AACpE;EACE,eAAe;EACf,mBAAmB;EACnB,aAAa;EACb,2BAA2B;EAC3B,iCAAiC;EACjC,6BAA6B;EAC7B,+BAA+B;EAC/B,yBAAyB;EACzB,2BAA2B;EAC3B,iCAAiC;EACjC,mCAAmC;EACnC,iCAAiC;EACjC,mCAAmC;AACrC;;AAEA,mCAAmC;AACnC;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,6CAA6C;EAC7C,gCAAgC;EAChC,uCAAuC;EACvC,aAAa;EACb,sBAAsB;AACxB;;AAEA,kCAAkC;AAClC;EACE,OAAO;EACP,cAAc;AAChB\",sourcesContent:[\"/* Panel container base styles with dynamic positioning and sizing */\\n.dynamic-panel-container {\\n position: fixed;\\n z-index: 2147483646;\\n outline: none;\\n top: var(--panel-top, auto);\\n bottom: var(--panel-bottom, auto);\\n left: var(--panel-left, auto);\\n right: var(--panel-right, auto);\\n width: var(--panel-width);\\n height: var(--panel-height);\\n min-width: var(--panel-min-width);\\n min-height: var(--panel-min-height);\\n max-width: var(--panel-max-width);\\n max-height: var(--panel-max-height);\\n}\\n\\n/* Panel content container styles */\\n.panel-content-container {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: var(--rounded-xl);\\n background: var(--color-background-100);\\n display: flex;\\n flex-direction: column;\\n}\\n\\n/* Draggable content area styles */\\n.draggable-content {\\n flex: 1;\\n overflow: auto;\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/colors.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n /* \n * CAUTION: THIS IS A WORKAROUND!\n * For now, we use @babel/code-frame to parse the code frame which does not support option to change the color.\n * x-ref: https://github.com/babel/babel/blob/efa52324ff835b794c48080f14877b6caf32cd15/packages/babel-code-frame/src/defs.ts#L40-L54\n * So, we do a workaround mapping to change the color matching the theme.\n *\n * For example, in @babel/code-frame, the \"keyword\" is mapped to ANSI \"cyan\".\n * We want the \"keyword\" to use the \"syntax-keyword\" color in the theme.\n * So, we map the \"cyan\" to the \"syntax-keyword\" in the theme.\n */\n /* cyan: keyword */\n --color-ansi-cyan: var(--color-syntax-keyword);\n /* yellow: capitalized, jsxIdentifier, punctuation */\n --color-ansi-yellow: var(--color-syntax-function);\n /* magenta: number, regex */\n --color-ansi-magenta: var(--color-syntax-keyword);\n /* green: string */\n --color-ansi-green: var(--color-syntax-string);\n /* gray (bright black): comment, gutter */\n --color-ansi-bright-black: var(--color-syntax-comment);\n\n /* Ansi - Temporary */\n --color-ansi-selection: var(--color-gray-alpha-300);\n --color-ansi-bg: var(--color-background-200);\n --color-ansi-fg: var(--color-gray-1000);\n\n --color-ansi-white: var(--color-gray-700);\n --color-ansi-black: var(--color-gray-200);\n --color-ansi-blue: var(--color-blue-700);\n --color-ansi-red: var(--color-red-700);\n --color-ansi-bright-white: var(--color-gray-1000);\n --color-ansi-bright-blue: var(--color-blue-800);\n --color-ansi-bright-cyan: var(--color-blue-800);\n --color-ansi-bright-green: var(--color-green-800);\n --color-ansi-bright-magenta: var(--color-blue-800);\n --color-ansi-bright-red: var(--color-red-800);\n --color-ansi-bright-yellow: var(--color-amber-900);\n\n /* Background Light */\n --color-background-100: #ffffff;\n --color-background-200: #fafafa;\n\n /* Syntax Light */\n --color-syntax-comment: #545454;\n --color-syntax-constant: #171717;\n --color-syntax-function: #0054ad;\n --color-syntax-keyword: #a51850;\n --color-syntax-link: #066056;\n --color-syntax-parameter: #8f3e00;\n --color-syntax-punctuation: #171717;\n --color-syntax-string: #036157;\n --color-syntax-string-expression: #066056;\n\n /* Gray Scale Light */\n --color-gray-100: #f2f2f2;\n --color-gray-200: #ebebeb;\n --color-gray-300: #e6e6e6;\n --color-gray-400: #eaeaea;\n --color-gray-500: #c9c9c9;\n --color-gray-600: #a8a8a8;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #666666;\n --color-gray-1000: #171717;\n\n /* Gray Alpha Scale Light */\n --color-gray-alpha-100: rgba(0, 0, 0, 0.05);\n --color-gray-alpha-200: rgba(0, 0, 0, 0.081);\n --color-gray-alpha-300: rgba(0, 0, 0, 0.1);\n --color-gray-alpha-400: rgba(0, 0, 0, 0.08);\n --color-gray-alpha-500: rgba(0, 0, 0, 0.21);\n --color-gray-alpha-600: rgba(0, 0, 0, 0.34);\n --color-gray-alpha-700: rgba(0, 0, 0, 0.44);\n --color-gray-alpha-800: rgba(0, 0, 0, 0.51);\n --color-gray-alpha-900: rgba(0, 0, 0, 0.605);\n --color-gray-alpha-1000: rgba(0, 0, 0, 0.91);\n\n /* Blue Scale Light */\n --color-blue-100: #f0f7ff;\n --color-blue-200: #edf6ff;\n --color-blue-300: #e1f0ff;\n --color-blue-400: #cde7ff;\n --color-blue-500: #99ceff;\n --color-blue-600: #52aeff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #0067d6;\n --color-blue-1000: #0025ad;\n\n /* Red Scale Light */\n --color-red-100: #fff0f0;\n --color-red-200: #ffebeb;\n --color-red-300: #ffe5e5;\n --color-red-400: #fdd8d8;\n --color-red-500: #f8baba;\n --color-red-600: #f87274;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ca2a30;\n --color-red-1000: #381316;\n\n /* Amber Scale Light */\n --color-amber-100: #fff6e5;\n --color-amber-200: #fff4d5;\n --color-amber-300: #fef0cd;\n --color-amber-400: #ffddbf;\n --color-amber-500: #ffc96b;\n --color-amber-600: #f5b047;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #a35200;\n --color-amber-1000: #4e2009;\n\n /* Green Scale Light */\n --color-green-100: #effbef;\n --color-green-200: #eafaea;\n --color-green-300: #dcf6dc;\n --color-green-400: #c8f1c9;\n --color-green-500: #99e59f;\n --color-green-600: #6cda76;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #297c3b;\n --color-green-1000: #18311e;\n\n /* Turbopack Light - Temporary */\n --color-turbopack-text-red: #ff1e56;\n --color-turbopack-text-blue: #0096ff;\n --color-turbopack-border-red: #f0adbe;\n --color-turbopack-border-blue: #adccea;\n --color-turbopack-background-red: #fff7f9;\n --color-turbopack-background-blue: #f6fbff;\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/colors.css\"],names:[],mappings:\"AAAA;EACE;;;;;;;;;IASE;EACF,kBAAkB;EAClB,8CAA8C;EAC9C,oDAAoD;EACpD,iDAAiD;EACjD,2BAA2B;EAC3B,iDAAiD;EACjD,kBAAkB;EAClB,8CAA8C;EAC9C,yCAAyC;EACzC,sDAAsD;;EAEtD,qBAAqB;EACrB,mDAAmD;EACnD,4CAA4C;EAC5C,uCAAuC;;EAEvC,yCAAyC;EACzC,yCAAyC;EACzC,wCAAwC;EACxC,sCAAsC;EACtC,iDAAiD;EACjD,+CAA+C;EAC/C,+CAA+C;EAC/C,iDAAiD;EACjD,kDAAkD;EAClD,6CAA6C;EAC7C,kDAAkD;;EAElD,qBAAqB;EACrB,+BAA+B;EAC/B,+BAA+B;;EAE/B,iBAAiB;EACjB,+BAA+B;EAC/B,gCAAgC;EAChC,gCAAgC;EAChC,+BAA+B;EAC/B,4BAA4B;EAC5B,iCAAiC;EACjC,mCAAmC;EACnC,8BAA8B;EAC9B,yCAAyC;;EAEzC,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,2BAA2B;EAC3B,2CAA2C;EAC3C,4CAA4C;EAC5C,0CAA0C;EAC1C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,2CAA2C;EAC3C,4CAA4C;EAC5C,4CAA4C;;EAE5C,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,oBAAoB;EACpB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,yBAAyB;;EAEzB,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,sBAAsB;EACtB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,gCAAgC;EAChC,mCAAmC;EACnC,oCAAoC;EACpC,qCAAqC;EACrC,sCAAsC;EACtC,yCAAyC;EACzC,0CAA0C;AAC5C\",sourcesContent:[':host {\\n /* \\n * CAUTION: THIS IS A WORKAROUND!\\n * For now, we use @babel/code-frame to parse the code frame which does not support option to change the color.\\n * x-ref: https://github.com/babel/babel/blob/efa52324ff835b794c48080f14877b6caf32cd15/packages/babel-code-frame/src/defs.ts#L40-L54\\n * So, we do a workaround mapping to change the color matching the theme.\\n *\\n * For example, in @babel/code-frame, the \"keyword\" is mapped to ANSI \"cyan\".\\n * We want the \"keyword\" to use the \"syntax-keyword\" color in the theme.\\n * So, we map the \"cyan\" to the \"syntax-keyword\" in the theme.\\n */\\n /* cyan: keyword */\\n --color-ansi-cyan: var(--color-syntax-keyword);\\n /* yellow: capitalized, jsxIdentifier, punctuation */\\n --color-ansi-yellow: var(--color-syntax-function);\\n /* magenta: number, regex */\\n --color-ansi-magenta: var(--color-syntax-keyword);\\n /* green: string */\\n --color-ansi-green: var(--color-syntax-string);\\n /* gray (bright black): comment, gutter */\\n --color-ansi-bright-black: var(--color-syntax-comment);\\n\\n /* Ansi - Temporary */\\n --color-ansi-selection: var(--color-gray-alpha-300);\\n --color-ansi-bg: var(--color-background-200);\\n --color-ansi-fg: var(--color-gray-1000);\\n\\n --color-ansi-white: var(--color-gray-700);\\n --color-ansi-black: var(--color-gray-200);\\n --color-ansi-blue: var(--color-blue-700);\\n --color-ansi-red: var(--color-red-700);\\n --color-ansi-bright-white: var(--color-gray-1000);\\n --color-ansi-bright-blue: var(--color-blue-800);\\n --color-ansi-bright-cyan: var(--color-blue-800);\\n --color-ansi-bright-green: var(--color-green-800);\\n --color-ansi-bright-magenta: var(--color-blue-800);\\n --color-ansi-bright-red: var(--color-red-800);\\n --color-ansi-bright-yellow: var(--color-amber-900);\\n\\n /* Background Light */\\n --color-background-100: #ffffff;\\n --color-background-200: #fafafa;\\n\\n /* Syntax Light */\\n --color-syntax-comment: #545454;\\n --color-syntax-constant: #171717;\\n --color-syntax-function: #0054ad;\\n --color-syntax-keyword: #a51850;\\n --color-syntax-link: #066056;\\n --color-syntax-parameter: #8f3e00;\\n --color-syntax-punctuation: #171717;\\n --color-syntax-string: #036157;\\n --color-syntax-string-expression: #066056;\\n\\n /* Gray Scale Light */\\n --color-gray-100: #f2f2f2;\\n --color-gray-200: #ebebeb;\\n --color-gray-300: #e6e6e6;\\n --color-gray-400: #eaeaea;\\n --color-gray-500: #c9c9c9;\\n --color-gray-600: #a8a8a8;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #666666;\\n --color-gray-1000: #171717;\\n\\n /* Gray Alpha Scale Light */\\n --color-gray-alpha-100: rgba(0, 0, 0, 0.05);\\n --color-gray-alpha-200: rgba(0, 0, 0, 0.081);\\n --color-gray-alpha-300: rgba(0, 0, 0, 0.1);\\n --color-gray-alpha-400: rgba(0, 0, 0, 0.08);\\n --color-gray-alpha-500: rgba(0, 0, 0, 0.21);\\n --color-gray-alpha-600: rgba(0, 0, 0, 0.34);\\n --color-gray-alpha-700: rgba(0, 0, 0, 0.44);\\n --color-gray-alpha-800: rgba(0, 0, 0, 0.51);\\n --color-gray-alpha-900: rgba(0, 0, 0, 0.605);\\n --color-gray-alpha-1000: rgba(0, 0, 0, 0.91);\\n\\n /* Blue Scale Light */\\n --color-blue-100: #f0f7ff;\\n --color-blue-200: #edf6ff;\\n --color-blue-300: #e1f0ff;\\n --color-blue-400: #cde7ff;\\n --color-blue-500: #99ceff;\\n --color-blue-600: #52aeff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #0067d6;\\n --color-blue-1000: #0025ad;\\n\\n /* Red Scale Light */\\n --color-red-100: #fff0f0;\\n --color-red-200: #ffebeb;\\n --color-red-300: #ffe5e5;\\n --color-red-400: #fdd8d8;\\n --color-red-500: #f8baba;\\n --color-red-600: #f87274;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ca2a30;\\n --color-red-1000: #381316;\\n\\n /* Amber Scale Light */\\n --color-amber-100: #fff6e5;\\n --color-amber-200: #fff4d5;\\n --color-amber-300: #fef0cd;\\n --color-amber-400: #ffddbf;\\n --color-amber-500: #ffc96b;\\n --color-amber-600: #f5b047;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #a35200;\\n --color-amber-1000: #4e2009;\\n\\n /* Green Scale Light */\\n --color-green-100: #effbef;\\n --color-green-200: #eafaea;\\n --color-green-300: #dcf6dc;\\n --color-green-400: #c8f1c9;\\n --color-green-500: #99e59f;\\n --color-green-600: #6cda76;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #297c3b;\\n --color-green-1000: #18311e;\\n\\n /* Turbopack Light - Temporary */\\n --color-turbopack-text-red: #ff1e56;\\n --color-turbopack-text-blue: #0096ff;\\n --color-turbopack-border-red: #f0adbe;\\n --color-turbopack-border-blue: #adccea;\\n --color-turbopack-background-red: #fff7f9;\\n --color-turbopack-background-blue: #f6fbff;\\n}\\n'],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/dark-theme.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host(.dark) {\n --color-font: white;\n --color-backdrop: rgba(0, 0, 0, 0.8);\n --color-border-shadow: rgba(255, 255, 255, 0.145);\n\n --color-title-color: #fafafa;\n --color-stack-notes: #a9a9a9;\n\n /* Background Dark */\n --color-background-100: #0a0a0a;\n --color-background-200: #000000;\n\n /* Syntax Dark */\n --color-syntax-comment: #a0a0a0;\n --color-syntax-constant: #ededed;\n --color-syntax-function: #52a9ff;\n --color-syntax-keyword: #f76e99;\n --color-syntax-link: #0ac5b2;\n --color-syntax-parameter: #f1a10d;\n --color-syntax-punctuation: #ededed;\n --color-syntax-string: #0ac5b2;\n --color-syntax-string-expression: #0ac5b2;\n\n /* Gray Scale Dark */\n --color-gray-100: #1a1a1a;\n --color-gray-200: #1f1f1f;\n --color-gray-300: #292929;\n --color-gray-400: #2e2e2e;\n --color-gray-500: #454545;\n --color-gray-600: #878787;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a0a0a0;\n --color-gray-1000: #ededed;\n\n /* Gray Alpha Scale Dark */\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\n\n /* Blue Scale Dark */\n --color-blue-100: #0f1b2d;\n --color-blue-200: #10243e;\n --color-blue-300: #0f3058;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4481;\n --color-blue-600: #0091ff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #52a9ff;\n --color-blue-1000: #eaf6ff;\n\n /* Red Scale Dark */\n --color-red-100: #2a1314;\n --color-red-200: #3d1719;\n --color-red-300: #551a1e;\n --color-red-400: #671e22;\n --color-red-500: #822025;\n --color-red-600: #e5484d;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ff6369;\n --color-red-1000: #ffecee;\n\n /* Amber Scale Dark */\n --color-amber-100: #271700;\n --color-amber-200: #341c00;\n --color-amber-300: #4a2900;\n --color-amber-400: #573300;\n --color-amber-500: #693f05;\n --color-amber-600: #e79c13;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #f1a10d;\n --color-amber-1000: #fef3dd;\n\n /* Green Scale Dark */\n --color-green-100: #0b2211;\n --color-green-200: #0f2c17;\n --color-green-300: #11351b;\n --color-green-400: #0c461b;\n --color-green-500: #126427;\n --color-green-600: #1a9338;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #63c174;\n --color-green-1000: #e5fbeb;\n\n /* Turbopack Dark - Temporary */\n --color-turbopack-text-red: #ff6d92;\n --color-turbopack-text-blue: #45b2ff;\n --color-turbopack-border-red: #6e293b;\n --color-turbopack-border-blue: #284f80;\n --color-turbopack-background-red: #250d12;\n --color-turbopack-background-blue: #0a1723;\n}\n\n@media (prefers-color-scheme: dark) {\n :host(:not(.light)) {\n --color-font: white;\n --color-backdrop: rgba(0, 0, 0, 0.8);\n --color-border-shadow: rgba(255, 255, 255, 0.145);\n\n --color-title-color: #fafafa;\n --color-stack-notes: #a9a9a9;\n\n /* Background Dark */\n --color-background-100: #0a0a0a;\n --color-background-200: #000000;\n\n /* Syntax Dark */\n --color-syntax-comment: #a0a0a0;\n --color-syntax-constant: #ededed;\n --color-syntax-function: #52a9ff;\n --color-syntax-keyword: #f76e99;\n --color-syntax-link: #0ac5b2;\n --color-syntax-parameter: #f1a10d;\n --color-syntax-punctuation: #ededed;\n --color-syntax-string: #0ac5b2;\n --color-syntax-string-expression: #0ac5b2;\n\n /* Gray Scale Dark */\n --color-gray-100: #1a1a1a;\n --color-gray-200: #1f1f1f;\n --color-gray-300: #292929;\n --color-gray-400: #2e2e2e;\n --color-gray-500: #454545;\n --color-gray-600: #878787;\n --color-gray-700: #8f8f8f;\n --color-gray-800: #7d7d7d;\n --color-gray-900: #a0a0a0;\n --color-gray-1000: #ededed;\n\n /* Gray Alpha Scale Dark */\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\n\n /* Blue Scale Dark */\n --color-blue-100: #0f1b2d;\n --color-blue-200: #10243e;\n --color-blue-300: #0f3058;\n --color-blue-400: #0d3868;\n --color-blue-500: #0a4481;\n --color-blue-600: #0091ff;\n --color-blue-700: #0070f3;\n --color-blue-800: #0060d1;\n --color-blue-900: #52a9ff;\n --color-blue-1000: #eaf6ff;\n\n /* Red Scale Dark */\n --color-red-100: #2a1314;\n --color-red-200: #3d1719;\n --color-red-300: #551a1e;\n --color-red-400: #671e22;\n --color-red-500: #822025;\n --color-red-600: #e5484d;\n --color-red-700: #e5484d;\n --color-red-800: #da3036;\n --color-red-900: #ff6369;\n --color-red-1000: #ffecee;\n\n /* Amber Scale Dark */\n --color-amber-100: #271700;\n --color-amber-200: #341c00;\n --color-amber-300: #4a2900;\n --color-amber-400: #573300;\n --color-amber-500: #693f05;\n --color-amber-600: #e79c13;\n --color-amber-700: #ffb224;\n --color-amber-800: #ff990a;\n --color-amber-900: #f1a10d;\n --color-amber-1000: #fef3dd;\n\n /* Green Scale Dark */\n --color-green-100: #0b2211;\n --color-green-200: #0f2c17;\n --color-green-300: #11351b;\n --color-green-400: #0c461b;\n --color-green-500: #126427;\n --color-green-600: #1a9338;\n --color-green-700: #46a758;\n --color-green-800: #388e4a;\n --color-green-900: #63c174;\n --color-green-1000: #e5fbeb;\n\n /* Turbopack Dark - Temporary */\n --color-turbopack-text-red: #ff6d92;\n --color-turbopack-text-blue: #45b2ff;\n --color-turbopack-border-red: #6e293b;\n --color-turbopack-border-blue: #284f80;\n --color-turbopack-background-red: #250d12;\n --color-turbopack-background-blue: #0a1723;\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/dark-theme.css\"],names:[],mappings:\"AAAA;EACE,mBAAmB;EACnB,oCAAoC;EACpC,iDAAiD;;EAEjD,4BAA4B;EAC5B,4BAA4B;;EAE5B,oBAAoB;EACpB,+BAA+B;EAC/B,+BAA+B;;EAE/B,gBAAgB;EAChB,+BAA+B;EAC/B,gCAAgC;EAChC,gCAAgC;EAChC,+BAA+B;EAC/B,4BAA4B;EAC5B,iCAAiC;EACjC,mCAAmC;EACnC,8BAA8B;EAC9B,yCAAyC;;EAEzC,oBAAoB;EACpB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,0BAA0B;EAC1B,kDAAkD;EAClD,kDAAkD;EAClD,kDAAkD;EAClD,kDAAkD;EAClD,kDAAkD;EAClD,kDAAkD;EAClD,iDAAiD;EACjD,iDAAiD;EACjD,iDAAiD;EACjD,mDAAmD;;EAEnD,oBAAoB;EACpB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,yBAAyB;EACzB,0BAA0B;;EAE1B,mBAAmB;EACnB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,wBAAwB;EACxB,yBAAyB;;EAEzB,qBAAqB;EACrB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,qBAAqB;EACrB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;EAC1B,2BAA2B;;EAE3B,+BAA+B;EAC/B,mCAAmC;EACnC,oCAAoC;EACpC,qCAAqC;EACrC,sCAAsC;EACtC,yCAAyC;EACzC,0CAA0C;AAC5C;;AAEA;EACE;IACE,mBAAmB;IACnB,oCAAoC;IACpC,iDAAiD;;IAEjD,4BAA4B;IAC5B,4BAA4B;;IAE5B,oBAAoB;IACpB,+BAA+B;IAC/B,+BAA+B;;IAE/B,gBAAgB;IAChB,+BAA+B;IAC/B,gCAAgC;IAChC,gCAAgC;IAChC,+BAA+B;IAC/B,4BAA4B;IAC5B,iCAAiC;IACjC,mCAAmC;IACnC,8BAA8B;IAC9B,yCAAyC;;IAEzC,oBAAoB;IACpB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,0BAA0B;;IAE1B,0BAA0B;IAC1B,kDAAkD;IAClD,kDAAkD;IAClD,kDAAkD;IAClD,kDAAkD;IAClD,kDAAkD;IAClD,kDAAkD;IAClD,iDAAiD;IACjD,iDAAiD;IACjD,iDAAiD;IACjD,mDAAmD;;IAEnD,oBAAoB;IACpB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,yBAAyB;IACzB,0BAA0B;;IAE1B,mBAAmB;IACnB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,yBAAyB;;IAEzB,qBAAqB;IACrB,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,2BAA2B;;IAE3B,qBAAqB;IACrB,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,0BAA0B;IAC1B,2BAA2B;;IAE3B,+BAA+B;IAC/B,mCAAmC;IACnC,oCAAoC;IACpC,qCAAqC;IACrC,sCAAsC;IACtC,yCAAyC;IACzC,0CAA0C;EAC5C;AACF\",sourcesContent:[\":host(.dark) {\\n --color-font: white;\\n --color-backdrop: rgba(0, 0, 0, 0.8);\\n --color-border-shadow: rgba(255, 255, 255, 0.145);\\n\\n --color-title-color: #fafafa;\\n --color-stack-notes: #a9a9a9;\\n\\n /* Background Dark */\\n --color-background-100: #0a0a0a;\\n --color-background-200: #000000;\\n\\n /* Syntax Dark */\\n --color-syntax-comment: #a0a0a0;\\n --color-syntax-constant: #ededed;\\n --color-syntax-function: #52a9ff;\\n --color-syntax-keyword: #f76e99;\\n --color-syntax-link: #0ac5b2;\\n --color-syntax-parameter: #f1a10d;\\n --color-syntax-punctuation: #ededed;\\n --color-syntax-string: #0ac5b2;\\n --color-syntax-string-expression: #0ac5b2;\\n\\n /* Gray Scale Dark */\\n --color-gray-100: #1a1a1a;\\n --color-gray-200: #1f1f1f;\\n --color-gray-300: #292929;\\n --color-gray-400: #2e2e2e;\\n --color-gray-500: #454545;\\n --color-gray-600: #878787;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #a0a0a0;\\n --color-gray-1000: #ededed;\\n\\n /* Gray Alpha Scale Dark */\\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\\n\\n /* Blue Scale Dark */\\n --color-blue-100: #0f1b2d;\\n --color-blue-200: #10243e;\\n --color-blue-300: #0f3058;\\n --color-blue-400: #0d3868;\\n --color-blue-500: #0a4481;\\n --color-blue-600: #0091ff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #52a9ff;\\n --color-blue-1000: #eaf6ff;\\n\\n /* Red Scale Dark */\\n --color-red-100: #2a1314;\\n --color-red-200: #3d1719;\\n --color-red-300: #551a1e;\\n --color-red-400: #671e22;\\n --color-red-500: #822025;\\n --color-red-600: #e5484d;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ff6369;\\n --color-red-1000: #ffecee;\\n\\n /* Amber Scale Dark */\\n --color-amber-100: #271700;\\n --color-amber-200: #341c00;\\n --color-amber-300: #4a2900;\\n --color-amber-400: #573300;\\n --color-amber-500: #693f05;\\n --color-amber-600: #e79c13;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #f1a10d;\\n --color-amber-1000: #fef3dd;\\n\\n /* Green Scale Dark */\\n --color-green-100: #0b2211;\\n --color-green-200: #0f2c17;\\n --color-green-300: #11351b;\\n --color-green-400: #0c461b;\\n --color-green-500: #126427;\\n --color-green-600: #1a9338;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #63c174;\\n --color-green-1000: #e5fbeb;\\n\\n /* Turbopack Dark - Temporary */\\n --color-turbopack-text-red: #ff6d92;\\n --color-turbopack-text-blue: #45b2ff;\\n --color-turbopack-border-red: #6e293b;\\n --color-turbopack-border-blue: #284f80;\\n --color-turbopack-background-red: #250d12;\\n --color-turbopack-background-blue: #0a1723;\\n}\\n\\n@media (prefers-color-scheme: dark) {\\n :host(:not(.light)) {\\n --color-font: white;\\n --color-backdrop: rgba(0, 0, 0, 0.8);\\n --color-border-shadow: rgba(255, 255, 255, 0.145);\\n\\n --color-title-color: #fafafa;\\n --color-stack-notes: #a9a9a9;\\n\\n /* Background Dark */\\n --color-background-100: #0a0a0a;\\n --color-background-200: #000000;\\n\\n /* Syntax Dark */\\n --color-syntax-comment: #a0a0a0;\\n --color-syntax-constant: #ededed;\\n --color-syntax-function: #52a9ff;\\n --color-syntax-keyword: #f76e99;\\n --color-syntax-link: #0ac5b2;\\n --color-syntax-parameter: #f1a10d;\\n --color-syntax-punctuation: #ededed;\\n --color-syntax-string: #0ac5b2;\\n --color-syntax-string-expression: #0ac5b2;\\n\\n /* Gray Scale Dark */\\n --color-gray-100: #1a1a1a;\\n --color-gray-200: #1f1f1f;\\n --color-gray-300: #292929;\\n --color-gray-400: #2e2e2e;\\n --color-gray-500: #454545;\\n --color-gray-600: #878787;\\n --color-gray-700: #8f8f8f;\\n --color-gray-800: #7d7d7d;\\n --color-gray-900: #a0a0a0;\\n --color-gray-1000: #ededed;\\n\\n /* Gray Alpha Scale Dark */\\n --color-gray-alpha-100: rgba(255, 255, 255, 0.066);\\n --color-gray-alpha-200: rgba(255, 255, 255, 0.087);\\n --color-gray-alpha-300: rgba(255, 255, 255, 0.125);\\n --color-gray-alpha-400: rgba(255, 255, 255, 0.145);\\n --color-gray-alpha-500: rgba(255, 255, 255, 0.239);\\n --color-gray-alpha-600: rgba(255, 255, 255, 0.506);\\n --color-gray-alpha-700: rgba(255, 255, 255, 0.54);\\n --color-gray-alpha-800: rgba(255, 255, 255, 0.47);\\n --color-gray-alpha-900: rgba(255, 255, 255, 0.61);\\n --color-gray-alpha-1000: rgba(255, 255, 255, 0.923);\\n\\n /* Blue Scale Dark */\\n --color-blue-100: #0f1b2d;\\n --color-blue-200: #10243e;\\n --color-blue-300: #0f3058;\\n --color-blue-400: #0d3868;\\n --color-blue-500: #0a4481;\\n --color-blue-600: #0091ff;\\n --color-blue-700: #0070f3;\\n --color-blue-800: #0060d1;\\n --color-blue-900: #52a9ff;\\n --color-blue-1000: #eaf6ff;\\n\\n /* Red Scale Dark */\\n --color-red-100: #2a1314;\\n --color-red-200: #3d1719;\\n --color-red-300: #551a1e;\\n --color-red-400: #671e22;\\n --color-red-500: #822025;\\n --color-red-600: #e5484d;\\n --color-red-700: #e5484d;\\n --color-red-800: #da3036;\\n --color-red-900: #ff6369;\\n --color-red-1000: #ffecee;\\n\\n /* Amber Scale Dark */\\n --color-amber-100: #271700;\\n --color-amber-200: #341c00;\\n --color-amber-300: #4a2900;\\n --color-amber-400: #573300;\\n --color-amber-500: #693f05;\\n --color-amber-600: #e79c13;\\n --color-amber-700: #ffb224;\\n --color-amber-800: #ff990a;\\n --color-amber-900: #f1a10d;\\n --color-amber-1000: #fef3dd;\\n\\n /* Green Scale Dark */\\n --color-green-100: #0b2211;\\n --color-green-200: #0f2c17;\\n --color-green-300: #11351b;\\n --color-green-400: #0c461b;\\n --color-green-500: #126427;\\n --color-green-600: #1a9338;\\n --color-green-700: #46a758;\\n --color-green-800: #388e4a;\\n --color-green-900: #63c174;\\n --color-green-1000: #e5fbeb;\\n\\n /* Turbopack Dark - Temporary */\\n --color-turbopack-text-red: #ff6d92;\\n --color-turbopack-text-blue: #45b2ff;\\n --color-turbopack-border-red: #6e293b;\\n --color-turbopack-border-blue: #284f80;\\n --color-turbopack-background-red: #250d12;\\n --color-turbopack-background-blue: #0a1723;\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/styles/default-theme.css\":function(e,t,n){\"use strict\";n.d(t,{Z:()=>l});var r=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\"),o=n.n(r),a=n(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\"),i=n.n(a)()(o());i.push([e.id,`:host {\n /* \n * Although the style applied to the shadow host is isolated,\n * the element that attached the shadow host (i.e. \"nextjs-portal\")\n * is still affected by the parent's style (e.g. \"body\"). This may\n * occur style conflicts like \"display: flex\", with other children\n * elements therefore give the shadow host an absolute position.\n */\n position: absolute;\n\n --color-font: #757575;\n --color-backdrop: rgba(250, 250, 250, 0.8);\n --color-border-shadow: rgba(0, 0, 0, 0.145);\n\n --color-title-color: #1f1f1f;\n --color-stack-notes: #777;\n\n --color-accents-1: #808080;\n --color-accents-2: #222222;\n --color-accents-3: #404040;\n\n --font-stack-monospace: '__nextjs-Geist Mono', 'Geist Mono', 'SFMono-Regular',\n Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n --font-stack-sans: '__nextjs-Geist', 'Geist', -apple-system, 'Source Sans Pro',\n sans-serif;\n\n font-family: var(--font-stack-sans);\n font-variant-ligatures: none;\n\n /* TODO: Remove replaced ones. */\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n --shadow-none: 0 0 #0000;\n\n --shadow-small: 0px 2px 2px rgba(0, 0, 0, 0.04);\n --shadow-menu: 0px 1px 1px rgba(0, 0, 0, 0.02),\n 0px 4px 8px -4px rgba(0, 0, 0, 0.04), 0px 16px 24px -8px rgba(0, 0, 0, 0.06);\n\n --focus-color: var(--color-blue-800);\n --focus-ring: 2px solid var(--focus-color);\n\n --timing-swift: cubic-bezier(0.23, 0.88, 0.26, 0.92);\n --timing-overlay: cubic-bezier(0.175, 0.885, 0.32, 1.1);\n /* prettier-ignore */\n --timing-bounce: linear(0 0%, 0.005871 1%, 0.022058 2%, 0.046612 3%, 0.077823 4%, 0.114199 5%, 0.154441 6%, 0.197431 7.000000000000001%, 0.242208 8%, 0.287959 9%, 0.333995 10%, 0.379743 11%, 0.424732 12%, 0.46858 13%, 0.510982 14.000000000000002%, 0.551702 15%, 0.590564 16%, 0.627445 17%, 0.662261 18%, 0.694971 19%, 0.725561 20%, 0.754047 21%, 0.780462 22%, 0.804861 23%, 0.82731 24%, 0.847888 25%, 0.866679 26%, 0.883775 27%, 0.899272 28.000000000000004%, 0.913267 28.999999999999996%, 0.925856 30%, 0.937137 31%, 0.947205 32%, 0.956153 33%, 0.96407 34%, 0.971043 35%, 0.977153 36%, 0.982479 37%, 0.987094 38%, 0.991066 39%, 0.994462 40%, 0.997339 41%, 0.999755 42%, 1.001761 43%, 1.003404 44%, 1.004727 45%, 1.00577 46%, 1.006569 47%, 1.007157 48%, 1.007563 49%, 1.007813 50%, 1.007931 51%, 1.007939 52%, 1.007855 53%, 1.007697 54%, 1.007477 55.00000000000001%, 1.00721 56.00000000000001%, 1.006907 56.99999999999999%, 1.006576 57.99999999999999%, 1.006228 59%, 1.005868 60%, 1.005503 61%, 1.005137 62%, 1.004776 63%, 1.004422 64%, 1.004078 65%, 1.003746 66%, 1.003429 67%, 1.003127 68%, 1.00284 69%, 1.002571 70%, 1.002318 71%, 1.002082 72%, 1.001863 73%, 1.00166 74%, 1.001473 75%, 1.001301 76%, 1.001143 77%, 1.001 78%, 1.000869 79%, 1.000752 80%, 1.000645 81%, 1.00055 82%, 1.000464 83%, 1.000388 84%, 1.000321 85%, 1.000261 86%, 1.000209 87%, 1.000163 88%, 1.000123 89%, 1.000088 90%);\n\n --rounded-none: 0px;\n --rounded-sm: 2px;\n --rounded-md: 4px;\n --rounded-md-2: 6px;\n --rounded-lg: 8px;\n --rounded-xl: 12px;\n --rounded-2xl: 16px;\n --rounded-3xl: 24px;\n --rounded-4xl: 32px;\n --rounded-full: 9999px;\n\n /* \n This value gets set from the Dev Tools preferences,\n and we use the following --size-* variables to \n scale the relevant elements.\n\n The reason why we don't rely on rem values is because\n if an app sets their root font size to something tiny, \n it feels unexpected to have the app root size leak \n into a Next.js surface.\n\n https://github.com/vercel/next.js/discussions/76812\n */\n --nextjs-dev-tools-scale: 1;\n --size-1: calc(1px / var(--nextjs-dev-tools-scale));\n --size-2: calc(2px / var(--nextjs-dev-tools-scale));\n --size-3: calc(3px / var(--nextjs-dev-tools-scale));\n --size-4: calc(4px / var(--nextjs-dev-tools-scale));\n --size-5: calc(5px / var(--nextjs-dev-tools-scale));\n --size-6: calc(6px / var(--nextjs-dev-tools-scale));\n --size-7: calc(7px / var(--nextjs-dev-tools-scale));\n --size-8: calc(8px / var(--nextjs-dev-tools-scale));\n --size-9: calc(9px / var(--nextjs-dev-tools-scale));\n --size-10: calc(10px / var(--nextjs-dev-tools-scale));\n --size-11: calc(11px / var(--nextjs-dev-tools-scale));\n --size-12: calc(12px / var(--nextjs-dev-tools-scale));\n --size-13: calc(13px / var(--nextjs-dev-tools-scale));\n --size-14: calc(14px / var(--nextjs-dev-tools-scale));\n --size-15: calc(15px / var(--nextjs-dev-tools-scale));\n --size-16: calc(16px / var(--nextjs-dev-tools-scale));\n --size-17: calc(17px / var(--nextjs-dev-tools-scale));\n --size-18: calc(18px / var(--nextjs-dev-tools-scale));\n --size-20: calc(20px / var(--nextjs-dev-tools-scale));\n --size-22: calc(22px / var(--nextjs-dev-tools-scale));\n --size-24: calc(24px / var(--nextjs-dev-tools-scale));\n --size-26: calc(26px / var(--nextjs-dev-tools-scale));\n --size-28: calc(28px / var(--nextjs-dev-tools-scale));\n --size-30: calc(30px / var(--nextjs-dev-tools-scale));\n --size-32: calc(32px / var(--nextjs-dev-tools-scale));\n --size-34: calc(34px / var(--nextjs-dev-tools-scale));\n --size-36: calc(36px / var(--nextjs-dev-tools-scale));\n --size-38: calc(38px / var(--nextjs-dev-tools-scale));\n --size-40: calc(40px / var(--nextjs-dev-tools-scale));\n --size-42: calc(42px / var(--nextjs-dev-tools-scale));\n --size-44: calc(44px / var(--nextjs-dev-tools-scale));\n --size-46: calc(46px / var(--nextjs-dev-tools-scale));\n --size-48: calc(48px / var(--nextjs-dev-tools-scale));\n\n @media print {\n display: none;\n }\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-bottom: 8px;\n font-weight: 500;\n line-height: 1.5;\n}\n\na {\n color: var(--color-blue-900);\n &:hover {\n color: var(--color-blue-900);\n }\n &:focus-visible {\n outline: var(--focus-ring);\n }\n}\n`,\"\",{version:3,sources:[\"webpack://./src/next-devtools/dev-overlay/styles/default-theme.css\"],names:[],mappings:\"AAAA;EACE;;;;;;IAME;EACF,kBAAkB;;EAElB,qBAAqB;EACrB,0CAA0C;EAC1C,2CAA2C;;EAE3C,4BAA4B;EAC5B,yBAAyB;;EAEzB,0BAA0B;EAC1B,0BAA0B;EAC1B,0BAA0B;;EAE1B;0DACwD;EACxD;cACY;;EAEZ,mCAAmC;EACnC,4BAA4B;;EAE5B,gCAAgC;EAChC,0CAA0C;EAC1C,uEAAuE;EACvE,6EAA6E;EAC7E;mCACiC;EACjC;oCACkC;EAClC,iDAAiD;EACjD,mDAAmD;EACnD,wBAAwB;;EAExB,+CAA+C;EAC/C;gFAC8E;;EAE9E,oCAAoC;EACpC,0CAA0C;;EAE1C,oDAAoD;EACpD,uDAAuD;EACvD,oBAAoB;EACpB,i3CAAi3C;;EAEj3C,mBAAmB;EACnB,iBAAiB;EACjB,iBAAiB;EACjB,mBAAmB;EACnB,iBAAiB;EACjB,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,mBAAmB;EACnB,sBAAsB;;EAEtB;;;;;;;;;;;GAWC;EACD,2BAA2B;EAC3B,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,mDAAmD;EACnD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;EACrD,qDAAqD;;EAErD;IACE,aAAa;EACf;AACF;;AAEA;;;;;;EAME,kBAAkB;EAClB,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;EACE,4BAA4B;EAC5B;IACE,4BAA4B;EAC9B;EACA;IACE,0BAA0B;EAC5B;AACF\",sourcesContent:[\":host {\\n /* \\n * Although the style applied to the shadow host is isolated,\\n * the element that attached the shadow host (i.e. \\\"nextjs-portal\\\")\\n * is still affected by the parent's style (e.g. \\\"body\\\"). This may\\n * occur style conflicts like \\\"display: flex\\\", with other children\\n * elements therefore give the shadow host an absolute position.\\n */\\n position: absolute;\\n\\n --color-font: #757575;\\n --color-backdrop: rgba(250, 250, 250, 0.8);\\n --color-border-shadow: rgba(0, 0, 0, 0.145);\\n\\n --color-title-color: #1f1f1f;\\n --color-stack-notes: #777;\\n\\n --color-accents-1: #808080;\\n --color-accents-2: #222222;\\n --color-accents-3: #404040;\\n\\n --font-stack-monospace: '__nextjs-Geist Mono', 'Geist Mono', 'SFMono-Regular',\\n Consolas, 'Liberation Mono', Menlo, Courier, monospace;\\n --font-stack-sans: '__nextjs-Geist', 'Geist', -apple-system, 'Source Sans Pro',\\n sans-serif;\\n\\n font-family: var(--font-stack-sans);\\n font-variant-ligatures: none;\\n\\n /* TODO: Remove replaced ones. */\\n --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);\\n --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\\n --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1),\\n 0 4px 6px -4px rgb(0 0 0 / 0.1);\\n --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1),\\n 0 8px 10px -6px rgb(0 0 0 / 0.1);\\n --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\\n --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\\n --shadow-none: 0 0 #0000;\\n\\n --shadow-small: 0px 2px 2px rgba(0, 0, 0, 0.04);\\n --shadow-menu: 0px 1px 1px rgba(0, 0, 0, 0.02),\\n 0px 4px 8px -4px rgba(0, 0, 0, 0.04), 0px 16px 24px -8px rgba(0, 0, 0, 0.06);\\n\\n --focus-color: var(--color-blue-800);\\n --focus-ring: 2px solid var(--focus-color);\\n\\n --timing-swift: cubic-bezier(0.23, 0.88, 0.26, 0.92);\\n --timing-overlay: cubic-bezier(0.175, 0.885, 0.32, 1.1);\\n /* prettier-ignore */\\n --timing-bounce: linear(0 0%, 0.005871 1%, 0.022058 2%, 0.046612 3%, 0.077823 4%, 0.114199 5%, 0.154441 6%, 0.197431 7.000000000000001%, 0.242208 8%, 0.287959 9%, 0.333995 10%, 0.379743 11%, 0.424732 12%, 0.46858 13%, 0.510982 14.000000000000002%, 0.551702 15%, 0.590564 16%, 0.627445 17%, 0.662261 18%, 0.694971 19%, 0.725561 20%, 0.754047 21%, 0.780462 22%, 0.804861 23%, 0.82731 24%, 0.847888 25%, 0.866679 26%, 0.883775 27%, 0.899272 28.000000000000004%, 0.913267 28.999999999999996%, 0.925856 30%, 0.937137 31%, 0.947205 32%, 0.956153 33%, 0.96407 34%, 0.971043 35%, 0.977153 36%, 0.982479 37%, 0.987094 38%, 0.991066 39%, 0.994462 40%, 0.997339 41%, 0.999755 42%, 1.001761 43%, 1.003404 44%, 1.004727 45%, 1.00577 46%, 1.006569 47%, 1.007157 48%, 1.007563 49%, 1.007813 50%, 1.007931 51%, 1.007939 52%, 1.007855 53%, 1.007697 54%, 1.007477 55.00000000000001%, 1.00721 56.00000000000001%, 1.006907 56.99999999999999%, 1.006576 57.99999999999999%, 1.006228 59%, 1.005868 60%, 1.005503 61%, 1.005137 62%, 1.004776 63%, 1.004422 64%, 1.004078 65%, 1.003746 66%, 1.003429 67%, 1.003127 68%, 1.00284 69%, 1.002571 70%, 1.002318 71%, 1.002082 72%, 1.001863 73%, 1.00166 74%, 1.001473 75%, 1.001301 76%, 1.001143 77%, 1.001 78%, 1.000869 79%, 1.000752 80%, 1.000645 81%, 1.00055 82%, 1.000464 83%, 1.000388 84%, 1.000321 85%, 1.000261 86%, 1.000209 87%, 1.000163 88%, 1.000123 89%, 1.000088 90%);\\n\\n --rounded-none: 0px;\\n --rounded-sm: 2px;\\n --rounded-md: 4px;\\n --rounded-md-2: 6px;\\n --rounded-lg: 8px;\\n --rounded-xl: 12px;\\n --rounded-2xl: 16px;\\n --rounded-3xl: 24px;\\n --rounded-4xl: 32px;\\n --rounded-full: 9999px;\\n\\n /* \\n This value gets set from the Dev Tools preferences,\\n and we use the following --size-* variables to \\n scale the relevant elements.\\n\\n The reason why we don't rely on rem values is because\\n if an app sets their root font size to something tiny, \\n it feels unexpected to have the app root size leak \\n into a Next.js surface.\\n\\n https://github.com/vercel/next.js/discussions/76812\\n */\\n --nextjs-dev-tools-scale: 1;\\n --size-1: calc(1px / var(--nextjs-dev-tools-scale));\\n --size-2: calc(2px / var(--nextjs-dev-tools-scale));\\n --size-3: calc(3px / var(--nextjs-dev-tools-scale));\\n --size-4: calc(4px / var(--nextjs-dev-tools-scale));\\n --size-5: calc(5px / var(--nextjs-dev-tools-scale));\\n --size-6: calc(6px / var(--nextjs-dev-tools-scale));\\n --size-7: calc(7px / var(--nextjs-dev-tools-scale));\\n --size-8: calc(8px / var(--nextjs-dev-tools-scale));\\n --size-9: calc(9px / var(--nextjs-dev-tools-scale));\\n --size-10: calc(10px / var(--nextjs-dev-tools-scale));\\n --size-11: calc(11px / var(--nextjs-dev-tools-scale));\\n --size-12: calc(12px / var(--nextjs-dev-tools-scale));\\n --size-13: calc(13px / var(--nextjs-dev-tools-scale));\\n --size-14: calc(14px / var(--nextjs-dev-tools-scale));\\n --size-15: calc(15px / var(--nextjs-dev-tools-scale));\\n --size-16: calc(16px / var(--nextjs-dev-tools-scale));\\n --size-17: calc(17px / var(--nextjs-dev-tools-scale));\\n --size-18: calc(18px / var(--nextjs-dev-tools-scale));\\n --size-20: calc(20px / var(--nextjs-dev-tools-scale));\\n --size-22: calc(22px / var(--nextjs-dev-tools-scale));\\n --size-24: calc(24px / var(--nextjs-dev-tools-scale));\\n --size-26: calc(26px / var(--nextjs-dev-tools-scale));\\n --size-28: calc(28px / var(--nextjs-dev-tools-scale));\\n --size-30: calc(30px / var(--nextjs-dev-tools-scale));\\n --size-32: calc(32px / var(--nextjs-dev-tools-scale));\\n --size-34: calc(34px / var(--nextjs-dev-tools-scale));\\n --size-36: calc(36px / var(--nextjs-dev-tools-scale));\\n --size-38: calc(38px / var(--nextjs-dev-tools-scale));\\n --size-40: calc(40px / var(--nextjs-dev-tools-scale));\\n --size-42: calc(42px / var(--nextjs-dev-tools-scale));\\n --size-44: calc(44px / var(--nextjs-dev-tools-scale));\\n --size-46: calc(46px / var(--nextjs-dev-tools-scale));\\n --size-48: calc(48px / var(--nextjs-dev-tools-scale));\\n\\n @media print {\\n display: none;\\n }\\n}\\n\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n margin-bottom: 8px;\\n font-weight: 500;\\n line-height: 1.5;\\n}\\n\\na {\\n color: var(--color-blue-900);\\n &:hover {\\n color: var(--color-blue-900);\\n }\\n &:focus-visible {\\n outline: var(--focus-ring);\\n }\\n}\\n\"],sourceRoot:\"\"}]);let l=i},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/api.js\":function(e){\"use strict\";e.exports=function(e){var t=[];return t.toString=function(){return this.map(function(t){var n=\"\",r=void 0!==t[5];return t[4]&&(n+=\"@supports (\".concat(t[4],\") {\")),t[2]&&(n+=\"@media \".concat(t[2],\" {\")),r&&(n+=\"@layer\".concat(t[5].length>0?\" \".concat(t[5]):\"\",\" {\")),n+=e(t),r&&(n+=\"}\"),t[2]&&(n+=\"}\"),t[4]&&(n+=\"}\"),n}).join(\"\")},t.i=function(e,n,r,o,a){\"string\"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var l=0;l0?\" \".concat(u[5]):\"\",\" {\").concat(u[1],\"}\")),u[5]=a),n&&(u[2]&&(u[1]=\"@media \".concat(u[2],\" {\").concat(u[1],\"}\")),u[2]=n),o&&(u[4]?(u[1]=\"@supports (\".concat(u[4],\") {\").concat(u[1],\"}\"),u[4]=o):u[4]=\"\".concat(o)),t.push(u))}},t}},\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/runtime/sourceMaps.js\":function(e){\"use strict\";e.exports=function(e){var t=e[1],n=e[3];if(!n)return t;if(\"function\"==typeof btoa){var r=btoa(unescape(encodeURIComponent(JSON.stringify(n))));return[t].concat([\"/*# \".concat(\"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(r),\" */\")]).join(\"\\n\")}return[t].join(\"\\n\")}},\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\":function(e){\"use strict\";var t=[];function n(e){for(var n=-1,r=0;r0?\" \".concat(n.layer):\"\",\" {\")),r+=n.css,o&&(r+=\"}\"),n.media&&(r+=\"}\"),n.supports&&(r+=\"}\"),(a=n.sourceMap)&&\"undefined\"!=typeof btoa&&(r+=\"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))),\" */\")),e.styleTagTransform(r,t,e.options)},remove:function(){!function(e){if(null!==e.parentNode)e.parentNode.removeChild(e)}(t)}}}},\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleTagTransform.js\":function(e){\"use strict\";e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}},\"./dist/compiled/anser/index.js\":function(e){(()=>{\"use strict\";var t={211:e=>{var t=function(){function e(e,t){for(var n=0;n]/gm,function(e){return\"&\"==e?\"&\":\"<\"==e?\"<\":\">\"==e?\">\":\"\"})}},{key:\"linkify\",value:function(e){return e.replace(/(https?:\\/\\/[^\\s]+)/gm,function(e){return''+e+\"\"})}},{key:\"ansiToHtml\",value:function(e,t){return this.process(e,t,!0)}},{key:\"ansiToJson\",value:function(e,t){return(t=t||{}).json=!0,t.clearLine=!1,this.process(e,t,!0)}},{key:\"ansiToText\",value:function(e){return this.process(e,{},!1)}},{key:\"process\",value:function(e,t,n){var r=this,o=e.split(/\\033\\[/),a=o.shift();null==t&&(t={}),t.clearLine=/\\r/.test(e);var i=o.map(function(e){return r.processChunk(e,t,n)});if(t&&t.json){var l=this.processChunkJson(\"\");return l.content=a,l.clearLine=t.clearLine,i.unshift(l),t.remove_empty&&(i=i.filter(function(e){return!e.isEmpty()})),i}return i.unshift(a),i.join(\"\")}},{key:\"processChunkJson\",value:function(e,t,r){var o=(t=void 0===t?{}:t).use_classes=void 0!==t.use_classes&&t.use_classes,a=t.key=o?\"class\":\"color\",i={content:e,fg:null,bg:null,fg_truecolor:null,bg_truecolor:null,clearLine:t.clearLine,decoration:null,was_processed:!1,isEmpty:function(){return!i.content}},l=e.match(/^([!\\x3c-\\x3f]*)([\\d;]*)([\\x20-\\x2c]*[\\x40-\\x7e])([\\s\\S]*)/m);if(!l)return i;i.content=l[4];var s=l[2].split(\";\");if(\"\"!==l[1]||\"m\"!==l[3]||!r)return i;for(this.decoration=null;s.length>0;){var c=parseInt(s.shift());if(isNaN(c)||0===c)this.fg=this.bg=this.decoration=null;else if(1===c)this.decoration=\"bold\";else if(2===c)this.decoration=\"dim\";else if(3==c)this.decoration=\"italic\";else if(4==c)this.decoration=\"underline\";else if(5==c)this.decoration=\"blink\";else if(7===c)this.decoration=\"reverse\";else if(8===c)this.decoration=\"hidden\";else if(9===c)this.decoration=\"strikethrough\";else if(39==c)this.fg=null;else if(49==c)this.bg=null;else if(c>=30&&c<38)this.fg=n[0][c%10][a];else if(c>=90&&c<98)this.fg=n[1][c%10][a];else if(c>=40&&c<48)this.bg=n[0][c%10][a];else if(c>=100&&c<108)this.bg=n[1][c%10][a];else if(38===c||48===c){var u=38===c;if(s.length>=1){var d=s.shift();if(\"5\"===d&&s.length>=1){var f=parseInt(s.shift());if(f>=0&&f<=255)if(o){var p=f>=16?\"ansi-palette-\"+f:n[+(f>7)][f%8].class;u?this.fg=p:this.bg=p}else this.PALETTE_COLORS||this.setupPalette(),u?this.fg=this.PALETTE_COLORS[f]:this.bg=this.PALETTE_COLORS[f]}else if(\"2\"===d&&s.length>=3){var h=parseInt(s.shift()),m=parseInt(s.shift()),g=parseInt(s.shift());if(h>=0&&h<=255&&m>=0&&m<=255&&g>=0&&g<=255){var y=h+\", \"+m+\", \"+g;o?u?(this.fg=\"ansi-truecolor\",this.fg_truecolor=y):(this.bg=\"ansi-truecolor\",this.bg_truecolor=y):u?this.fg=y:this.bg=y}}}}}return null===this.fg&&null===this.bg&&null===this.decoration||(i.fg=this.fg,i.bg=this.bg,i.fg_truecolor=this.fg_truecolor,i.bg_truecolor=this.bg_truecolor,i.decoration=this.decoration,i.was_processed=!0),i}},{key:\"processChunk\",value:function(e,t,n){var r=this;t=t||{};var o=this.processChunkJson(e,t,n);if(t.json)return o;if(o.isEmpty())return\"\";if(!o.was_processed)return o.content;var a=t.use_classes,i=[],l=[],s={},c=function(e){var t=[],n=void 0;for(n in e)e.hasOwnProperty(n)&&t.push(\"data-\"+n+'=\"'+r.escapeForHtml(e[n])+'\"');return t.length>0?\" \"+t.join(\" \"):\"\"};return(o.fg&&(a?(l.push(o.fg+\"-fg\"),null!==o.fg_truecolor&&(s[\"ansi-truecolor-fg\"]=o.fg_truecolor,o.fg_truecolor=null)):i.push(\"color:rgb(\"+o.fg+\")\")),o.bg&&(a?(l.push(o.bg+\"-bg\"),null!==o.bg_truecolor&&(s[\"ansi-truecolor-bg\"]=o.bg_truecolor,o.bg_truecolor=null)):i.push(\"background-color:rgb(\"+o.bg+\")\")),o.decoration&&(a?l.push(\"ansi-\"+o.decoration):\"bold\"===o.decoration?i.push(\"font-weight:bold\"):\"dim\"===o.decoration?i.push(\"opacity:0.5\"):\"italic\"===o.decoration?i.push(\"font-style:italic\"):\"reverse\"===o.decoration?i.push(\"filter:invert(100%)\"):\"hidden\"===o.decoration?i.push(\"visibility:hidden\"):\"strikethrough\"===o.decoration?i.push(\"text-decoration:line-through\"):i.push(\"text-decoration:\"+o.decoration)),a)?'\"+o.content+\"\":'\"+o.content+\"\"}}]),e}()}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e](a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(211)})()},\"./dist/compiled/react-dom/cjs/react-dom-client.production.js\":function(e,t,n){\"use strict\";var r,o=n(\"./dist/compiled/scheduler/index.js\"),a=n(\"./dist/compiled/react/index.js\"),i=n(\"./dist/compiled/react-dom/index.js\");function l(e){var t=\"https://react.dev/errors/\"+e;if(1L||(e.current=D[L],D[L]=null,L--)}function M(e,t){D[++L]=e.current,e.current=t}var Z=N(null),U=N(null),F=N(null),q=N(null);function H(e,t){switch(M(F,t),M(U,e),M(Z,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?ch(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=cm(t=ch(t),e);else switch(e){case\"svg\":e=1;break;case\"math\":e=2;break;default:e=0}}R(Z),M(Z,e)}function V(){R(Z),R(U),R(F)}function $(e){null!==e.memoizedState&&M(q,e);var t=Z.current,n=cm(t,e.type);t!==n&&(M(U,e),M(Z,n))}function W(e){U.current===e&&(R(Z),R(U)),q.current===e&&(R(q),c9._currentValue=T)}function Y(e){if(void 0===tL)try{throw Error()}catch(e){var t=e.stack.trim().match(/\\n( *(at )?)/);tL=t&&t[1]||\"\",tN=-1)\":-1o||s[r]!==c[o]){var u=\"\\n\"+s[r].replace(\" at new \",\" at \");return e.displayName&&u.includes(\"\")&&(u=u.replace(\"\",e.displayName)),u}while(1<=r&&0<=o);break}}}finally{K=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:\"\")?Y(n):\"\"}function G(e){try{var t=\"\",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return Y(e.type);case 16:return Y(\"Lazy\");case 13:return e.child!==t&&null!==t?Y(\"Suspense Fallback\"):Y(\"Suspense\");case 19:return Y(\"SuspenseList\");case 0:case 15:return X(e.type,!1);case 11:return X(e.type.render,!1);case 1:return X(e.type,!0);case 31:return Y(\"Activity\");default:return\"\"}}(e,n),n=e,e=e.return;while(e);return t}catch(e){return\"\\nError generating stack: \"+e.message+\"\\n\"+e.stack}}var Q=Object.prototype.hasOwnProperty,J=o.unstable_scheduleCallback,ee=o.unstable_cancelCallback,et=o.unstable_shouldYield,en=o.unstable_requestPaint,er=o.unstable_now,eo=o.unstable_getCurrentPriorityLevel,ea=o.unstable_ImmediatePriority,ei=o.unstable_UserBlockingPriority,el=o.unstable_NormalPriority,es=o.unstable_LowPriority,ec=o.unstable_IdlePriority,eu=o.log,ed=o.unstable_setDisableYieldValue,ef=null,ep=null;function eh(e){if(\"function\"==typeof eu&&ed(e),ep&&\"function\"==typeof ep.setStrictMode)try{ep.setStrictMode(ef,e)}catch(e){}}var em=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(eg(e)/ey|0)|0},eg=Math.log,ey=Math.LN2,ev=256,eb=4194304;function eA(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ex(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var o=0,a=e.suspendedLanes,i=e.pingedLanes;e=e.warmLanes;var l=0x7ffffff&r;return 0!==l?0!=(r=l&~a)?o=eA(r):0!=(i&=l)?o=eA(i):n||0!=(n=l&~e)&&(o=eA(n)):0!=(l=r&~a)?o=eA(l):0!==i?o=eA(i):n||0!=(n=r&~e)&&(o=eA(n)),0===o?0:0!==t&&t!==o&&0==(t&a)&&((a=o&-o)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:o}function ew(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function eC(){var e=ev;return 0==(4194048&(ev<<=1))&&(ev=256),e}function e_(){var e=eb;return 0==(0x3c00000&(eb<<=1))&&(eb=4194304),e}function ek(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function eE(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ej(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-em(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&n}function eS(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-em(n),o=1<=nt),no=!1;function na(e,t){switch(e){case\"keyup\":return -1!==t7.indexOf(t.keyCode);case\"keydown\":return 229!==t.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function ni(e){return\"object\"==typeof(e=e.detail)&&\"data\"in e?e.data:null}var nl=!1,ns={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function nc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return\"input\"===t?!!ns[e.type]:\"textarea\"===t}function nu(e,t,n,r){tb?tA?tA.push(r):tA=[r]:tb=r,0<(t=ct(t,\"onChange\")).length&&(n=new tF(\"onChange\",\"change\",null,n,r),e.push({event:n,listeners:t}))}var nd=null,nf=null;function np(e){s4(e,0)}function nh(e){if(e8(e$(e)))return e}function nm(e,t){if(\"change\"===e)return t}var ng=!1;if(tk){if(tk){var ny=\"oninput\"in document;if(!ny){var nv=document.createElement(\"div\");nv.setAttribute(\"oninput\",\"return;\"),ny=\"function\"==typeof nv.oninput}r=ny}else r=!1;ng=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=nj(r)}}function nO(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n=\"string\"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nB(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(\"input\"===t&&(\"text\"===e.type||\"search\"===e.type||\"tel\"===e.type||\"url\"===e.type||\"password\"===e.type)||\"textarea\"===t||\"true\"===e.contentEditable)}var nP=tk&&\"documentMode\"in document&&11>=document.documentMode,nI=null,nz=null,nT=null,nD=!1;function nL(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nD||null==nI||nI!==e7(r)||(r=\"selectionStart\"in(r=nI)&&nB(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nT&&nE(nT,r)||(nT=r,0<(r=ct(nz,\"onSelect\")).length&&(t=new tF(\"onSelect\",\"select\",null,t,n),e.push({event:t,listeners:r}),t.target=nI)))}function nN(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var nR={animationend:nN(\"Animation\",\"AnimationEnd\"),animationiteration:nN(\"Animation\",\"AnimationIteration\"),animationstart:nN(\"Animation\",\"AnimationStart\"),transitionrun:nN(\"Transition\",\"TransitionRun\"),transitionstart:nN(\"Transition\",\"TransitionStart\"),transitioncancel:nN(\"Transition\",\"TransitionCancel\"),transitionend:nN(\"Transition\",\"TransitionEnd\")},nM={},nZ={};function nU(e){if(nM[e])return nM[e];if(!nR[e])return e;var t,n=nR[e];for(t in n)if(n.hasOwnProperty(t)&&t in nZ)return nM[e]=n[t];return e}tk&&(nZ=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete nR.animationend.animation,delete nR.animationiteration.animation,delete nR.animationstart.animation),\"TransitionEvent\"in window||delete nR.transitionend.transition);var nF=nU(\"animationend\"),nq=nU(\"animationiteration\"),nH=nU(\"animationstart\"),nV=nU(\"transitionrun\"),n$=nU(\"transitionstart\"),nW=nU(\"transitioncancel\"),nY=nU(\"transitionend\"),nK=new Map,nX=\"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function nG(e,t){nK.set(e,t),eG(t,[e])}nX.push(\"scrollEnd\");var nQ=\"function\"==typeof reportError?reportError:function(e){if(\"object\"==typeof window&&\"function\"==typeof window.ErrorEvent){var t=new window.ErrorEvent(\"error\",{bubbles:!0,cancelable:!0,message:\"object\"==typeof e&&null!==e&&\"string\"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(\"object\"==typeof process&&\"function\"==typeof process.emit)return void process.emit(\"uncaughtException\",e);console.error(e)},nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=i,o-=i,rv=1<<32-em(t)+o|n<h?(m=d,d=null):m=d.sibling;var g=p(o,d,l[h],s);if(null===g){null===d&&(d=m);break}e&&d&&null===g.alternate&&t(o,d),i=a(g,i,h),null===u?c=g:u.sibling=g,u=g,d=m}if(h===l.length)return n(o,d),rj&&rA(o,h),c;if(null===d){for(;hm?(g=h,h=null):g=h.sibling;var b=p(o,h,v.value,c);if(null===b){null===h&&(h=g);break}e&&h&&null===b.alternate&&t(o,h),i=a(b,i,m),null===d?u=b:d.sibling=b,d=b,h=g}if(v.done)return n(o,h),rj&&rA(o,m),u;if(null===h){for(;!v.done;m++,v=s.next())null!==(v=f(o,v.value,c))&&(i=a(v,i,m),null===d?u=v:d.sibling=v,d=v);return rj&&rA(o,m),u}for(h=r(h);!v.done;m++,v=s.next())null!==(v=y(h,o,m,v.value,c))&&(e&&null!==v.alternate&&h.delete(null===v.key?m:v.key),i=a(v,i,m),null===d?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(o,e)}),rj&&rA(o,m),u}(c,u,d=b.call(d),v)}if(\"function\"==typeof d.then)return s(c,u,om(d),v);if(d.$$typeof===A)return s(c,u,rK(c,d),v);oy(c,d)}return\"string\"==typeof d&&\"\"!==d||\"number\"==typeof d||\"bigint\"==typeof d?(d=\"\"+d,null!==u&&6===u.tag?(n(c,u.sibling),(v=o(u,d)).return=c):(n(c,u),(v=ri(d,c.mode,v)).return=c),i(c=v)):n(c,u)}(s,c,u,d);return op=null,v}catch(e){if(e===or||e===oa)throw e;var b=re(29,e,null,s.mode);return b.lanes=d,b.return=s,b}finally{}}}var ob=ov(!0),oA=ov(!1),ox=!1;function ow(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function oC(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function o_(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function ok(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&lD)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,t=n9(e),n6(e,null,n),t}return n4(e,r,t,n),n9(e)}function oE(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!=(4194048&n))){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,eS(e,n)}}function oj(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,a=null;if(null!==(n=n.firstBaseUpdate)){do{var i={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};null===a?o=a=i:a=a.next=i,n=n.next}while(null!==n);null===a?o=a=t:a=a.next=t}else o=a=t;n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var oS=!1;function oO(){if(oS){var e=r6;if(null!==e)throw e}}function oB(e,t,n,r){oS=!1;var o=e.updateQueue;ox=!1;var a=o.firstBaseUpdate,i=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,c=s.next;s.next=null,null===i?a=c:i.next=c,i=s;var u=e.alternate;null!==u&&(l=(u=u.updateQueue).lastBaseUpdate)!==i&&(null===l?u.firstBaseUpdate=c:l.next=c,u.lastBaseUpdate=s)}if(null!==a){var d=o.baseState;for(i=0,u=c=s=null,l=a;;){var p=-0x20000001&l.lane,h=p!==l.lane;if(h?(lR&p)===p:(r&p)===p){0!==p&&p===r3&&(oS=!0),null!==u&&(u=u.next={lane:0,tag:l.tag,payload:l.payload,callback:null,next:null});e:{var m=e,g=l;switch(p=t,g.tag){case 1:if(\"function\"==typeof(m=g.payload)){d=m.call(n,d,p);break e}d=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(p=\"function\"==typeof(m=g.payload)?m.call(n,d,p):m))break e;d=f({},d,p);break e;case 2:ox=!0}}null!==(p=l.callback)&&(e.flags|=64,h&&(e.flags|=8192),null===(h=o.callbacks)?o.callbacks=[p]:h.push(p))}else h={lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===u?(c=u=h,s=d):u=u.next=h,i|=p;if(null===(l=l.next))if(null===(l=o.shared.pending))break;else l=(h=l).next,h.next=null,o.lastBaseUpdate=h,o.shared.pending=null}null===u&&(s=d),o.baseState=s,o.firstBaseUpdate=c,o.lastBaseUpdate=u,null===a&&(o.shared.lanes=0),l$|=i,e.lanes=i,e.memoizedState=d}}function oP(e,t){if(\"function\"!=typeof e)throw Error(l(191,e));e.call(t)}function oI(e,t){var n=e.callbacks;if(null!==n)for(e.callbacks=null,e=0;ea?a:8;var i=I.T,l={};I.T=l,a6(e,!1,t,n);try{var s=o(),c=I.S;if(null!==c&&c(l,s),null!==s&&\"object\"==typeof s&&\"function\"==typeof s.then){var u,d,f=(u=[],d={status:\"pending\",value:null,reason:null,then:function(e){u.push(e)}},s.then(function(){d.status=\"fulfilled\",d.value=r;for(var e=0;e title\"))),cu(a,r,n),a[eD]=e,eY(a),r=a;break e;case\"link\":var i=cJ(\"link\",\"href\",o).get(r+(n.href||\"\"));if(i){for(var s=0;s<\\/script>\",a=a.removeChild(a.firstChild);break;case\"select\":a=\"string\"==typeof r.is?i.createElement(\"select\",{is:r.is}):i.createElement(\"select\"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a=\"string\"==typeof r.is?i.createElement(o,{is:r.is}):i.createElement(o)}}a[eD]=t,a[eL]=r;e:for(i=t.child;null!==i;){if(5===i.tag||6===i.tag)a.appendChild(i.stateNode);else if(4!==i.tag&&27!==i.tag&&null!==i.child){i.child.return=i,i=i.child;continue}if(i===t)break;for(;null===i.sibling;){if(null===i.return||i.return===t)break e;i=i.return}i.sibling.return=i.return,i=i.sibling}switch(t.stateNode=a,cu(a,o,r),o){case\"button\":case\"input\":case\"select\":case\"textarea\":r=!!r.autoFocus;break;case\"img\":r=!0;break;default:r=!1}r&&iY(t)}}return iJ(t),iK(t,t.type,null===e?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&iY(t);else{if(\"string\"!=typeof r&&null===t.stateNode)throw Error(l(166));if(e=F.current,rT(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(o=rk))switch(o.tag){case 27:case 5:r=o.memoizedProps}e[eD]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||cl(e.nodeValue,n)))||rP(t,!0)}else(e=cp(e).createTextNode(r))[eD]=t,t.stateNode=e}return iJ(t),null;case 31:if(n=t.memoizedState,null===e||null!==e.memoizedState){if(r=rT(t),null!==n){if(null===e){if(!r)throw Error(l(318));if(!(e=null!==(e=t.memoizedState)?e.dehydrated:null))throw Error(l(557));e[eD]=t}else rD(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iJ(t),e=!1}else n=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e){if(256&t.flags)return oH(t),t;return oH(t),null}if(0!=(128&t.flags))throw Error(l(558))}return iJ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(o=rT(t),null!==r&&null!==r.dehydrated){if(null===e){if(!o)throw Error(l(318));if(!(o=null!==(o=t.memoizedState)?o.dehydrated:null))throw Error(l(317));o[eD]=t}else rD(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;iJ(t),o=!1}else o=rL(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=o),o=!0;if(!o){if(256&t.flags)return oH(t),t;return oH(t),null}}if(oH(t),0!=(128&t.flags))return t.lanes=n,t;return n=null!==r,e=null!==e&&null!==e.memoizedState,n&&(r=t.child,o=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(o=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==o&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),iG(t,t.updateQueue),iJ(t),null;case 4:return V(),null===e&&s9(t.stateNode.containerInfo),iJ(t),null;case 10:return rF(t.type),iJ(t),null;case 19:if(R(oV),null===(r=t.memoizedState))return iJ(t),null;if(o=0!=(128&t.flags),null===(a=r.rendering))if(o)iQ(r,!1);else{if(0!==lV||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=o$(e))){for(t.flags|=128,iQ(r,!1),t.updateQueue=e=a.updateQueue,iG(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return M(oV,1&oV.current|2),rj&&rA(t,r.treeForkCount),t.child}e=e.sibling}null!==r.tail&&er()>l1&&(t.flags|=128,o=!0,iQ(r,!1),t.lanes=4194304)}else{if(!o)if(null!==(e=o$(a))){if(t.flags|=128,o=!0,t.updateQueue=e=e.updateQueue,iG(t,e),iQ(r,!0),null===r.tail&&\"hidden\"===r.tailMode&&!a.alternate&&!rj)return iJ(t),null}else 2*er()-r.renderingStartTime>l1&&0x20000000!==n&&(t.flags|=128,o=!0,iQ(r,!1),t.lanes=4194304);r.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=r.last)?e.sibling=a:t.child=a,r.last=a)}if(null!==r.tail)return e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=er(),e.sibling=null,n=oV.current,M(oV,o?1&n|2:1&n),rj&&rA(t,r.treeForkCount),e;return iJ(t),null;case 22:case 23:return oH(t),oN(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(iJ(t),6&t.subtreeFlags&&(t.flags|=8192)):iJ(t),null!==(n=t.updateQueue)&&iG(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&R(r7),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rF(r0),iJ(t),null;case 25:case 30:return null}throw Error(l(156,t.tag))}(t.alternate,t,lH);if(null!==n){lN=n;return}if(null!==(t=t.sibling)){lN=t;return}lN=t=e}while(null!==t);0===lV&&(lV=5)}function sw(e,t){do{var n=function(e,t){switch(rC(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rF(r0),V(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return W(t),null;case 31:if(null!==t.memoizedState){if(oH(t),null===t.alternate)throw Error(l(340));rD()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(oH(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(l(340));rD()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return R(oV),null;case 4:return V(),null;case 10:return rF(t.type),null;case 22:case 23:return oH(t),oN(),null!==e&&R(r7),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rF(r0),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lN=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lN=e;return}lN=e=n}while(null!==e);lV=6,lN=null}function sC(e,t,n,r,o,a,i,s,c){e.cancelPendingCommit=null;do sS();while(0!==l5);if(0!=(6&lD))throw Error(l(327));if(null!==t){if(t===e.current)throw Error(l(177));if(!function(e,t,n,r,o,a){var i=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var l=e.entanglements,s=e.expirationTimes,c=e.hiddenUpdates;for(n=i&~n;0g&&(i=g,g=m,m=i);var y=nS(l,m),v=nS(l,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=d.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),m>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(d=[],p=l;p=p.parentNode;)1===p.nodeType&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(\"function\"==typeof l.focus&&l.focus(),l=0;ln?32:n,I.T=null,n=l7,l7=null;var a=l3,i=l9;if(l5=0,l6=l3=null,l9=0,0!=(6&lD))throw Error(l(331));var s=lD;if(lD|=4,lP(a.current),l_(a,a.current,i,n),lD=s,sH(0,!1),ep&&\"function\"==typeof ep.onPostCommitFiberRoot)try{ep.onPostCommitFiberRoot(ef,a)}catch(e){}return!0}finally{z.p=o,I.T=r,sj(e,t)}}function sB(e,t,n){t=ru(n,t),t=ig(e.stateNode,t,2),null!==(e=ok(e,t,2))&&(eE(e,2),sq(e))}function sP(e,t,n){if(3===e.tag)sB(e,e,n);else for(;null!==t;){if(3===t.tag){sB(t,e,n);break}if(1===t.tag){var r=t.stateNode;if(\"function\"==typeof t.type.getDerivedStateFromError||\"function\"==typeof r.componentDidCatch&&(null===l4||!l4.has(r))){e=ru(n,e),null!==(r=ok(t,n=iy(2),2))&&(iv(n,r,t,e),eE(r,2),sq(r));break}}t=t.return}}function sI(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new lT;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(lq=!0,o.add(n),e=sz.bind(null,e,t,n),t.then(e,e))}function sz(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lL===e&&(lR&n)===n&&(4===lV||3===lV&&(0x3c00000&lR)===lR&&300>er()-l0?0==(2&lD)&&sd(e,0):lY|=n,lX===lR&&(lX=0)),sq(e)}function sT(e,t){0===t&&(t=e_()),null!==(e=n3(e,t))&&(eE(e,t),sq(e))}function sD(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),sT(e,n)}function sL(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(l(314))}null!==r&&r.delete(t),sT(e,n)}var sN=null,sR=null,sM=!1,sZ=!1,sU=!1,sF=0;function sq(e){e!==sR&&null===e.next&&(null===sR?sN=sR=e:sR=sR.next=e),sZ=!0,sM||(sM=!0,cx(function(){0!=(6&lD)?J(ea,sV):s$()}))}function sH(e,t){if(!sU&&sZ){sU=!0;do for(var n=!1,r=sN;null!==r;){if(!t)if(0!==e){var o=r.pendingLanes;if(0===o)var a=0;else{var i=r.suspendedLanes,l=r.pingedLanes;a=0xc000095&(a=(1<<31-em(42|e)+1)-1&(o&~(i&~l)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,sK(r,a))}else a=lR,0==(3&(a=ex(r,r===lL?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ew(r,a)||(n=!0,sK(r,a));r=r.next}while(n);sU=!1}}function sV(){s$()}function s$(){sZ=sM=!1;var e,t=0;0===sF||((e=window.event)&&\"popstate\"===e.type?e===cy||(cy=e,0):(cy=null,1))||(t=sF);for(var n=er(),r=null,o=sN;null!==o;){var a=o.next,i=sW(o,n);0===i?(o.next=null,null===r?sN=a:r.next=a,null===a&&(sR=r)):(r=o,(0!==t||0!=(3&i))&&(sZ=!0)),o=a}0!==l5&&5!==l5||sH(t,!1),0!==sF&&(sF=0)}function sW(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0 title\"):null)}function c1(e){return\"stylesheet\"!==e.type||0!=(3&e.state.loading)}var c2=null;function c4(){if(this.count--,0===this.count){if(this.stylesheets)c3(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var c5=null;function c3(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,c5=new Map,t.forEach(c6,e),c5=null,c4.call(e))}function c6(e,t){if(!(4&t.state.loading)){var n=c5.get(e);if(n)var r=n.get(null);else{n=new Map,c5.set(e,n);for(var o=e.querySelectorAll(\"link[data-precedence],style[data-precedence]\"),a=0;a>>1,o=e[r];if(0>>1;ra(s,n))ca(u,s)?(e[r]=u,e[c]=n,r=c):(e[r]=s,e[l]=n,r=l);else if(ca(u,n))e[r]=u,e[c]=n,r=c;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,\"object\"==typeof performance&&\"function\"==typeof performance.now){var i,l=performance;t.unstable_now=function(){return l.now()}}else{var s=Date,c=s.now();t.unstable_now=function(){return s.now()-c}}var u=[],d=[],f=1,p=null,h=3,m=!1,g=!1,y=!1,v=!1,b=\"function\"==typeof setTimeout?setTimeout:null,A=\"function\"==typeof clearTimeout?clearTimeout:null,x=\"undefined\"!=typeof setImmediate?setImmediate:null;function w(e){for(var t=r(d);null!==t;){if(null===t.callback)o(d);else if(t.startTime<=e)o(d),t.sortIndex=t.expirationTime,n(u,t);else break;t=r(d)}}function C(e){if(y=!1,w(e),!g)if(null!==r(u))g=!0,_||(_=!0,i());else{var t=r(d);null!==t&&I(C,t.startTime-e)}}var _=!1,k=-1,E=5,j=-1;function S(){return!!v||!(t.unstable_now()-je&&S());){var l=p.callback;if(\"function\"==typeof l){p.callback=null,h=p.priorityLevel;var s=l(p.expirationTime<=e);if(e=t.unstable_now(),\"function\"==typeof s){p.callback=s,w(e),n=!0;break t}p===r(u)&&o(u),w(e)}else o(u);p=r(u)}if(null!==p)n=!0;else{var c=r(d);null!==c&&I(C,c.startTime-e),n=!1}}break e}finally{p=null,h=a,m=!1}}}finally{n?i():_=!1}}}if(\"function\"==typeof x)i=function(){x(O)};else if(\"undefined\"!=typeof MessageChannel){var B=new MessageChannel,P=B.port2;B.port1.onmessage=O,i=function(){P.postMessage(null)}}else i=function(){b(O,0)};function I(e,n){k=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125l?(e.sortIndex=a,n(d,e),null===r(u)&&e===r(d)&&(y?(A(k),k=-1):y=!0,I(C,a-l))):(e.sortIndex=s,n(u,e),g||m||(g=!0,_||(_=!0,i()))),e},t.unstable_shouldYield=S,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},\"./dist/compiled/scheduler/index.js\":function(e,t,n){\"use strict\";e.exports=n(\"./dist/compiled/scheduler/cjs/scheduler.production.js\")},\"./dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\":function(e){(()=>{\"use strict\";\"undefined\"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab=\"//\");var t,n,r,o,a,i,l,s,c={};Object.defineProperty(c,\"__esModule\",{value:!0}),t=\"\",n=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|webpack-internal|rsc|about|turbopack||\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,r=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/,o=/^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|webpack-internal|rsc|about|turbopack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,a=/^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|webpack-internal|rsc|about|turbopack|resource|\\[native).*?|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i,i=/(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i,l=/^\\s*(?:([^@]*)(?:\\((.*?)\\))?@)?(\\S.*?):(\\d+)(?::(\\d+))?\\s*$/i,s=/^\\s*at (?:((?:\\[object object\\])?[^\\\\/]+(?: \\[as \\S+\\])?) )?\\(?(.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i,c.parse=function(e){return e.split(\"\\n\").reduce(function(e,c){var u,d,f,p,h,m,g=function(e){var o=n.exec(e);if(!o)return null;var a=o[2]&&0===o[2].indexOf(\"native\"),i=o[2]&&0===o[2].indexOf(\"eval\"),l=r.exec(o[2]);return i&&null!=l&&(o[2]=l[1],o[3]=l[2],o[4]=l[3]),{file:a?null:o[2],methodName:o[1]||t,arguments:a?[o[2]]:[],lineNumber:o[3]?+o[3]:null,column:o[4]?+o[4]:null}}(c)||(u=c,(d=o.exec(u))?{file:d[2],methodName:d[1]||t,arguments:[],lineNumber:+d[3],column:d[4]?+d[4]:null}:null)||function(e){var n=a.exec(e);if(!n)return null;var r=n[3]&&n[3].indexOf(\" > eval\")>-1,o=i.exec(n[3]);return r&&null!=o&&(n[3]=o[1],n[4]=o[2],n[5]=null),{file:n[3],methodName:n[1]||t,arguments:n[2]?n[2].split(\",\"):[],lineNumber:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}(c)||(f=c,(p=s.exec(f))?{file:p[2],methodName:p[1]||t,arguments:[],lineNumber:+p[3],column:p[4]?+p[4]:null}:null)||(h=c,(m=l.exec(h))?{file:m[3],methodName:m[1]||t,arguments:[],lineNumber:+m[4],column:m[5]?+m[5]:null}:null);return g&&e.push(g),e},[])},e.exports=c})()},\"./dist/compiled/strip-ansi/index.js\":function(e){(()=>{\"use strict\";var t={511:e=>{e.exports=({onlyFirst:e=!1}={})=>RegExp(\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))\",e?void 0:\"g\")},532:(e,t,n)=>{let r=n(511);e.exports=e=>\"string\"==typeof e?e.replace(r(),\"\"):e}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e](a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(532)})()},\"./src/build/webpack/loaders/devtool/devtool-style-inject.js\":function(e){function t(){let e=window._nextjsDevtoolsStyleCache;if(e.cachedShadowRoot)return e.cachedShadowRoot;let t=document.querySelector(\"nextjs-portal\"),n=t?.shadowRoot||null;return n&&(e.cachedShadowRoot=n),n}function n(e,t){let n=window._nextjsDevtoolsStyleCache;n.lastInsertedElement?n.lastInsertedElement.nextSibling?t.insertBefore(e,n.lastInsertedElement.nextSibling):t.appendChild(e):t.insertBefore(e,t.firstChild),n.lastInsertedElement=e}function r(){let e=window._nextjsDevtoolsStyleCache,r=t();r&&(e.pendingElements.forEach(e=>{n(e,r)}),e.pendingElements=[])}\"undefined\"!=typeof window&&(window._nextjsDevtoolsStyleCache=window._nextjsDevtoolsStyleCache||{pendingElements:[],isObserving:!1,lastInsertedElement:null,cachedShadowRoot:null}),e.exports=function(e){e.setAttribute(\"data-nextjs-dev-tool-style\",\"true\");let o=t();o?n(e,o):(window._nextjsDevtoolsStyleCache.pendingElements.push(e),function(){let e=window._nextjsDevtoolsStyleCache;if(e.isObserving)return;if(e.isObserving=!0,t())return r();let n=new MutationObserver(o=>{if(0===o.length||0===o[0].addedNodes.length)return;let a=o[0].addedNodes[0],i=null;if(\"SCRIPT\"===a.tagName&&a.getAttribute(\"data-nextjs-dev-overlay\")?i=a.firstChild:\"NEXTJS-PORTAL\"===a.tagName&&(i=a),!i)return;let l=()=>{t()?(r(),n.disconnect(),e.isObserving=!1):setTimeout(l,20)};l()});n.observe(document.body,{childList:!0,subtree:!0})}())}},\"./dist/compiled/zod/index.cjs\":function(e){(()=>{\"use strict\";var t={629:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)\"default\"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},i=this&&this.__exportStar||function(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,\"__esModule\",{value:!0}),t.z=void 0;let l=a(n(923));t.z=l,i(n(923),t),t.default=l},348:(e,t,n)=>{Object.defineProperty(t,\"__esModule\",{value:!0}),t.ZodError=t.quotelessJson=t.ZodIssueCode=void 0;let r=n(709);t.ZodIssueCode=r.util.arrayToEnum([\"invalid_type\",\"invalid_literal\",\"custom\",\"invalid_union\",\"invalid_union_discriminator\",\"invalid_enum_value\",\"unrecognized_keys\",\"invalid_arguments\",\"invalid_return_type\",\"invalid_date\",\"invalid_string\",\"too_small\",\"too_big\",\"invalid_intersection_types\",\"not_multiple_of\",\"not_finite\"]),t.quotelessJson=e=>JSON.stringify(e,null,2).replace(/\"([^\"]+)\":/g,\"$1:\");class o extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=\"ZodError\",this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let o of e.issues)if(\"invalid_union\"===o.code)o.unionErrors.map(r);else if(\"invalid_return_type\"===o.code)r(o.returnTypeError);else if(\"invalid_arguments\"===o.code)r(o.argumentsError);else if(0===o.path.length)n._errors.push(t(o));else{let e=n,r=0;for(;re.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}}t.ZodError=o,o.create=e=>new o(e)},61:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0}),t.defaultErrorMap=void 0,t.setErrorMap=function(e){a=e},t.getErrorMap=function(){return a};let o=r(n(871));t.defaultErrorMap=o.default;let a=o.default},923:function(e,t,n){var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||(\"get\"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,o)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__exportStar||function(e,t){for(var n in e)\"default\"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,\"__esModule\",{value:!0}),o(n(61),t),o(n(818),t),o(n(515),t),o(n(709),t),o(n(155),t),o(n(348),t)},538:(e,t)=>{var n,r;Object.defineProperty(t,\"__esModule\",{value:!0}),t.errorUtil=void 0,(r=n||(t.errorUtil=n={})).errToObj=e=>\"string\"==typeof e?{message:e}:e||{},r.toString=e=>\"string\"==typeof e?e:e?.message},818:function(e,t,n){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,\"__esModule\",{value:!0}),t.isAsync=t.isValid=t.isDirty=t.isAborted=t.OK=t.DIRTY=t.INVALID=t.ParseStatus=t.EMPTY_PATH=t.makeIssue=void 0,t.addIssueToContext=function(e,n){let r=(0,o.getErrorMap)(),i=(0,t.makeIssue)({issueData:n,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,r,r===a.default?void 0:a.default].filter(e=>!!e)});e.common.issues.push(i)};let o=n(61),a=r(n(871));t.makeIssue=e=>{let{data:t,path:n,errorMaps:r,issueData:o}=e,a=[...n,...o.path||[]],i={...o,path:a};if(void 0!==o.message)return{...o,path:a,message:o.message};let l=\"\";for(let e of r.filter(e=>!!e).slice().reverse())l=e(i,{data:t,defaultError:l}).message;return{...o,path:a,message:l}},t.EMPTY_PATH=[];class i{constructor(){this.value=\"valid\"}dirty(){\"valid\"===this.value&&(this.value=\"dirty\")}abort(){\"aborted\"!==this.value&&(this.value=\"aborted\")}static mergeArray(e,n){let r=[];for(let o of n){if(\"aborted\"===o.status)return t.INVALID;\"dirty\"===o.status&&e.dirty(),r.push(o.value)}return{status:e.value,value:r}}static async mergeObjectAsync(e,t){let n=[];for(let e of t){let t=await e.key,r=await e.value;n.push({key:t,value:r})}return i.mergeObjectSync(e,n)}static mergeObjectSync(e,n){let r={};for(let o of n){let{key:n,value:a}=o;if(\"aborted\"===n.status||\"aborted\"===a.status)return t.INVALID;\"dirty\"===n.status&&e.dirty(),\"dirty\"===a.status&&e.dirty(),\"__proto__\"!==n.value&&(void 0!==a.value||o.alwaysSet)&&(r[n.value]=a.value)}return{status:e.value,value:r}}}t.ParseStatus=i,t.INVALID=Object.freeze({status:\"aborted\"}),t.DIRTY=e=>({status:\"dirty\",value:e}),t.OK=e=>({status:\"valid\",value:e}),t.isAborted=e=>\"aborted\"===e.status,t.isDirty=e=>\"dirty\"===e.status,t.isValid=e=>\"valid\"===e.status,t.isAsync=e=>\"undefined\"!=typeof Promise&&e instanceof Promise},515:(e,t)=>{Object.defineProperty(t,\"__esModule\",{value:!0})},709:(e,t)=>{var n,r,o;Object.defineProperty(t,\"__esModule\",{value:!0}),t.getParsedType=t.ZodParsedType=t.objectUtil=t.util=void 0,(o=n||(t.util=n={})).assertEqual=e=>{},o.assertIs=function(e){},o.assertNever=function(e){throw Error()},o.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},o.getValidEnumValues=e=>{let t=o.objectKeys(e).filter(t=>\"number\"!=typeof e[e[t]]),n={};for(let r of t)n[r]=e[r];return o.objectValues(n)},o.objectValues=e=>o.objectKeys(e).map(function(t){return e[t]}),o.objectKeys=\"function\"==typeof Object.keys?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},o.find=(e,t)=>{for(let n of e)if(t(n))return n},o.isInteger=\"function\"==typeof Number.isInteger?e=>Number.isInteger(e):e=>\"number\"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e,o.joinValues=function(e,t=\" | \"){return e.map(e=>\"string\"==typeof e?`'${e}'`:e).join(t)},o.jsonStringifyReplacer=(e,t)=>\"bigint\"==typeof t?t.toString():t,(r||(t.objectUtil=r={})).mergeShapes=(e,t)=>({...e,...t}),t.ZodParsedType=n.arrayToEnum([\"string\",\"nan\",\"number\",\"integer\",\"float\",\"boolean\",\"date\",\"bigint\",\"symbol\",\"function\",\"undefined\",\"null\",\"array\",\"object\",\"unknown\",\"promise\",\"void\",\"never\",\"map\",\"set\"]),t.getParsedType=e=>{switch(typeof e){case\"undefined\":return t.ZodParsedType.undefined;case\"string\":return t.ZodParsedType.string;case\"number\":return Number.isNaN(e)?t.ZodParsedType.nan:t.ZodParsedType.number;case\"boolean\":return t.ZodParsedType.boolean;case\"function\":return t.ZodParsedType.function;case\"bigint\":return t.ZodParsedType.bigint;case\"symbol\":return t.ZodParsedType.symbol;case\"object\":if(Array.isArray(e))return t.ZodParsedType.array;if(null===e)return t.ZodParsedType.null;if(e.then&&\"function\"==typeof e.then&&e.catch&&\"function\"==typeof e.catch)return t.ZodParsedType.promise;if(\"undefined\"!=typeof Map&&e instanceof Map)return t.ZodParsedType.map;if(\"undefined\"!=typeof Set&&e instanceof Set)return t.ZodParsedType.set;if(\"undefined\"!=typeof Date&&e instanceof Date)return t.ZodParsedType.date;return t.ZodParsedType.object;default:return t.ZodParsedType.unknown}}},871:(e,t,n)=>{Object.defineProperty(t,\"__esModule\",{value:!0});let r=n(348),o=n(709);t.default=(e,t)=>{let n;switch(e.code){case r.ZodIssueCode.invalid_type:n=e.received===o.ZodParsedType.undefined?\"Required\":`Expected ${e.expected}, received ${e.received}`;break;case r.ZodIssueCode.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(e.expected,o.util.jsonStringifyReplacer)}`;break;case r.ZodIssueCode.unrecognized_keys:n=`Unrecognized key(s) in object: ${o.util.joinValues(e.keys,\", \")}`;break;case r.ZodIssueCode.invalid_union:n=\"Invalid input\";break;case r.ZodIssueCode.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${o.util.joinValues(e.options)}`;break;case r.ZodIssueCode.invalid_enum_value:n=`Invalid enum value. Expected ${o.util.joinValues(e.options)}, received '${e.received}'`;break;case r.ZodIssueCode.invalid_arguments:n=\"Invalid function arguments\";break;case r.ZodIssueCode.invalid_return_type:n=\"Invalid function return type\";break;case r.ZodIssueCode.invalid_date:n=\"Invalid date\";break;case r.ZodIssueCode.invalid_string:\"object\"==typeof e.validation?\"includes\"in e.validation?(n=`Invalid input: must include \"${e.validation.includes}\"`,\"number\"==typeof e.validation.position&&(n=`${n} at one or more positions greater than or equal to ${e.validation.position}`)):\"startsWith\"in e.validation?n=`Invalid input: must start with \"${e.validation.startsWith}\"`:\"endsWith\"in e.validation?n=`Invalid input: must end with \"${e.validation.endsWith}\"`:o.util.assertNever(e.validation):n=\"regex\"!==e.validation?`Invalid ${e.validation}`:\"Invalid\";break;case r.ZodIssueCode.too_small:n=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"more than\"} ${e.minimum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at least\":\"over\"} ${e.minimum} character(s)`:\"number\"===e.type||\"bigint\"===e.type?`Number must be ${e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \"}${e.minimum}`:\"date\"===e.type?`Date must be ${e.exact?\"exactly equal to \":e.inclusive?\"greater than or equal to \":\"greater than \"}${new Date(Number(e.minimum))}`:\"Invalid input\";break;case r.ZodIssueCode.too_big:n=\"array\"===e.type?`Array must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"less than\"} ${e.maximum} element(s)`:\"string\"===e.type?`String must contain ${e.exact?\"exactly\":e.inclusive?\"at most\":\"under\"} ${e.maximum} character(s)`:\"number\"===e.type?`Number must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} ${e.maximum}`:\"bigint\"===e.type?`BigInt must be ${e.exact?\"exactly\":e.inclusive?\"less than or equal to\":\"less than\"} ${e.maximum}`:\"date\"===e.type?`Date must be ${e.exact?\"exactly\":e.inclusive?\"smaller than or equal to\":\"smaller than\"} ${new Date(Number(e.maximum))}`:\"Invalid input\";break;case r.ZodIssueCode.custom:n=\"Invalid input\";break;case r.ZodIssueCode.invalid_intersection_types:n=\"Intersection results could not be merged\";break;case r.ZodIssueCode.not_multiple_of:n=`Number must be a multiple of ${e.multipleOf}`;break;case r.ZodIssueCode.not_finite:n=\"Number must be finite\";break;default:n=t.defaultError,o.util.assertNever(e)}return{message:n}}},155:(e,t,n)=>{var r,o;let a;Object.defineProperty(t,\"__esModule\",{value:!0}),t.discriminatedUnion=t.date=t.boolean=t.bigint=t.array=t.any=t.coerce=t.ZodFirstPartyTypeKind=t.late=t.ZodSchema=t.Schema=t.ZodReadonly=t.ZodPipeline=t.ZodBranded=t.BRAND=t.ZodNaN=t.ZodCatch=t.ZodDefault=t.ZodNullable=t.ZodOptional=t.ZodTransformer=t.ZodEffects=t.ZodPromise=t.ZodNativeEnum=t.ZodEnum=t.ZodLiteral=t.ZodLazy=t.ZodFunction=t.ZodSet=t.ZodMap=t.ZodRecord=t.ZodTuple=t.ZodIntersection=t.ZodDiscriminatedUnion=t.ZodUnion=t.ZodObject=t.ZodArray=t.ZodVoid=t.ZodNever=t.ZodUnknown=t.ZodAny=t.ZodNull=t.ZodUndefined=t.ZodSymbol=t.ZodDate=t.ZodBoolean=t.ZodBigInt=t.ZodNumber=t.ZodString=t.ZodType=void 0,t.NEVER=t.void=t.unknown=t.union=t.undefined=t.tuple=t.transformer=t.symbol=t.string=t.strictObject=t.set=t.record=t.promise=t.preprocess=t.pipeline=t.ostring=t.optional=t.onumber=t.oboolean=t.object=t.number=t.nullable=t.null=t.never=t.nativeEnum=t.nan=t.map=t.literal=t.lazy=t.intersection=t.instanceof=t.function=t.enum=t.effect=void 0,t.datetimeRegex=I,t.custom=ev;let i=n(348),l=n(61),s=n(538),c=n(818),u=n(709);class d{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}let f=(e,t)=>{if((0,c.isValid)(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(\"Validation failed but no issues detected.\");return{success:!1,get error(){if(this._error)return this._error;let t=new i.ZodError(e.common.issues);return this._error=t,this._error}}};function p(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:o}=e;if(t&&(n||r))throw Error('Can\\'t use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.');return t?{errorMap:t,description:o}:{errorMap:(t,o)=>{let{message:a}=e;return\"invalid_enum_value\"===t.code?{message:a??o.defaultError}:void 0===o.data?{message:a??r??o.defaultError}:\"invalid_type\"!==t.code?{message:o.defaultError}:{message:a??n??o.defaultError}},description:o}}class h{get description(){return this._def.description}_getType(e){return(0,u.getParsedType)(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:(0,u.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new c.ParseStatus,ctx:{common:e.parent.common,data:e.data,parsedType:(0,u.getParsedType)(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if((0,c.isAsync)(t))throw Error(\"Synchronous parse encountered promise.\");return t}_parseAsync(e){return Promise.resolve(this._parse(e))}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)},r=this._parseSync({data:e,path:n.path,parent:n});return f(n,r)}\"~validate\"(e){let t={common:{issues:[],async:!!this[\"~standard\"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)};if(!this[\"~standard\"].async)try{let n=this._parseSync({data:e,path:[],parent:t});return(0,c.isValid)(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(\"encountered\")&&(this[\"~standard\"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>(0,c.isValid)(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:(0,u.getParsedType)(e)},r=this._parse({data:e,path:n.path,parent:n});return f(n,await ((0,c.isAsync)(r)?r:Promise.resolve(r)))}refine(e,t){return this._refinement((n,r)=>{let o=e(n),a=()=>r.addIssue({code:i.ZodIssueCode.custom,...\"string\"==typeof t||void 0===t?{message:t}:\"function\"==typeof t?t(n):t});return\"undefined\"!=typeof Promise&&o instanceof Promise?o.then(e=>!!e||(a(),!1)):!!o||(a(),!1)})}refinement(e,t){return this._refinement((n,r)=>!!e(n)||(r.addIssue(\"function\"==typeof t?t(n,r):t),!1))}_refinement(e){return new es({schema:this,typeName:r.ZodEffects,effect:{type:\"refinement\",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[\"~standard\"]={version:1,vendor:\"zod\",validate:e=>this[\"~validate\"](e)}}optional(){return ec.create(this,this._def)}nullable(){return eu.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return V.create(this)}promise(){return el.create(this,this._def)}or(e){return W.create([this,e],this._def)}and(e){return X.create(this,e,this._def)}transform(e){return new es({...p(this._def),schema:this,typeName:r.ZodEffects,effect:{type:\"transform\",transform:e}})}default(e){return new ed({...p(this._def),innerType:this,defaultValue:\"function\"==typeof e?e:()=>e,typeName:r.ZodDefault})}brand(){return new eh({typeName:r.ZodBranded,type:this,...p(this._def)})}catch(e){return new ef({...p(this._def),innerType:this,catchValue:\"function\"==typeof e?e:()=>e,typeName:r.ZodCatch})}describe(e){return new this.constructor({...this._def,description:e})}pipe(e){return em.create(this,e)}readonly(){return eg.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}t.ZodType=h,t.Schema=h,t.ZodSchema=h;let m=/^c[^\\s-]{8,}$/i,g=/^[0-9a-z]+$/,y=/^[0-9A-HJKMNP-TV-Z]{26}$/i,v=/^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i,b=/^[a-z0-9_-]{21}$/i,A=/^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,x=/^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/,w=/^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i,C=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,_=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,k=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,E=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,j=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,S=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,O=\"((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))\",B=RegExp(`^${O}$`);function P(e){let t=\"[0-5]\\\\d\";e.precision?t=`${t}\\\\.\\\\d{${e.precision}}`:null==e.precision&&(t=`${t}(\\\\.\\\\d+)?`);let n=e.precision?\"+\":\"?\";return`([01]\\\\d|2[0-3]):[0-5]\\\\d(:${t})${n}`}function I(e){let t=`${O}T${P(e)}`,n=[];return n.push(e.local?\"Z?\":\"Z\"),e.offset&&n.push(\"([+-]\\\\d{2}:?\\\\d{2})\"),t=`${t}(${n.join(\"|\")})`,RegExp(`^${t}$`)}class z extends h{_parse(e){var t,n,r,o;let l;if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==u.ZodParsedType.string){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.string,received:t.parsedType}),c.INVALID}let s=new c.ParseStatus;for(let d of this._def.checks)if(\"min\"===d.kind)e.data.lengthd.value&&(l=this._getOrReturnCtx(e,l),(0,c.addIssueToContext)(l,{code:i.ZodIssueCode.too_big,maximum:d.value,type:\"string\",inclusive:!0,exact:!1,message:d.message}),s.dirty());else if(\"length\"===d.kind){let t=e.data.length>d.value,n=e.data.lengthe.test(t),{validation:t,code:i.ZodIssueCode.invalid_string,...s.errorUtil.errToObj(n)})}_addCheck(e){return new z({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:\"email\",...s.errorUtil.errToObj(e)})}url(e){return this._addCheck({kind:\"url\",...s.errorUtil.errToObj(e)})}emoji(e){return this._addCheck({kind:\"emoji\",...s.errorUtil.errToObj(e)})}uuid(e){return this._addCheck({kind:\"uuid\",...s.errorUtil.errToObj(e)})}nanoid(e){return this._addCheck({kind:\"nanoid\",...s.errorUtil.errToObj(e)})}cuid(e){return this._addCheck({kind:\"cuid\",...s.errorUtil.errToObj(e)})}cuid2(e){return this._addCheck({kind:\"cuid2\",...s.errorUtil.errToObj(e)})}ulid(e){return this._addCheck({kind:\"ulid\",...s.errorUtil.errToObj(e)})}base64(e){return this._addCheck({kind:\"base64\",...s.errorUtil.errToObj(e)})}base64url(e){return this._addCheck({kind:\"base64url\",...s.errorUtil.errToObj(e)})}jwt(e){return this._addCheck({kind:\"jwt\",...s.errorUtil.errToObj(e)})}ip(e){return this._addCheck({kind:\"ip\",...s.errorUtil.errToObj(e)})}cidr(e){return this._addCheck({kind:\"cidr\",...s.errorUtil.errToObj(e)})}datetime(e){return\"string\"==typeof e?this._addCheck({kind:\"datetime\",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:\"datetime\",precision:void 0===e?.precision?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...s.errorUtil.errToObj(e?.message)})}date(e){return this._addCheck({kind:\"date\",message:e})}time(e){return\"string\"==typeof e?this._addCheck({kind:\"time\",precision:null,message:e}):this._addCheck({kind:\"time\",precision:void 0===e?.precision?null:e?.precision,...s.errorUtil.errToObj(e?.message)})}duration(e){return this._addCheck({kind:\"duration\",...s.errorUtil.errToObj(e)})}regex(e,t){return this._addCheck({kind:\"regex\",regex:e,...s.errorUtil.errToObj(t)})}includes(e,t){return this._addCheck({kind:\"includes\",value:e,position:t?.position,...s.errorUtil.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:\"startsWith\",value:e,...s.errorUtil.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:\"endsWith\",value:e,...s.errorUtil.errToObj(t)})}min(e,t){return this._addCheck({kind:\"min\",value:e,...s.errorUtil.errToObj(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e,...s.errorUtil.errToObj(t)})}length(e,t){return this._addCheck({kind:\"length\",value:e,...s.errorUtil.errToObj(t)})}nonempty(e){return this.min(1,s.errorUtil.errToObj(e))}trim(){return new z({...this._def,checks:[...this._def.checks,{kind:\"trim\"}]})}toLowerCase(){return new z({...this._def,checks:[...this._def.checks,{kind:\"toLowerCase\"}]})}toUpperCase(){return new z({...this._def,checks:[...this._def.checks,{kind:\"toUpperCase\"}]})}get isDatetime(){return!!this._def.checks.find(e=>\"datetime\"===e.kind)}get isDate(){return!!this._def.checks.find(e=>\"date\"===e.kind)}get isTime(){return!!this._def.checks.find(e=>\"time\"===e.kind)}get isDuration(){return!!this._def.checks.find(e=>\"duration\"===e.kind)}get isEmail(){return!!this._def.checks.find(e=>\"email\"===e.kind)}get isURL(){return!!this._def.checks.find(e=>\"url\"===e.kind)}get isEmoji(){return!!this._def.checks.find(e=>\"emoji\"===e.kind)}get isUUID(){return!!this._def.checks.find(e=>\"uuid\"===e.kind)}get isNANOID(){return!!this._def.checks.find(e=>\"nanoid\"===e.kind)}get isCUID(){return!!this._def.checks.find(e=>\"cuid\"===e.kind)}get isCUID2(){return!!this._def.checks.find(e=>\"cuid2\"===e.kind)}get isULID(){return!!this._def.checks.find(e=>\"ulid\"===e.kind)}get isIP(){return!!this._def.checks.find(e=>\"ip\"===e.kind)}get isCIDR(){return!!this._def.checks.find(e=>\"cidr\"===e.kind)}get isBase64(){return!!this._def.checks.find(e=>\"base64\"===e.kind)}get isBase64url(){return!!this._def.checks.find(e=>\"base64url\"===e.kind)}get minLength(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew z({checks:[],typeName:r.ZodString,coerce:e?.coerce??!1,...p(e)});class T extends h{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){let t;if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==u.ZodParsedType.number){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.number,received:t.parsedType}),c.INVALID}let n=new c.ParseStatus;for(let r of this._def.checks)\"int\"===r.kind?u.util.isInteger(e.data)||(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:\"integer\",received:\"float\",message:r.message}),n.dirty()):\"min\"===r.kind?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:r.value,type:\"number\",inclusive:r.inclusive,exact:!1,message:r.message}),n.dirty()):\"multipleOf\"===r.kind?0!==function(e,t){let n=(e.toString().split(\".\")[1]||\"\").length,r=(t.toString().split(\".\")[1]||\"\").length,o=n>r?n:r;return Number.parseInt(e.toFixed(o).replace(\".\",\"\"))%Number.parseInt(t.toFixed(o).replace(\".\",\"\"))/10**o}(e.data,r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):\"finite\"===r.kind?Number.isFinite(e.data)||(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_finite,message:r.message}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:e.data}}gte(e,t){return this.setLimit(\"min\",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new T({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new T({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:\"int\",message:s.errorUtil.toString(e)})}positive(e){return this._addCheck({kind:\"min\",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:0,inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:0,inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:s.errorUtil.toString(t)})}finite(e){return this._addCheck({kind:\"finite\",message:s.errorUtil.toString(e)})}safe(e){return this._addCheck({kind:\"min\",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:s.errorUtil.toString(e)})._addCheck({kind:\"max\",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:s.errorUtil.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.value\"int\"===e.kind||\"multipleOf\"===e.kind&&u.util.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(\"finite\"===n.kind||\"int\"===n.kind||\"multipleOf\"===n.kind)return!0;else\"min\"===n.kind?(null===t||n.value>t)&&(t=n.value):\"max\"===n.kind&&(null===e||n.valuenew T({checks:[],typeName:r.ZodNumber,coerce:e?.coerce||!1,...p(e)});class D extends h{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){let t;if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==u.ZodParsedType.bigint)return this._getInvalidInput(e);let n=new c.ParseStatus;for(let r of this._def.checks)\"min\"===r.kind?(r.inclusive?e.datar.value:e.data>=r.value)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,type:\"bigint\",maximum:r.value,inclusive:r.inclusive,message:r.message}),n.dirty()):\"multipleOf\"===r.kind?e.data%r.value!==BigInt(0)&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.not_multiple_of,multipleOf:r.value,message:r.message}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.bigint,received:t.parsedType}),c.INVALID}gte(e,t){return this.setLimit(\"min\",e,!0,s.errorUtil.toString(t))}gt(e,t){return this.setLimit(\"min\",e,!1,s.errorUtil.toString(t))}lte(e,t){return this.setLimit(\"max\",e,!0,s.errorUtil.toString(t))}lt(e,t){return this.setLimit(\"max\",e,!1,s.errorUtil.toString(t))}setLimit(e,t,n,r){return new D({...this._def,checks:[...this._def.checks,{kind:e,value:t,inclusive:n,message:s.errorUtil.toString(r)}]})}_addCheck(e){return new D({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}negative(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!1,message:s.errorUtil.toString(e)})}nonpositive(e){return this._addCheck({kind:\"max\",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}nonnegative(e){return this._addCheck({kind:\"min\",value:BigInt(0),inclusive:!0,message:s.errorUtil.toString(e)})}multipleOf(e,t){return this._addCheck({kind:\"multipleOf\",value:e,message:s.errorUtil.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew D({checks:[],typeName:r.ZodBigInt,coerce:e?.coerce??!1,...p(e)});class L extends h{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==u.ZodParsedType.boolean){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.boolean,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodBoolean=L,L.create=e=>new L({typeName:r.ZodBoolean,coerce:e?.coerce||!1,...p(e)});class N extends h{_parse(e){let t;if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==u.ZodParsedType.date){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.date,received:t.parsedType}),c.INVALID}if(Number.isNaN(e.data.getTime())){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_date}),c.INVALID}let n=new c.ParseStatus;for(let r of this._def.checks)\"min\"===r.kind?e.data.getTime()r.value&&(t=this._getOrReturnCtx(e,t),(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:\"date\"}),n.dirty()):u.util.assertNever(r);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new N({...this._def,checks:[...this._def.checks,e]})}min(e,t){return this._addCheck({kind:\"min\",value:e.getTime(),message:s.errorUtil.toString(t)})}max(e,t){return this._addCheck({kind:\"max\",value:e.getTime(),message:s.errorUtil.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)\"min\"===t.kind&&(null===e||t.value>e)&&(e=t.value);return null!=e?new Date(e):null}get maxDate(){let e=null;for(let t of this._def.checks)\"max\"===t.kind&&(null===e||t.valuenew N({checks:[],coerce:e?.coerce||!1,typeName:r.ZodDate,...p(e)});class R extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.symbol){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.symbol,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodSymbol=R,R.create=e=>new R({typeName:r.ZodSymbol,...p(e)});class M extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.undefined){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.undefined,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodUndefined=M,M.create=e=>new M({typeName:r.ZodUndefined,...p(e)});class Z extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.null){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.null,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodNull=Z,Z.create=e=>new Z({typeName:r.ZodNull,...p(e)});class U extends h{constructor(){super(...arguments),this._any=!0}_parse(e){return(0,c.OK)(e.data)}}t.ZodAny=U,U.create=e=>new U({typeName:r.ZodAny,...p(e)});class F extends h{constructor(){super(...arguments),this._unknown=!0}_parse(e){return(0,c.OK)(e.data)}}t.ZodUnknown=F,F.create=e=>new F({typeName:r.ZodUnknown,...p(e)});class q extends h{_parse(e){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.never,received:t.parsedType}),c.INVALID}}t.ZodNever=q,q.create=e=>new q({typeName:r.ZodNever,...p(e)});class H extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.undefined){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.void,received:t.parsedType}),c.INVALID}return(0,c.OK)(e.data)}}t.ZodVoid=H,H.create=e=>new H({typeName:r.ZodVoid,...p(e)});class V extends h{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),r=this._def;if(t.parsedType!==u.ZodParsedType.array)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.array,received:t.parsedType}),c.INVALID;if(null!==r.exactLength){let e=t.data.length>r.exactLength.value,o=t.data.lengthr.maxLength.value&&((0,c.addIssueToContext)(t,{code:i.ZodIssueCode.too_big,maximum:r.maxLength.value,type:\"array\",inclusive:!0,exact:!1,message:r.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>r.type._parseAsync(new d(t,e,t.path,n)))).then(e=>c.ParseStatus.mergeArray(n,e));let o=[...t.data].map((e,n)=>r.type._parseSync(new d(t,e,t.path,n)));return c.ParseStatus.mergeArray(n,o)}get element(){return this._def.type}min(e,t){return new V({...this._def,minLength:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new V({...this._def,maxLength:{value:e,message:s.errorUtil.toString(t)}})}length(e,t){return new V({...this._def,exactLength:{value:e,message:s.errorUtil.toString(t)}})}nonempty(e){return this.min(1,e)}}t.ZodArray=V,V.create=(e,t)=>new V({type:e,minLength:null,maxLength:null,exactLength:null,typeName:r.ZodArray,...p(t)});class $ extends h{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(null!==this._cached)return this._cached;let e=this._def.shape(),t=u.util.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}_parse(e){if(this._getType(e)!==u.ZodParsedType.object){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:t.parsedType}),c.INVALID}let{status:t,ctx:n}=this._processInputParams(e),{shape:r,keys:o}=this._getCached(),a=[];if(!(this._def.catchall instanceof q&&\"strip\"===this._def.unknownKeys))for(let e in n.data)o.includes(e)||a.push(e);let l=[];for(let e of o){let t=r[e],o=n.data[e];l.push({key:{status:\"valid\",value:e},value:t._parse(new d(n,o,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof q){let e=this._def.unknownKeys;if(\"passthrough\"===e)for(let e of a)l.push({key:{status:\"valid\",value:e},value:{status:\"valid\",value:n.data[e]}});else if(\"strict\"===e)a.length>0&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.unrecognized_keys,keys:a}),t.dirty());else if(\"strip\"===e);else throw Error(\"Internal ZodObject error: invalid unknownKeys value.\")}else{let e=this._def.catchall;for(let t of a){let r=n.data[t];l.push({key:{status:\"valid\",value:t},value:e._parse(new d(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of l){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>c.ParseStatus.mergeObjectSync(t,e)):c.ParseStatus.mergeObjectSync(t,l)}get shape(){return this._def.shape()}strict(e){return s.errorUtil.errToObj,new $({...this._def,unknownKeys:\"strict\",...void 0!==e?{errorMap:(t,n)=>{let r=this._def.errorMap?.(t,n).message??n.defaultError;return\"unrecognized_keys\"===t.code?{message:s.errorUtil.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new $({...this._def,unknownKeys:\"strip\"})}passthrough(){return new $({...this._def,unknownKeys:\"passthrough\"})}extend(e){return new $({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new $({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:r.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(e){return new $({...this._def,catchall:e})}pick(e){let t={};for(let n of u.util.objectKeys(e))e[n]&&this.shape[n]&&(t[n]=this.shape[n]);return new $({...this._def,shape:()=>t})}omit(e){let t={};for(let n of u.util.objectKeys(this.shape))e[n]||(t[n]=this.shape[n]);return new $({...this._def,shape:()=>t})}deepPartial(){return function e(t){if(t instanceof $){let n={};for(let r in t.shape){let o=t.shape[r];n[r]=ec.create(e(o))}return new $({...t._def,shape:()=>n})}if(t instanceof V)return new V({...t._def,type:e(t.element)});if(t instanceof ec)return ec.create(e(t.unwrap()));if(t instanceof eu)return eu.create(e(t.unwrap()));if(t instanceof G)return G.create(t.items.map(t=>e(t)));else return t}(this)}partial(e){let t={};for(let n of u.util.objectKeys(this.shape)){let r=this.shape[n];e&&!e[n]?t[n]=r:t[n]=r.optional()}return new $({...this._def,shape:()=>t})}required(e){let t={};for(let n of u.util.objectKeys(this.shape))if(e&&!e[n])t[n]=this.shape[n];else{let e=this.shape[n];for(;e instanceof ec;)e=e._def.innerType;t[n]=e}return new $({...this._def,shape:()=>t})}keyof(){return eo(u.util.objectKeys(this.shape))}}t.ZodObject=$,$.create=(e,t)=>new $({shape:()=>e,unknownKeys:\"strip\",catchall:q.create(),typeName:r.ZodObject,...p(t)}),$.strictCreate=(e,t)=>new $({shape:()=>e,unknownKeys:\"strict\",catchall:q.create(),typeName:r.ZodObject,...p(t)}),$.lazycreate=(e,t)=>new $({shape:e,unknownKeys:\"strip\",catchall:q.create(),typeName:r.ZodObject,...p(t)});class W extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(function(e){for(let t of e)if(\"valid\"===t.result.status)return t.result;for(let n of e)if(\"dirty\"===n.result.status)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new i.ZodError(e.ctx.common.issues));return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:n}),c.INVALID});{let e,r=[];for(let o of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=o._parseSync({data:t.data,path:t.path,parent:n});if(\"valid\"===a.status)return a;\"dirty\"!==a.status||e||(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let o=r.map(e=>new i.ZodError(e));return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union,unionErrors:o}),c.INVALID}}get options(){return this._def.options}}t.ZodUnion=W,W.create=(e,t)=>new W({options:e,typeName:r.ZodUnion,...p(t)});let Y=e=>{if(e instanceof en)return Y(e.schema);if(e instanceof es)return Y(e.innerType());if(e instanceof er)return[e.value];if(e instanceof ea)return e.options;if(e instanceof ei)return u.util.objectValues(e.enum);else if(e instanceof ed)return Y(e._def.innerType);else if(e instanceof M)return[void 0];else if(e instanceof Z)return[null];else if(e instanceof ec)return[void 0,...Y(e.unwrap())];else if(e instanceof eu)return[null,...Y(e.unwrap())];else if(e instanceof eh)return Y(e.unwrap());else if(e instanceof eg)return Y(e.unwrap());else if(e instanceof ef)return Y(e._def.innerType);else return[]};class K extends h{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.object)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:t.parsedType}),c.INVALID;let n=this.discriminator,r=t.data[n],o=this.optionsMap.get(r);return o?t.common.async?o._parseAsync({data:t.data,path:t.path,parent:t}):o._parseSync({data:t.data,path:t.path,parent:t}):((0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),c.INVALID)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,t,n){let o=new Map;for(let n of t){let t=Y(n.shape[e]);if(!t.length)throw Error(`A discriminator value for key \\`${e}\\` could not be extracted from all schema options`);for(let r of t){if(o.has(r))throw Error(`Discriminator property ${String(e)} has duplicate value ${String(r)}`);o.set(r,n)}}return new K({typeName:r.ZodDiscriminatedUnion,discriminator:e,options:t,optionsMap:o,...p(n)})}}t.ZodDiscriminatedUnion=K;class X extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if((0,c.isAborted)(e)||(0,c.isAborted)(r))return c.INVALID;let o=function e(t,n){let r=(0,u.getParsedType)(t),o=(0,u.getParsedType)(n);if(t===n)return{valid:!0,data:t};if(r===u.ZodParsedType.object&&o===u.ZodParsedType.object){let r=u.util.objectKeys(n),o=u.util.objectKeys(t).filter(e=>-1!==r.indexOf(e)),a={...t,...n};for(let r of o){let o=e(t[r],n[r]);if(!o.valid)return{valid:!1};a[r]=o.data}return{valid:!0,data:a}}if(r===u.ZodParsedType.array&&o===u.ZodParsedType.array){if(t.length!==n.length)return{valid:!1};let r=[];for(let o=0;or(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}}t.ZodIntersection=X,X.create=(e,t,n)=>new X({left:e,right:t,typeName:r.ZodIntersection,...p(n)});class G extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.array)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.array,received:n.parsedType}),c.INVALID;if(n.data.lengththis._def.items.length&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:\"array\"}),t.dirty());let r=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new d(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(r).then(e=>c.ParseStatus.mergeArray(t,e)):c.ParseStatus.mergeArray(t,r)}get items(){return this._def.items}rest(e){return new G({...this._def,rest:e})}}t.ZodTuple=G,G.create=(e,t)=>{if(!Array.isArray(e))throw Error(\"You must pass an array of schemas to z.tuple([ ... ])\");return new G({items:e,typeName:r.ZodTuple,rest:null,...p(t)})};class Q extends h{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.object)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.object,received:n.parsedType}),c.INVALID;let r=[],o=this._def.keyType,a=this._def.valueType;for(let e in n.data)r.push({key:o._parse(new d(n,e,n.path,e)),value:a._parse(new d(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?c.ParseStatus.mergeObjectAsync(t,r):c.ParseStatus.mergeObjectSync(t,r)}get element(){return this._def.valueType}static create(e,t,n){return new Q(t instanceof h?{keyType:e,valueType:t,typeName:r.ZodRecord,...p(n)}:{keyType:z.create(),valueType:e,typeName:r.ZodRecord,...p(t)})}}t.ZodRecord=Q;class J extends h{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.map)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.map,received:n.parsedType}),c.INVALID;let r=this._def.keyType,o=this._def.valueType,a=[...n.data.entries()].map(([e,t],a)=>({key:r._parse(new d(n,e,n.path,[a,\"key\"])),value:o._parse(new d(n,t,n.path,[a,\"value\"]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of a){let r=await n.key,o=await n.value;if(\"aborted\"===r.status||\"aborted\"===o.status)return c.INVALID;(\"dirty\"===r.status||\"dirty\"===o.status)&&t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}})}{let e=new Map;for(let n of a){let r=n.key,o=n.value;if(\"aborted\"===r.status||\"aborted\"===o.status)return c.INVALID;(\"dirty\"===r.status||\"dirty\"===o.status)&&t.dirty(),e.set(r.value,o.value)}return{status:t.value,value:e}}}}t.ZodMap=J,J.create=(e,t,n)=>new J({valueType:t,keyType:e,typeName:r.ZodMap,...p(n)});class ee extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==u.ZodParsedType.set)return(0,c.addIssueToContext)(n,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.set,received:n.parsedType}),c.INVALID;let r=this._def;null!==r.minSize&&n.data.sizer.maxSize.value&&((0,c.addIssueToContext)(n,{code:i.ZodIssueCode.too_big,maximum:r.maxSize.value,type:\"set\",inclusive:!0,exact:!1,message:r.maxSize.message}),t.dirty());let o=this._def.valueType;function a(e){let n=new Set;for(let r of e){if(\"aborted\"===r.status)return c.INVALID;\"dirty\"===r.status&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let l=[...n.data.values()].map((e,t)=>o._parse(new d(n,e,n.path,t)));return n.common.async?Promise.all(l).then(e=>a(e)):a(l)}min(e,t){return new ee({...this._def,minSize:{value:e,message:s.errorUtil.toString(t)}})}max(e,t){return new ee({...this._def,maxSize:{value:e,message:s.errorUtil.toString(t)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}}t.ZodSet=ee,ee.create=(e,t)=>new ee({valueType:e,minSize:null,maxSize:null,typeName:r.ZodSet,...p(t)});class et extends h{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.function)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.function,received:t.parsedType}),c.INVALID;function n(e,n){return(0,c.makeIssue)({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,l.getErrorMap)(),l.defaultErrorMap].filter(e=>!!e),issueData:{code:i.ZodIssueCode.invalid_arguments,argumentsError:n}})}function r(e,n){return(0,c.makeIssue)({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,(0,l.getErrorMap)(),l.defaultErrorMap].filter(e=>!!e),issueData:{code:i.ZodIssueCode.invalid_return_type,returnTypeError:n}})}let o={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof el){let e=this;return(0,c.OK)(async function(...t){let l=new i.ZodError([]),s=await e._def.args.parseAsync(t,o).catch(e=>{throw l.addIssue(n(t,e)),l}),c=await Reflect.apply(a,this,s);return await e._def.returns._def.type.parseAsync(c,o).catch(e=>{throw l.addIssue(r(c,e)),l})})}{let e=this;return(0,c.OK)(function(...t){let l=e._def.args.safeParse(t,o);if(!l.success)throw new i.ZodError([n(t,l.error)]);let s=Reflect.apply(a,this,l.data),c=e._def.returns.safeParse(s,o);if(!c.success)throw new i.ZodError([r(s,c.error)]);return c.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new et({...this._def,args:G.create(e).rest(F.create())})}returns(e){return new et({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,t,n){return new et({args:e||G.create([]).rest(F.create()),returns:t||F.create(),typeName:r.ZodFunction,...p(n)})}}t.ZodFunction=et;class en extends h{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}}t.ZodLazy=en,en.create=(e,t)=>new en({getter:e,typeName:r.ZodLazy,...p(t)});class er extends h{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_literal,expected:this._def.value}),c.INVALID}return{status:\"valid\",value:e.data}}get value(){return this._def.value}}function eo(e,t){return new ea({values:e,typeName:r.ZodEnum,...p(t)})}t.ZodLiteral=er,er.create=(e,t)=>new er({value:e,typeName:r.ZodLiteral,...p(t)});class ea extends h{_parse(e){if(\"string\"!=typeof e.data){let t=this._getOrReturnCtx(e),n=this._def.values;return(0,c.addIssueToContext)(t,{expected:u.util.joinValues(n),received:t.parsedType,code:i.ZodIssueCode.invalid_type}),c.INVALID}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return(0,c.addIssueToContext)(t,{received:t.data,code:i.ZodIssueCode.invalid_enum_value,options:n}),c.INVALID}return(0,c.OK)(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(e,t=this._def){return ea.create(e,{...this._def,...t})}exclude(e,t=this._def){return ea.create(this.options.filter(t=>!e.includes(t)),{...this._def,...t})}}t.ZodEnum=ea,ea.create=eo;class ei extends h{_parse(e){let t=u.util.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==u.ZodParsedType.string&&n.parsedType!==u.ZodParsedType.number){let e=u.util.objectValues(t);return(0,c.addIssueToContext)(n,{expected:u.util.joinValues(e),received:n.parsedType,code:i.ZodIssueCode.invalid_type}),c.INVALID}if(this._cache||(this._cache=new Set(u.util.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){let e=u.util.objectValues(t);return(0,c.addIssueToContext)(n,{received:n.data,code:i.ZodIssueCode.invalid_enum_value,options:e}),c.INVALID}return(0,c.OK)(e.data)}get enum(){return this._def.values}}t.ZodNativeEnum=ei,ei.create=(e,t)=>new ei({values:e,typeName:r.ZodNativeEnum,...p(t)});class el extends h{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==u.ZodParsedType.promise&&!1===t.common.async)return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.promise,received:t.parsedType}),c.INVALID;let n=t.parsedType===u.ZodParsedType.promise?t.data:Promise.resolve(t.data);return(0,c.OK)(n.then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}}t.ZodPromise=el,el.create=(e,t)=>new el({type:e,typeName:r.ZodPromise,...p(t)});class es extends h{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===r.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=this._def.effect||null,o={addIssue:e=>{(0,c.addIssueToContext)(n,e),e.fatal?t.abort():t.dirty()},get path(){return n.path}};if(o.addIssue=o.addIssue.bind(o),\"preprocess\"===r.type){let e=r.transform(n.data,o);if(n.common.async)return Promise.resolve(e).then(async e=>{if(\"aborted\"===t.value)return c.INVALID;let r=await this._def.schema._parseAsync({data:e,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:\"dirty\"===r.status||\"dirty\"===t.value?(0,c.DIRTY)(r.value):r});{if(\"aborted\"===t.value)return c.INVALID;let r=this._def.schema._parseSync({data:e,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:\"dirty\"===r.status||\"dirty\"===t.value?(0,c.DIRTY)(r.value):r}}if(\"refinement\"===r.type){let e=e=>{let t=r.refinement(e,o);if(n.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");return e};if(!1!==n.common.async)return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(n=>\"aborted\"===n.status?c.INVALID:(\"dirty\"===n.status&&t.dirty(),e(n.value).then(()=>({status:t.value,value:n.value}))));{let r=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});return\"aborted\"===r.status?c.INVALID:(\"dirty\"===r.status&&t.dirty(),e(r.value),{status:t.value,value:r.value})}}if(\"transform\"===r.type)if(!1!==n.common.async)return this._def.schema._parseAsync({data:n.data,path:n.path,parent:n}).then(e=>(0,c.isValid)(e)?Promise.resolve(r.transform(e.value,o)).then(e=>({status:t.value,value:e})):c.INVALID);else{let e=this._def.schema._parseSync({data:n.data,path:n.path,parent:n});if(!(0,c.isValid)(e))return c.INVALID;let a=r.transform(e.value,o);if(a instanceof Promise)throw Error(\"Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.\");return{status:t.value,value:a}}u.util.assertNever(r)}}t.ZodEffects=es,t.ZodTransformer=es,es.create=(e,t,n)=>new es({schema:e,typeName:r.ZodEffects,effect:t,...p(n)}),es.createWithPreprocess=(e,t,n)=>new es({schema:t,effect:{type:\"preprocess\",transform:e},typeName:r.ZodEffects,...p(n)});class ec extends h{_parse(e){return this._getType(e)===u.ZodParsedType.undefined?(0,c.OK)(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}t.ZodOptional=ec,ec.create=(e,t)=>new ec({innerType:e,typeName:r.ZodOptional,...p(t)});class eu extends h{_parse(e){return this._getType(e)===u.ZodParsedType.null?(0,c.OK)(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}t.ZodNullable=eu,eu.create=(e,t)=>new eu({innerType:e,typeName:r.ZodNullable,...p(t)});class ed extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===u.ZodParsedType.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}}t.ZodDefault=ed,ed.create=(e,t)=>new ed({innerType:e,typeName:r.ZodDefault,defaultValue:\"function\"==typeof t.default?t.default:()=>t.default,...p(t)});class ef extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return(0,c.isAsync)(r)?r.then(e=>({status:\"valid\",value:\"valid\"===e.status?e.value:this._def.catchValue({get error(){return new i.ZodError(n.common.issues)},input:n.data})})):{status:\"valid\",value:\"valid\"===r.status?r.value:this._def.catchValue({get error(){return new i.ZodError(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}}t.ZodCatch=ef,ef.create=(e,t)=>new ef({innerType:e,typeName:r.ZodCatch,catchValue:\"function\"==typeof t.catch?t.catch:()=>t.catch,...p(t)});class ep extends h{_parse(e){if(this._getType(e)!==u.ZodParsedType.nan){let t=this._getOrReturnCtx(e);return(0,c.addIssueToContext)(t,{code:i.ZodIssueCode.invalid_type,expected:u.ZodParsedType.nan,received:t.parsedType}),c.INVALID}return{status:\"valid\",value:e.data}}}t.ZodNaN=ep,ep.create=e=>new ep({typeName:r.ZodNaN,...p(e)}),t.BRAND=Symbol(\"zod_brand\");class eh extends h{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}}t.ZodBranded=eh;class em extends h{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return\"aborted\"===e.status?c.INVALID:\"dirty\"===e.status?(t.dirty(),(0,c.DIRTY)(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return\"aborted\"===e.status?c.INVALID:\"dirty\"===e.status?(t.dirty(),{status:\"dirty\",value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(e,t){return new em({in:e,out:t,typeName:r.ZodPipeline})}}t.ZodPipeline=em;class eg extends h{_parse(e){let t=this._def.innerType._parse(e),n=e=>((0,c.isValid)(e)&&(e.value=Object.freeze(e.value)),e);return(0,c.isAsync)(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}}function ey(e,t){let n=\"function\"==typeof e?e(t):\"string\"==typeof e?{message:e}:e;return\"string\"==typeof n?{message:n}:n}function ev(e,t={},n){return e?U.create().superRefine((r,o)=>{let a=e(r);if(a instanceof Promise)return a.then(e=>{if(!e){let e=ey(t,r),a=e.fatal??n??!0;o.addIssue({code:\"custom\",...e,fatal:a})}});if(!a){let e=ey(t,r),a=e.fatal??n??!0;o.addIssue({code:\"custom\",...e,fatal:a})}}):U.create()}t.ZodReadonly=eg,eg.create=(e,t)=>new eg({innerType:e,typeName:r.ZodReadonly,...p(t)}),t.late={object:$.lazycreate},(o=r||(t.ZodFirstPartyTypeKind=r={})).ZodString=\"ZodString\",o.ZodNumber=\"ZodNumber\",o.ZodNaN=\"ZodNaN\",o.ZodBigInt=\"ZodBigInt\",o.ZodBoolean=\"ZodBoolean\",o.ZodDate=\"ZodDate\",o.ZodSymbol=\"ZodSymbol\",o.ZodUndefined=\"ZodUndefined\",o.ZodNull=\"ZodNull\",o.ZodAny=\"ZodAny\",o.ZodUnknown=\"ZodUnknown\",o.ZodNever=\"ZodNever\",o.ZodVoid=\"ZodVoid\",o.ZodArray=\"ZodArray\",o.ZodObject=\"ZodObject\",o.ZodUnion=\"ZodUnion\",o.ZodDiscriminatedUnion=\"ZodDiscriminatedUnion\",o.ZodIntersection=\"ZodIntersection\",o.ZodTuple=\"ZodTuple\",o.ZodRecord=\"ZodRecord\",o.ZodMap=\"ZodMap\",o.ZodSet=\"ZodSet\",o.ZodFunction=\"ZodFunction\",o.ZodLazy=\"ZodLazy\",o.ZodLiteral=\"ZodLiteral\",o.ZodEnum=\"ZodEnum\",o.ZodEffects=\"ZodEffects\",o.ZodNativeEnum=\"ZodNativeEnum\",o.ZodOptional=\"ZodOptional\",o.ZodNullable=\"ZodNullable\",o.ZodDefault=\"ZodDefault\",o.ZodCatch=\"ZodCatch\",o.ZodPromise=\"ZodPromise\",o.ZodBranded=\"ZodBranded\",o.ZodPipeline=\"ZodPipeline\",o.ZodReadonly=\"ZodReadonly\",t.instanceof=(e,t={message:`Input not instance of ${e.name}`})=>ev(t=>t instanceof e,t);let eb=z.create;t.string=eb;let eA=T.create;t.number=eA,t.nan=ep.create,t.bigint=D.create;let ex=L.create;t.boolean=ex,t.date=N.create,t.symbol=R.create,t.undefined=M.create,t.null=Z.create,t.any=U.create,t.unknown=F.create,t.never=q.create,t.void=H.create,t.array=V.create,t.object=$.create,t.strictObject=$.strictCreate,t.union=W.create,t.discriminatedUnion=K.create,t.intersection=X.create,t.tuple=G.create,t.record=Q.create,t.map=J.create,t.set=ee.create,t.function=et.create,t.lazy=en.create,t.literal=er.create,t.enum=ea.create,t.nativeEnum=ei.create,t.promise=el.create;let ew=es.create;t.effect=ew,t.transformer=ew,t.optional=ec.create,t.nullable=eu.create,t.preprocess=es.createWithPreprocess,t.pipeline=em.create,t.ostring=()=>eb().optional(),t.onumber=()=>eA().optional(),t.oboolean=()=>ex().optional(),t.coerce={string:e=>z.create({...e,coerce:!0}),number:e=>T.create({...e,coerce:!0}),boolean:e=>L.create({...e,coerce:!0}),bigint:e=>D.create({...e,coerce:!0}),date:e=>N.create({...e,coerce:!0})},t.NEVER=c.INVALID}},n={};function r(e){var o=n[e];if(void 0!==o)return o.exports;var a=n[e]={exports:{}},i=!0;try{t[e].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete n[e]}return a.exports}r.ab=\"//\",e.exports=r(629)})()}},__webpack_module_cache__={};function __nested_webpack_require_378213__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,exports:{}};return __webpack_modules__[e](n,n.exports,__nested_webpack_require_378213__),n.exports}__nested_webpack_require_378213__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __nested_webpack_require_378213__.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;__nested_webpack_require_378213__.t=function(n,r){if(1&r&&(n=this(n)),8&r||\"object\"==typeof n&&n&&(4&r&&n.__esModule||16&r&&\"function\"==typeof n.then))return n;var o=Object.create(null);__nested_webpack_require_378213__.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var i=2&r&&n;\"object\"==typeof i&&!~e.indexOf(i);i=t(i))Object.getOwnPropertyNames(i).forEach(e=>{a[e]=()=>n[e]});return a.default=()=>n,__nested_webpack_require_378213__.d(o,a),o}})(),__nested_webpack_require_378213__.d=(e,t)=>{for(var n in t)__nested_webpack_require_378213__.o(t,n)&&!__nested_webpack_require_378213__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__nested_webpack_require_378213__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__nested_webpack_require_378213__.r=e=>{\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},__nested_webpack_require_378213__.nc=void 0;var __nested_webpack_exports__={};for(var __webpack_i__ in(()=>{\"use strict\";__nested_webpack_require_378213__.r(__nested_webpack_exports__),__nested_webpack_require_378213__.d(__nested_webpack_exports__,{dispatcher:()=>dt,renderAppDevOverlay:()=>dc,DevOverlayContext:()=>dr,renderPagesDevOverlay:()=>du,useDevOverlayContext:()=>da});var e,t,n,r=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\"),o=__nested_webpack_require_378213__.n(r),a=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleDomAPI.js\"),i=__nested_webpack_require_378213__.n(a),l=__nested_webpack_require_378213__(\"./src/build/webpack/loaders/devtool/devtool-style-inject.js\"),s=__nested_webpack_require_378213__.n(l),c=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\"),u=__nested_webpack_require_378213__.n(c),d=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/insertStyleElement.js\"),f=__nested_webpack_require_378213__.n(d),p=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/style-loader@4.0.0_webpack@5.98.0_@swc+core@1.11.24_@swc+helpers@0.5.15__esbuild@0.24.2_/node_modules/style-loader/dist/runtime/styleTagTransform.js\"),h=__nested_webpack_require_378213__.n(p),m=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/global.css\"),g={};g.styleTagTransform=h(),g.setAttributes=u(),g.insert=s(),g.domAPI=i(),g.insertStyleElement=f(),o()(m.Z,g),m.Z&&m.Z.locals&&m.Z.locals;var y=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/toast/style.css\"),v={};v.styleTagTransform=h(),v.setAttributes=u(),v.insert=s(),v.domAPI=i(),v.insertStyleElement=f(),o()(y.Z,v),y.Z&&y.Z.locals&&y.Z.locals;var b=__nested_webpack_require_378213__(\"./dist/compiled/react/jsx-runtime.js\"),A=__nested_webpack_require_378213__(\"./dist/compiled/react/compiler-runtime.js\"),x=__nested_webpack_require_378213__(\"./dist/compiled/react/index.js\"),w=__nested_webpack_require_378213__.t(x,2),C=__nested_webpack_require_378213__(\"./dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js\"),_=/\\/_next(\\/static\\/.+)/,k=Symbol.for(\"next.console.error.digest\");function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function j(e){for(var t=1;t1?t-1:0),r=1;r0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]\"!==e.file&&(null!=e.column1?n+=\" (\".concat(e.line1,\":\").concat(e.column1,\")\"):n+=\" (\".concat(e.line1,\")\")),n}function eS(e){var t,n,r=(0,A.c)(6);r[0]!==e?(t=void 0===e?{}:e,r[0]=e,r[1]=t):t=r[1];var o=t.file,a=t.line1,i=t.column1;return r[2]!==i||r[3]!==o||r[4]!==a?(n=function(){if(null!=o&&null!=a&&null!=i){var e=new URLSearchParams;e.append(\"file\",o),e.append(\"line1\",String(a)),e.append(\"column1\",String(i)),self.fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(e.toString())).then(eO,function(e){console.error('Failed to open file \"'.concat(o,\" (\").concat(a,\":\").concat(i,')\" in your editor. Cause:'),e)})}},r[2]=i,r[3]=o,r[4]=a,r[5]=n):n=r[5],n}function eO(){}function eB(e){for(var t=1;t? +\\d+ +\\| [ ]+/.exec(eq()(e))?null:/^>? +\\d+ +\\| ( *)/.exec(eq()(e))}).filter(Boolean).map(function(e){return e.pop()}).reduce(function(e,t){return isNaN(e)?t.length:Math.min(e,t.length)},NaN);return n>1?t.map(function(e,t){return~(t=e.indexOf(\"|\"))?e.substring(0,t)+e.substring(t).replace(\"^\\\\ {\".concat(n,\"}\"),\"\"):e}).join(\"\\n\"):t.join(\"\\n\")}function eV(e){for(var t=1;t0&&n.push(r),n})(eH(a)).map(function(e){var t,n,r,a,i,l,s,c,u;return{line:e,parsedLine:(t=e,n=o,((null==(r=t[0])?void 0:r.content)===\">\"||(null==(a=t[0])?void 0:a.content)===\" \")&&(s=null==(l=t[1])||null==(u=l.content)||null==(c=u.replace(\"|\",\"\"))?void 0:c.trim()),{lineNumber:s,isErroredLine:s===(null==(i=n.line1)?void 0:i.toString())})}})},[a,o]),l=eS({file:o.file,line1:null!=(n=o.line1)?n:1,column1:null!=(r=o.column1)?r:1}),s=null==o||null==(t=o.file)?void 0:t.split(\".\").pop();return(0,b.jsxs)(\"div\",{\"data-nextjs-codeframe\":!0,children:[(0,b.jsx)(\"div\",{className:\"code-frame-header\",children:(0,b.jsxs)(\"p\",{className:\"code-frame-link\",children:[(0,b.jsx)(\"span\",{className:\"code-frame-icon\",children:(0,b.jsx)(eT,{lang:s})}),(0,b.jsxs)(\"span\",{\"data-text\":!0,children:[ej(o),\" @\",\" \",(0,b.jsx)(ev,{text:o.methodName})]}),(0,b.jsx)(\"button\",{\"aria-label\":\"Open in editor\",\"data-with-open-in-editor-link-source-file\":!0,onClick:l,children:(0,b.jsx)(\"span\",{className:\"code-frame-icon\",\"data-icon\":\"right\",children:(0,b.jsx)(eI,{width:16,height:16})})})]})}),(0,b.jsx)(\"pre\",{className:\"code-frame-pre\",children:(0,b.jsx)(\"div\",{className:\"code-frame-lines\",children:i.map(function(e,t){var n,r,o=e.line,a=e.parsedLine,i=a.lineNumber,l=a.isErroredLine,s={};return i&&(s[\"data-nextjs-codeframe-line\"]=i),l&&(s[\"data-nextjs-codeframe-line--errored\"]=!0),(0,b.jsx)(\"div\",(n=eV({},s),r=r={children:o.map(function(e,t){return(0,b.jsx)(\"span\",{style:eV({color:e.fg?\"var(--color-\".concat(e.fg,\")\"):void 0},\"bold\"===e.decoration?{fontWeight:500}:\"italic\"===e.decoration?{fontStyle:\"italic\"}:void 0),children:e.content},\"frame-\".concat(t))})},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n),\"line-\".concat(t))})})})]})}var eW=function(e){var t,n,r,o,a,i,l=(0,A.c)(8);return(l[0]!==e?(a=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\"]),r=e.children,o=e.className,l[0]=e,l[1]=r,l[2]=o,l[3]=a):(r=l[1],o=l[2],a=l[3]),l[4]!==r||l[5]!==o||l[6]!==a)?(i=(0,b.jsx)(\"div\",(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\"]),r=e.children,o=e.className,l[0]=e,l[1]=r,l[2]=o,l[3]=a):(r=l[1],o=l[2],a=l[3]),l[4]!==r||l[5]!==o||l[6]!==a)?(i=(0,b.jsx)(\"div\",(t=function(e){for(var t=1;t [data-nextjs-dialog-header] {\\n flex-shrink: 0;\\n margin-bottom: 8px;\\n }\\n\\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\\n position: relative;\\n flex: 1 1 auto;\\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-root] {\\n --next-dialog-max-width: 540px;\\n }\\n }\\n\\n @media (min-width: 768px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 720px;\\n }\\n }\\n\\n @media (min-width: 992px) {\\n [data-nextjs-dialog-root] {\\n --next-dialog-max-width: 960px;\\n }\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return eK=function(){return n},n}var eX=es(eK());function eG(){for(var e=arguments.length,t=Array(e),n=0;ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"content\",\"getContent\",\"actionLabel\",\"successLabel\",\"icon\",\"disabled\"]),n=e.content,o=e.getContent,t=e.actionLabel,l=e.successLabel,a=e.icon,r=e.disabled,v[0]=e,v[1]=t,v[2]=n,v[3]=r,v[4]=o,v[5]=a,v[6]=i,v[7]=l):(t=v[1],n=v[2],r=v[3],o=v[4],a=v[5],i=v[6],l=v[7]),v[8]!==n||v[9]!==o?(s=function(){return n||(o?o():\"\")},v[8]=n,v[9]=o,v[10]=s):s=v[10];var w=s;v[11]!==w?(c=w(),v[11]=w,v[12]=c):c=v[12];var C=e1(e3(c),4),_=C[0],k=C[1],E=C[2],j=C[3],S=\"error\"===_.state?_.error:null;v[13]!==S?(u=function(){null!==S&&console.warn(S)},d=[S],v[13]=S,v[14]=u,v[15]=d):(u=v[14],d=v[15]),x.useEffect(u,d),v[16]!==_.state||v[17]!==E?(f=function(){if(\"success\"===_.state){var e=setTimeout(function(){E()},2e3);return function(){clearTimeout(e)}}},v[16]=_.state,v[17]=E,v[18]=f):f=v[18],v[19]!==_.state||v[20]!==j||v[21]!==E?(p=[j,_.state,E],v[19]=_.state,v[20]=j,v[21]=E,v[22]=p):p=v[22],x.useEffect(f,p);var O=!navigator.clipboard||j||r||!!S,B=\"success\"===_.state?l:t;v[23]!==_.state||v[24]!==a?(h=\"success\"===_.state?(0,b.jsx)(e8,{}):a||(0,b.jsx)(e9,{width:14,height:14,className:\"error-overlay-toolbar-button-icon\"}),v[23]=_.state,v[24]=a,v[25]=h):h=v[25];var P=h,I=\"nextjs-data-copy-button--\".concat(_.state);v[26]!==e.className||v[27]!==I?(m=eG(e.className,\"nextjs-data-copy-button\",I),v[26]=e.className,v[27]=I,v[28]=m):m=v[28],v[29]!==k||v[30]!==O?(g=function(){O||k()},v[29]=k,v[30]=O,v[31]=g):g=v[31];var z=\"error\"===_.state?\" \".concat(_.error):null;return v[32]!==O||v[33]!==B||v[34]!==P||v[35]!==i||v[36]!==z||v[37]!==m||v[38]!==g?(y=(0,b.jsxs)(\"button\",e0(eJ({},i),{type:\"button\",title:B,\"aria-label\":B,\"aria-disabled\":O,disabled:O,\"data-nextjs-copy-button\":!0,className:m,onClick:g,children:[P,z]})),v[32]=O,v[33]=B,v[34]=P,v[35]=i,v[36]=z,v[37]=m,v[38]=g,v[39]=y):y=v[39],y}function e9(e){var t,n,r=(0,A.c)(3);return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M2.406.438c-.845 0-1.531.685-1.531 1.53v6.563c0 .846.686 1.531 1.531 1.531H3.937V8.75H2.406a.219.219 0 0 1-.219-.219V1.97c0-.121.098-.219.22-.219h4.812c.12 0 .218.098.218.219v.656H8.75v-.656c0-.846-.686-1.532-1.531-1.532H2.406zm4.375 3.5c-.845 0-1.531.685-1.531 1.53v6.563c0 .846.686 1.531 1.531 1.531h4.813c.845 0 1.531-.685 1.531-1.53V5.468c0-.846-.686-1.532-1.531-1.532H6.78zm-.218 1.53c0-.12.097-.218.218-.218h4.813c.12 0 .219.098.219.219v6.562c0 .121-.098.219-.22.219H6.782a.219.219 0 0 1-.218-.219V5.47z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==e?(n=(0,b.jsx)(\"svg\",e0(eJ({width:\"14\",height:\"14\",viewBox:\"0 0 14 14\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e),{children:t})),r[1]=e,r[2]=n):n=r[2],n}function e8(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{height:\"16\",xlinkTitle:\"copied\",viewBox:\"0 0 16 16\",width:\"16\",stroke:\"currentColor\",fill:\"currentColor\",children:(0,b.jsx)(\"path\",{d:\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\"})}),t[0]=e):e=t[0],e}function e7(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n\\.(.*)\\nThis will cause a hydration error\\.(.*)/,/^In HTML, (.+?) cannot be a descendant of <(.+?)>\\.\\nThis will cause a hydration error\\.(.*)/,/^In HTML, text nodes cannot be a child of <(.+?)>\\.\\nThis will cause a hydration error\\./,/^In HTML, whitespace text nodes cannot be a child of <(.+?)>\\. Make sure you don't have any extra whitespace between tags on each line of your source code\\.\\nThis will cause a hydration error\\./];function tg(e){return tm.some(function(t){return t.test(e)})}var ty=[\"https://nextjs.org\",\"https://react.dev\"];function tv(e){return ty.some(function(t){return e.startsWith(t)})}function tb(e){var t,n,r,o,a=(0,A.c)(6),i=e.errorMessage;a[0]!==i?(t=function(e){var t,n,r,o=(t=e,n=tv,r=Array.from(t.matchAll(/https?:\\/\\/[^\\s/$.?#].[^\\s)'\"]*/gi),function(e){return e[0]}),n?r.filter(function(e){return n(e)}):r);if(0===o.length)return null;var a=o[0];return a===tp?th:a}(i),a[0]=i,a[1]=t):t=a[1];var l=t;return l?(a[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(tA,{className:\"error-overlay-toolbar-button-icon\",width:14,height:14}),a[3]=r):r=a[3],a[4]!==l?(o=(0,b.jsx)(\"a\",{title:\"Go to related documentation\",\"aria-label\":\"Go to related documentation\",className:\"docs-link-button\",href:l,target:\"_blank\",rel:\"noopener noreferrer\",children:r}),a[4]=l,a[5]=o):o=a[5],o):(a[2]===Symbol.for(\"react.memo_cache_sentinel\")?(n=(0,b.jsx)(\"button\",{title:\"No related documentation found\",\"aria-label\":\"No related documentation found\",className:\"docs-link-button\",disabled:!0,children:(0,b.jsx)(tA,{className:\"error-overlay-toolbar-button-icon\",width:14,height:14})}),a[2]=n):n=a[2],n)}function tA(e){var t,n,r,o,a=(0,A.c)(3);return(a[0]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M0 .875h4.375C5.448.875 6.401 1.39 7 2.187A3.276 3.276 0 0 1 9.625.875H14v11.156H9.4c-.522 0-1.023.208-1.392.577l-.544.543h-.928l-.544-.543c-.369-.37-.87-.577-1.392-.577H0V.875zm6.344 3.281a1.969 1.969 0 0 0-1.969-1.968H1.312v8.53H4.6c.622 0 1.225.177 1.744.502V4.156zm1.312 7.064V4.156c0-1.087.882-1.968 1.969-1.968h3.063v8.53H9.4c-.622 0-1.225.177-1.744.502z\",fill:\"currentColor\"}),a[0]=r):r=a[0],a[1]!==e)?(o=(0,b.jsx)(\"svg\",(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]e.length)&&(t=e.length);for(var n=0,r=Array(t);n200)},i[0]=t):t=i[0],i[1]!==l?(n=[l],i[1]=l,i[2]=n):n=i[2],(0,x.useLayoutEffect)(t,n);var m=\"nextjs__container_errors_desc \".concat(f&&!c?\"truncated\":\"\");return i[3]!==l||i[4]!==m?(r=(0,b.jsx)(\"p\",{ref:h,id:\"nextjs__container_errors_desc\",className:m,children:l}),i[3]=l,i[4]=m,i[5]=r):r=i[5],i[6]!==c||i[7]!==f?(o=f&&!c&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(\"div\",{className:\"nextjs__container_errors_gradient_overlay\"}),(0,b.jsx)(\"button\",{onClick:function(){return u(!0)},className:\"nextjs__container_errors_expand_button\",\"aria-expanded\":c,\"aria-controls\":\"nextjs__container_errors_desc\",children:\"Show More\"})]}),i[6]=c,i[7]=f,i[8]=o):o=i[8],i[9]!==r||i[10]!==o?(a=(0,b.jsxs)(\"div\",{className:\"nextjs__container_errors_wrapper\",children:[r,o]}),i[9]=r,i[10]=o,i[11]=a):a=i[11],a}function tz(e){var t,n=(0,A.c)(2),r=e.errorType;return n[0]!==r?(t=(0,b.jsx)(\"span\",{id:\"nextjs__container_errors_label\",className:\"nextjs__container_errors_label\",children:r}),n[0]=r,n[1]=t):t=n[1],t}function tT(e){var t,n,r=(0,A.c)(4),o=e.title,a=e.className;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M9.24996 12.0608L8.71963 11.5304L5.89641 8.70722C5.50588 8.3167 5.50588 7.68353 5.89641 7.29301L8.71963 4.46978L9.24996 3.93945L10.3106 5.00011L9.78029 5.53044L7.31062 8.00011L9.78029 10.4698L10.3106 11.0001L9.24996 12.0608Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==a||r[2]!==o?(n=(0,b.jsx)(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",\"aria-label\":o,className:a,children:t}),r[1]=a,r[2]=o,r[3]=n):n=r[3],n}function tD(e){var t,n,r=(0,A.c)(4),o=e.title,a=e.className;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M6.75011 3.93945L7.28044 4.46978L10.1037 7.29301C10.4942 7.68353 10.4942 8.3167 10.1037 8.70722L7.28044 11.5304L6.75011 12.0608L5.68945 11.0001L6.21978 10.4698L8.68945 8.00011L6.21978 5.53044L5.68945 5.00011L6.75011 3.93945Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==a||r[2]!==o?(n=(0,b.jsx)(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\",className:a,\"aria-label\":o,children:t}),r[1]=a,r[2]=o,r[3]=n):n=r[3],n}function tL(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&_(Math.max(0,C-1))})},v[0]=C,v[1]=_,v[2]=r):r=v[2];var k=r;v[3]!==C||v[4]!==_||v[5]!==w.length?(o=function(){return(0,x.startTransition)(function(){C=w.length-1,R=C>=w.length-1;return v[31]===Symbol.for(\"react.memo_cache_sentinel\")?(m=(0,b.jsx)(tD,{title:\"next\",className:\"error-overlay-pagination-button-icon\"}),v[31]=m):m=v[31],v[32]!==E||v[33]!==N||v[34]!==R?(g=(0,b.jsx)(\"button\",{ref:S,type:\"button\",disabled:N,\"aria-disabled\":R,onClick:E,\"data-nextjs-dialog-error-next\":!0,className:\"error-overlay-pagination-button\",children:m}),v[32]=E,v[33]=N,v[34]=R,v[35]=g):g=v[35],v[36]!==d||v[37]!==h||v[38]!==g?(y=(0,b.jsxs)(\"nav\",{className:\"error-overlay-pagination dialog-exclude-closing-from-outside-click\",ref:I,children:[d,h,g]}),v[36]=d,v[37]=h,v[38]=g,v[39]=y):y=v[39],y}function tR(e){var t,n,r,o,a=(0,A.c)(3);return(a[0]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(\"circle\",{cx:\"7\",cy:\"7\",r:\"5.5\",strokeWidth:\"3\"}),a[0]=r):r=a[0],a[1]!==e)?(o=(0,b.jsx)(\"svg\",(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"className\",\"onClose\",\"aria-labelledby\",\"aria-describedby\"]),y=x.useRef(null),v=(t=x.useState(\"undefined\"!=typeof document&&document.hasFocus()?\"dialog\":void 0),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(t,2)||function(e,t){if(e){if(\"string\"==typeof e)return tH(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return tH(e,t)}}(t,n)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),w=v[0],C=v[1];return r=y.current,o=tV,a=function(e){return e.preventDefault(),null==p?void 0:p()},(s=(0,A.c)(5))[0]!==o||s[1]!==r||s[2]!==a?(i=function(){if(null!=r&&null!=a){var e=function(e){!(!r||r.contains(e.target))&&(o.some(function(t){return e.target.closest(t)})||a(e))},t=r.getRootNode();return t.addEventListener(\"mouseup\",e),t.addEventListener(\"touchend\",e,{passive:!1}),function(){t.removeEventListener(\"mouseup\",e),t.removeEventListener(\"touchend\",e)}}},l=[a,r,o],s[0]=o,s[1]=r,s[2]=a,s[3]=i,s[4]=l):(i=s[3],l=s[4]),x.useEffect(i,l),x.useEffect(function(){var e=function(){C(document.hasFocus()?\"dialog\":void 0)};if(null!=y.current)return window.addEventListener(\"focus\",e),window.addEventListener(\"blur\",e),function(){window.removeEventListener(\"focus\",e),window.removeEventListener(\"blur\",e)}},[]),x.useEffect(function(){var e,t,n=y.current,r=null==n?void 0:n.getRootNode(),o=(e=r,null!=(t=ShadowRoot)&&\"undefined\"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t)?null==r?void 0:r.activeElement:null;return null==n||n.focus(),function(){null==n||n.blur(),null==o||o.focus()}},[]),(0,b.jsx)(\"div\",(c=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"onClose\",\"footer\"]),r=e.children,a=e.onClose,o=e.footer,c[0]=e,c[1]=r,c[2]=o,c[3]=a,c[4]=i):(r=c[1],o=c[2],a=c[3],i=c[4]),c[5]!==r||c[6]!==a||c[7]!==i)?(l=(0,b.jsx)(t$,(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"className\",\"children\"]),o=e.className,r=e.children,s[0]=e,s[1]=r,s[2]=o,s[3]=a):(r=s[1],o=s[2],a=s[3]),s[4]===Symbol.for(\"react.memo_cache_sentinel\")?(i=[],s[4]=i):i=s[4],x.useEffect(t0,i),s[5]!==r||s[6]!==o||s[7]!==a)?(l=(0,b.jsx)(\"div\",(t=function(e){for(var t=1;t0)){var e=window.innerWidth-document.documentElement.clientWidth;e>0&&(t=document.body.style.paddingRight,document.body.style.paddingRight=\"\".concat(e,\"px\")),n=document.body.style.overflow,document.body.style.overflow=\"hidden\"}}),tJ}function t1(){var e,t,n=(e=[\"\\n [data-nextjs-dialog-overlay] {\\n padding: initial;\\n top: 10vh;\\n }\\n\"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return t1=function(){return n},n}function t2(e){var t,n,r,o,a,i=(0,A.c)(6);return(i[0]!==e?(o=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\"]),r=e.children,i[0]=e,i[1]=r,i[2]=o):(r=i[1],o=i[2]),i[3]!==r||i[4]!==o)?(a=(0,b.jsx)(tQ,(t=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.current.getBoundingClientRect().left-10&&n.clientX<=e.current.getBoundingClientRect().right+10&&n.clientY>=e.current.getBoundingClientRect().top-10&&n.clientY<=e.current.getBoundingClientRect().bottom+10||null!=(a=t.current)&&a.getBoundingClientRect()&&n.clientX>=t.current.getBoundingClientRect().left-10&&n.clientX<=t.current.getBoundingClientRect().right+10&&n.clientY>=t.current.getBoundingClientRect().top-10&&n.clientY<=t.current.getBoundingClientRect().bottom+10||r(\"outside\"))},s=function(e){\"Escape\"===e.key&&r(\"escape\")};return null==i||i.addEventListener(\"mousedown\",l),null==i||i.addEventListener(\"keydown\",s),function(){null==i||i.removeEventListener(\"mousedown\",l),null==i||i.removeEventListener(\"keydown\",s)}}},i=[n,r,o,e,t],l[0]=n,l[1]=r,l[2]=o,l[3]=e,l[4]=t,l[5]=a,l[6]=i):(a=l[5],i=l[6]),(0,x.useEffect)(a,i)}var t7=\"cubic-bezier(0.175, 0.885, 0.32, 1.1)\",ne=(0,x.forwardRef)(function(e,t){var n,r,o=(0,A.c)(9),a=e.stop,i=e.blur,l=e.side,s=e.style,c=e.height,u=\"\".concat(c,\"px\");o[0]!==i||o[1]!==a||o[2]!==s||o[3]!==u?(n=function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"measure\"]),g=e.children,y=e.measure,k[0]=e,k[1]=g,k[2]=y,k[3]=v):(g=k[1],y=k[2],v=k[3]);var E=nn((0,x.useState)(null),2),j=E[0],S=E[1],O=nn((n=j,r=y,l=(0,A.c)(7),c=(s=nn((0,x.useState)(0),2))[0],u=s[1],f=(d=nn((0,x.useState)(!0),2))[0],p=d[1],l[0]!==n||l[1]!==r?(o=function(){if(r&&n){var e,t=new ResizeObserver(function(t){var n=nn(t,1)[0].contentRect;clearTimeout(e),e=window.setTimeout(function(){p(!1)},100),u(n.height)});return t.observe(n),function(){return t.disconnect()}}},a=[r,n],l[0]=n,l[1]=r,l[2]=o,l[3]=a):(o=l[2],a=l[3]),(0,x.useEffect)(o,a),l[4]!==c||l[5]!==f?(i=[c,f],l[4]=c,l[5]=f,l[6]=i):i=l[6],i),2),B=O[0],P=O[1]?\"auto\":B;return(k[4]!==P?(w={height:P,transition:\"height 250ms var(--timing-swift)\"},k[4]=P,k[5]=w):w=k[5],k[6]!==g?(C=(0,b.jsx)(\"div\",{ref:S,children:g}),k[6]=g,k[7]=C):C=k[7],k[8]!==v||k[9]!==t||k[10]!==w||k[11]!==C)?(_=(0,b.jsx)(\"div\",(h=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"fixed\"]),t=e.fixed,o[0]=e,o[1]=t,o[2]=n):(t=o[1],n=o[2]);var a=!!t||void 0;return o[3]!==n||o[4]!==a?(r=(0,b.jsx)(\"div\",function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=Array(t);n h1 {\\n font-size: var(--size-20);\\n line-height: var(--size-24);\\n font-weight: bold;\\n margin: calc(16px * 1.5) 0;\\n color: var(--color-title-h1);\\n }\\n .nextjs-container-errors-header small {\\n font-size: var(--size-14);\\n color: var(--color-accents-1);\\n margin-left: 16px;\\n }\\n .nextjs-container-errors-header small > span {\\n font-family: var(--font-stack-monospace);\\n }\\n .nextjs-container-errors-header > div > small {\\n margin: 0;\\n margin-top: 4px;\\n }\\n .nextjs-container-errors-header > p > a {\\n color: inherit;\\n font-weight: bold;\\n }\\n .nextjs-container-errors-header\\n > .nextjs-container-build-error-version-status {\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n }\\n\",\"\\n \").concat(\"\",\"\\n\\n \").concat(\"\\n [data-nextjs-error-overlay-nav] {\\n --stroke-color: var(--color-gray-400);\\n --background-color: var(--color-background-100);\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n\\n width: 100%;\\n\\n position: relative;\\n z-index: 2;\\n outline: none;\\n translate: var(--next-dialog-border-width) var(--next-dialog-border-width);\\n max-width: var(--next-dialog-max-width);\\n\\n .error-overlay-notch {\\n translate: calc(var(--next-dialog-border-width) * -1);\\n width: auto;\\n height: var(--next-dialog-notch-height);\\n padding: 12px;\\n background: var(--background-color);\\n border: var(--next-dialog-border-width) solid var(--stroke-color);\\n border-bottom: none;\\n position: relative;\\n\\n &[data-side='left'] {\\n padding-right: 0;\\n border-radius: var(--next-dialog-radius) 0 0 0;\\n\\n .error-overlay-notch-tail {\\n right: -54px;\\n }\\n\\n > *:not(.error-overlay-notch-tail) {\\n margin-right: -10px;\\n }\\n }\\n\\n &[data-side='right'] {\\n padding-left: 0;\\n border-radius: 0 var(--next-dialog-radius) 0 0;\\n\\n .error-overlay-notch-tail {\\n left: -54px;\\n transform: rotateY(180deg);\\n }\\n\\n > *:not(.error-overlay-notch-tail) {\\n margin-left: -12px;\\n }\\n }\\n\\n .error-overlay-notch-tail {\\n position: absolute;\\n top: calc(var(--next-dialog-border-width) * -1);\\n pointer-events: none;\\n z-index: -1;\\n height: calc(100% + var(--next-dialog-border-width));\\n }\\n }\\n }\\n\\n @media (max-width: 600px) {\\n [data-nextjs-error-overlay-nav] {\\n background: var(--background-color);\\n border-radius: var(--next-dialog-radius) var(--next-dialog-radius) 0 0;\\n border: var(--next-dialog-border-width) solid var(--stroke-color);\\n border-bottom: none;\\n overflow: hidden;\\n translate: 0 var(--next-dialog-border-width);\\n \\n .error-overlay-notch {\\n border-radius: 0;\\n border: 0;\\n\\n &[data-side=\\\"left\\\"], &[data-side=\\\"right\\\"] {\\n border-radius: 0;\\n }\\n\\n .error-overlay-notch-tail {\\n display: none;\\n }\\n }\\n }\\n }\\n\",\"\\n \").concat(\"\\n .nextjs__container_errors_label {\\n padding: 2px 6px;\\n margin: 0;\\n border-radius: var(--rounded-md-2);\\n background: var(--color-red-100);\\n font-weight: 600;\\n font-size: var(--size-12);\\n color: var(--color-red-900);\\n font-family: var(--font-stack-monospace);\\n line-height: var(--size-20);\\n }\\n\",\"\\n \").concat(\"\\n .nextjs__container_errors_wrapper {\\n position: relative;\\n }\\n\\n .nextjs__container_errors_desc {\\n margin: 0;\\n margin-left: 4px;\\n color: var(--color-red-900);\\n font-weight: 500;\\n font-size: var(--size-16);\\n letter-spacing: -0.32px;\\n line-height: var(--size-24);\\n overflow-wrap: break-word;\\n white-space: pre-wrap;\\n }\\n\\n .nextjs__container_errors_desc.truncated {\\n max-height: 200px;\\n overflow: hidden;\\n }\\n\\n .nextjs__container_errors_gradient_overlay {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n height: 85px;\\n background: linear-gradient(\\n 180deg,\\n rgba(250, 250, 250, 0) 0%,\\n var(--color-background-100) 100%\\n );\\n }\\n\\n .nextjs__container_errors_expand_button {\\n position: absolute;\\n bottom: 10px;\\n left: 50%;\\n transform: translateX(-50%);\\n display: flex;\\n align-items: center;\\n padding: 6px 8px;\\n background: var(--color-background-100);\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: 999px;\\n box-shadow:\\n 0px 2px 2px var(--color-gray-alpha-100),\\n 0px 8px 8px -8px var(--color-gray-alpha-100);\\n font-size: var(--size-13);\\n cursor: pointer;\\n color: var(--color-gray-900);\\n font-weight: 500;\\n transition: background-color 0.2s ease;\\n }\\n\\n .nextjs__container_errors_expand_button:hover {\\n background: var(--color-gray-100);\\n }\\n\",\"\\n \").concat(\"\\n .error-overlay-toolbar {\\n display: flex;\\n gap: 6px;\\n }\\n\\n .nodejs-inspector-button,\\n .copy-error-button,\\n .docs-link-button {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n\\n width: var(--size-28);\\n height: var(--size-28);\\n background: var(--color-background-100);\\n background-clip: padding-box;\\n border: 1px solid var(--color-gray-alpha-400);\\n box-shadow: var(--shadow-small);\\n border-radius: var(--rounded-full);\\n\\n svg {\\n width: var(--size-14);\\n height: var(--size-14);\\n }\\n\\n &:focus {\\n outline: var(--focus-ring);\\n }\\n\\n &:not(:disabled):hover {\\n background: var(--color-gray-alpha-100);\\n }\\n\\n &:not(:disabled):active {\\n background: var(--color-gray-alpha-200);\\n }\\n\\n &:disabled {\\n background-color: var(--color-gray-100);\\n cursor: not-allowed;\\n }\\n }\\n\\n .error-overlay-toolbar-button-icon {\\n color: var(--color-gray-900);\\n }\\n\",\"\\n\\n [data-nextjs-error-label-group] {\\n display: flex;\\n align-items: center;\\n gap: 8px;\\n }\\n\");function nd(){var e,t,n=(e=[\"\\n [data-nextjs-dialog-overlay] {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n /* secondary z-index, -1 than toast z-index */\\n z-index: 2147483646;\\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 backdrop-filter: blur(10px);\\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||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return nd=function(){return n},n}var nf=es(nd());function np(e){var t,n,r,o,a,i=(0,A.c)(9),l=e.file,s=e.location,c=null!=(t=null==s?void 0:s.line)?t:1,u=null!=(n=null==s?void 0:s.column)?n:1;i[0]!==l||i[1]!==c||i[2]!==u?(r={file:l,line1:c,column1:u},i[0]=l,i[1]=c,i[2]=u,i[3]=r):r=i[3];var d=eS(r),f=s?\":\".concat(s.line,\":\").concat(s.column):null;return i[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o=(0,b.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,b.jsx)(\"path\",{d:\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"}),(0,b.jsx)(\"polyline\",{points:\"15 3 21 3 21 9\"}),(0,b.jsx)(\"line\",{x1:\"10\",y1:\"14\",x2:\"21\",y2:\"3\"})]}),i[4]=o):o=i[4],i[5]!==l||i[6]!==d||i[7]!==f?(a=(0,b.jsxs)(\"div\",{\"data-with-open-in-editor-link\":!0,\"data-with-open-in-editor-link-import-trace\":!0,role:\"link\",onClick:d,title:\"Click to open in your editor\",children:[l,f,o]}),i[5]=l,i[6]=d,i[7]=f,i[8]=a):a=i[8],a}function nh(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"message\"]),r=e.message,d[0]=e,d[1]=r,d[2]=o):(r=d[1],o=d[2]),d[3]!==r?(a=Error(r),d[3]=r,d[4]=a):a=d[4];var f=a;d[5]!==r?(l=ng(r)||\"Failed to compile\",d[5]=r,d[6]=l):l=d[6],i=l,d[7]!==i||d[8]!==r||d[9]!==o.versionInfo.installed?(s=function(){var e=[];if(e.push(\"## Error Type\\nBuild Error\"),i&&e.push(\"## Error Message\\n\".concat(i)),r){var t=eq()(r);e.push(\"## Build Output\\n\".concat(t))}return\"\".concat(e.join(\"\\n\\n\"),\"\\n\\nNext.js version: \").concat(o.versionInfo.installed,\" (\").concat(\"Webpack\",\")\\n\")},d[7]=i,d[8]=r,d[9]=o.versionInfo.installed,d[10]=s):s=d[10];var p=s;return(d[11]!==r?(c=(0,b.jsx)(nm,{content:r}),d[11]=r,d[12]=c):c=d[12],d[13]!==f||d[14]!==i||d[15]!==p||d[16]!==o||d[17]!==c)?(u=(0,b.jsx)(nc,(t=function(e){for(var t=1;t0&&(0,b.jsxs)(\"button\",{\"data-nextjs-call-stack-ignored-list-toggle-button\":c,onClick:d,children:[\"\".concat(c?\"Hide\":\"Show\",\" \").concat(u,\" ignore-listed frame(s)\"),(0,b.jsx)(nA,{})]}),l[2]=u,l[3]=c,l[4]=d,l[5]=n):n=l[5],l[6]!==t||l[7]!==n?(r=(0,b.jsxs)(\"div\",{\"data-nextjs-call-stack-header\":!0,children:[t,n]}),l[6]=t,l[7]=n,l[8]=r):r=l[8],l[9]!==s||l[10]!==c?(l[12]!==c?(a=function(e,t){return!e.ignored||c?(0,b.jsx)(nb,{frame:e},t):null},l[12]=c,l[13]=a):a=l[13],o=s.map(a),l[9]=s,l[10]=c,l[11]=o):o=l[11],l[14]!==r||l[15]!==o?(i=(0,b.jsxs)(\"div\",{\"data-nextjs-call-stack-container\":!0,children:[r,o]}),l[14]=r,l[15]=o,l[16]=i):i=l[16],i}var nC=es(nx());function n_(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n\"===e[0],l=a||i,s=l?e[0]:\"\",c=l?e.indexOf(s):-1,u=nS(l?[e.slice(0,c),e.slice(c+1)]:[e,\"\"],2),d=u[0],f=u[1];a?n.push((0,b.jsx)(\"span\",{\"data-nextjs-container-errors-pseudo-html-line\":!0,\"data-nextjs-container-errors-pseudo-html--diff\":\"+\"===s?\"add\":\"remove\",children:(0,b.jsxs)(\"span\",{children:[d,(0,b.jsx)(\"span\",{\"data-nextjs-container-errors-pseudo-html-line-sign\":!0,children:s}),f,\"\\n\"]})},\"comp-diff\"+t)):n.push((0,b.jsxs)(\"span\",(r=function(e){for(var t=1;t0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]0&&(0,b.jsx)(nk,{dialogResizerRef:s,frames:c}),i[2]=s,i[3]=c,i[4]=o):o=i[4],i[5]!==r||i[6]!==o?(a=(0,b.jsxs)(b.Fragment,{children:[r,o]}),i[5]=r,i[6]=o,i[7]=a):a=i[7],a}function nM(e){return!e.ignored&&!!e.originalCodeFrame&&!!e.originalStackFrame}var nZ=\"\\n \".concat(\"\\n [data-nextjs-container-errors-pseudo-html] {\\n padding: 8px 0;\\n margin: 8px 0;\\n border: 1px solid var(--color-gray-400);\\n background: var(--color-background-200);\\n color: var(--color-syntax-constant);\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-12);\\n line-height: 1.33em; /* 16px in 12px font size */\\n border-radius: var(--rounded-md-2);\\n }\\n [data-nextjs-container-errors-pseudo-html-line] {\\n display: inline-block;\\n width: 100%;\\n padding-left: 40px;\\n line-height: calc(5 / 3);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='error'] {\\n background: var(--color-amber-100);\\n box-shadow: 2px 0 0 0 var(--color-amber-900) inset;\\n font-weight: bold;\\n }\\n [data-nextjs-container-errors-pseudo-html-collapse-button] {\\n all: unset;\\n margin-left: 12px;\\n &:focus {\\n outline: none;\\n }\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='add'] {\\n background: var(--color-green-300);\\n }\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n margin-left: calc(24px * -1);\\n margin-right: 24px;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='add']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-green-900);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='remove'] {\\n background: var(--color-red-300);\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='remove']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-red-900);\\n margin-left: calc(24px * -1);\\n margin-right: 24px;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff='error']\\n [data-nextjs-container-errors-pseudo-html-line-sign] {\\n color: var(--color-amber-900);\\n }\\n \\n [data-nextjs-container-errors-pseudo-html--hint] {\\n display: inline-block;\\n font-size: 0;\\n height: 0;\\n }\\n [data-nextjs-container-errors-pseudo-html--tag-adjacent='false'] {\\n color: var(--color-accents-1);\\n }\\n .nextjs__container_errors__component-stack {\\n margin: 0;\\n }\\n [data-nextjs-container-errors-pseudo-html-collapse='true']\\n .nextjs__container_errors__component-stack\\n code {\\n max-height: 120px;\\n mask-image: linear-gradient(to bottom,rgba(0,0,0,0) 0%,black 10%);\\n padding-bottom: 40px;\\n }\\n .nextjs__container_errors__component-stack code {\\n display: block;\\n width: 100%;\\n white-space: pre-wrap;\\n scroll-snap-type: y mandatory;\\n overflow-y: hidden;\\n }\\n [data-nextjs-container-errors-pseudo-html--diff] {\\n scroll-snap-align: center;\\n }\\n .error-overlay-hydration-error-diff-plus-icon {\\n color: var(--color-green-900);\\n }\\n .error-overlay-hydration-error-diff-minus-icon {\\n color: var(--color-red-900);\\n }\\n\",\"\\n\");function nU(e){return e&&\"undefined\"!=typeof Symbol&&e.constructor===Symbol?\"symbol\":typeof e}function nF(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"getSquashedHydrationErrorDetails\",\"runtimeErrors\",\"debugInfo\",\"onClose\"]),s=(0,x.useRef)(null),c=function(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m=(0,A.c)(17),g=e.runtimeErrors,y=e.getSquashedHydrationErrorDetails,v=(a=(0,x.useState)(0),i=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(a,2)||function(e,t){if(e){if(\"string\"==typeof e)return nF(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return nF(e,t)}}(a,i)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),b=v[0],w=v[1];s=0===g.length;var C=(t=null==(c=null!=(u=g[b])?u:null)?void 0:c.error,n=y,(0,x.useMemo)(function(){if(void 0===t)return n$;var e,r,o,a=n(t);if(null!==a)return{hydrationWarning:null!=(r=a.warning)?r:null,notes:null,reactOutputComponentDiff:null!=(o=a.reactOutputComponentDiff)?o:null};if(!(tg((e=t).message)||/Hydration failed because the server rendered (text|HTML) didn't match the client\\./.test(e.message)||/A tree hydrated but some attributes of the server rendered HTML didn't match the client properties./.test(e.message)))return n$;var i=function(e){var t=e.message;if(tg(t)){var n=tu(t.split(\"\\n\\n\"),2),r=n[0],o=n[1],a=(void 0===o?\"\":o).trim();return{message:\"\"===a?t.trim():r.trim(),diff:a,notes:null}}var i=tu(t.split(\"\".concat(tp)),2),l=i[0],s=i[1],c=l.trim();if(void 0!==s&&s.length>1){var u=[];s.split(\"\\n\").forEach(function(e){\"\"!==e.trim()&&(e.trim().startsWith(\"at \")||u.push(e))});var d=td(c.split(\"\\n\\n\")),f=d[0],p=d.slice(1);return{message:f,diff:u.join(\"\\n\"),notes:p.join(\"\\n\\n\")||null}}var h=td(c.split(\"\\n\\n\"));return{message:h[0],diff:null,notes:h.slice(1).join(\"\\n\\n\")}}(t),l=i.message,s=i.notes,c=i.diff;return null===l?n$:{hydrationWarning:l,notes:s,reactOutputComponentDiff:c}},[t,n]));if(s||!c)return m[0]!==b||m[1]!==s?(d={isLoading:s,activeIdx:b,setActiveIndex:w,activeError:null,errorDetails:null,errorCode:null,errorType:null,notes:null,hydrationWarning:null},m[0]=b,m[1]=s,m[2]=d):d=m[2],d;var _=c.error;m[3]!==_?(f=(void 0===(l=_)?\"undefined\":nU(l))===\"object\"&&null!==l&&\"__NEXT_ERROR_CODE\"in l&&\"string\"==typeof l.__NEXT_ERROR_CODE?l.__NEXT_ERROR_CODE:(void 0===l?\"undefined\":nU(l))===\"object\"&&null!==l&&\"digest\"in l&&\"string\"==typeof l.digest?l.digest.split(\"@\").find(function(e){return e.startsWith(\"E\")}):void 0,m[3]=_,m[4]=f):f=m[4];var k=f;m[5]!==c.type||m[6]!==_?(r=_,p=\"recoverable\"===(o=c.type)?\"Recoverable \".concat(r.name):\"console\"===o?\"Console \".concat(r.name):\"Runtime \".concat(r.name),m[5]=c.type,m[6]=_,m[7]=p):p=m[7];var E=p,j=C.notes,S=C.hydrationWarning;return m[8]!==c||m[9]!==b||m[10]!==k||m[11]!==C||m[12]!==E||m[13]!==S||m[14]!==s||m[15]!==j?(h={isLoading:s,activeIdx:b,setActiveIndex:w,activeError:c,errorDetails:C,errorCode:k,errorType:E,notes:j,hydrationWarning:S},m[8]=c,m[9]=b,m[10]=k,m[11]=C,m[12]=E,m[13]=S,m[14]=s,m[15]=j,m[16]=h):h=m[16],h}({runtimeErrors:o,getSquashedHydrationErrorDetails:r}),u=c.isLoading,d=c.errorCode,f=c.errorType,p=c.notes,h=c.hydrationWarning,m=c.activeIdx,g=c.errorDetails,y=c.activeError,v=c.setActiveIndex,w=nN(y),C=(0,x.useMemo)(function(){var e,t=w.findIndex(function(e){return!e.ignored&&!!e.originalCodeFrame&&!!e.originalStackFrame});return null!=(e=w[t])?e:null},[w]),_=(0,x.useCallback)(function(){if(!y)return\"\";var e=[];f&&e.push(\"## Error Type\\n\".concat(f));var t=y.error,n=t.message;if(\"environmentName\"in t&&t.environmentName){var r=\"[ \".concat(t.environmentName,\" ] \");n.startsWith(r)&&(n=n.slice(r.length))}if(n&&e.push(\"## Error Message\\n\".concat(n)),w.length>0){var o=w.filter(function(e){return!e.ignored});if(o.length>0){var a=o.map(function(e){if(e.originalStackFrame){var t=e.originalStackFrame,n=t.methodName,r=t.file,o=t.line1,a=t.column1;return\" at \".concat(n,\" (\").concat(r,\":\").concat(o,\":\").concat(a,\")\")}if(e.sourceStackFrame){var i=e.sourceStackFrame,l=i.methodName,s=i.file,c=i.line1,u=i.column1;return\" at \".concat(l,\" (\").concat(s,\":\").concat(c,\":\").concat(u,\")\")}return\"\"}).filter(Boolean);a.length>0&&e.push(\"\\n\".concat(a.join(\"\\n\")))}}if(null==C?void 0:C.originalCodeFrame){var i=eq()(eH(C.originalCodeFrame));e.push(\"## Code Frame\\n\".concat(i))}return\"\".concat(e.join(\"\\n\\n\"),\"\\n\\nNext.js version: \").concat(l.versionInfo.installed,\" (\").concat(\"Webpack\",\")\\n\")},[y,f,C,w,l.versionInfo]);if(u)return(0,b.jsx)(tQ,{children:(0,b.jsx)(no,{})});if(!y)return null;var k=y.error,E=[\"server\",\"edge-server\"].includes(nP(k)||\"\");return(0,b.jsxs)(nc,(t=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function nQ(e){var t,n,r,o,a,i,l=(0,A.c)(10);l[0]!==e?(t=nG(e,[\"routerType\"]),n=e.routerType,l[0]=e,l[1]=t,l[2]=n):(t=l[1],n=l[2]),l[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"The path\",\" \",(0,b.jsx)(\"code\",{className:\"dev-tools-info-code\",children:window.location.pathname}),\" \",'is marked as \"static\" since it will be prerendered during the build time.']}),l[3]=r):r=l[3];var s=\"pages\"===n?\"https://nextjs.org/docs/pages/building-your-application/data-fetching/incremental-static-regeneration\":\"https://nextjs.org/docs/app/building-your-application/data-fetching/incremental-static-regeneration\";return l[4]!==s?(o=(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"With Static Rendering, routes are rendered at build time, or in the background after\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:s,target:\"_blank\",rel:\"noopener noreferrer\",children:\"data revalidation\"}),\".\"]}),l[4]=s,l[5]=o):o=l[5],l[6]===Symbol.for(\"react.memo_cache_sentinel\")?(a=(0,b.jsx)(\"p\",{className:\"dev-tools-info-paragraph\",children:\"Static rendering is useful when a route has data that is not personalized to the user and can be known at build time, such as a static blog post or a product page.\"}),l[6]=a):a=l[6],l[7]!==t||l[8]!==o?(i=(0,b.jsxs)(\"article\",nX(nK({className:\"dev-tools-info-article\"},t),{children:[r,o,a]})),l[7]=t,l[8]=o,l[9]=i):i=l[9],i}function nJ(e){var t,n,r,o,a,i,l,s=(0,A.c)(11);return s[0]!==e?(t=nG(e,[\"routerType\"]),n=e.routerType,s[0]=e,s[1]=t,s[2]=n):(t=s[1],n=s[2]),s[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r=(0,b.jsx)(\"code\",{className:\"dev-tools-info-code\",children:window.location.pathname}),s[3]=r):r=s[3],s[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o=(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"The path\",\" \",r,\" \",'is marked as \"dynamic\" since it will be rendered for each user at',\" \",(0,b.jsx)(\"strong\",{children:\"request time\"}),\".\"]}),a=(0,b.jsx)(\"p\",{className:\"dev-tools-info-paragraph\",children:\"Dynamic rendering is useful when a route has data that is personalized to the user or has information that can only be known at request time, such as cookies or the URL's search params.\"}),s[4]=o,s[5]=a):(o=s[4],a=s[5]),s[6]!==n?(i=\"pages\"===n?(0,b.jsxs)(\"p\",{className:\"dev-tools-info-pagraph\",children:[\"Exporting the\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"getServerSideProps\"}),\" \",\"function will opt the route into dynamic rendering. This function will be called by the server on every request.\"]}):(0,b.jsxs)(\"p\",{className:\"dev-tools-info-paragraph\",children:[\"During rendering, if a\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#dynamic-apis\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"Dynamic API\"}),\" \",\"or a\",\" \",(0,b.jsx)(\"a\",{className:\"dev-tools-info-link\",href:\"https://nextjs.org/docs/app/api-reference/functions/fetch\",target:\"_blank\",rel:\"noopener noreferrer\",children:\"fetch\"}),\" \",\"option of\",\" \",(0,b.jsx)(\"code\",{className:\"dev-tools-info-code\",children:\"{ cache: 'no-store' }\"}),\" \",\"is discovered, Next.js will switch to dynamically rendering the whole route.\"]}),s[6]=n,s[7]=i):i=s[7],s[8]!==t||s[9]!==i?(l=(0,b.jsxs)(\"article\",nX(nK({className:\"dev-tools-info-article\"},t),{children:[o,a,i]})),s[8]=t,s[9]=i,s[10]=l):l=s[10],l}var n0={pages:{static:\"https://nextjs.org/docs/pages/building-your-application/rendering/static-site-generation\",dynamic:\"https://nextjs.org/docs/pages/building-your-application/rendering/server-side-rendering\"},app:{static:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#static-rendering-default\",dynamic:\"https://nextjs.org/docs/app/building-your-application/rendering/server-components#dynamic-rendering\"}};function n1(e){var t,n,r,o,a=(0,A.c)(8);return a[0]!==e?(n=nG(e,[\"routerType\",\"isStaticRoute\"]),r=e.routerType,t=e.isStaticRoute,a[0]=e,a[1]=t,a[2]=n,a[3]=r):(t=a[1],n=a[2],r=a[3]),a[4]!==t||a[5]!==n||a[6]!==r?(o=t?(0,b.jsx)(nQ,nK({routerType:r},n)):(0,b.jsx)(nJ,nK({routerType:r},n)),a[4]=t,a[5]=n,a[6]=r,a[7]=o):o=a[7],o}function n2(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",fill:\"none\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"m.191 2.063.56.498 13.5 12 .561.498.997-1.121-.56-.498-1.81-1.608 2.88-3.342v-.98l-3.204-3.72C10.645.923 6.365.686 3.594 3.08L1.748 1.44 1.188.94.19 2.063ZM14.761 8l-2.442 2.836-1.65-1.466a3.001 3.001 0 0 0-4.342-3.86l-1.6-1.422a5.253 5.253 0 0 1 7.251.682L14.76 8ZM7.526 6.576l1.942 1.727a1.499 1.499 0 0 0-1.942-1.727Zm-7.845.935 1.722-2 1.137.979L1.24 8l2.782 3.23A5.25 5.25 0 0 0 9.9 12.703l.54 1.4a6.751 6.751 0 0 1-7.555-1.892L-.318 8.49v-.98Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}function n4(){var e,t,n=(0,A.c)(2);return n[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"g\",{clipPath:\"url(#light_icon_clip_path)\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"M8.75.75V0h-1.5v2h1.5V.75ZM3.26 4.32l-.53-.53-.354-.353-.53-.53 1.06-1.061.53.53.354.354.53.53-1.06 1.06Zm8.42-1.06.53-.53.353-.354.53-.53 1.061 1.06-.53.53-.354.354-.53.53-1.06-1.06ZM8 11.25a3.25 3.25 0 1 0 0-6.5 3.25 3.25 0 0 0 0 6.5Zm0 1.5a4.75 4.75 0 1 0 0-9.5 4.75 4.75 0 0 0 0 9.5Zm6-5.5h2v1.5h-2v-1.5Zm-13.25 0H0v1.5h2v-1.5H.75Zm1.62 5.32-.53.53 1.06 1.06.53-.53.354-.353.53-.53-1.06-1.061-.53.53-.354.354Zm10.2 1.06.53.53 1.06-1.06-.53-.53-.354-.354-.53-.53-1.06 1.06.53.53.353.354ZM8.75 14v2h-1.5v-2h1.5Z\",clipRule:\"evenodd\"})}),n[0]=e):e=n[0],n[1]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"20\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",children:[e,(0,b.jsx)(\"defs\",{children:(0,b.jsx)(\"clipPath\",{id:\"light_icon_clip_path\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",d:\"M0 0h16v16H0z\"})})})]}),n[1]=t):t=n[1],t}function n5(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{\"data-testid\":\"geist-icon\",height:\"16\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",width:\"16\",children:(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M1.5 8.00005C1.5 5.53089 2.99198 3.40932 5.12349 2.48889C4.88136 3.19858 4.75 3.95936 4.75 4.7501C4.75 8.61609 7.88401 11.7501 11.75 11.7501C11.8995 11.7501 12.048 11.7454 12.1953 11.7361C11.0955 13.1164 9.40047 14.0001 7.5 14.0001C4.18629 14.0001 1.5 11.3138 1.5 8.00005ZM6.41706 0.577759C2.78784 1.1031 0 4.22536 0 8.00005C0 12.1422 3.35786 15.5001 7.5 15.5001C10.5798 15.5001 13.2244 13.6438 14.3792 10.9921L13.4588 9.9797C12.9218 10.155 12.3478 10.2501 11.75 10.2501C8.71243 10.2501 6.25 7.78767 6.25 4.7501C6.25 3.63431 6.58146 2.59823 7.15111 1.73217L6.41706 0.577759ZM13.25 1V1.75V2.75L14.25 2.75H15V4.25H14.25H13.25V5.25V6H11.75V5.25V4.25H10.75L10 4.25V2.75H10.75L11.75 2.75V1.75V1H13.25Z\",fill:\"currentColor\"})}),t[0]=e):e=t[0],e}function n3(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{width:\"16\",height:\"16\",strokeLinejoin:\"round\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"M0 2a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v8.5a1 1 0 0 1-1 1H8.75v3h1.75V16h-5v-1.5h1.75v-3H1a1 1 0 0 1-1-1V2Zm1.5.5V10h13V2.5h-13Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}function n6(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n0;h[2]!==g||h[3]!==v||h[4]!==_?(n=function(e){if(e.target===z.current&&\"Tab\"!==e.key){I.current&&clearTimeout(I.current),_||k(!0),v&&(S([]),w(!1));var t=function(e){I.current=window.setTimeout(function(){P(!0),g(e.join(\"+\")),I.current=window.setTimeout(function(){k(!1)},1e3)},180)};e.preventDefault(),e.stopPropagation(),S(function(n){if(n.includes(e.code)||n.includes(e.key))return n;if(!rt.includes(e.key)){var r=n.findIndex(ra);if(-1!==r){var o=n8(n);return o[r]=e.code,t(o),o}var a=n8(n).concat([e.code]);return t(a),a}for(var i=n8(n),l=rt.indexOf(e.key),s=0,c=0;c1,a[0]=e):e=a[0];var c=e;return a[1]===Symbol.for(\"react.memo_cache_sentinel\")?(t=function(){!0===c&&s(\"⌘\"),!1===c&&s(\"Ctrl\")},n=[c],a[1]=t,a[2]=n):(t=a[1],n=a[2]),(0,x.useEffect)(t,n),a[3]===Symbol.for(\"react.memo_cache_sentinel\")?(r={minWidth:\"1em\",display:\"inline-block\"},a[3]=r):r=a[3],a[4]!==l?(o=(0,b.jsx)(\"span\",{style:r,children:l}),a[4]=l,a[5]=o):o=a[5],o}function rc(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{height:\"16\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",width:\"16\",children:(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M12.4697 13.5303L13 14.0607L14.0607 13L13.5303 12.4697L9.06065 7.99999L13.5303 3.53032L14.0607 2.99999L13 1.93933L12.4697 2.46966L7.99999 6.93933L3.53032 2.46966L2.99999 1.93933L1.93933 2.99999L2.46966 3.53032L6.93933 7.99999L2.46966 12.4697L1.93933 13L2.99999 14.0607L3.53032 13.5303L7.99999 9.06065L12.4697 13.5303Z\",fill:\"currentColor\"})}),t[0]=e):e=t[0],e}var ru=es(re());function rd(e){return\"undefined\"!=typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}function rf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"prefix\"]),r=e.children,o=e.prefix,c[0]=e,c[1]=r,c[2]=o,c[3]=a):(r=c[1],o=c[2],a=c[3]),c[4]!==r||c[5]!==a)?(i=(0,b.jsx)(\"select\",(t=function(e){for(var t=1;t span { \\n position: relative;\\n z-index: 1;\\n }\\n\\n &::after {\\n content: \"\";\\n width: calc(100% + var(--code-frame-padding) * 2);\\n height: var(--code-frame-line-height);\\n left: calc(-1 * var(--code-frame-padding));\\n background: var(--color-red-200);\\n box-shadow: 2px 0 0 0 var(--color-red-900) inset;\\n position: absolute;\\n }\\n }\\n\\n\\n [data-nextjs-codeframe] > * {\\n margin: 0;\\n }\\n\\n .code-frame-link {\\n display: flex;\\n margin: 0;\\n outline: 0;\\n }\\n .code-frame-link [data-icon=\\'right\\'] {\\n margin-left: auto;\\n }\\n\\n [data-nextjs-codeframe] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\\n [data-nextjs-codeframe] svg {\\n color: var(--color-gray-900);\\n }\\n',\"\\n [data-nextjs-terminal]::selection,\\n [data-nextjs-terminal] *::selection {\\n background-color: var(--color-ansi-selection);\\n }\\n\\n [data-nextjs-terminal] * {\\n color: inherit;\\n background-color: transparent;\\n font-family: var(--font-stack-monospace);\\n }\\n\\n [data-nextjs-terminal] > div > p {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n cursor: pointer;\\n margin: 0;\\n }\\n [data-nextjs-terminal] > div > p:hover {\\n text-decoration: underline dotted;\\n }\\n [data-nextjs-terminal] div > pre {\\n overflow: hidden;\\n display: inline-block;\\n }\\n\",\"\\n [data-with-open-in-editor-link] svg {\\n width: auto;\\n height: var(--size-14);\\n margin-left: 8px;\\n }\\n [data-with-open-in-editor-link] {\\n cursor: pointer;\\n }\\n [data-with-open-in-editor-link]:hover {\\n text-decoration: underline dotted;\\n }\\n [data-with-open-in-editor-link-import-trace] {\\n margin-left: 16px;\\n }\\n\",\"\",\"\\n .nextjs-error-with-static {\\n bottom: calc(16px * 4.5);\\n }\\n p.nextjs__container_errors__link {\\n font-size: var(--size-14);\\n }\\n p.nextjs__container_errors__notes {\\n color: var(--color-stack-notes);\\n font-size: var(--size-14);\\n line-height: 1.5;\\n }\\n .nextjs-container-errors-body > h2:not(:first-child) {\\n margin-top: calc(16px + 8px);\\n }\\n .nextjs-container-errors-body > h2 {\\n color: var(--color-title-color);\\n margin-bottom: 8px;\\n font-size: var(--size-20);\\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: 8px;\\n }\\n .nextjs-toast-hide-button {\\n margin-left: 24px;\\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-hide-button:hover {\\n opacity: 1;\\n }\\n .nextjs__container_errors__error_title {\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n margin-bottom: 14px;\\n }\\n .error-overlay-notes-container {\\n margin: 8px 2px;\\n }\\n .error-overlay-notes-container p {\\n white-space: pre-wrap;\\n }\\n\",nZ,\"\\n .nextjs-container-build-error-version-status {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n gap: 4px;\\n\\n height: var(--size-26);\\n padding: 6px 8px 6px 6px;\\n background: var(--color-background-100);\\n background-clip: padding-box;\\n border: 1px solid var(--color-gray-alpha-400);\\n box-shadow: var(--shadow-small);\\n border-radius: var(--rounded-full);\\n\\n color: var(--color-gray-900);\\n font-size: var(--size-12);\\n font-weight: 500;\\n line-height: var(--size-16);\\n }\\n\\n a.nextjs-container-build-error-version-status {\\n text-decoration: none;\\n color: var(--color-gray-900);\\n\\n &:hover {\\n background: var(--color-gray-100);\\n }\\n\\n &:focus {\\n outline: var(--focus-ring);\\n }\\n }\\n\\n .version-staleness-indicator.fresh {\\n fill: var(--color-green-800);\\n stroke: var(--color-green-300);\\n }\\n .version-staleness-indicator.stale {\\n fill: var(--color-amber-800);\\n stroke: var(--color-amber-300);\\n }\\n .version-staleness-indicator.outdated {\\n fill: var(--color-red-800);\\n stroke: var(--color-red-300);\\n }\\n .version-staleness-indicator.unknown {\\n fill: var(--color-gray-800);\\n stroke: var(--color-gray-300);\\n }\\n\\n .nextjs-container-build-error-version-status > .turbopack-text {\\n background: linear-gradient(\\n to right,\\n var(--color-turbopack-text-red) 0%,\\n var(--color-turbopack-text-blue) 100%\\n );\\n background-clip: text;\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n }\\n\",\"\\n .dev-tools-info-code {\\n background: var(--color-gray-400);\\n color: var(--color-gray-1000);\\n font-family: var(--font-stack-monospace);\\n padding: 2px 4px;\\n margin: 0;\\n font-size: var(--size-13);\\n white-space: break-spaces;\\n border-radius: var(--rounded-md-2);\\n }\\n\\n .dev-tools-info-code-block-container {\\n padding: 6px;\\n }\\n\\n .dev-tools-info-code-block {\\n position: relative;\\n background: var(--color-background-200);\\n border: 1px solid var(--color-gray-alpha-400);\\n border-radius: var(--rounded-md-2);\\n min-width: 326px;\\n }\\n\\n .dev-tools-info-code-block-pre {\\n margin: 0;\\n font-family: var(--font-stack-monospace);\\n font-size: var(--size-12);\\n }\\n\\n .dev-tools-info-copy-button {\\n position: absolute;\\n\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n right: 8px;\\n top: 8px;\\n padding: 4px;\\n height: var(--size-24);\\n width: var(--size-24);\\n border-radius: var(--rounded-md-2);\\n border: 1px solid var(--color-gray-alpha-400);\\n background: var(--color-background-100);\\n }\\n\\n .dev-tools-info-code-block-line {\\n display: block;\\n line-height: 1.5;\\n padding: 0 16px;\\n }\\n\\n .dev-tools-info-code-block-line.dev-tools-info-highlight {\\n border-left: 2px solid var(--color-blue-900);\\n background: var(--color-blue-400);\\n }\\n\\n .dev-tools-info-code-block-json-key {\\n color: var(--color-syntax-keyword);\\n }\\n\\n .dev-tools-info-code-block-json-value {\\n color: var(--color-syntax-link);\\n }\\n\",\"\",rj,'\\n .nextjs-scroll-fader {\\n --blur: 1px;\\n --stop: 25%;\\n --height: 150px;\\n --color-bg: var(--color-background-100);\\n position: absolute;\\n pointer-events: none;\\n user-select: none;\\n width: 100%;\\n height: var(--height);\\n left: 0;\\n backdrop-filter: blur(var(--blur));\\n\\n &[data-side=\"top\"] {\\n top: 0;\\n background: linear-gradient(to top, transparent, var(--color-bg));\\n mask-image: linear-gradient(to bottom, var(--color-bg) var(--stop), transparent);\\n }\\n }\\n',rB,ru)})}function rz(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function r8(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if(\"string\"==typeof e)return r5(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return r5(e,t)}}(e,t)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function r7(){var e,t,n=(e=[\"\\n [data-next-badge-root] {\\n --timing: cubic-bezier(0.23, 0.88, 0.26, 0.92);\\n --duration-long: 250ms;\\n --color-outer-border: #171717;\\n --color-inner-border: hsla(0, 0%, 100%, 0.14);\\n --color-hover-alpha-subtle: hsla(0, 0%, 100%, 0.13);\\n --color-hover-alpha-error: hsla(0, 0%, 100%, 0.2);\\n --color-hover-alpha-error-2: hsla(0, 0%, 100%, 0.25);\\n --mark-size: calc(var(--size) - var(--size-2) * 2);\\n\\n --focus-color: var(--color-blue-800);\\n --focus-ring: 2px solid var(--focus-color);\\n\\n &:has([data-next-badge][data-error='true']) {\\n --focus-color: #fff;\\n }\\n }\\n\\n [data-disabled-icon] {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding-right: 4px;\\n }\\n\\n [data-next-badge] {\\n width: var(--size);\\n height: var(--size);\\n display: flex;\\n align-items: center;\\n position: relative;\\n background: rgba(0, 0, 0, 0.8);\\n box-shadow:\\n 0 0 0 1px var(--color-outer-border),\\n inset 0 0 0 1px var(--color-inner-border),\\n 0px 16px 32px -8px rgba(0, 0, 0, 0.24);\\n backdrop-filter: blur(48px);\\n border-radius: var(--rounded-full);\\n user-select: none;\\n cursor: pointer;\\n scale: 1;\\n overflow: hidden;\\n will-change: scale, box-shadow, width, background;\\n transition:\\n scale var(--duration-short) var(--timing),\\n width var(--duration-long) var(--timing),\\n box-shadow var(--duration-long) var(--timing),\\n background var(--duration-short) ease;\\n\\n &:active[data-error='false'] {\\n scale: 0.95;\\n }\\n\\n &[data-animate='true']:not(:hover) {\\n scale: 1.02;\\n }\\n\\n &[data-error='false']:has([data-next-mark]:focus-visible) {\\n outline: var(--focus-ring);\\n outline-offset: 3px;\\n }\\n\\n &[data-error='true'] {\\n background: #ca2a30;\\n --color-inner-border: #e5484d;\\n\\n [data-next-mark] {\\n background: var(--color-hover-alpha-error);\\n outline-offset: 0px;\\n\\n &:focus-visible {\\n outline: var(--focus-ring);\\n outline-offset: -1px;\\n }\\n\\n &:hover {\\n background: var(--color-hover-alpha-error-2);\\n }\\n }\\n }\\n\\n &[data-error-expanded='false'][data-error='true'] ~ [data-dot] {\\n scale: 1;\\n }\\n\\n > div {\\n display: flex;\\n }\\n }\\n\\n [data-issues-collapse]:focus-visible {\\n outline: var(--focus-ring);\\n }\\n\\n [data-issues]:has([data-issues-open]:focus-visible) {\\n outline: var(--focus-ring);\\n outline-offset: -1px;\\n }\\n\\n [data-dot] {\\n content: '';\\n width: var(--size-8);\\n height: var(--size-8);\\n background: #fff;\\n box-shadow: 0 0 0 1px var(--color-outer-border);\\n border-radius: 50%;\\n position: absolute;\\n top: 2px;\\n right: 0px;\\n scale: 0;\\n pointer-events: none;\\n transition: scale 200ms var(--timing);\\n transition-delay: var(--duration-short);\\n }\\n\\n [data-issues] {\\n --padding-left: 8px;\\n display: flex;\\n gap: 2px;\\n align-items: center;\\n padding-left: 8px;\\n padding-right: 8px;\\n height: var(--size-32);\\n margin-right: 2px;\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-short) ease;\\n\\n &:has([data-issues-open]:hover) {\\n background: var(--color-hover-alpha-error);\\n }\\n\\n &:has([data-issues-collapse]) {\\n padding-right: calc(var(--padding-left) / 2);\\n }\\n\\n [data-cross] {\\n translate: 0px -1px;\\n }\\n }\\n\\n [data-issues-open] {\\n font-size: var(--size-13);\\n color: white;\\n width: fit-content;\\n height: 100%;\\n display: flex;\\n gap: 2px;\\n align-items: center;\\n margin: 0;\\n line-height: var(--size-36);\\n font-weight: 500;\\n z-index: 2;\\n white-space: nowrap;\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n }\\n\\n [data-issues-collapse] {\\n width: var(--size-24);\\n height: var(--size-24);\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-short) ease;\\n\\n &:hover {\\n background: var(--color-hover-alpha-error);\\n }\\n }\\n\\n [data-cross] {\\n color: #fff;\\n width: var(--size-12);\\n height: var(--size-12);\\n }\\n\\n [data-next-mark] {\\n width: var(--mark-size);\\n height: var(--mark-size);\\n margin: 0 2px;\\n display: flex;\\n align-items: center;\\n border-radius: var(--rounded-full);\\n transition: background var(--duration-long) var(--timing);\\n\\n &:focus-visible {\\n outline: 0;\\n }\\n\\n &:hover {\\n background: var(--color-hover-alpha-subtle);\\n }\\n\\n svg {\\n flex-shrink: 0;\\n width: var(--size-40);\\n height: var(--size-40);\\n }\\n }\\n\\n [data-issues-count-animation] {\\n display: grid;\\n place-items: center center;\\n font-variant-numeric: tabular-nums;\\n\\n &[data-animate='false'] {\\n [data-issues-count-exit],\\n [data-issues-count-enter] {\\n animation-duration: 0ms;\\n }\\n }\\n\\n > * {\\n grid-area: 1 / 1;\\n }\\n\\n [data-issues-count-exit] {\\n animation: fadeOut 300ms var(--timing) forwards;\\n }\\n\\n [data-issues-count-enter] {\\n animation: fadeIn 300ms var(--timing) forwards;\\n }\\n }\\n\\n [data-issues-count-plural] {\\n display: inline-block;\\n &[data-animate='true'] {\\n animation: fadeIn 300ms var(--timing) forwards;\\n }\\n }\\n\\n .path0 {\\n animation: draw0 1.5s ease-in-out infinite;\\n }\\n\\n .path1 {\\n animation: draw1 1.5s ease-out infinite;\\n animation-delay: 0.3s;\\n }\\n\\n .paused {\\n stroke-dashoffset: 0;\\n }\\n\\n @keyframes fadeIn {\\n 0% {\\n opacity: 0;\\n filter: blur(2px);\\n transform: translateY(8px);\\n }\\n 100% {\\n opacity: 1;\\n filter: blur(0px);\\n transform: translateY(0);\\n }\\n }\\n\\n @keyframes fadeOut {\\n 0% {\\n opacity: 1;\\n filter: blur(0px);\\n transform: translateY(0);\\n }\\n 100% {\\n opacity: 0;\\n transform: translateY(-12px);\\n filter: blur(2px);\\n }\\n }\\n\\n @keyframes draw0 {\\n 0%,\\n 25% {\\n stroke-dashoffset: -29.6;\\n }\\n 25%,\\n 50% {\\n stroke-dashoffset: 0;\\n }\\n 50%,\\n 75% {\\n stroke-dashoffset: 0;\\n }\\n 75%,\\n 100% {\\n stroke-dashoffset: 29.6;\\n }\\n }\\n\\n @keyframes draw1 {\\n 0%,\\n 20% {\\n stroke-dashoffset: -11.6;\\n }\\n 20%,\\n 50% {\\n stroke-dashoffset: 0;\\n }\\n 50%,\\n 75% {\\n stroke-dashoffset: 0;\\n }\\n 75%,\\n 100% {\\n stroke-dashoffset: 11.6;\\n }\\n }\\n\\n @media (prefers-reduced-motion) {\\n [data-issues-count-exit],\\n [data-issues-count-enter],\\n [data-issues-count-plural] {\\n animation-duration: 0ms !important;\\n }\\n }\\n \"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return r7=function(){return n},n}function oe(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g,y,v,w,C,_,k,E,j,S,O,B,P,I,z,T,D,L,N,R,M,Z,q,H,V,$,W,Y=(0,A.c)(40);Y[0]!==e?(D=r9(e,[\"onTriggerClick\"]),L=e.onTriggerClick,Y[0]=e,Y[1]=D,Y[2]=L):(D=Y[1],L=Y[2]);var K=da(),X=K.state,G=K.dispatch,Q=u4().totalErrorCount,J=36/X.scale,ee=r2(),et=ee.panel,en=ee.triggerRef,er=ee.setPanel,eo=\"panel-selector\"===et,ea=Q>0,ei=r8((0,x.useState)(ea),2),el=ei[0],ec=ei[1],eu=r8((0,x.useState)(ea),2),ed=eu[0],ef=eu[1];ed!==ea&&(ef(ea),ec(ea));var ep=r8((0,x.useState)(!1),2),eh=ep[0],em=ep[1],eg=(t=Q,n=150,a=(0,A.c)(4),i=n,l=(0,x.useRef)(null),d=(s=(0,x.useState)(!1),c=2,u=function(e){if(Array.isArray(e))return e}(s)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(s,2)||function(e,t){if(e){if(\"string\"==typeof e)return rK(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rK(e,t)}}(s,c)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())[0],f=u[1],a[0]!==i||a[1]!==t?(r=function(){if(t>0){var e=l.current?Date.now()-l.current:-1;if(l.current=Date.now(),!(e<=i)){f(!0);var n=window.setTimeout(function(){f(!1)},i);return function(){clearTimeout(n)}}}},o=[t,i],a[0]=i,a[1]=t,a[2]=r,a[3]=o):(r=a[2],o=a[3]),(0,x.useEffect)(r,o),d),ey=(0,x.useRef)(null),ev=(p=ey,g=(0,A.c)(4),v=(y=rG((0,x.useState)(0),2))[0],w=y[1],g[0]!==p.current?(h=function(){var e=p.current;if(e){var t=new ResizeObserver(function(e){w(rG(e,1)[0].contentRect.width)});return t.observe(e),function(){return t.disconnect()}}},g[0]=p.current,g[1]=h):h=g[1],g[2]!==p?(m=[p],g[2]=p,g[3]=m):m=g[3],(0,x.useEffect)(h,m),v),eb=(C=X.buildingIndicator||X.renderingIndicator,E=(0,A.c)(4),j=750,P=(S=(0,x.useState)(!1),O=2,B=function(e){if(Array.isArray(e))return e}(S)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(S,2)||function(e,t){if(e){if(\"string\"==typeof e)return rQ(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return rQ(e,t)}}(S,O)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}())[0],I=B[1],z=(0,x.useRef)(null),T=(0,x.useRef)(null),E[0]!==j||E[1]!==C?(_=function(){if(T.current&&(clearTimeout(T.current),T.current=null),C)null===z.current&&(z.current=Date.now()),I(!0);else if(null===z.current)I(!1);else{var e=Date.now()-z.current,t=j*Math.ceil(e/j)-e;t>0?T.current=setTimeout(function(){I(!1),z.current=null},t):(I(!1),z.current=null)}return function(){T.current&&clearTimeout(T.current)}},k=[C,j],E[0]=j,E[1]=C,E[2]=_,E[3]=k):(_=E[2],k=E[3]),(0,x.useEffect)(_,k),P),eA=el||X.disableDevIndicator,ex=0===ev?\"auto\":ev,ew=\"\".concat(J,\"px\"),eC=X.disableDevIndicator&&(!ea||eh)?\"none\":\"block\";Y[3]!==ew||Y[4]!==eC?(N={\"--size\":ew,\"--duration-short\":\"\".concat(150,\"ms\"),display:eC},Y[3]=ew,Y[4]=eC,Y[5]=N):N=Y[5];var e_=N;return Y[6]===Symbol.for(\"react.memo_cache_sentinel\")?(R=(0,b.jsx)(\"style\",{children:es(r7())}),Y[6]=R):R=Y[6],Y[7]!==ex?(M={width:ex},Y[7]=ex,Y[8]=M):M=Y[8],Y[9]!==D||Y[10]!==eb||Y[11]!==eo||Y[12]!==L||Y[13]!==X.buildingIndicator||Y[14]!==X.disableDevIndicator||Y[15]!==en?(Z=!X.disableDevIndicator&&(0,b.jsx)(\"button\",r6(r3({id:\"next-logo\",ref:en,\"data-next-mark\":!0,\"data-next-mark-loading\":eb,onClick:L,disabled:X.disableDevIndicator,\"aria-haspopup\":\"menu\",\"aria-expanded\":eo,\"aria-controls\":\"nextjs-dev-tools-menu\",\"aria-label\":\"\".concat(eo?\"Close\":\"Open\",\" Next.js Dev Tools\"),\"data-nextjs-dev-tools-button\":!0},D),{children:(0,b.jsx)(on,{isLoading:eb,isDevBuilding:X.buildingIndicator})})),Y[9]=D,Y[10]=eb,Y[11]=eo,Y[12]=L,Y[13]=X.buildingIndicator,Y[14]=X.disableDevIndicator,Y[15]=en,Y[16]=Z):Z=Y[16],Y[17]!==G||Y[18]!==eA||Y[19]!==eg||Y[20]!==er||Y[21]!==X.buildError||Y[22]!==X.disableDevIndicator||Y[23]!==X.isErrorOverlayOpen||Y[24]!==Q||Y[25]!==en?(q=eA&&(0,b.jsxs)(\"div\",{\"data-issues\":!0,children:[(0,b.jsxs)(\"button\",{\"data-issues-open\":!0,\"aria-label\":\"Open issues overlay\",onClick:function(){if(X.isErrorOverlayOpen)return void G({type:F});G({type:U}),er(null)},children:[X.disableDevIndicator&&(0,b.jsx)(\"div\",{\"data-disabled-icon\":!0,children:(0,b.jsx)(r0,{})}),(0,b.jsx)(ot,{animate:eg,\"data-issues-count-animation\":!0,children:Q},Q),\" \",(0,b.jsxs)(\"div\",{children:[\"Issue\",Q>1&&(0,b.jsx)(\"span\",{\"aria-hidden\":!0,\"data-issues-count-plural\":!0,\"data-animate\":eg&&2===Q,children:\"s\"})]})]}),!X.buildError&&(0,b.jsx)(\"button\",{\"data-issues-collapse\":!0,\"aria-label\":\"Collapse issues badge\",onClick:function(){var e;X.disableDevIndicator?em(!0):ec(!1),null==(e=en.current)||e.focus()},children:(0,b.jsx)(rJ,{\"data-cross\":!0})})]}),Y[17]=G,Y[18]=eA,Y[19]=eg,Y[20]=er,Y[21]=X.buildError,Y[22]=X.disableDevIndicator,Y[23]=X.isErrorOverlayOpen,Y[24]=Q,Y[25]=en,Y[26]=q):q=Y[26],Y[27]!==Z||Y[28]!==q?(H=(0,b.jsxs)(\"div\",{ref:ey,children:[Z,q]}),Y[27]=Z,Y[28]=q,Y[29]=H):H=Y[29],Y[30]!==ea||Y[31]!==eA||Y[32]!==eg||Y[33]!==M||Y[34]!==H?(V=(0,b.jsx)(\"div\",{\"data-next-badge\":!0,\"data-error\":ea,\"data-error-expanded\":eA,\"data-animate\":eg,style:M,children:H}),Y[30]=ea,Y[31]=eA,Y[32]=eg,Y[33]=M,Y[34]=H,Y[35]=V):V=Y[35],Y[36]===Symbol.for(\"react.memo_cache_sentinel\")?($=(0,b.jsx)(\"div\",{\"aria-hidden\":!0,\"data-dot\":!0}),Y[36]=$):$=Y[36],Y[37]!==V||Y[38]!==e_?(W=(0,b.jsxs)(\"div\",{\"data-next-badge-root\":!0,style:e_,children:[R,V,$]}),Y[37]=V,Y[38]=e_,Y[39]=W):W=Y[39],W}function ot(e){var t,n,r,o,a,i,l=(0,A.c)(13);l[0]!==e?(n=r9(e,[\"children\",\"animate\"]),t=e.children,r=e.animate,l[0]=e,l[1]=t,l[2]=n,l[3]=r):(t=l[1],n=l[2],r=l[3]);var s=void 0===r||r,c=t-1;return l[4]!==c?(o=(0,b.jsx)(\"div\",{\"aria-hidden\":!0,\"data-issues-count-exit\":!0,children:c}),l[4]=c,l[5]=o):o=l[5],l[6]!==t?(a=(0,b.jsx)(\"div\",{\"data-issues-count\":!0,\"data-issues-count-enter\":!0,children:t}),l[6]=t,l[7]=a):a=l[7],l[8]!==s||l[9]!==n||l[10]!==o||l[11]!==a?(i=(0,b.jsxs)(\"div\",r6(r3({},n),{\"data-animate\":s,children:[o,a]})),l[8]=s,l[9]=n,l[10]=o,l[11]=a,l[12]=i):i=l[12],i}function on(e){var t,n,r,o,a,i,l,s,c=(0,A.c)(19),u=e.isLoading,d=e.isDevBuilding?\"rgba(255,255,255,0.7)\":\"white\",f=u?\"path0\":\"paused\";c[0]!==f?(t=(0,b.jsx)(\"path\",{className:f,d:\"M13.3 15.2 L2.34 1 V12.6\",fill:\"none\",stroke:\"url(#next_logo_paint0_linear_1357_10853)\",strokeWidth:\"1.86\",mask:\"url(#next_logo_mask0)\",strokeDasharray:\"29.6\",strokeDashoffset:\"29.6\"}),c[0]=f,c[1]=t):t=c[1];var p=u?\"path1\":\"paused\";return c[2]!==p?(n=(0,b.jsx)(\"path\",{className:p,d:\"M11.825 1.5 V13.1\",strokeWidth:\"1.86\",stroke:\"url(#next_logo_paint1_linear_1357_10853)\",strokeDasharray:\"11.6\",strokeDashoffset:\"11.6\"}),c[2]=p,c[3]=n):n=c[3],c[4]!==t||c[5]!==n?(r=(0,b.jsxs)(\"g\",{transform:\"translate(8.5, 13)\",children:[t,n]}),c[4]=t,c[5]=n,c[6]=r):r=c[6],c[7]!==d?(o=(0,b.jsxs)(\"linearGradient\",{id:\"next_logo_paint0_linear_1357_10853\",x1:\"9.95555\",y1:\"11.1226\",x2:\"15.4778\",y2:\"17.9671\",gradientUnits:\"userSpaceOnUse\",children:[(0,b.jsx)(\"stop\",{stopColor:d}),(0,b.jsx)(\"stop\",{offset:\"0.604072\",stopColor:d,stopOpacity:\"0\"}),(0,b.jsx)(\"stop\",{offset:\"1\",stopColor:d,stopOpacity:\"0\"})]}),c[7]=d,c[8]=o):o=c[8],c[9]!==d?(a=(0,b.jsxs)(\"linearGradient\",{id:\"next_logo_paint1_linear_1357_10853\",x1:\"11.8222\",y1:\"1.40039\",x2:\"11.791\",y2:\"9.62542\",gradientUnits:\"userSpaceOnUse\",children:[(0,b.jsx)(\"stop\",{stopColor:d}),(0,b.jsx)(\"stop\",{offset:\"1\",stopColor:d,stopOpacity:\"0\"})]}),c[9]=d,c[10]=a):a=c[10],c[11]===Symbol.for(\"react.memo_cache_sentinel\")?(i=(0,b.jsxs)(\"mask\",{id:\"next_logo_mask0\",children:[(0,b.jsx)(\"rect\",{width:\"100%\",height:\"100%\",fill:\"white\"}),(0,b.jsx)(\"rect\",{width:\"5\",height:\"1.5\",fill:\"black\"})]}),c[11]=i):i=c[11],c[12]!==o||c[13]!==a?(l=(0,b.jsxs)(\"defs\",{children:[o,a,i]}),c[12]=o,c[13]=a,c[14]=l):l=c[14],c[15]!==u||c[16]!==r||c[17]!==l?(s=(0,b.jsxs)(\"svg\",{width:\"40\",height:\"40\",viewBox:\"0 0 40 40\",fill:\"none\",\"data-next-mark-loading\":u,children:[r,l]}),c[15]=u,c[16]=r,c[17]=l,c[18]=s):s=c[18],s}var or=x.forwardRef(function(e,t){var n,r,o,a,i,l,s,c,u,d=(0,A.c)(15);return(d[0]!==e?(l=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"onClick\",\"children\",\"className\"]),i=e.onClick,o=e.children,a=e.className,d[0]=e,d[1]=o,d[2]=a,d[3]=i,d[4]=l):(o=d[1],a=d[2],i=d[3],l=d[4]),d[5]!==i?(s=function(e){return e.target.closest(\"a\")||e.preventDefault(),null==i?void 0:i()},d[5]=i,d[6]=s):s=d[6],d[7]!==a?(c=eG(\"nextjs-toast\",a),d[7]=a,d[8]=c):c=d[8],d[9]!==o||d[10]!==l||d[11]!==t||d[12]!==s||d[13]!==c)?(u=(0,b.jsx)(\"div\",(n=function(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"children\",\"ref\"]),r=e.children,a=e.ref,f[0]=e,f[1]=r,f[2]=o,f[3]=a):(r=f[1],o=f[2],a=f[3]);var p=(0,x.useRef)(null),h=ol();f[4]!==a?(i=function(e){if(p.current=null!=e?e:null,\"function\"==typeof a)a(e);else{var t;a&&(void 0===a?\"undefined\":(t=a)&&\"undefined\"!=typeof Symbol&&t.constructor===Symbol?\"symbol\":typeof t)==\"object\"&&(a.current=e)}},f[4]=a,f[5]=i):i=f[5];var m=i;f[6]!==h?(l=function(){if(h&&p.current&&!h.disabled){var e=p.current;return h.register(e),function(){return h.unregister(e)}}},s=[h],f[6]=h,f[7]=l,f[8]=s):(l=f[7],s=f[8]),(0,x.useEffect)(l,s);var g=(null==h?void 0:h.disabled)?\"default\":\"grab\";return(f[9]!==o.style?(c=o.style||{},f[9]=o.style,f[10]=c):c=f[10],f[11]!==g||f[12]!==c?(u=oo({cursor:g},c),f[11]=g,f[12]=c,f[13]=u):u=f[13],f[14]!==r||f[15]!==o||f[16]!==m||f[17]!==u)?(d=(0,b.jsx)(\"div\",(t=oo({ref:m},o),n=n={style:u,children:r},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)),f[14]=r,f[15]=o,f[16]=m,f[17]=u,f[18]=d):d=f[18],d}function oc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function op(e){return function(e){if(Array.isArray(e))return oc(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||oh(e)||function(){throw TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function oh(e,t){if(e){if(\"string\"==typeof e)return oc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n)return Array.from(n);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return oc(e,t)}}function om(e){var t,n,r,o,a,i,l,s,c,u,d,f,p=(0,A.c)(18);p[0]!==e?(s=of(e,[\"children\",\"padding\",\"position\",\"setPosition\",\"onDragStart\",\"dragHandleSelector\",\"disableDrag\",\"avoidZone\"]),r=e.children,l=e.padding,o=e.position,c=e.setPosition,i=e.onDragStart,a=e.dragHandleSelector,u=e.disableDrag,n=e.avoidZone,p[0]=e,p[1]=n,p[2]=r,p[3]=o,p[4]=a,p[5]=i,p[6]=l,p[7]=s,p[8]=c,p[9]=u):(n=p[1],r=p[2],o=p[3],a=p[4],i=p[5],l=p[6],s=p[7],c=p[8],u=p[9]);var h=function(e){var t=(0,x.useRef)(null),n=(0,x.useRef)({state:\"idle\"}),r=(0,x.useRef)(null),o=(0,x.useRef)({x:0,y:0}),a=(0,x.useRef)({x:0,y:0}),i=(0,x.useRef)(0),l=(0,x.useRef)([]),s=(0,x.useCallback)(function(){var e,o;\"drag\"===n.current.state&&(null==(o=t.current)||o.releasePointerCapture(n.current.pointerId)),n.current=\"drag\"===n.current.state?{state:\"drag-end\"}:{state:\"idle\"},null!==r.current&&(r.current(),r.current=null),l.current=[],null==(e=t.current)||e.classList.remove(\"dev-tools-grabbing\"),document.body.style.removeProperty(\"user-select\"),document.body.style.removeProperty(\"-webkit-user-select\")},[]);function c(e){t.current&&(a.current=e,t.current.style.translate=\"\".concat(e.x,\"px \").concat(e.y,\"px\"))}function u(n){var r=t.current;null!==r&&(r.style.transition=\"translate 491.22ms var(--timing-bounce)\",r.addEventListener(\"transitionend\",function t(o){if(\"translate\"===o.propertyName){var i;null==(i=e.onAnimationEnd)||i.call(e,n),a.current={x:0,y:0},r.style.transition=\"\",r.removeEventListener(\"transitionend\",t)}}),c(n.translation))}function d(e){if(\"drag-end\"===n.current.state){var r;e.preventDefault(),e.stopPropagation(),n.current={state:\"idle\"},null==(r=t.current)||r.removeEventListener(\"click\",d)}}function f(r){if(\"press\"===n.current.state){var s,u,d,f,p=r.clientX-o.current.x,h=r.clientY-o.current.y;Math.sqrt(p*p+h*h)>=e.threshold&&(n.current={state:\"drag\",pointerId:r.pointerId},null==(u=t.current)||u.setPointerCapture(r.pointerId),null==(d=t.current)||d.classList.add(\"dev-tools-grabbing\"),document.body.style.userSelect=\"none\",document.body.style.webkitUserSelect=\"none\",null==(f=e.onDragStart)||f.call(e))}if(\"drag\"===n.current.state){var m={x:r.clientX,y:r.clientY},g=m.x-o.current.x,y=m.y-o.current.y;o.current=m,c({x:a.current.x+g,y:a.current.y+y});var v=Date.now();v-i.current>=10&&(l.current=op(l.current.slice(-5)).concat([{position:m,timestamp:v}])),i.current=v,null==(s=e.onDrag)||s.call(e,a.current)}}function p(){var t,n=function(e){if(e.length<2)return{x:0,y:0};var t=e[0],n=e[e.length-1],r=n.timestamp-t.timestamp;return 0===r?{x:0,y:0}:{x:1e3*((n.position.x-t.position.x)/r),y:1e3*((n.position.y-t.position.y)/r)}}(l.current);s(),null==(t=e.onDragEnd)||t.call(e,a.current,n)}return(0,x.useLayoutEffect)(function(){e.disabled&&s()},[s,e.disabled]),e.disabled?{ref:t,animate:u}:{ref:t,onPointerDown:function(a){var i;0===a.button&&function(n){if(!n||!t.current)return!0;if(e.handles&&e.handles.size>0){for(var r=n;r&&r!==t.current;){if(e.handles.has(r))return!0;r=r.parentElement}return!1}return!e.dragHandleSelector||null!==n.closest(e.dragHandleSelector)}(a.target)&&(o.current={x:a.clientX,y:a.clientY},n.current={state:\"press\"},window.addEventListener(\"pointermove\",f),window.addEventListener(\"pointerup\",p),null!==r.current&&(r.current(),r.current=null),r.current=function(){window.removeEventListener(\"pointermove\",f),window.removeEventListener(\"pointerup\",p)},null==(i=t.current)||i.addEventListener(\"click\",d))},animate:u}}({disabled:void 0!==u&&u,handles:null==(t=ol())?void 0:t.handles,threshold:5,onDragStart:i,onDragEnd:function(e,t){var r,a,i,s,c,u,d,f,p,h,y,v,b,A,x,w,C,_;if(0===Math.sqrt(e.x*e.x+e.y*e.y)){null==(r=m.current)||r.style.removeProperty(\"translate\");return}g((b=(a={x:e.x+oy(t.x),y:e.y+oy(t.y)}).x,A=a.y,w=Object.entries(x=(c=2*l,u=(null==(i=m.current)?void 0:i.offsetWidth)||0,d=(null==(s=m.current)?void 0:s.offsetHeight)||0,f=window.innerWidth-document.documentElement.clientWidth,h=(p=function(e){var t=e.includes(\"right\"),r=e.includes(\"bottom\"),o=t?window.innerWidth-f-c-u:0,a=r?window.innerHeight-c-d:0;if(n&&n.corner===e){var i=n.square+n.padding;r?a-=i:a+=i}return{x:o,y:a}})(o),{\"top-left\":(y=function(e){return{x:e.x-h.x,y:e.y-h.y}})(p(\"top-left\")),\"top-right\":y(p(\"top-right\")),\"bottom-left\":y(p(\"bottom-left\")),\"bottom-right\":y(p(\"bottom-right\"))})).map(function(e){var t,n,r=(n=2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(t,2)||oh(t,n)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),o=r[0],a=r[1];return{key:o,distance:Math.sqrt(Math.pow(b-a.x,2)+Math.pow(A-a.y,2))}}),C=(v=Math).min.apply(v,op(w.map(og))),(_=w.find(function(e){return e.distance===C}))?{translation:x[_.key],corner:_.key}:{corner:o,translation:x[o]}))},onAnimationEnd:function(e){var t=e.corner;setTimeout(function(){var e;null==(e=m.current)||e.style.removeProperty(\"translate\"),c(t)})},dragHandleSelector:a}),m=h.ref,g=h.animate,y=of(h,[\"ref\",\"animate\"]);return p[10]!==s.style?(d=ou({touchAction:\"none\",userSelect:\"none\",WebkitUserSelect:\"none\"},s.style),p[10]=s.style,p[11]=d):d=p[11],p[12]!==r||p[13]!==y||p[14]!==s||p[15]!==m||p[16]!==d?(f=(0,b.jsx)(\"div\",od(ou(od(ou({},s),{ref:m}),y),{style:d,children:r})),p[12]=r,p[13]=y,p[14]=s,p[15]=m,p[16]=d,p[17]=f):f=p[17],f}function og(e){return e.distance}function oy(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.999;return e/1e3*t/(1-t)}function ov(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,[\"index\",\"label\",\"value\",\"onClick\",\"href\"]),n=e.index,r=e.label,i=e.value,o=e.onClick,t=e.href,h[0]=e,h[1]=t,h[2]=n,h[3]=r,h[4]=o,h[5]=a,h[6]=i):(t=h[1],n=h[2],r=h[3],o=h[4],a=h[5],i=h[6]);var m=\"function\"==typeof o||\"string\"==typeof t,g=(0,x.useContext)(oO),y=g.closeMenu,v=g.selectedIndex,w=g.setSelectedIndex,C=v===n;h[7]!==y||h[8]!==t||h[9]!==m||h[10]!==o?(l=function(){m&&(null==o||o(),null==y||y(),t&&window.open(t,\"_blank\",\"noopener, noreferrer\"))},h[7]=y,h[8]=t,h[9]=m,h[10]=o,h[11]=l):l=h[11];var _=l;h[12]!==n||h[13]!==m||h[14]!==v||h[15]!==w?(s=function(){m&&void 0!==n&&v!==n&&w(n)},h[12]=n,h[13]=m,h[14]=v,h[15]=w,h[16]=s):s=h[16],h[17]!==w?(c=function(){return w(-1)},h[17]=w,h[18]=c):c=h[18],h[19]!==_?(u=function(e){(\"Enter\"===e.key||\" \"===e.key)&&_()},h[19]=_,h[20]=u):u=h[20];var k=m?\"menuitem\":void 0,E=C?0:-1;return h[21]!==r?(d=(0,b.jsx)(\"span\",{className:\"dev-tools-indicator-label\",children:r}),h[21]=r,h[22]=d):d=h[22],h[23]!==i?(f=(0,b.jsx)(\"span\",{className:\"dev-tools-indicator-value\",children:i}),h[23]=i,h[24]=f):f=h[24],h[25]!==_||h[26]!==n||h[27]!==a||h[28]!==C||h[29]!==s||h[30]!==c||h[31]!==u||h[32]!==k||h[33]!==E||h[34]!==d||h[35]!==f?(p=(0,b.jsxs)(\"div\",oj(oE({className:\"dev-tools-indicator-item\",\"data-index\":n,\"data-selected\":C,onClick:_,onMouseMove:s,onMouseLeave:c,onKeyDown:u,role:k,tabIndex:E},a),{children:[d,f]})),h[25]=_,h[26]=n,h[27]=a,h[28]=C,h[29]=s,h[30]=c,h[31]=u,h[32]=k,h[33]=E,h[34]=d,h[35]=f,h[36]=p):p=h[36],p}var oP=function(e){var t,n=e.closeOnClickOutside,r=void 0===n||n,o=e.items,a=da().state,i=r2(),l=i.setPanel,s=i.triggerRef,c=i.setSelectedIndex,u=i.selectedIndex,d=uX().mounted,f=oS(a.devToolsPosition.split(\"-\",2),2),p=f[0],h=f[1],m=(0,x.useRef)(null);t8(m,s,r&&d,function(e){switch(e){case\"escape\":l(null),c(-1);return;case\"outside\":if(!r)return;l(null),c(-1);return;default:return null}}),(0,x.useLayoutEffect)(function(){var e;null==(e=m.current)||e.focus(),oD({index:-1===u?\"first\":u,menuRef:m,setSelectedIndex:c})},[]);var g=r4(a),y=oS(a.devToolsPosition.split(\"-\",2),2),v=y[0],A=y[1],w=p===v&&h===A?g:oA,C=(ok(t={},p,\"\".concat(w,\"px\")),ok(t,h,\"\".concat(oA,\"px\")),ok(t,\"top\"===p?\"bottom\":\"top\",\"auto\"),ok(t,\"left\"===h?\"right\":\"left\",\"auto\"),t),_=o.filter(function(e){return!!e}),k=_.filter(function(e){return!e.footer}),E=_.filter(function(e){return e.footer});return(0,b.jsx)(\"div\",{ref:m,onKeyDown:function(e){e.preventDefault();var t=_.filter(function(e){return e.onClick}).length;switch(e.key){case\"ArrowDown\":oD({index:u>=t-1?0:u+1,menuRef:m,setSelectedIndex:c});break;case\"ArrowUp\":oD({index:u<=0?t-1:u-1,menuRef:m,setSelectedIndex:c});break;case\"Home\":oD({index:\"first\",menuRef:m,setSelectedIndex:c});break;case\"End\":oD({index:\"last\",menuRef:m,setSelectedIndex:c});break;case\"n\":e.ctrlKey&&oD({index:u>=t-1?0:u+1,menuRef:m,setSelectedIndex:c});break;case\"p\":e.ctrlKey&&oD({index:u<=0?t-1:u-1,menuRef:m,setSelectedIndex:c})}},id:\"nextjs-dev-tools-menu\",role:\"menu\",dir:\"ltr\",\"aria-orientation\":\"vertical\",\"aria-label\":\"Next.js Dev Tools Items\",tabIndex:-1,style:oE({outline:0,WebkitFontSmoothing:\"antialiased\",display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\",background:\"var(--color-background-100)\",backgroundClip:\"padding-box\",boxShadow:\"var(--shadow-menu)\",borderRadius:\"var(--rounded-xl)\",position:\"fixed\",fontFamily:\"var(--font-stack-sans)\",zIndex:\"var(--top-z-index)\",overflow:\"hidden\",opacity:1,minWidth:\"248px\",transition:\"opacity var(--animate-out-duration-ms) var(--animate-out-timing-function)\",border:\"1px solid var(--color-gray-alpha-400)\"},C),children:(0,b.jsxs)(oO,{value:{selectedIndex:u,setSelectedIndex:c},children:[(0,b.jsx)(\"div\",{style:{padding:\"6px\",width:\"100%\"},children:k.map(function(e,t){return(0,b.jsx)(oB,oE({title:e.title,label:e.label,value:e.value,onClick:e.onClick,index:e.onClick?oI(k,t):void 0},e.attributes),e.label)})}),(0,b.jsx)(\"div\",{className:\"dev-tools-indicator-footer\",children:E.map(function(e,t){var n;return(0,b.jsx)(oB,oj(oE({title:e.title,label:e.label,value:e.value,onClick:e.onClick},e.attributes),{index:e.onClick?oI(E,t)+(n=k).filter(function(e){return e.onClick}).length:void 0}),e.label)})})]})})};function oI(e,t){for(var n=0,r=0;r<=t&&r0;return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"span\",{className:\"dev-tools-indicator-issue-count-indicator\"}),r[0]=t):t=r[0],r[1]!==o||r[2]!==a?(n=(0,b.jsxs)(\"span\",{className:\"dev-tools-indicator-issue-count\",\"data-has-issues\":a,children:[t,o]}),r[1]=o,r[2]=a,r[3]=n):n=r[3],n}function oT(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",children:(0,b.jsx)(\"path\",{fill:\"#666\",fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M5.50011 1.93945L6.03044 2.46978L10.8537 7.293C11.2442 7.68353 11.2442 8.31669 10.8537 8.70722L6.03044 13.5304L5.50011 14.0608L4.43945 13.0001L4.96978 12.4698L9.43945 8.00011L4.96978 3.53044L4.43945 3.00011L5.50011 1.93945Z\"})}),t[0]=e):e=t[0],e}function oD(e){var t,n=e.index,r=e.menuRef,o=e.setSelectedIndex;if(\"first\"===n)return void setTimeout(function(){var e,t=null==(e=r.current)?void 0:e.querySelectorAll('[role=\"menuitem\"]');t&&oD({index:Number(t[0].getAttribute(\"data-index\")),menuRef:r,setSelectedIndex:o})});if(\"last\"===n)return void setTimeout(function(){var e,t=null==(e=r.current)?void 0:e.querySelectorAll('[role=\"menuitem\"]');t&&oD({index:t.length-1,menuRef:r,setSelectedIndex:o})});var a=null==(t=r.current)?void 0:t.querySelector('[data-index=\"'.concat(n,'\"]'));a&&(o(n),null==a||a.focus())}function oL(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&void 0!==arguments[1]?arguments[1]:\"width\";if(\"number\"==typeof e)return e;var n=document.createElement(\"div\");n.style.position=\"absolute\",n.style.visibility=\"hidden\",\"width\"===t?n.style.width=e:n.style.height=e,document.body.appendChild(n);var r=\"width\"===t?n.offsetWidth:n.offsetHeight;return document.body.removeChild(n),r}function o0(e){var t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g=e.header,y=e.children,v=e.draggable,w=void 0!==v&&v,C=e.sizeConfig,_=void 0===C?{kind:\"resizable\",minWidth:400,minHeight:350,maxWidth:1e3,maxHeight:1e3,initialSize:{height:400,width:500}}:C,k=e.closeOnClickOutside,E=void 0!==k&&k,j=e.sharePanelSizeGlobally,S=e.sharePanelPositionGlobally,O=e.containerProps,B=r2().setPanel,P=uX(),I=P.name,z=P.mounted,T=void 0===j||j?ee:\"\".concat(J,\"_\").concat(I),D=void 0===S||S?et:\"\".concat(Q,\"_\").concat(I),L=da(),N=L.dispatch,R=L.state,M=null!=(h=R.devToolsPanelPosition[D])?h:R.devToolsPosition,Z=oQ(M.split(\"-\",2),2),U=Z[0],F=Z[1],q=(0,x.useRef)(null);t8(q,r2().triggerRef,z,function(e){switch(e){case\"escape\":return void B(\"panel-selector\");case\"outside\":E&&B(\"panel-selector\");return;default:return null}});var H=r4(R),V=oQ(R.devToolsPosition.split(\"-\",2),2),$=V[0],W=V[1],Y=U===$&&F===W?H:oA,X=(oX(m={},U,\"\".concat(Y,\"px\")),oX(m,F,\"\".concat(oA,\"px\")),oX(m,\"top\"===U?\"bottom\":\"top\",\"auto\"),oX(m,\"left\"===F?\"right\":\"left\",\"auto\"),m),G=\"resizable\"===_.kind,en=(t=G?_.minWidth:void 0,n=G?_.minHeight:void 0,r=G?_.maxWidth:void 0,o=G?_.maxHeight:void 0,(s=(0,A.c)(11))[0]!==o||s[1]!==r||s[2]!==n||s[3]!==t?(a=function(){return{minWidth:t?oJ(t,\"width\"):void 0,minHeight:n?oJ(n,\"height\"):void 0,maxWidth:r?oJ(r,\"width\"):void 0,maxHeight:o?oJ(o,\"height\"):void 0}},s[0]=o,s[1]=r,s[2]=n,s[3]=t,s[4]=a):a=s[4],u=(c=oQ((0,x.useState)(a),2))[0],d=c[1],s[5]!==o||s[6]!==r||s[7]!==n||s[8]!==t?(i=function(){var e=function(){d({minWidth:t?oJ(t,\"width\"):void 0,minHeight:n?oJ(n,\"height\"):void 0,maxWidth:r?oJ(r,\"width\"):void 0,maxHeight:o?oJ(o,\"height\"):void 0})};return window.addEventListener(\"resize\",e),function(){return window.removeEventListener(\"resize\",e)}},l=[t,n,r,o],s[5]=o,s[6]=r,s[7]=n,s[8]=t,s[9]=i,s[10]=l):(i=s[9],l=s[10]),(0,x.useEffect)(i,l),u),er=en.minWidth,eo=en.minHeight,ea=en.maxWidth,ei=en.maxHeight,el=I?\"\".concat(J,\"_\").concat(I):ee,es=R.devToolsPanelSize[el];return(0,b.jsx)(oM,{value:{resizeRef:q,initialSize:\"resizable\"===_.kind?_.initialSize:_,minWidth:er,minHeight:eo,maxWidth:ea,maxHeight:ei,devToolsPosition:R.devToolsPosition,devToolsPanelSize:R.devToolsPanelSize,storageKey:T},children:(0,b.jsx)(\"div\",{tabIndex:-1,ref:q,className:\"dynamic-panel-container\",style:oG({\"--panel-top\":X.top,\"--panel-bottom\":X.bottom,\"--panel-left\":X.left,\"--panel-right\":X.right},G?{\"--panel-min-width\":er?\"\".concat(er,\"px\"):void 0,\"--panel-min-height\":eo?\"\".concat(eo,\"px\"):void 0,\"--panel-max-width\":ea?\"\".concat(ea,\"px\"):void 0,\"--panel-max-height\":ei?\"\".concat(ei,\"px\"):void 0}:{\"--panel-height\":\"\".concat(es?es.height:_.height,\"px\"),\"--panel-width\":\"\".concat(es?es.width:_.width,\"px\")}),children:(0,b.jsx)(oi,{disabled:!w,children:(0,b.jsx)(om,{dragHandleSelector:\".resize-container\",avoidZone:{corner:R.devToolsPosition,square:25/R.scale,padding:oA},padding:oA,position:M,setPosition:function(e){N({type:K,devToolsPanelPosition:e,key:D}),\"resizable\"===_.kind&&rA({devToolsPanelPosition:oX({},D,e)})},style:{overflow:\"auto\",width:\"100%\",height:\"100%\"},disableDrag:!w,children:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(\"div\",(f=oG({},O),p=p={className:\"panel-content-container \".concat((null==O?void 0:O.className)||\"\"),style:oG({},null==O?void 0:O.style),children:[(0,b.jsx)(os,{children:g}),(0,b.jsx)(\"div\",{\"data-nextjs-scrollable-content\":!0,className:\"draggable-content\",children:y})]},Object.getOwnPropertyDescriptors?Object.defineProperties(f,Object.getOwnPropertyDescriptors(p)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(p)).forEach(function(e){Object.defineProperty(f,e,Object.getOwnPropertyDescriptor(p,e))}),f)),G&&(0,b.jsxs)(b.Fragment,{children:[(!_.sides||_.sides.includes(\"vertical\"))&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(oH,{position:M,direction:\"top\"}),(0,b.jsx)(oH,{position:M,direction:\"bottom\"})]}),(!_.sides||_.sides.includes(\"horizontal\"))&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(oH,{position:M,direction:\"right\"}),(0,b.jsx)(oH,{position:M,direction:\"left\"})]}),(!_.sides||_.sides.includes(\"diagonal\"))&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(oH,{position:M,direction:\"top-left\"}),(0,b.jsx)(oH,{position:M,direction:\"top-right\"}),(0,b.jsx)(oH,{position:M,direction:\"bottom-left\"}),(0,b.jsx)(oH,{position:M,direction:\"bottom-right\"})]})]})]})})})})})}oY.styleTagTransform=h(),oY.setAttributes=u(),oY.insert=s(),oY.domAPI=i(),oY.insertStyleElement=f(),o()(oW.Z,oY),oW.Z&&oW.Z.locals&&oW.Z.locals;var o1=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-explorer.css\"),o2={};function o4(e){for(var t=1;t=0;m--){var g=l[m],y=r[m];0===Object.keys(g.children[y].children).length&&delete g.children[y]}a=o4({},a),i()}},getRoot:function(){return a}}}({compare:function(e,t){return!!e&&!!t&&e.pagePath===t.pagePath&&e.type===t.type&&e.boundaryType===t.boundaryType},getCharacters:function(e){return e.pagePath.split(\"/\")}}),ae=o7.insert,at=o7.remove,an=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/overview/segment-boundary-trigger.css\"),ar={};ar.styleTagTransform=h(),ar.setAttributes=u(),ar.insert=s(),ar.domAPI=i(),ar.insertStyleElement=f(),o()(an.Z,ar),an.Z&&an.Z.locals&&an.Z.locals;let ao={};function aa(e,t){let n=x.useRef(ao);return n.current===ao&&(n.current=e(t)),n}let ai=[];function al(e){x.useEffect(e,ai)}class as{static create(){return new as}currentId=0;start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=0,t()},e)}isStarted(){return 0!==this.currentId}clear=()=>{0!==this.currentId&&(clearTimeout(this.currentId),this.currentId=0)};disposeEffect=()=>this.clear}function ac(){let e=aa(as.create).current;return al(e.disposeEffect),e}let au=w[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],ad=au&&au!==x.useLayoutEffect?au:e=>e();function af(e){let t=aa(ap).current;return t.next=e,ad(t.effect),t.trampoline}function ap(){let e={next:void 0,callback:ah,trampoline:(...t)=>e.callback?.(...t),effect:()=>{e.callback=e.next}};return e}function ah(){}function am({controlled:e,default:t,name:n,state:r=\"value\"}){let{current:o}=x.useRef(void 0!==e),[a,i]=x.useState(t),l=x.useCallback(e=>{o||i(e)},[]);return[o?e:a,l]}let ag={...w},ay=0,av=ag.useId;function ab(e,t){if(void 0!==av){let n=av();return e??(t?`${t}-${n}`:n)}return function(e,t=\"mui\"){let[n,r]=x.useState(e),o=e||n;return x.useEffect(()=>{null==n&&(ay+=1,r(`${t}-${ay}`))},[n,t]),o}(e,t)}function aA(){let e=new Map;return{emit(t,n){e.get(t)?.forEach(e=>e(n))},on(t,n){e.has(t)||e.set(t,new Set),e.get(t).add(n)},off(t,n){e.get(t)?.delete(n)}}}let ax=\"undefined\"!=typeof document?x.useLayoutEffect:()=>{},aw=x.createContext(null),aC=x.createContext(null),a_=()=>x.useContext(aw)?.id||null,ak=()=>x.useContext(aC);function aE(e){let{children:t,id:n}=e,r=a_();return(0,b.jsx)(aw.Provider,{value:x.useMemo(()=>({id:n,parentId:r}),[n,r]),children:t})}function aj(e){let{children:t}=e,n=x.useRef([]),r=x.useCallback(e=>{n.current=[...n.current,e]},[]),o=x.useCallback(e=>{n.current=n.current.filter(t=>t!==e)},[]),[a]=x.useState(()=>aA());return(0,b.jsx)(aC.Provider,{value:x.useMemo(()=>({nodesRef:n,addNode:r,removeNode:o,events:a}),[r,o,a]),children:t})}function aS(e){let{open:t=!1,onOpenChange:n,elements:r}=e,o=ab(),a=x.useRef({}),[i]=x.useState(()=>aA()),l=null!=a_(),[s,c]=x.useState(r.reference),u=af((e,t,r)=>{a.current.openEvent=e?t:void 0,i.emit(\"openchange\",{open:e,event:t,reason:r,nested:l}),n?.(e,t,r)}),d=x.useMemo(()=>({setPositionReference:c}),[]),f=x.useMemo(()=>({reference:s||r.reference||null,floating:r.floating||null,domReference:r.reference}),[s,r.reference,r.floating]);return x.useMemo(()=>({dataRef:a,open:t,onOpenChange:u,elements:f,events:i,floatingId:o,refs:d}),[t,u,f,i,o,d])}function aO(){return\"undefined\"!=typeof window}function aB(e){return az(e)?(e.nodeName||\"\").toLowerCase():\"#document\"}function aP(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function aI(e){var t;return null==(t=(az(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function az(e){return!!aO()&&(e instanceof Node||e instanceof aP(e).Node)}function aT(e){return!!aO()&&(e instanceof Element||e instanceof aP(e).Element)}function aD(e){return!!aO()&&(e instanceof HTMLElement||e instanceof aP(e).HTMLElement)}function aL(e){return!!aO()&&\"undefined\"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof aP(e).ShadowRoot)}let aN=new Set([\"inline\",\"contents\"]);function aR(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=aK(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!aN.has(o)}let aM=new Set([\"table\",\"td\",\"th\"]),aZ=[\":popover-open\",\":modal\"];function aU(e){return aZ.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let aF=[\"transform\",\"translate\",\"scale\",\"rotate\",\"perspective\"],aq=[\"transform\",\"translate\",\"scale\",\"rotate\",\"perspective\",\"filter\"],aH=[\"paint\",\"layout\",\"strict\",\"content\"];function aV(e){let t=a$(),n=aT(e)?aK(e):e;return aF.some(e=>!!n[e]&&\"none\"!==n[e])||!!n.containerType&&\"normal\"!==n.containerType||!t&&!!n.backdropFilter&&\"none\"!==n.backdropFilter||!t&&!!n.filter&&\"none\"!==n.filter||aq.some(e=>(n.willChange||\"\").includes(e))||aH.some(e=>(n.contain||\"\").includes(e))}function a$(){return\"undefined\"!=typeof CSS&&!!CSS.supports&&CSS.supports(\"-webkit-backdrop-filter\",\"none\")}let aW=new Set([\"html\",\"body\",\"#document\"]);function aY(e){return aW.has(aB(e))}function aK(e){return aP(e).getComputedStyle(e)}function aX(e){return aT(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function aG(e){if(\"html\"===aB(e))return e;let t=e.assignedSlot||e.parentNode||aL(e)&&e.host||aI(e);return aL(t)?t.host:t}function aQ(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=aG(t);return aY(n)?t.ownerDocument?t.ownerDocument.body:t.body:aD(n)&&aR(n)?n:e(n)}(e),a=o===(null==(r=e.ownerDocument)?void 0:r.body),i=aP(o);if(a){let e=aJ(i);return t.concat(i,i.visualViewport||[],aR(o)?o:[],e&&n?aQ(e):[])}return t.concat(o,aQ(o,[],n))}function aJ(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function a0(e){let t=aa(a1,e).current;return t.next=e,ax(t.effect),t}function a1(e){let t={current:e,next:e,effect:()=>{t.current=t.next}};return t}let a2=\"undefined\"!=typeof navigator,a4=function(){if(!a2)return{platform:\"\",maxTouchPoints:-1};let e=navigator.userAgentData;return e?.platform?{platform:e.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??\"\",maxTouchPoints:navigator.maxTouchPoints??-1}}(),a5=function(){if(!a2)return\"\";let e=navigator.userAgentData;return e?.platform?e.platform:navigator.platform??\"\"}(),a3=function(){if(!a2)return\"\";let e=navigator.userAgentData;return e&&Array.isArray(e.brands)?e.brands.map(({brand:e,version:t})=>`${e}/${t}`).join(\" \"):navigator.userAgent}(),a6=\"undefined\"!=typeof CSS&&!!CSS.supports&&CSS.supports(\"-webkit-backdrop-filter:none\"),a9=\"MacIntel\"===a4.platform&&a4.maxTouchPoints>1||/iP(hone|ad|od)|iOS/.test(a4.platform);a2&&/firefox/i.test(a3);let a8=a2&&/apple/i.test(navigator.vendor),a7=a2&&/android/i.test(a5)||/android/i.test(a3),ie=a2&&a5.toLowerCase().startsWith(\"mac\")&&!navigator.maxTouchPoints,it=a3.includes(\"jsdom/\");function ir(e){e.preventDefault(),e.stopPropagation()}function io(e){return 0===e.mozInputSource&&!!e.isTrusted||(a7&&e.pointerType?\"click\"===e.type&&1===e.buttons:0===e.detail&&!e.pointerType)}function ia(e){return!it&&(!a7&&0===e.width&&0===e.height||a7&&1===e.width&&1===e.height&&0===e.pressure&&0===e.detail&&\"mouse\"===e.pointerType||e.width<1&&e.height<1&&0===e.pressure&&0===e.detail&&\"touch\"===e.pointerType)}function ii(e,t){let n=[\"mouse\",\"pen\"];return t||n.push(\"\",void 0),n.includes(e)}let il=\"data-base-ui-focusable\",is=\"active\",ic=\"selected\",iu=\"ArrowLeft\",id=\"ArrowRight\",ip=\"ArrowUp\",ih=\"ArrowDown\";function im(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}function ig(e,t){if(!e||!t)return!1;let n=t.getRootNode?.();if(e.contains(t))return!0;if(n&&aL(n)){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode||n.host}}return!1}function iy(e){return\"composedPath\"in e?e.composedPath()[0]:e.target}function iv(e,t){return null!=t&&(\"composedPath\"in e?e.composedPath().includes(t):null!=e.target&&t.contains(e.target))}function ib(e){return e?.ownerDocument||document}function iA(e){return aD(e)&&e.matches(\"input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])\")}function ix(e){return!!e&&\"combobox\"===e.getAttribute(\"role\")&&iA(e)}function iw(e){return e?e.hasAttribute(il)?e:e.querySelector(`[${il}]`)||e:null}function iC(e){return`data-base-ui-${e}`}let i_=iC(\"safe-polygon\");function ik(e,t,n){if(n&&!ii(n))return 0;if(\"number\"==typeof e)return e;if(\"function\"==typeof e){let n=e();return\"number\"==typeof n?n:n?.[t]}return e?.[t]}function iE(e){return\"function\"==typeof e?e():e}function ij(e,t={}){let{open:n,onOpenChange:r,dataRef:o,events:a,elements:i}=e,{enabled:l=!0,delay:s=0,handleClose:c=null,mouseOnly:u=!1,restMs:d=0,move:f=!0}=t,p=ak(),h=a_(),m=a0(c),g=a0(s),y=a0(n),v=a0(d),b=x.useRef(void 0),A=ac(),w=x.useRef(void 0),C=ac(),_=x.useRef(!0),k=x.useRef(!1),E=x.useRef(()=>{}),j=x.useRef(!1),S=af(()=>{let e=o.current.openEvent?.type;return e?.includes(\"mouse\")&&\"mousedown\"!==e});x.useEffect(()=>{if(l)return a.on(\"openchange\",e),()=>{a.off(\"openchange\",e)};function e({open:e}){e||(A.clear(),C.clear(),_.current=!0,j.current=!1)}},[l,a,A,C]),x.useEffect(()=>{if(!l||!m.current||!n)return;function e(e){S()&&r(!1,e,\"hover\")}let t=ib(i.floating).documentElement;return t.addEventListener(\"mouseleave\",e),()=>{t.removeEventListener(\"mouseleave\",e)}},[i.floating,n,r,l,m,S]);let O=x.useCallback((e,t=!0,n=\"hover\")=>{let o=ik(g.current,\"close\",b.current);o&&!w.current?A.start(o,()=>r(!1,e,n)):t&&(A.clear(),r(!1,e,n))},[g,r,A]),B=af(()=>{E.current(),w.current=void 0}),P=af(()=>{if(k.current){let e=ib(i.floating).body;e.style.pointerEvents=\"\",e.removeAttribute(i_),k.current=!1}}),I=af(()=>!!o.current.openEvent&&[\"click\",\"mousedown\"].includes(o.current.openEvent.type));x.useEffect(()=>{if(l&&aT(i.domReference)){let r=i.domReference,o=i.floating;return n&&r.addEventListener(\"mouseleave\",a),f&&r.addEventListener(\"mousemove\",e,{once:!0}),r.addEventListener(\"mouseenter\",e),r.addEventListener(\"mouseleave\",t),o&&(o.addEventListener(\"mouseleave\",a),o.addEventListener(\"mouseenter\",s),o.addEventListener(\"mouseleave\",c)),()=>{n&&r.removeEventListener(\"mouseleave\",a),f&&r.removeEventListener(\"mousemove\",e),r.removeEventListener(\"mouseenter\",e),r.removeEventListener(\"mouseleave\",t),o&&(o.removeEventListener(\"mouseleave\",a),o.removeEventListener(\"mouseenter\",s),o.removeEventListener(\"mouseleave\",c))}}function e(e){if(A.clear(),_.current=!1,u&&!ii(b.current)||iE(v.current)>0&&!ik(g.current,\"open\"))return;let t=ik(g.current,\"open\",b.current);t?A.start(t,()=>{y.current||r(!0,e,\"hover\")}):n||r(!0,e,\"hover\")}function t(e){if(I())return void P();E.current();let t=ib(i.floating);if(C.clear(),j.current=!1,m.current&&o.current.floatingContext){n||A.clear(),w.current=m.current({...o.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){P(),B(),I()||O(e,!0,\"safe-polygon\")}});let r=w.current;t.addEventListener(\"mousemove\",r),E.current=()=>{t.removeEventListener(\"mousemove\",r)};return}\"touch\"===b.current&&ig(i.floating,e.relatedTarget)||O(e)}function a(e){!I()&&o.current.floatingContext&&m.current?.({...o.current.floatingContext,tree:p,x:e.clientX,y:e.clientY,onClose(){P(),B(),I()||O(e)}})(e)}function s(){A.clear()}function c(e){I()||O(e,!1)}},[i,l,e,u,f,O,B,P,r,n,y,p,g,m,o,I,v,A,C]),ax(()=>{if(l&&n&&m.current?.__options?.blockPointerEvents&&S()){k.current=!0;let e=i.floating;if(aT(i.domReference)&&e){let t=ib(i.floating).body;t.setAttribute(i_,\"\");let n=i.domReference,r=p?.nodesRef.current.find(e=>e.id===h)?.context?.elements.floating;return r&&(r.style.pointerEvents=\"\"),t.style.pointerEvents=\"none\",n.style.pointerEvents=\"auto\",e.style.pointerEvents=\"auto\",()=>{t.style.pointerEvents=\"\",n.style.pointerEvents=\"\",e.style.pointerEvents=\"\"}}}},[l,n,h,i,p,m,S]),ax(()=>{n||(b.current=void 0,j.current=!1,B(),P())},[n,B,P]),x.useEffect(()=>()=>{B(),A.clear(),C.clear(),P()},[l,i.domReference,B,P,A,C]);let z=x.useMemo(()=>{function e(e){b.current=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e;function o(){_.current||y.current||r(!0,t,\"hover\")}(!u||ii(b.current))&&!n&&0!==iE(v.current)&&(j.current&&e.movementX**2+e.movementY**2<2||(C.clear(),\"touch\"===b.current?o():(j.current=!0,C.start(iE(v.current),o))))}}},[u,r,n,y,v,C]);return x.useMemo(()=>l?{reference:z}:{},[l,z])}function iS(e,t,n=!0){return e.filter(e=>e.parentId===t&&(!n||e.context?.open)).flatMap(t=>[t,...iS(e,t.id,n)])}function iO(e,t){let n=[],r=e.find(e=>e.id===t)?.parentId;for(;r;){let t=e.find(e=>e.id===r);r=t?.parentId,t&&(n=n.concat(t))}return n}function iB(e,t){let[n,r]=e,o=!1,a=t.length;for(let e=0,i=a-1;e=r!=c>=r&&n<=(s-a)*(r-l)/(c-l)+a&&(o=!o)}return o}function iP(e={}){let{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e,o=new as,a=!1,i=null,l=null,s=\"undefined\"!=typeof performance?performance.now():0,c=({x:e,y:n,placement:c,elements:u,onClose:d,nodeId:f,tree:p})=>function(h){var m,g;function y(){o.clear(),d()}if(o.clear(),!u.domReference||!u.floating||null==c||null==e||null==n)return;let{clientX:v,clientY:b}=h,A=[v,b],x=iy(h),w=\"mouseleave\"===h.type,C=ig(u.floating,x),_=ig(u.domReference,x),k=u.domReference.getBoundingClientRect(),E=u.floating.getBoundingClientRect(),j=c.split(\"-\")[0],S=e>E.right-E.width/2,O=n>E.bottom-E.height/2,B=(m=A,g=k,m[0]>=g.x&&m[0]<=g.x+g.width&&m[1]>=g.y&&m[1]<=g.y+g.height),P=E.width>k.width,I=E.height>k.height,z=(P?k:E).left,T=(P?k:E).right,D=(I?k:E).top,L=(I?k:E).bottom;if(C&&(a=!0,!w))return;if(_&&(a=!1),_&&!w){a=!0;return}if(w&&aT(h.relatedTarget)&&ig(u.floating,h.relatedTarget)||p&&iS(p.nodesRef.current,f).some(({context:e})=>e?.open))return;if(\"top\"===j&&n>=k.bottom-1||\"bottom\"===j&&n<=k.top+1||\"left\"===j&&e>=k.right-1||\"right\"===j&&e<=k.left+1)return y();let N=[];switch(j){case\"top\":N=[[z,k.top+1],[z,E.bottom-1],[T,E.bottom-1],[T,k.top+1]];break;case\"bottom\":N=[[z,E.top+1],[z,k.bottom-1],[T,k.bottom-1],[T,E.top+1]];break;case\"left\":N=[[E.right-1,L],[E.right-1,D],[k.left+1,D],[k.left+1,L]];break;case\"right\":N=[[k.right-1,L],[k.right-1,D],[E.left+1,D],[E.left+1,L]]}if(!iB([v,b],N)){if(a&&!B)return y();if(!w&&r){let e=function(e,t){let n=performance.now(),r=n-s;if(null===i||null===l||0===r)return i=e,l=t,s=n,null;let o=e-i,a=t-l,c=Math.sqrt(o*o+a*a);return i=e,l=t,s=n,c/r}(h.clientX,h.clientY);if(null!==e&&e<.1)return y()}iB([v,b],function([e,n]){switch(j){case\"top\":{let r=[[E.left,S||P?E.bottom-t:E.top],[E.right,S?P?E.bottom-t:E.top:E.bottom-t]];return[[P?e+t/2:S?e+4*t:e-4*t,n+t+1],[P?e-t/2:S?e+4*t:e-4*t,n+t+1],...r]}case\"bottom\":{let r=[[E.left,S||P?E.top+t:E.bottom],[E.right,S?P?E.top+t:E.bottom:E.top+t]];return[[P?e+t/2:S?e+4*t:e-4*t,n-t],[P?e-t/2:S?e+4*t:e-4*t,n-t],...r]}case\"left\":return[[O||I?E.right-t:E.left,E.top],[O?I?E.right-t:E.left:E.right-t,E.bottom],[e+t+1,I?n+t/2:O?n+4*t:n-4*t],[e+t+1,I?n-t/2:O?n+4*t:n-4*t]];case\"right\":{let r=[[O||I?E.left+t:E.right,E.top],[O?I?E.left+t:E.right:E.left+t,E.bottom]];return[[e-t,I?n+t/2:O?n+4*t:n-4*t],[e-t,I?n-t/2:O?n+4*t:n-4*t],...r]}default:return[]}}([e,n]))?!a&&r&&o.start(40,y):y()}};return c.__options={blockPointerEvents:n},c}let iI=ie&&a8;function iz(e,t={}){let{open:n,onOpenChange:r,events:o,dataRef:a,elements:i}=e,{enabled:l=!0,visibleOnly:s=!0}=t,c=x.useRef(!1),u=ac(),d=x.useRef(!0);x.useEffect(()=>{if(!l)return;let e=aP(i.domReference);function t(){!n&&aD(i.domReference)&&i.domReference===im(ib(i.domReference))&&(c.current=!0)}function r(){d.current=!0}function o(){d.current=!1}return e.addEventListener(\"blur\",t),iI&&(e.addEventListener(\"keydown\",r,!0),e.addEventListener(\"pointerdown\",o,!0)),()=>{e.removeEventListener(\"blur\",t),iI&&(e.removeEventListener(\"keydown\",r,!0),e.removeEventListener(\"pointerdown\",o,!0))}},[i.domReference,n,l]),x.useEffect(()=>{if(l)return o.on(\"openchange\",e),()=>{o.off(\"openchange\",e)};function e({reason:e}){(\"reference-press\"===e||\"escape-key\"===e)&&(c.current=!0)}},[o,l]);let f=x.useMemo(()=>({onMouseLeave(){c.current=!1},onFocus(e){if(c.current)return;let t=iy(e.nativeEvent);if(s&&aT(t)){if(iI&&!e.relatedTarget){if(!d.current&&!iA(t))return}else if(!function(e){if(!e||it)return!0;try{return e.matches(\":focus-visible\")}catch(e){return!0}}(t))return}r(!0,e.nativeEvent,\"focus\")},onBlur(e){c.current=!1;let t=e.relatedTarget,n=e.nativeEvent,o=aT(t)&&t.hasAttribute(iC(\"focus-guard\"))&&\"outside\"===t.getAttribute(\"data-type\");u.start(0,()=>{let e=im(i.domReference?i.domReference.ownerDocument:document);(t||e!==i.domReference)&&(ig(a.current.floatingContext?.refs.floating.current,e)||ig(i.domReference,e)||o||r(!1,n,\"focus\"))})}}),[a,i.domReference,r,s,u]);return x.useMemo(()=>l?{reference:f}:{},[l,f])}globalThis.requestAnimationFrame;let iT=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=e=>{this.isScheduled=!1;let t=this.callbacks,n=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,n>0)for(let n=0;n=this.callbacks.length||(this.callbacks[t]=null,this.callbacksCount-=1)}};class iD{static create(){return new iD}static request(e){return iT.request(e)}static cancel(e){return iT.cancel(e)}currentId=null;request(e){this.cancel(),this.currentId=iT.request(()=>{this.currentId=null,e()})}cancel=()=>{null!==this.currentId&&(iT.cancel(this.currentId),this.currentId=null)};disposeEffect=()=>this.cancel}function iL(){let e=aa(iD.create).current;return al(e.disposeEffect),e}let iN={style:{transition:\"none\"}},iR={},iM=[],iZ={fallbackAxisSide:\"none\"},iU={fallbackAxisSide:\"end\"},iF={intentional:\"onClick\",sloppy:\"onPointerDown\"};function iq(e){return{escapeKey:\"boolean\"==typeof e?e:e?.escapeKey??!1,outsidePress:\"boolean\"==typeof e?e:e?.outsidePress??!0}}function iH(e,t={}){let{open:n,onOpenChange:r,elements:o,dataRef:a}=e,{enabled:i=!0,escapeKey:l=!0,outsidePress:s=!0,outsidePressEvent:c=\"sloppy\",referencePress:u=!1,referencePressEvent:d=\"sloppy\",ancestorScroll:f=!1,bubbles:p,capture:h}=t,m=ak(),g=af(\"function\"==typeof s?s:()=>!1),y=\"function\"==typeof s?g:s,v=x.useRef(!1),{escapeKey:b,outsidePress:A}=iq(p),{escapeKey:w,outsidePress:C}=iq(h),_=x.useRef(null),k=ac(),E=ac(),j=x.useRef(!1),S=x.useRef(\"\"),O=af(e=>{S.current=e.pointerType}),B=af(()=>{let e=S.current;return\"string\"==typeof c?c:c[\"pen\"!==e&&e?e:\"mouse\"]}),P=af(e=>{if(!n||!i||!l||\"Escape\"!==e.key||j.current)return;let t=a.current.floatingContext?.nodeId,o=m?iS(m.nodesRef.current,t):[];if(!b&&(e.stopPropagation(),o.length>0)){let e=!0;if(o.forEach(t=>{t.context?.open&&!t.context.dataRef.current.__escapeKeyBubbles&&(e=!1)}),!e)return}r(!1,\"nativeEvent\"in e?e.nativeEvent:e,\"escape-key\")}),I=af(e=>{let t=B();return\"intentional\"===t&&\"click\"!==e.type||\"sloppy\"===t&&\"click\"===e.type}),z=af(e=>{let t=()=>{P(e),iy(e)?.removeEventListener(\"keydown\",t)};iy(e)?.addEventListener(\"keydown\",t)}),T=af(e=>{if(I(e))return;let t=a.current.insideReactTree;a.current.insideReactTree=!1;let n=v.current;if(v.current=!1,\"intentional\"===B()&&n||t||\"function\"==typeof y&&!y(e))return;let i=iy(e),l=`[${iC(\"inert\")}]`,s=ib(o.floating).querySelectorAll(l),c=aT(i)?i:null;for(;c&&!aY(c);){let e=aG(c);if(aY(e)||!aT(e))break;c=e}if(s.length&&aT(i)&&!i.matches(\"html,body\")&&!ig(i,o.floating)&&Array.from(s).every(e=>!ig(c,e)))return;if(aD(i)){let t=aY(i),n=aK(i),r=/auto|scroll/,o=t||r.test(n.overflowX),a=t||r.test(n.overflowY),l=o&&i.clientWidth>0&&i.scrollWidth>i.clientWidth,s=a&&i.clientHeight>0&&i.scrollHeight>i.clientHeight,c=\"rtl\"===n.direction,u=s&&(c?e.offsetX<=i.offsetWidth-i.clientWidth:e.offsetX>i.clientWidth),d=l&&e.offsetY>i.clientHeight;if(u||d)return}let u=a.current.floatingContext?.nodeId,d=m&&iS(m.nodesRef.current,u).some(t=>iv(e,t.context?.elements.floating));if(iv(e,o.floating)||iv(e,o.domReference)||d)return;let f=m?iS(m.nodesRef.current,u):[];if(f.length>0){let e=!0;if(f.forEach(t=>{t.context?.open&&!t.context.dataRef.current.__outsidePressBubbles&&(e=!1)}),!e)return}r(!1,e,\"outside-press\")}),D=af(e=>{if(!(\"sloppy\"!==B()||!n||!i||iv(e,o.floating)||iv(e,o.domReference))){if(\"touch\"===e.pointerType){_.current={startTime:Date.now(),startX:e.clientX,startY:e.clientY,dismissOnPointerUp:!1,dismissOnMouseDown:!0},k.start(1e3,()=>{_.current&&(_.current.dismissOnPointerUp=!1,_.current.dismissOnMouseDown=!1)});return}T(e)}}),L=af(e=>{if(I(e)||(k.clear(),\"mousedown\"===e.type&&_.current&&!_.current.dismissOnMouseDown))return;let t=()=>{\"pointerdown\"===e.type?D(e):T(e),iy(e)?.removeEventListener(e.type,t)};iy(e)?.addEventListener(e.type,t)}),N=af(e=>{if(\"sloppy\"!==B()||\"touch\"!==e.pointerType||!_.current||iv(e,o.floating)||iv(e,o.domReference))return;let t=Math.abs(e.clientX-_.current.startX),n=Math.abs(e.clientY-_.current.startY),r=Math.sqrt(t*t+n*n);r>5&&(_.current.dismissOnPointerUp=!0),r>10&&(T(e),k.clear(),_.current=null)}),R=af(e=>{\"sloppy\"!==B()||\"touch\"!==e.pointerType||!_.current||iv(e,o.floating)||iv(e,o.domReference)||(_.current.dismissOnPointerUp&&T(e),k.clear(),_.current=null)});x.useEffect(()=>{if(!n||!i)return;a.current.__escapeKeyBubbles=b,a.current.__outsidePressBubbles=A;let e=new as;function t(e){r(!1,e,\"ancestor-scroll\")}function s(){e.clear(),j.current=!0}function c(){e.start(5*!!a$(),()=>{j.current=!1})}let u=ib(o.floating);u.addEventListener(\"pointerdown\",O,!0),l&&(u.addEventListener(\"keydown\",w?z:P,w),u.addEventListener(\"compositionstart\",s),u.addEventListener(\"compositionend\",c)),y&&(u.addEventListener(\"click\",C?L:T,C),u.addEventListener(\"pointerdown\",C?L:T,C),u.addEventListener(\"pointermove\",N,C),u.addEventListener(\"pointerup\",R,C),u.addEventListener(\"mousedown\",L,C));let d=[];return f&&(aT(o.domReference)&&(d=aQ(o.domReference)),aT(o.floating)&&(d=d.concat(aQ(o.floating))),!aT(o.reference)&&o.reference&&o.reference.contextElement&&(d=d.concat(aQ(o.reference.contextElement)))),(d=d.filter(e=>e!==u.defaultView?.visualViewport)).forEach(e=>{e.addEventListener(\"scroll\",t,{passive:!0})}),()=>{u.removeEventListener(\"pointerdown\",O,!0),l&&(u.removeEventListener(\"keydown\",w?z:P,w),u.removeEventListener(\"compositionstart\",s),u.removeEventListener(\"compositionend\",c)),y&&(u.removeEventListener(\"click\",C?L:T,C),u.removeEventListener(\"pointerdown\",C?L:T,C),u.removeEventListener(\"pointermove\",N,C),u.removeEventListener(\"pointerup\",R,C),u.removeEventListener(\"mousedown\",L,C)),d.forEach(e=>{e.removeEventListener(\"scroll\",t)}),e.clear()}},[a,o,l,y,c,n,r,f,i,b,A,P,w,z,T,C,L,D,N,R,O]),x.useEffect(()=>{a.current.insideReactTree=!1},[a,y]);let M=x.useMemo(()=>({onKeyDown:P,...u&&{[iF[d]]:e=>{r(!1,e.nativeEvent,\"reference-press\")},...\"intentional\"!==d&&{onClick(e){r(!1,e.nativeEvent,\"reference-press\")}}}}),[P,r,u,d]),Z=af(e=>{let t=iy(e.nativeEvent);ig(o.floating,t)&&(v.current=!0)}),U=af(()=>{a.current.insideReactTree=!0,E.start(0,()=>{a.current.insideReactTree=!1})}),F=x.useMemo(()=>({onKeyDown:P,onMouseDown:Z,onMouseUp:Z,onPointerDownCapture:U,onMouseDownCapture:U,onClickCapture:U}),[P,Z,U]);return x.useMemo(()=>i?{reference:M,floating:F}:{},[i,M,F])}let iV=new Map([[\"select\",\"listbox\"],[\"combobox\",\"listbox\"],[\"label\",!1]]),i$=[\"top\",\"right\",\"bottom\",\"left\"],iW=Math.min,iY=Math.max,iK=Math.round,iX=Math.floor,iG=e=>({x:e,y:e}),iQ={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"},iJ={start:\"end\",end:\"start\"};function i0(e,t){return\"function\"==typeof e?e(t):e}function i1(e){return e.split(\"-\")[0]}function i2(e){return e.split(\"-\")[1]}function i4(e){return\"x\"===e?\"y\":\"x\"}function i5(e){return\"y\"===e?\"height\":\"width\"}let i3=new Set([\"top\",\"bottom\"]);function i6(e){return i3.has(i1(e))?\"y\":\"x\"}function i9(e){return e.replace(/start|end/g,e=>iJ[e])}let i8=[\"left\",\"right\"],i7=[\"right\",\"left\"],le=[\"top\",\"bottom\"],lt=[\"bottom\",\"top\"];function ln(e){return e.replace(/left|right|bottom|top/g,e=>iQ[e])}function lr(e){return\"number\"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function lo(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function la(e,t,n){return Math.floor(e/t)!==n}function li(e,t){return t<0||t>=e.current.length}function ll(e,t){return lc(e,{disabledIndices:t})}function ls(e,t){return lc(e,{decrement:!0,startingIndex:e.current.length,disabledIndices:t})}function lc(e,{startingIndex:t=-1,decrement:n=!1,disabledIndices:r,amount:o=1}={}){let a=t;do a+=n?-o:o;while(a>=0&&a<=e.current.length-1&&lu(e,a,r));return a}function lu(e,t,n){if(\"function\"==typeof n)return n(t);if(n)return n.includes(t);let r=e.current[t];return null==r||r.hasAttribute(\"disabled\")||\"true\"===r.getAttribute(\"aria-disabled\")}let ld=0;function lf(e,t={}){let{preventScroll:n=!1,cancelPrevious:r=!0,sync:o=!1}=t;r&&cancelAnimationFrame(ld);let a=()=>e?.focus({preventScroll:n});o?a():ld=requestAnimationFrame(a)}function lp(e,t,n){switch(e){case\"vertical\":return t;case\"horizontal\":return n;default:return t||n}}function lh(e,t){return lp(t,e===ip||e===ih,e===iu||e===id)}function lm(e,t,n){return lp(t,e===ih,n?e===iu:e===id)||\"Enter\"===e||\" \"===e||\"\"===e}function lg(e=[]){let t=e.map(e=>e?.reference),n=e.map(e=>e?.floating),r=e.map(e=>e?.item),o=x.useCallback(t=>ly(t,e,\"reference\"),t),a=x.useCallback(t=>ly(t,e,\"floating\"),n),i=x.useCallback(t=>ly(t,e,\"item\"),r);return x.useMemo(()=>({getReferenceProps:o,getFloatingProps:a,getItemProps:i}),[o,a,i])}function ly(e,t,n){let r=new Map,o=\"item\"===n,a={};for(let t in\"floating\"===n&&(a.tabIndex=-1,a[il]=\"\"),e)o&&e&&(t===is||t===ic)||(a[t]=e[t]);for(let i=0;ir.get(o)?.map(t=>t(...e)).find(e=>void 0!==e))):e[o]=a)}}let lb=x.createContext(void 0);function lA(e){let t=x.useContext(lb);if(void 0===t&&!e)throw Error(\"Base UI: MenuRootContext is missing. Menu parts must be placed within .\");return t}let lx=x.createContext(null);function lw(e,t=!1,n=!1){let[r,o]=x.useState(e&&t?\"idle\":void 0),[a,i]=x.useState(e);return e&&!a&&(i(!0),o(\"starting\")),e||!a||\"ending\"===r||n||o(\"ending\"),e||a||\"ending\"!==r||o(void 0),ax(()=>{if(!e&&a&&\"ending\"!==r&&n){let e=iD.request(()=>{o(\"ending\")});return()=>{iD.cancel(e)}}},[e,a,r,n]),ax(()=>{if(!e||t)return;let n=iD.request(()=>{ef.flushSync(()=>{o(void 0)})});return()=>{iD.cancel(n)}},[t,e]),ax(()=>{if(!e||!t)return;e&&a&&\"idle\"!==r&&o(\"starting\");let n=iD.request(()=>{o(\"idle\")});return()=>{iD.cancel(n)}},[t,e,a,o,r]),x.useMemo(()=>({mounted:a,setMounted:i,transitionStatus:r}),[a,r])}function lC(e){let{enabled:t=!0,open:n,ref:r,onComplete:o}=e,a=a0(n),i=af(o),l=function(e,t=!1){let n=iL();return af((r,o=null)=>{let a;if(n.cancel(),null!=e){if(\"current\"in e){if(null==e.current)return;a=e.current}else a=e;\"function\"!=typeof a.getAnimations||globalThis.BASE_UI_ANIMATIONS_DISABLED?r():n.request(()=>{function e(){a&&Promise.allSettled(a.getAnimations().map(e=>e.finished)).then(()=>{null!=o&&o.aborted||ef.flushSync(r)})}t?n.request(e):e()})}})}(r,n);x.useEffect(()=>{t&&l(()=>{n===a.current&&i()})},[t,n,i,l,a])}let l_=x.createContext(void 0);function lk(e=!0){let t=x.useContext(l_);if(void 0===t&&!e)throw Error(\"Base UI: DirectionContext is missing.\");return t?.direction??\"ltr\"}function lE(e){return e?.ownerDocument||document}let lj=()=>{},lS={},lO={},lB=\"\";class lP{lockCount=0;restore=null;timeoutLock=as.create();timeoutUnlock=as.create();acquire(e){return this.lockCount+=1,1===this.lockCount&&null===this.restore&&this.timeoutLock.start(0,()=>this.lock(e)),this.release}release=()=>{this.lockCount-=1,0===this.lockCount&&this.restore&&this.timeoutUnlock.start(0,this.unlock)};unlock=()=>{0===this.lockCount&&this.restore&&(this.restore?.(),this.restore=null)};lock(e){if(0===this.lockCount||null!==this.restore)return;let t=lE(e).documentElement,n=aP(t).getComputedStyle(t).overflowY;if(\"hidden\"===n||\"clip\"===n){this.restore=lj;return}let r=a9||!function(e){if(\"undefined\"==typeof document)return!1;let t=lE(e);return aP(t).innerWidth-t.documentElement.clientWidth>0}(e);this.restore=r?function(e){let t=lE(e).documentElement,n=t.style.overflow;return t.style.overflow=\"hidden\",()=>{t.style.overflow=n}}(e):function(e){let t=lE(e),n=t.documentElement,r=t.body,o=aP(n),a=0,i=0,l=iD.create();if(a6&&(o.visualViewport?.scale??1)!==1)return()=>{};function s(){let e=o.getComputedStyle(n),t=o.getComputedStyle(r);a=n.scrollTop,i=n.scrollLeft,lS={scrollbarGutter:n.style.scrollbarGutter,overflowY:n.style.overflowY,overflowX:n.style.overflowX},lB=n.style.scrollBehavior,lO={position:r.style.position,height:r.style.height,width:r.style.width,boxSizing:r.style.boxSizing,overflowY:r.style.overflowY,overflowX:r.style.overflowX,scrollBehavior:r.style.scrollBehavior};let l=\"undefined\"!=typeof CSS&&CSS.supports?.(\"scrollbar-gutter\",\"stable\"),s=n.scrollHeight>n.clientHeight,c=n.scrollWidth>n.clientWidth,u=\"scroll\"===e.overflowY||\"scroll\"===t.overflowY,d=\"scroll\"===e.overflowX||\"scroll\"===t.overflowX,f=Math.max(0,o.innerWidth-n.clientWidth),p=Math.max(0,o.innerHeight-n.clientHeight),h=parseFloat(t.marginTop)+parseFloat(t.marginBottom),m=parseFloat(t.marginLeft)+parseFloat(t.marginRight);Object.assign(n.style,{scrollbarGutter:\"stable\",overflowY:!l&&(s||u)?\"scroll\":\"hidden\",overflowX:!l&&(c||d)?\"scroll\":\"hidden\"}),Object.assign(r.style,{position:\"relative\",height:h||p?`calc(100dvh - ${h+p}px)`:\"100dvh\",width:m||f?`calc(100vw - ${m+f}px)`:\"100vw\",boxSizing:\"border-box\",overflow:\"hidden\",scrollBehavior:\"unset\"}),r.scrollTop=a,r.scrollLeft=i,n.setAttribute(\"data-base-ui-scroll-locked\",\"\"),n.style.scrollBehavior=\"unset\"}function c(){Object.assign(n.style,lS),Object.assign(r.style,lO),n.scrollTop=a,n.scrollLeft=i,n.removeAttribute(\"data-base-ui-scroll-locked\"),n.style.scrollBehavior=lB}function u(){c(),l.request(s)}return s(),o.addEventListener(\"resize\",u),()=>{l.cancel(),c(),o.removeEventListener(\"resize\",u)}}(e)}}let lI=new lP;function lz(e){if(e)return({\"focus-out\":\"focus-out\",\"escape-key\":\"escape-key\",\"outside-press\":\"outside-press\",\"list-navigation\":\"list-navigation\",click:\"trigger-press\",hover:\"trigger-hover\",focus:\"trigger-focus\",\"reference-press\":\"trigger-press\",\"safe-polygon\":\"trigger-hover\",\"ancestor-scroll\":void 0})[e]}let lT=x.createContext(void 0);function lD(e=!0){let t=x.useContext(lT);if(void 0===t&&!e)throw Error(\"Base UI: ContextMenuRootContext is missing. ContextMenu parts must be placed within .\");return t}let lL=x.createContext(!1);function lN(e,t){return e&&!t?e:!e&&t?t:e||t?{...e,...t}:void 0}let lR={};function lM(e,t,n,r,o){let a={...lF(e,lR)};return t&&(a=lZ(a,t)),n&&(a=lZ(a,n)),r&&(a=lZ(a,r)),o&&(a=lZ(a,o)),a}function lZ(e,t){return lU(t)?t(e):function(e,t){if(!t)return e;for(let n in t){let r=t[n];switch(n){case\"style\":e[n]=lN(e.style,r);break;case\"className\":e[n]=lH(e.className,r);break;default:!function(e,t){let n=e.charCodeAt(0),r=e.charCodeAt(1),o=e.charCodeAt(2);return 111===n&&110===r&&o>=65&&o<=90&&(\"function\"==typeof t||void 0===t)}(n,r)?e[n]=r:e[n]=function(e,t){return t?e?n=>{var r;if(null!=(r=n)&&\"object\"==typeof r&&\"nativeEvent\"in r){lq(n);let r=t(n);return n.baseUIHandlerPrevented||e?.(n),r}let o=t(n);return e?.(n),o}:t:e}(e[n],r)}}return e}(e,t)}function lU(e){return\"function\"==typeof e}function lF(e,t){return lU(e)?e(t):e??lR}function lq(e){return e.preventBaseUIHandler=()=>{e.baseUIHandlerPrevented=!0},e}function lH(e,t){return t?e?t+\" \"+e:t:e}let lV=[],l$={current:!1},lW=function(e){let t,n,{children:r,open:o,onOpenChange:a,onOpenChangeComplete:i,defaultOpen:l=!1,disabled:s=!1,modal:c,loop:u=!0,orientation:d=\"vertical\",actionsRef:f,openOnHover:p,delay:h=100,closeDelay:m=0,closeParentOnEsc:g=!0}=e,[y,v]=x.useState(null),[A,w]=x.useState(null),[C,_]=x.useState(),[k,E]=x.useState(!0),[j,S]=x.useState(null),[O,B]=x.useState(null),[P,I]=x.useState(!0),[z,T]=x.useState(!1),D=x.useRef(null),L=x.useRef(null),N=x.useRef(null),R=x.useRef([]),M=x.useRef([]),Z=ac(),U=lD(!0),F=x.useContext(lL);{let e=lA(!0),n=function(e){let t=x.useContext(lx);if(null===t&&!e)throw Error(\"Base UI: MenubarContext is missing. Menubar parts must be placed within .\");return t}(!0);t=F&&e?{type:\"menu\",context:e}:n?{type:\"menubar\",context:n}:U?{type:\"context-menu\",context:U}:{type:void 0}}let q=ab();void 0!==t.type&&(q=t.context.rootId);let H=(void 0===t.type||\"context-menu\"===t.type)&&(c??!0),V=\"menu\"===t.type?t.context.allowMouseEnter:z,$=\"menu\"===t.type?t.context.setAllowMouseEnter:T,W=p??(\"menu\"===t.type||\"menubar\"===t.type&&t.context.hasSubmenuOpen),[Y,K]=am({controlled:o,default:l,name:\"MenuRoot\",state:\"open\"}),X=x.useRef(\"context-menu\"!==t.type),G=ac();x.useEffect(()=>{if(Y||(D.current=null),\"context-menu\"===t.type){if(!Y){G.clear(),X.current=!1;return}G.start(500,()=>{X.current=!0})}},[G,Y,t.type]);let Q=x.useCallback(e=>{N.current=e,w(e)},[]),{mounted:J,setMounted:ee,transitionStatus:et}=lw(Y),{openMethod:en,triggerProps:er,reset:eo}=function(e){let[t,n]=x.useState(null),r=af((t,r)=>{e||n(r)}),o=af(()=>{n(null)}),{onClick:a,onPointerDown:i}=function(e){let t=x.useRef(\"\"),n=x.useCallback(n=>{n.defaultPrevented||(t.current=n.pointerType,e(n,n.pointerType))},[e]);return{onClick:x.useCallback(n=>{if(0===n.detail)return void e(n,\"keyboard\");\"pointerType\"in n&&e(n,n.pointerType),e(n,t.current),t.current=\"\"},[e]),onPointerDown:n}}(r);return x.useMemo(()=>({openMethod:t,reset:o,triggerProps:{onClick:a,onPointerDown:i}}),[t,o,a,i])}(Y);var ea={enabled:Y&&H&&\"trigger-hover\"!==O&&\"touch\"!==en,mounted:J,open:Y,referenceElement:A};let{enabled:ei=!0,mounted:el,open:es,referenceElement:ec=null}=ea;ax(()=>{if(ei&&a6&&el&&!es){let e=lE(ec),t=e.body.style.userSelect,n=e.body.style.webkitUserSelect;return e.body.style.userSelect=\"none\",e.body.style.webkitUserSelect=\"none\",()=>{e.body.style.userSelect=t,e.body.style.webkitUserSelect=n}}},[ei,el,es,ec]),ax(()=>{if(ei)return lI.acquire(ec)},[ei,ec]),Y||k||E(!0);let eu=af(()=>{ee(!1),I(!0),$(!1),i?.(!1),eo()});lC({enabled:!f,open:Y,ref:L,onComplete(){Y||eu()}});let ed=x.useRef(!0),ep=ac(),eh=af((e,n,r)=>{if(Y===e||!1===e&&n?.type===\"click\"&&\"touch\"===n.pointerType&&!ed.current)return;if(!e&&null!==j){let e=R.current[j];queueMicrotask(()=>{e?.setAttribute(\"tabindex\",\"-1\")})}e&&\"trigger-focus\"===r?(ed.current=!1,ep.start(300,()=>{ed.current=!0})):(ed.current=!0,ep.clear());let o=(\"trigger-press\"===r||\"item-press\"===r)&&0===n.detail&&n?.isTrusted,i=!e&&(\"escape-key\"===r||null==r);function l(){a?.(e,n,r),K(e),B(r??null),D.current=n??null}\"trigger-hover\"===r?(I(!0),Z.start(500,()=>{I(!1)}),ef.flushSync(l)):l(),\"menubar\"===t.type&&(\"trigger-focus\"===r||\"focus-out\"===r||\"trigger-hover\"===r||\"list-navigation\"===r||\"sibling-open\"===r)?_(\"group\"):o||i?_(o?\"click\":\"dismiss\"):_(void 0)});x.useImperativeHandle(f,()=>({unmount:eu}),[eu]),\"context-menu\"===t.type&&(n=t.context),x.useImperativeHandle(n?.positionerRef,()=>A,[A]),x.useImperativeHandle(n?.actionsRef,()=>({setOpen:eh}),[eh]),x.useEffect(()=>{Y||Z.clear()},[Z,Y]);let em=aS({elements:{reference:y,floating:A},open:Y,onOpenChange(e,t,n){eh(e,t,lz(n))}}),eg=ij(em,{enabled:k&&W&&!s&&\"context-menu\"!==t.type&&(\"menubar\"!==t.type||t.context.hasSubmenuOpen&&!Y),handleClose:iP({blockPointerEvents:!0}),mouseOnly:!0,move:\"menu\"===t.type,restMs:void 0===t.type||\"menu\"===t.type&&V?h:void 0,delay:\"menu\"===t.type?{open:V?h:1e10,close:m}:{close:m}}),ey=iz(em,{enabled:!s&&!Y&&\"menubar\"===t.type&&t.context.hasSubmenuOpen&&!U}),ev=function(e,t={}){let{open:n,onOpenChange:r,dataRef:o}=e,{enabled:a=!0,event:i=\"click\",toggle:l=!0,ignoreMouse:s=!1,stickIfOpen:c=!0}=t,u=x.useRef(void 0),d=iL(),f=x.useMemo(()=>({onPointerDown(e){u.current=e.pointerType},onMouseDown(e){let t=u.current,a=e.nativeEvent;if(0!==e.button||\"click\"===i||ii(t,!0)&&s)return;let f=o.current.openEvent,p=f?.type,h=!(n&&l&&(!f||!c||\"click\"===p||\"mousedown\"===p));d.request(()=>{r(h,a,\"click\")})},onClick(e){let t=u.current;if(\"mousedown\"===i&&t){u.current=void 0;return}if(ii(t,!0)&&s)return;let a=o.current.openEvent,d=a?.type;r(!(n&&l&&(!a||!c||\"click\"===d||\"mousedown\"===d||\"keydown\"===d||\"keyup\"===d)),e.nativeEvent,\"click\")},onKeyDown(){u.current=void 0}}),[o,i,s,r,n,c,l,d]);return x.useMemo(()=>a?{reference:f}:iR,[a,f])}(em,{enabled:!s&&\"context-menu\"!==t.type,event:Y&&\"menubar\"===t.type?\"click\":\"mousedown\",toggle:!W||\"menu\"!==t.type,ignoreMouse:W&&\"menu\"===t.type,stickIfOpen:void 0===t.type&&P}),eb=iH(em,{enabled:!s,bubbles:g&&\"menu\"===t.type,outsidePress:()=>\"context-menu\"!==t.type||D.current?.type===\"contextmenu\"||X.current}),eA=function(e,t={}){let{open:n,elements:r,floatingId:o}=e,{enabled:a=!0,role:i=\"dialog\"}=t,l=ab(),s=r.domReference?.id||l,c=x.useMemo(()=>iw(r.floating)?.id||o,[r.floating,o]),u=iV.get(i)??i,d=null!=a_(),f=x.useMemo(()=>\"tooltip\"===u||\"label\"===i?{[`aria-${\"label\"===i?\"labelledby\":\"describedby\"}`]:n?c:void 0}:{\"aria-expanded\":n?\"true\":\"false\",\"aria-haspopup\":\"alertdialog\"===u?\"dialog\":u,\"aria-controls\":n?c:void 0,...\"listbox\"===u&&{role:\"combobox\"},...\"menu\"===u&&{id:s},...\"menu\"===u&&d&&{role:\"menuitem\"},...\"select\"===i&&{\"aria-autocomplete\":\"none\"},...\"combobox\"===i&&{\"aria-autocomplete\":\"list\"}},[u,c,d,n,s,i]),p=x.useMemo(()=>{let e={id:c,...u&&{role:u}};return\"tooltip\"===u||\"label\"===i?e:{...e,...\"menu\"===u&&{\"aria-labelledby\":s}}},[u,c,s,i]),h=x.useCallback(({active:e,selected:t})=>{let n={role:\"option\",...e&&{id:`${c}-fui-option`}};switch(i){case\"select\":case\"combobox\":return{...n,\"aria-selected\":t}}return{}},[c,i]);return x.useMemo(()=>a?{reference:f,floating:p,item:h}:{},[a,f,p,h])}(em,{role:\"menu\"}),ex=lk(),ew=function(e,t){let{open:n,onOpenChange:r,elements:o,floatingId:a}=e,{listRef:i,activeIndex:l,onNavigate:s=()=>{},enabled:c=!0,selectedIndex:u=null,allowEscape:d=!1,loop:f=!1,nested:p=!1,rtl:h=!1,virtual:m=!1,focusItemOnOpen:g=\"auto\",focusItemOnHover:y=!0,openOnArrowKeyDown:v=!0,disabledIndices:b,orientation:A=\"vertical\",parentOrientation:w,cols:C=1,scrollItemIntoView:_=!0,virtualItemRef:k,itemSizes:E,dense:j=!1}=t,S=a0(iw(o.floating)),O=a_(),B=ak();ax(()=>{e.dataRef.current.orientation=A},[e,A]);let P=ix(o.domReference),I=x.useRef(g),z=x.useRef(u??-1),T=x.useRef(null),D=x.useRef(!0),L=af(()=>{s(-1===z.current?null:z.current)}),N=x.useRef(L),R=x.useRef(!!o.floating),M=x.useRef(n),Z=x.useRef(!1),U=x.useRef(!1),F=a0(b),q=a0(n),H=a0(_),V=a0(u),[$,W]=x.useState(),Y=af(()=>{function e(e){m?(e.id?.endsWith(\"-fui-option\")&&(e.id=`${a}-${Math.random().toString(16).slice(2,10)}`),W(e.id),B?.events.emit(\"virtualfocus\",e),k&&(k.current=e)):lf(e,{sync:Z.current,preventScroll:!0})}let t=i.current[z.current],n=U.current;t&&e(t),(Z.current?e=>e():requestAnimationFrame)(()=>{let r=i.current[z.current]||t;if(!r)return;t||e(r);let o=H.current;o&&X&&(n||!D.current)&&r.scrollIntoView?.(\"boolean\"==typeof o?{block:\"nearest\",inline:\"nearest\"}:o)})});ax(()=>{c&&(n&&o.floating?I.current&&null!=u&&(U.current=!0,z.current=u,L()):R.current&&(z.current=-1,N.current()))},[c,n,o.floating,u,L]),ax(()=>{if(c&&n&&o.floating)if(null==l){if(Z.current=!1,null!=V.current)return;if(R.current&&(z.current=-1,Y()),(!M.current||!R.current)&&I.current&&(null!=T.current||!0===I.current&&null==T.current)){let e=0,t=()=>{null==i.current[0]?(e<2&&(e?requestAnimationFrame:queueMicrotask)(t),e+=1):(z.current=null==T.current||lm(T.current,A,h)||p?ll(i,F.current):ls(i,F.current),T.current=null,L())};t()}}else li(i,l)||(z.current=l,Y(),U.current=!1)},[c,n,o.floating,l,V,p,i,A,h,L,Y,F]),ax(()=>{if(!c||o.floating||!B||m||!R.current)return;let e=B.nodesRef.current,t=e.find(e=>e.id===O)?.context?.elements.floating,n=im(ib(o.floating)),r=e.some(e=>e.context&&ig(e.context.elements.floating,n));t&&!r&&D.current&&t.focus({preventScroll:!0})},[c,o.floating,B,O,m]),ax(()=>{N.current=L,M.current=n,R.current=!!o.floating}),ax(()=>{n||(T.current=null,I.current=g)},[n,g]);let K=null!=l,X=x.useMemo(()=>{function e(e){if(!q.current)return;let t=i.current.indexOf(e);-1!==t&&z.current!==t&&(z.current=t,L())}return{onFocus({currentTarget:t}){Z.current=!0,e(t)},onClick:({currentTarget:e})=>e.focus({preventScroll:!0}),onMouseMove({currentTarget:t}){Z.current=!0,U.current=!1,y&&e(t)},onPointerLeave({pointerType:e}){D.current&&\"touch\"!==e&&(Z.current=!0,y&&(z.current=-1,L(),m||S.current?.focus({preventScroll:!0})))}}},[q,S,y,i,L,m]),G=x.useCallback(()=>w??B?.nodesRef.current.find(e=>e.id===O)?.context?.dataRef?.current.orientation,[O,B,w]),Q=af(e=>{var t,a,l,s,c;if(D.current=!1,Z.current=!0,229===e.which||!q.current&&e.currentTarget===S.current)return;if(p&&(t=e.key,a=A,l=h,s=C,\"both\"===a||\"horizontal\"===a&&s&&s>1?\"Escape\"===t:lp(a,l?t===id:t===iu,t===ip))){lh(e.key,G())||ir(e),r(!1,e.nativeEvent,\"list-navigation\"),aD(o.domReference)&&(m?B?.events.emit(\"virtualfocus\",o.domReference):o.domReference.focus());return}let u=z.current,g=ll(i,b),y=ls(i,b);if(P||(\"Home\"===e.key&&(ir(e),z.current=g,L()),\"End\"===e.key&&(ir(e),z.current=y,L())),C>1){let t=E||Array.from({length:i.current.length},()=>({width:1,height:1})),n=function(e,t,n){let r=[],o=0;return e.forEach(({width:e,height:a},i)=>{let l=!1;for(n&&(o=0);!l;){let n=[];for(let r=0;rnull==r[e])?(n.forEach(e=>{r[e]=i}),l=!0):o+=1}}),[...r]}(t,C,j),r=n.findIndex(e=>null!=e&&!lu(i,e,b)),o=n.reduce((e,t,n)=>null==t||lu(i,t,b)?e:n,-1),a=n[function(e,{event:t,orientation:n,loop:r,rtl:o,cols:a,disabledIndices:i,minIndex:l,maxIndex:s,prevIndex:c,stopEvent:u=!1}){let d=c;if(t.key===ip){if(u&&ir(t),-1===c)d=s;else if(d=lc(e,{startingIndex:d,amount:a,decrement:!0,disabledIndices:i}),r&&(c-ae?n:n-a}li(e,d)&&(d=c)}if(t.key===ih&&(u&&ir(t),-1===c?d=l:(d=lc(e,{startingIndex:c,amount:a,disabledIndices:i}),r&&c+a>s&&(d=lc(e,{startingIndex:c%a-a,amount:a,disabledIndices:i}))),li(e,d)&&(d=c)),\"both\"===n){let n=iX(c/a);t.key===(o?iu:id)&&(u&&ir(t),c%a!=a-1?(d=lc(e,{startingIndex:c,disabledIndices:i}),r&&la(d,a,n)&&(d=lc(e,{startingIndex:c-c%a-1,disabledIndices:i}))):r&&(d=lc(e,{startingIndex:c-c%a-1,disabledIndices:i})),la(d,a,n)&&(d=c)),t.key===(o?id:iu)&&(u&&ir(t),c%a!=0?(d=lc(e,{startingIndex:c,decrement:!0,disabledIndices:i}),r&&la(d,a,n)&&(d=lc(e,{startingIndex:c+(a-c%a),decrement:!0,disabledIndices:i}))):r&&(d=lc(e,{startingIndex:c+(a-c%a),decrement:!0,disabledIndices:i})),la(d,a,n)&&(d=c));let l=iX(s/a)===n;li(e,d)&&(d=r&&l?t.key===(o?id:iu)?s:lc(e,{startingIndex:c-c%a-1,disabledIndices:i}):c)}return d}({current:n.map(e=>null!=e?i.current[e]:null)},{event:e,orientation:A,loop:f,rtl:h,cols:C,disabledIndices:(c=[...(\"function\"!=typeof b?b:null)||i.current.map((e,t)=>lu(i,t,b)?t:void 0),void 0],n.flatMap((e,t)=>c.includes(e)?[t]:[])),minIndex:r,maxIndex:o,prevIndex:function(e,t,n,r,o){if(-1===e)return -1;let a=n.indexOf(e),i=t[e];switch(o){case\"tl\":return a;case\"tr\":if(!i)return a;return a+i.width-1;case\"bl\":if(!i)return a;return a+(i.height-1)*r;case\"br\":return n.lastIndexOf(e);default:return -1}}(z.current>y?g:z.current,t,n,C,e.key===ih?\"bl\":e.key===(h?iu:id)?\"tr\":\"tl\"),stopEvent:!0})];if(null!=a&&(z.current=a,L()),\"both\"===A)return}if(lh(e.key,A)){if(ir(e),n&&!m&&im(e.currentTarget.ownerDocument)===e.currentTarget){z.current=lm(e.key,A,h)?g:y,L();return}lm(e.key,A,h)?f?z.current=u>=y?d&&u!==i.current.length?-1:g:lc(i,{startingIndex:u,disabledIndices:b}):z.current=Math.min(y,lc(i,{startingIndex:u,disabledIndices:b})):f?z.current=u<=g?d&&-1!==u?i.current.length:y:lc(i,{startingIndex:u,decrement:!0,disabledIndices:b}):z.current=Math.max(g,lc(i,{startingIndex:u,decrement:!0,disabledIndices:b})),li(i,z.current)&&(z.current=-1),L()}}),J=x.useMemo(()=>m&&n&&K&&{\"aria-activedescendant\":$},[m,n,K,$]),ee=x.useMemo(()=>({\"aria-orientation\":\"both\"===A?void 0:A,...!P?J:{},onKeyDown(e){if(\"Tab\"===e.key&&e.shiftKey&&n&&!m){ir(e),r(!1,e.nativeEvent,\"list-navigation\"),aD(o.domReference)&&o.domReference.focus();return}Q(e)},onPointerMove(){D.current=!0}}),[J,Q,A,P,r,n,m,o.domReference]),et=x.useMemo(()=>{function e(e){\"auto\"===g&&io(e.nativeEvent)&&(I.current=!0)}function t(e){I.current=g,\"auto\"===g&&ia(e.nativeEvent)&&(I.current=!0)}return{...J,onKeyDown(e){var t,o;D.current=!1;let a=e.key.startsWith(\"Arrow\"),l=(t=e.key,o=G(),lp(o,h?t===iu:t===id,t===ih)),s=lh(e.key,A),c=(p?l:s)||\"Enter\"===e.key||\"\"===e.key.trim();if(m&&n)return Q(e);if(n||v||!a){if(c){let t=lh(e.key,G());T.current=p&&t?null:e.key}if(p){l&&(ir(e),n?(z.current=ll(i,F.current),L()):r(!0,e.nativeEvent,\"list-navigation\"));return}s&&(null!=u&&(z.current=u),ir(e),!n&&v?r(!0,e.nativeEvent,\"list-navigation\"):Q(e),n&&L())}},onFocus(){n&&!m&&(z.current=-1,L())},onPointerDown:t,onPointerEnter:t,onMouseDown:e,onClick:e}},[J,Q,F,g,i,p,L,r,n,v,A,G,h,u,m]);return x.useMemo(()=>c?{reference:et,floating:ee,item:X}:{},[c,et,ee,X])}(em,{enabled:!s,listRef:R,activeIndex:j,nested:void 0!==t.type,loop:u,orientation:d,parentOrientation:\"menubar\"===t.type?t.context.orientation:void 0,rtl:\"rtl\"===ex,disabledIndices:lV,onNavigate:S,openOnArrowKeyDown:\"context-menu\"!==t.type}),eC=x.useRef(!1),e_=function(e,t){let{open:n,dataRef:r}=e,{listRef:o,activeIndex:a,onMatch:i,onTypingChange:l,enabled:s=!0,findMatch:c=null,resetMs:u=750,ignoreKeys:d=[],selectedIndex:f=null}=t,p=ac(),h=x.useRef(\"\"),m=x.useRef(f??a??-1),g=x.useRef(null),y=af(i),v=af(l),b=a0(c),A=a0(d);ax(()=>{n&&(p.clear(),g.current=null,h.current=\"\")},[n,p]),ax(()=>{n&&\"\"===h.current&&(m.current=f??a??-1)},[n,f,a]);let w=af(e=>{e?r.current.typing||(r.current.typing=e,v(e)):r.current.typing&&(r.current.typing=e,v(e))}),C=af(e=>{function t(e,t,n){let r=b.current?b.current(t,n):t.find(e=>e?.toLocaleLowerCase().indexOf(n.toLocaleLowerCase())===0);return r?e.indexOf(r):-1}let r=o.current;if(h.current.length>0&&\" \"!==h.current[0]&&(-1===t(r,r,h.current)?w(!1):\" \"===e.key&&ir(e)),null==r||A.current.includes(e.key)||1!==e.key.length||e.ctrlKey||e.metaKey||e.altKey)return;n&&\" \"!==e.key&&(ir(e),w(!0)),r.every(e=>!e||e[0]?.toLocaleLowerCase()!==e[1]?.toLocaleLowerCase())&&h.current===e.key&&(h.current=\"\",m.current=g.current),h.current+=e.key,p.start(u,()=>{h.current=\"\",m.current=g.current,w(!1)});let a=m.current,i=t(r,[...r.slice((a||0)+1),...r.slice(0,(a||0)+1)],h.current);-1!==i?(y(i),g.current=i):\" \"!==e.key&&(h.current=\"\",w(!1))}),_=x.useMemo(()=>({onKeyDown:C}),[C]),k=x.useMemo(()=>({onKeyDown:C,onKeyUp(e){\" \"===e.key&&w(!1)}}),[C,w]);return x.useMemo(()=>s?{reference:_,floating:k}:{},[s,_,k])}(em,{listRef:M,activeIndex:j,resetMs:500,onMatch:e=>{Y&&e!==j&&S(e)},onTypingChange:x.useCallback(e=>{eC.current=e},[])}),{getReferenceProps:ek,getFloatingProps:eE,getItemProps:ej}=lg([eg,ev,eb,ey,eA,ew,e_]),eS=function(e){let{enabled:t=!0,mouseDownAction:n,open:r}=e,o=x.useRef(!1);return x.useMemo(()=>t?{onMouseDown:e=>{(\"open\"===n&&!r||\"close\"===n&&r)&&(o.current=!0,lE(e.currentTarget).addEventListener(\"click\",()=>{o.current=!1},{once:!0}))},onClick:e=>{o.current&&(o.current=!1,e.preventBaseUIHandler())}}:iR,[t,n,r])}({open:Y,enabled:\"menubar\"===t.type,mouseDownAction:\"open\"}),eO=x.useMemo(()=>{let e=lM(ek(),{onMouseEnter(){E(!0)},onMouseMove(){$(!0)}},er,eS);return delete e.role,e},[ek,eS,$,er]),eB=x.useMemo(()=>eE({onMouseEnter(){W&&\"menu\"!==t.type||E(!1)},onMouseMove(){$(!0)},onClick(){W&&E(!1)}}),[eE,W,t.type,$]),eP=x.useMemo(()=>ej(),[ej]),eI=x.useMemo(()=>({activeIndex:j,setActiveIndex:S,allowMouseUpTriggerRef:t.type?t.context.allowMouseUpTriggerRef:l$,floatingRootContext:em,itemProps:eP,popupProps:eB,triggerProps:eO,itemDomElements:R,itemLabels:M,mounted:J,open:Y,popupRef:L,positionerRef:N,setOpen:eh,setPositionerElement:Q,triggerElement:y,setTriggerElement:v,transitionStatus:et,lastOpenChangeReason:O,instantType:C,onOpenChangeComplete:i,setHoverEnabled:E,typingRef:eC,modal:H,disabled:s,parent:t,rootId:q,allowMouseEnter:V,setAllowMouseEnter:$}),[j,em,eP,eB,eO,R,M,J,Y,N,eh,et,y,Q,O,C,i,H,s,t,q,V,$]),ez=(0,b.jsx)(lb.Provider,{value:eI,children:r});return void 0===t.type||\"context-menu\"===t.type?(0,b.jsx)(aj,{children:ez}):ez};function lY(e,t,n,r){var o,a,i,l,s;let c=aa(lK).current;return o=c,a=e,i=t,l=n,s=r,(o.refs[0]!==a||o.refs[1]!==i||o.refs[2]!==l||o.refs[3]!==s)&&lX(c,[e,t,n,r]),c.callback}function lK(){return{callback:null,cleanup:null,refs:[]}}function lX(e,t){if(e.refs=t,t.every(e=>null==e)){e.callback=null;return}e.callback=n=>{if(e.cleanup&&(e.cleanup(),e.cleanup=null),null!=n){let r=Array(t.length).fill(null);for(let e=0;e{for(let e=0;e\"starting\"===e?lQ:\"ending\"===e?lJ:null},l1=function(e){return e.open=\"data-open\",e.closed=\"data-closed\",e[e.startingStyle=lG.startingStyle]=\"startingStyle\",e[e.endingStyle=lG.endingStyle]=\"endingStyle\",e.anchorHidden=\"data-anchor-hidden\",e}({}),l2=function(e){return e.popupOpen=\"data-popup-open\",e.pressed=\"data-pressed\",e}({}),l4={[l2.popupOpen]:\"\"},l5={[l2.popupOpen]:\"\",[l2.pressed]:\"\"},l3={[l1.open]:\"\"},l6={[l1.closed]:\"\"},l9={[l1.anchorHidden]:\"\"},l8={open:e=>e?l4:null},l7={open:e=>e?l5:null},se={open:e=>e?l3:l6,anchorHidden:e=>e?l9:null},st=parseInt(x.version,10);function sn(e,t,n={}){let r=t.render,o=function(e,t={}){var n,r;let o,{className:a,render:i}=e,{state:l=iR,ref:s,props:c,disableStyleHooks:u,customStyleHookMapping:d,enabled:f=!0}=t,p=f?(n=a,r=l,\"function\"==typeof n?n(r):n):void 0;!0!==u&&(o=x.useMemo(()=>f?function(e,t){let n={};for(let r in e){let o=e[r];if(t?.hasOwnProperty(r)){let e=t[r](o);null!=e&&Object.assign(n,e);continue}!0===o?n[`data-${r.toLowerCase()}`]=\"\":o&&(n[`data-${r.toLowerCase()}`]=o.toString())}return n}(l,d):iR,[l,d,f]));let h=f?lN(o,Array.isArray(c)?function(e){if(0===e.length)return lR;if(1===e.length)return lF(e[0],lR);let t={...lF(e[0],lR)};for(let n=1;ne!==n[t]))&&lX(r,e),r.callback}([h.ref,sr(i),...s]):h.ref=lY(h.ref,sr(i),s):lY(null,null)),f)?(void 0!==p&&(h.className=lH(h.className,p)),h):iR}(t,n);return!1===n.enabled?null:function(e,t,n,r){if(t){if(\"function\"==typeof t)return t(n,r);let e=lM(n,t.props);return e.ref=n.ref,x.cloneElement(t,e)}if(e&&\"string\"==typeof e){var o,a;return o=e,a=n,\"button\"===o?(0,b.jsx)(\"button\",{type:\"button\",...a}):\"img\"===o?(0,b.jsx)(\"img\",{alt:\"\",...a}):x.createElement(o,a)}throw Error(\"Base UI: Render element or function are not defined.\")}(e,r,o,n.state??iR)}function sr(e){return e&&\"function\"!=typeof e?st>=19?e.props.ref:e.ref:null}let so=x.createContext(void 0);function sa(e=!1){let t=x.useContext(so);if(void 0===t&&!e)throw Error(\"Base UI: CompositeRootContext is missing. Composite parts must be placed within .\");return t}function si(e={}){let{disabled:t=!1,focusableWhenDisabled:n,tabIndex:r=0,native:o=!0}=e,a=x.useRef(null),i=void 0!==sa(!0),l=af(()=>{let e=a.current;return!!(e?.tagName===\"A\"&&e?.href)}),{props:s}=function(e){let{focusableWhenDisabled:t,disabled:n,composite:r=!1,tabIndex:o=0,isNativeButton:a}=e,i=r&&!1!==t,l=r&&!1===t;return{props:x.useMemo(()=>{let e={onKeyDown(e){n&&t&&\"Tab\"!==e.key&&e.preventDefault()}};return r||(e.tabIndex=o,!a&&n&&(e.tabIndex=t?o:-1)),(a&&(t||i)||!a&&n)&&(e[\"aria-disabled\"]=n),a&&(!t||l)&&(e.disabled=n),e},[r,n,t,i,l,a,o])}}({focusableWhenDisabled:n,disabled:t,composite:i,tabIndex:r,isNativeButton:o});return ax(()=>{let e=a.current;e instanceof HTMLButtonElement&&i&&t&&void 0===s.disabled&&e.disabled&&(e.disabled=!1)},[t,s.disabled,i]),{getButtonProps:x.useCallback((e={})=>{let{onClick:n,onMouseDown:r,onKeyUp:a,onKeyDown:i,onPointerDown:c,...u}=e;return lM({type:o?\"button\":void 0,onClick(e){if(t)return void e.preventDefault();n?.(e)},onMouseDown(e){t||r?.(e)},onKeyDown(e){if(t||(lq(e),i?.(e)),e.baseUIHandlerPrevented)return;let r=e.target===e.currentTarget&&!o&&!l()&&!t,a=\"Enter\"===e.key,s=\" \"===e.key;r&&((s||a)&&e.preventDefault(),a&&n?.(e))},onKeyUp(e){t||(lq(e),a?.(e)),!e.baseUIHandlerPrevented&&(e.target!==e.currentTarget||o||t||\" \"!==e.key||n?.(e))},onPointerDown(e){if(t)return void e.preventDefault();c?.(e)}},o?void 0:{role:\"button\"},s,u)},[t,s,o,l]),buttonRef:a}}let sl=x.createContext({register:()=>{},unregister:()=>{},subscribeMapChange:()=>()=>{},elementsRef:{current:[]},nextIndexRef:{current:0}}),ss=function(e){return e[e.None=0]=\"None\",e[e.GuessFromOrder=1]=\"GuessFromOrder\",e}({});function sc(e={}){let{label:t,metadata:n,textRef:r,indexGuessBehavior:o}=e,{register:a,unregister:i,subscribeMapChange:l,elementsRef:s,labelsRef:c,nextIndexRef:u}=x.useContext(sl),d=x.useRef(-1),[f,p]=x.useState(o===ss.GuessFromOrder?()=>{if(-1===d.current){let e=u.current;u.current+=1,d.current=e}return d.current}:-1),h=x.useRef(null),m=x.useCallback(e=>{if(h.current=e,-1!==f&&null!==e&&(s.current[f]=e,c)){let n=void 0!==t;c.current[f]=n?t:r?.current?.textContent??e.textContent}},[f,s,c,t,r]);return ax(()=>{let e=h.current;if(e)return a(e,n),()=>{i(e)}},[a,i,n]),ax(()=>l(e=>{let t=h.current?e.get(h.current)?.index:null;null!=t&&p(t)}),[l,p]),x.useMemo(()=>({ref:m,index:f}),[f,m])}function su(e){let{render:t,className:n,state:r=iR,props:o=iM,refs:a=iM,metadata:i,customStyleHookMapping:l,tag:s=\"div\",...c}=e,{compositeProps:u,compositeRef:d}=function(e={}){let{highlightItemOnHover:t,highlightedIndex:n,onHighlightedIndexChange:r}=sa(),{ref:o,index:a}=sc(e),i=n===a,l=x.useRef(null),s=lY(o,l);return{compositeProps:x.useMemo(()=>({tabIndex:i?0:-1,onFocus(){r(a)},onMouseMove(){let e=l.current;if(!t||!e)return;let n=e.hasAttribute(\"disabled\")||\"true\"===e.ariaDisabled;i||n||e.focus()}}),[i,r,a,t]),compositeRef:s,index:a}}({metadata:i});return sn(s,e,{state:r,ref:[...a,d],props:[u,...o,c],customStyleHookMapping:l})}let sd=x.forwardRef(function(e,t){let{render:n,className:r,disabled:o=!1,nativeButton:a=!0,...i}=e,{triggerProps:l,disabled:s,setTriggerElement:c,open:u,allowMouseUpTriggerRef:d,positionerRef:f,parent:p,lastOpenChangeReason:h,rootId:m}=lA(),g=o||s,y=x.useRef(null),v=ac(),{getButtonProps:A,buttonRef:w}=si({disabled:g,native:a}),C=lY(w,c),{events:_}=ak();x.useEffect(()=>{u||void 0!==p.type||(d.current=!1)},[d,u,p.type]);let k=af(e=>{if(!y.current)return;v.clear(),d.current=!1;let t=e.target;if(ig(y.current,t)||ig(f.current,t)||t===y.current||null!=t&&function e(t){return aD(t)&&t.hasAttribute(\"data-rootownerid\")?t.getAttribute(\"data-rootownerid\")??void 0:aY(t)?void 0:e(aG(t))}(t)===m)return;let n=function(e){let t=e.getBoundingClientRect(),n=window.getComputedStyle(e,\"::before\"),r=window.getComputedStyle(e,\"::after\");if(\"none\"===n.content&&\"none\"===r.content)return t;let o=parseFloat(n.width)||0,a=parseFloat(n.height)||0,i=parseFloat(r.width)||0,l=parseFloat(r.height)||0,s=Math.max(t.width,o,i),c=Math.max(t.height,a,l),u=s-t.width,d=c-t.height;return{left:t.left-u/2,right:t.right+u/2,top:t.top-d/2,bottom:t.bottom+d/2}}(y.current);e.clientX>=n.left-2&&e.clientX<=n.right+2&&e.clientY>=n.top-2&&e.clientY<=n.bottom+2||_.emit(\"close\",{domEvent:e,reason:\"cancel-open\"})});x.useEffect(()=>{u&&\"trigger-hover\"===h&&lE(y.current).addEventListener(\"mouseup\",k,{once:!0})},[u,k,h]);let E=\"menubar\"===p.type,j=x.useCallback(e=>lM(E?{role:\"menuitem\"}:{},{\"aria-haspopup\":\"menu\",ref:C,onMouseDown:e=>{u||(v.start(200,()=>{d.current=!0}),lE(e.currentTarget).addEventListener(\"mouseup\",k,{once:!0}))}},e,A),[A,C,u,d,v,k,E]),S=x.useMemo(()=>({disabled:g,open:u}),[g,u]),O=[y,t,w],B=[l,i,j],P=sn(\"button\",e,{enabled:!E,customStyleHookMapping:l7,state:S,ref:O,props:B});return E?(0,b.jsx)(su,{tag:\"button\",render:n,className:r,state:S,refs:O,props:B,customStyleHookMapping:l7}):P}),sf={clip:\"rect(0 0 0 0)\",overflow:\"hidden\",whiteSpace:\"nowrap\",position:\"fixed\",top:0,left:0,border:0,padding:0,width:1,height:1,margin:-1},sp=x.forwardRef(function(e,t){let[n,r]=x.useState();return ax(()=>{a8&&r(\"button\")},[]),(0,b.jsx)(\"span\",{...e,ref:t,tabIndex:0,role:n,\"aria-hidden\":!n||void 0,style:sf,\"data-base-ui-focus-guard\":\"\"})});var sh='input:not([inert]),select:not([inert]),textarea:not([inert]),a[href]:not([inert]),button:not([inert]),[tabindex]:not(slot):not([inert]),audio[controls]:not([inert]),video[controls]:not([inert]),[contenteditable]:not([contenteditable=\"false\"]):not([inert]),details>summary:first-of-type:not([inert]),details:not([inert])',sm=\"undefined\"==typeof Element,sg=sm?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,sy=!sm&&Element.prototype.getRootNode?function(e){var t;return null==e||null==(t=e.getRootNode)?void 0:t.call(e)}:function(e){return null==e?void 0:e.ownerDocument},sv=function e(t,n){void 0===n&&(n=!0);var r,o=null==t||null==(r=t.getAttribute)?void 0:r.call(t,\"inert\");return\"\"===o||\"true\"===o||n&&t&&e(t.parentNode)},sb=function(e){var t,n=null==e||null==(t=e.getAttribute)?void 0:t.call(e,\"contenteditable\");return\"\"===n||\"true\"===n},sA=function(e,t,n){if(sv(e))return[];var r=Array.prototype.slice.apply(e.querySelectorAll(sh));return t&&sg.call(e,sh)&&r.unshift(e),r=r.filter(n)},sx=function e(t,n,r){for(var o=[],a=Array.from(t);a.length;){var i=a.shift();if(!sv(i,!1))if(\"SLOT\"===i.tagName){var l=i.assignedElements(),s=e(l.length?l:i.children,!0,r);r.flatten?o.push.apply(o,s):o.push({scopeParent:i,candidates:s})}else{sg.call(i,sh)&&r.filter(i)&&(n||!t.includes(i))&&o.push(i);var c=i.shadowRoot||\"function\"==typeof r.getShadowRoot&&r.getShadowRoot(i),u=!sv(c,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(c&&u){var d=e(!0===c?i.children:c.children,!0,r);r.flatten?o.push.apply(o,d):o.push({scopeParent:i,candidates:d})}else a.unshift.apply(a,i.children)}}return o},sw=function(e){return!isNaN(parseInt(e.getAttribute(\"tabindex\"),10))},sC=function(e){if(!e)throw Error(\"No node provided\");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||sb(e))&&!sw(e)?0:e.tabIndex},s_=function(e,t){var n=sC(e);return n<0&&t&&!sw(e)?0:n},sk=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},sE=function(e){return\"INPUT\"===e.tagName},sj=function(e,t){for(var n=0;nsummary:first-of-type\")?e.parentElement:e;if(sg.call(o,\"details:not([open]) *\"))return!0;if(n&&\"full\"!==n&&\"legacy-full\"!==n){if(\"non-zero-area\"===n)return sP(e)}else{if(\"function\"==typeof r){for(var a=e;e;){var i=e.parentElement,l=sy(e);if(i&&!i.shadowRoot&&!0===r(i))return sP(e);e=e.assignedSlot?e.assignedSlot:i||l===e.ownerDocument?i:l.host}e=a}if(sB(e))return!e.getClientRects().length;if(\"legacy-full\"!==n)return!0}return!1},sz=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(\"FIELDSET\"===t.tagName&&t.disabled){for(var n=0;nsC(t))&&!!sT(e,t)},sL=function(e){var t=parseInt(e.getAttribute(\"tabindex\"),10);return!!isNaN(t)||!!(t>=0)},sN=function e(t){var n=[],r=[];return t.forEach(function(t,o){var a=!!t.scopeParent,i=a?t.scopeParent:t,l=s_(i,a),s=a?e(t.candidates):i;0===l?a?n.push.apply(n,s):n.push(i):r.push({documentOrder:o,tabIndex:l,item:t,isScope:a,content:s})}),r.sort(sk).reduce(function(e,t){return t.isScope?e.push.apply(e,t.content):e.push(t.content),e},[]).concat(n)},sR=function(e,t){return sN((t=t||{}).getShadowRoot?sx([e],t.includeContainer,{filter:sD.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:sL}):sA(e,t.includeContainer,sD.bind(null,t)))},sM=function(e,t){return(t=t||{}).getShadowRoot?sx([e],t.includeContainer,{filter:sT.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):sA(e,t.includeContainer,sT.bind(null,t))},sZ=function(e,t){if(t=t||{},!e)throw Error(\"No node provided\");return!1!==sg.call(e,sh)&&sD(t,e)};let sU=()=>({getShadowRoot:!0,displayCheck:\"function\"==typeof ResizeObserver&&ResizeObserver.toString().includes(\"[native code]\")?\"full\":\"none\"});function sF(e,t){let n=sR(e,sU()),r=n.length;if(0===r)return;let o=im(ib(e)),a=n.indexOf(o);return n[-1===a?1===t?0:r-1:a+t]}function sq(e){return sF(ib(e).body,1)||e}function sH(e){return sF(ib(e).body,-1)||e}function sV(e,t){let n=t||e.currentTarget,r=e.relatedTarget;return!r||!ig(n,r)}function s$(e){sR(e,sU()).forEach(e=>{e.dataset.tabindex=e.getAttribute(\"tabindex\")||\"\",e.setAttribute(\"tabindex\",\"-1\")})}function sW(e){e.querySelectorAll(\"[data-tabindex]\").forEach(e=>{let t=e.dataset.tabindex;delete e.dataset.tabindex,t?e.setAttribute(\"tabindex\",t):e.removeAttribute(\"tabindex\")})}let sY=x.createContext(null),sK=()=>x.useContext(sY),sX=iC(\"portal\");function sG(e={}){let{id:t,root:n}=e,r=ab(),o=sK(),[a,i]=x.useState(null),l=x.useRef(null);return ax(()=>()=>{a?.remove(),queueMicrotask(()=>{l.current=null})},[a]),ax(()=>{if(!r||l.current)return;let e=t?document.getElementById(t):null;if(!e)return;let n=document.createElement(\"div\");n.id=r,n.setAttribute(sX,\"\"),e.appendChild(n),l.current=n,i(n)},[t,r]),ax(()=>{if(null===n||!r||l.current)return;let e=n||o?.portalNode;e&&!az(e)&&(e=e.current),e=e||document.body;let a=null;t&&((a=document.createElement(\"div\")).id=t,e.appendChild(a));let s=document.createElement(\"div\");s.id=r,s.setAttribute(sX,\"\"),(e=a||e).appendChild(s),l.current=s,i(s)},[t,n,r,o]),a}function sQ(e){let{children:t,id:n,root:r,preserveTabOrder:o=!0}=e,a=sG({id:n,root:r}),[i,l]=x.useState(null),s=x.useRef(null),c=x.useRef(null),u=x.useRef(null),d=x.useRef(null),f=i?.modal,p=i?.open,h=!!i&&!i.modal&&i.open&&o&&!!(r||a);return x.useEffect(()=>{if(a&&o&&!f)return a.addEventListener(\"focusin\",e,!0),a.addEventListener(\"focusout\",e,!0),()=>{a.removeEventListener(\"focusin\",e,!0),a.removeEventListener(\"focusout\",e,!0)};function e(e){if(a&&sV(e)){let t=\"focusin\"===e.type;(t?sW:s$)(a)}}},[a,o,f]),x.useEffect(()=>{a&&(p||sW(a))},[p,a]),(0,b.jsxs)(sY.Provider,{value:x.useMemo(()=>({preserveTabOrder:o,beforeOutsideRef:s,afterOutsideRef:c,beforeInsideRef:u,afterInsideRef:d,portalNode:a,setFocusManagerState:l}),[o,a]),children:[h&&a&&(0,b.jsx)(sp,{\"data-type\":\"outside\",ref:s,onFocus:e=>{if(sV(e,a))u.current?.focus();else{let e=sH(i?i.domReference:null);e?.focus()}}}),h&&a&&(0,b.jsx)(\"span\",{\"aria-owns\":a.id,style:sf}),a&&ef.createPortal(t,a),h&&a&&(0,b.jsx)(sp,{\"data-type\":\"outside\",ref:c,onFocus:e=>{if(sV(e,a))d.current?.focus();else{let t=sq(i?i.domReference:null);t?.focus(),i?.closeOnFocusOut&&i?.onOpenChange(!1,e.nativeEvent,\"focus-out\")}}})]})}let sJ=x.createContext(void 0);function s0(e){let{children:t,keepMounted:n=!1,container:r}=e,{mounted:o}=lA();return o||n?(0,b.jsx)(sJ.Provider,{value:n,children:(0,b.jsx)(sQ,{root:r,children:t})}):null}let s1=x.createContext(void 0);function s2(e,t,n){let r,{reference:o,floating:a}=e,i=i6(t),l=i4(i6(t)),s=i5(l),c=i1(t),u=\"y\"===i,d=o.x+o.width/2-a.width/2,f=o.y+o.height/2-a.height/2,p=o[s]/2-a[s]/2;switch(c){case\"top\":r={x:d,y:o.y-a.height};break;case\"bottom\":r={x:d,y:o.y+o.height};break;case\"right\":r={x:o.x+o.width,y:f};break;case\"left\":r={x:o.x-a.width,y:f};break;default:r={x:o.x,y:o.y}}switch(i2(t)){case\"start\":r[l]-=p*(n&&u?-1:1);break;case\"end\":r[l]+=p*(n&&u?-1:1)}return r}let s4=async(e,t,n)=>{let{placement:r=\"bottom\",strategy:o=\"absolute\",middleware:a=[],platform:i}=n,l=a.filter(Boolean),s=await (null==i.isRTL?void 0:i.isRTL(t)),c=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=s2(c,r,s),f=r,p={},h=0;for(let n=0;ne[t]>=0)}let s9=new Set([\"left\",\"top\"]);async function s8(e,t){let{placement:n,platform:r,elements:o}=e,a=await (null==r.isRTL?void 0:r.isRTL(o.floating)),i=i1(n),l=i2(n),s=\"y\"===i6(n),c=s9.has(i)?-1:1,u=a&&s?-1:1,d=i0(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:h}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return l&&\"number\"==typeof h&&(p=\"end\"===l?-1*h:h),s?{x:p*u,y:f*c}:{x:f*c,y:p*u}}function s7(e){let t=aK(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=aD(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=iK(n)!==a||iK(r)!==i;return l&&(n=a,r=i),{width:n,height:r,$:l}}function ce(e){return aT(e)?e:e.contextElement}function ct(e){let t=ce(e);if(!aD(t))return iG(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:a}=s7(t),i=(a?iK(n.width):n.width)/r,l=(a?iK(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}let cn=iG(0);function cr(e){let t=aP(e);return a$()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:cn}function co(e,t,n,r){var o,a,i;void 0===t&&(t=!1),void 0===n&&(n=!1);let l=e.getBoundingClientRect(),s=ce(e),c=iG(1);t&&(r?aT(r)&&(c=ct(r)):c=ct(e));let u=(o=s,void 0===(a=n)&&(a=!1),(i=r)&&(!a||i===aP(o))&&a)?cr(s):iG(0),d=(l.left+u.x)/c.x,f=(l.top+u.y)/c.y,p=l.width/c.x,h=l.height/c.y;if(s){let e=aP(s),t=r&&aT(r)?aP(r):r,n=e,o=aJ(n);for(;o&&r&&t!==n;){let e=ct(o),t=o.getBoundingClientRect(),r=aK(o),a=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,i=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;d*=e.x,f*=e.y,p*=e.x,h*=e.y,d+=a,f+=i,o=aJ(n=aP(o))}}return lo({width:p,height:h,x:d,y:f})}function ca(e,t){let n=aX(e).scrollLeft;return t?t.left+n:co(aI(e)).left+n}function ci(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect(),o=r.left+t.scrollLeft-(n?0:ca(e,r));return{x:o,y:r.top+t.scrollTop}}let cl=new Set([\"absolute\",\"fixed\"]);function cs(e,t,n){let r;if(\"viewport\"===t)r=function(e,t){let n=aP(e),r=aI(e),o=n.visualViewport,a=r.clientWidth,i=r.clientHeight,l=0,s=0;if(o){a=o.width,i=o.height;let e=a$();(!e||e&&\"fixed\"===t)&&(l=o.offsetLeft,s=o.offsetTop)}return{width:a,height:i,x:l,y:s}}(e,n);else if(\"document\"===t)r=function(e){let t=aI(e),n=aX(e),r=e.ownerDocument.body,o=iY(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=iY(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),i=-n.scrollLeft+ca(e),l=-n.scrollTop;return\"rtl\"===aK(r).direction&&(i+=iY(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(aI(e));else if(aT(t))r=function(e,t){let n=co(e,!0,\"fixed\"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=aD(e)?ct(e):iG(1),i=e.clientWidth*a.x,l=e.clientHeight*a.y,s=o*a.x;return{width:i,height:l,x:s,y:r*a.y}}(t,n);else{let n=cr(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return lo(r)}function cc(e){return\"static\"===aK(e).position}function cu(e,t){if(!aD(e)||\"fixed\"===aK(e).position)return null;if(t)return t(e);let n=e.offsetParent;return aI(e)===n&&(n=n.ownerDocument.body),n}function cd(e,t){var n;let r=aP(e);if(aU(e))return r;if(!aD(e)){let t=aG(e);for(;t&&!aY(t);){if(aT(t)&&!cc(t))return t;t=aG(t)}return r}let o=cu(e,t);for(;o&&(n=o,aM.has(aB(n)))&&cc(o);)o=cu(o,t);return o&&aY(o)&&cc(o)&&!aV(o)?r:o||function(e){let t=aG(e);for(;aD(t)&&!aY(t);){if(aV(t))return t;if(aU(t))break;t=aG(t)}return null}(e)||r}let cf=async function(e){let t=this.getOffsetParent||cd,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=aD(t),o=aI(t),a=\"fixed\"===n,i=co(e,!0,a,t),l={scrollLeft:0,scrollTop:0},s=iG(0);if(r||!r&&!a)if((\"body\"!==aB(t)||aR(o))&&(l=aX(t)),r){let e=co(t,!0,a,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=ca(o));a&&!r&&o&&(s.x=ca(o));let c=!o||r||a?iG(0):ci(o,l),u=i.left+l.scrollLeft-s.x-c.x;return{x:u,y:i.top+l.scrollTop-s.y-c.y,width:i.width,height:i.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},cp={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,a=\"fixed\"===o,i=aI(r),l=!!t&&aU(t.floating);if(r===i||l&&a)return n;let s={scrollLeft:0,scrollTop:0},c=iG(1),u=iG(0),d=aD(r);if((d||!d&&!a)&&((\"body\"!==aB(r)||aR(i))&&(s=aX(r)),aD(r))){let e=co(r);c=ct(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=!i||d||a?iG(0):ci(i,s,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+u.x+f.x,y:n.y*c.y-s.scrollTop*c.y+u.y+f.y}},getDocumentElement:aI,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,a=[...\"clippingAncestors\"===n?aU(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=aQ(e,[],!1).filter(e=>aT(e)&&\"body\"!==aB(e)),o=null,a=\"fixed\"===aK(e).position,i=a?aG(e):e;for(;aT(i)&&!aY(i);){let t=aK(i),n=aV(i);n||\"fixed\"!==t.position||(o=null),(a?!n&&!o:!n&&\"static\"===t.position&&!!o&&cl.has(o.position)||aR(i)&&!n&&function e(t,n){let r=aG(t);return!(r===n||!aT(r)||aY(r))&&(\"fixed\"===aK(r).position||e(r,n))}(e,i))?r=r.filter(e=>e!==i):o=t,i=aG(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce((e,n)=>{let r=cs(t,n,o);return e.top=iY(r.top,e.top),e.right=iW(r.right,e.right),e.bottom=iW(r.bottom,e.bottom),e.left=iY(r.left,e.left),e},cs(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},getOffsetParent:cd,getElementRects:cf,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=s7(e);return{width:t,height:n}},getScale:ct,isElement:aT,isRTL:function(e){return\"rtl\"===aK(e).direction}};function ch(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cm(e,t,n,r){let o;void 0===r&&(r={});let{ancestorScroll:a=!0,ancestorResize:i=!0,elementResize:l=\"function\"==typeof ResizeObserver,layoutShift:s=\"function\"==typeof IntersectionObserver,animationFrame:c=!1}=r,u=ce(e),d=a||i?[...u?aQ(u):[],...aQ(t)]:[];d.forEach(e=>{a&&e.addEventListener(\"scroll\",n,{passive:!0}),i&&e.addEventListener(\"resize\",n)});let f=u&&s?function(e,t){let n,r=null,o=aI(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function i(l,s){void 0===l&&(l=!1),void 0===s&&(s=1),a();let c=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=c;if(l||t(),!f||!p)return;let h=iX(d),m=iX(o.clientWidth-(u+f)),g=iX(o.clientHeight-(d+p)),y={rootMargin:-h+\"px \"+-m+\"px \"+-g+\"px \"+-iX(u)+\"px\",threshold:iY(0,iW(1,s))||1},v=!0;function b(t){let r=t[0].intersectionRatio;if(r!==s){if(!v)return i();r?i(!1,r):n=setTimeout(()=>{i(!1,1e-7)},1e3)}1!==r||ch(c,e.getBoundingClientRect())||i(),v=!1}try{r=new IntersectionObserver(b,{...y,root:o.ownerDocument})}catch(e){r=new IntersectionObserver(b,y)}r.observe(e)}(!0),a}(u,n):null,p=-1,h=null;l&&(h=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(p),p=requestAnimationFrame(()=>{var e;null==(e=h)||e.observe(t)})),n()}),u&&!c&&h.observe(u),h.observe(t));let m=c?co(e):null;return c&&function t(){let r=co(e);m&&!ch(m,r)&&n(),m=r,o=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener(\"scroll\",n),i&&e.removeEventListener(\"resize\",n)}),null==f||f(),null==(e=h)||e.disconnect(),h=null,c&&cancelAnimationFrame(o)}}var cg=\"undefined\"!=typeof document,cy=cg?x.useLayoutEffect:function(){};function cv(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if(\"function\"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&\"object\"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!cv(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if((\"_owner\"!==n||!e.$$typeof)&&!cv(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function cb(e){return\"undefined\"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function cA(e,t){let n=cb(e);return Math.round(t*n)/n}function cx(e){let t=x.useRef(e);return cy(()=>{t.current=e}),t}function cw(e,t,n){let r=\"inline-start\"===e||\"inline-end\"===e;return({top:\"top\",right:r?n?\"inline-start\":\"inline-end\":\"right\",bottom:\"bottom\",left:r?n?\"inline-end\":\"inline-start\":\"left\"})[t]}function cC(e,t,n){let{rects:r,placement:o}=e;return{side:cw(t,i1(o),n),align:i2(o)||\"center\",anchor:{width:r.reference.width,height:r.reference.height},positioner:{width:r.floating.width,height:r.floating.height}}}function c_(e){var t,n,r,o,a;let i,l,s,c,u,d,f,p,h,m,g,y,v,{anchor:b,positionMethod:A=\"absolute\",side:w=\"bottom\",sideOffset:C=0,align:_=\"center\",alignOffset:k=0,collisionBoundary:E,collisionPadding:j=5,sticky:S=!1,arrowPadding:O=5,trackAnchor:B=!0,keepMounted:P=!1,floatingRootContext:I,mounted:z,collisionAvoidance:T,shiftCrossAxis:D=!1,nodeId:L,adaptiveOrigin:N}=e,R=T.side||\"flip\",M=T.align||\"flip\",Z=T.fallbackAxisSide||\"end\",U=\"function\"==typeof b?b:void 0,F=af(U),q=U?F:b,H=a0(b),V=\"rtl\"===lk(),$={top:\"top\",right:\"right\",bottom:\"bottom\",left:\"left\",\"inline-end\":V?\"left\":\"right\",\"inline-start\":V?\"right\":\"left\"}[w],W=\"center\"===_?$:`${$}-${_}`,Y={boundary:\"clipping-ancestors\"===E?\"clippingAncestors\":E,padding:j},K=x.useRef(null),X=a0(C),G=a0(k),Q=\"function\"!=typeof C?C:0,J=[(i=e=>{let t=cC(e,w,V),n=\"function\"==typeof X.current?X.current(t):X.current,r=\"function\"==typeof G.current?G.current(t):G.current;return{mainAxis:n,crossAxis:r,alignmentAxis:r}},l=[Q,\"function\"!=typeof k?k:0,V,w],{...(void 0===(t=i)&&(t=0),{name:\"offset\",options:t,async fn(e){var n,r;let{x:o,y:a,placement:i,middlewareData:l}=e,s=await s8(e,t);return i===(null==(n=l.offset)?void 0:n.placement)&&null!=(r=l.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:a+s.y,data:{...s,placement:i}}}}),options:[i,l]})],ee=\"none\"===M&&\"shift\"!==R,et=!ee&&(S||D||\"shift\"===R),en=\"none\"===R?null:{...{name:\"flip\",options:n=s={...Y,mainAxis:!D&&\"flip\"===R,crossAxis:\"flip\"===M&&\"alignment\",fallbackAxisSideDirection:Z},async fn(e){var t,r,o,a,i;let{placement:l,middlewareData:s,rects:c,initialPlacement:u,platform:d,elements:f}=e,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:g=\"bestFit\",fallbackAxisSideDirection:y=\"none\",flipAlignment:v=!0,...b}=i0(n,e);if(null!=(t=s.arrow)&&t.alignmentOffset)return{};let A=i1(l),x=i6(u),w=i1(u)===u,C=await (null==d.isRTL?void 0:d.isRTL(f.floating)),_=m||(w||!v?[ln(u)]:function(e){let t=ln(e);return[i9(e),t,i9(t)]}(u)),k=\"none\"!==y;!m&&k&&_.push(...function(e,t,n,r){let o=i2(e),a=function(e,t,n){switch(e){case\"top\":case\"bottom\":if(n)return t?i7:i8;return t?i8:i7;case\"left\":case\"right\":return t?le:lt;default:return[]}}(i1(e),\"start\"===n,r);return o&&(a=a.map(e=>e+\"-\"+o),t&&(a=a.concat(a.map(i9)))),a}(u,v,y,C));let E=[u,..._],j=await s5(e,b),S=[],O=(null==(r=s.flip)?void 0:r.overflows)||[];if(p&&S.push(j[A]),h){let e=function(e,t,n){void 0===n&&(n=!1);let r=i2(e),o=i4(i6(e)),a=i5(o),i=\"x\"===o?r===(n?\"end\":\"start\")?\"right\":\"left\":\"start\"===r?\"bottom\":\"top\";return t.reference[a]>t.floating[a]&&(i=ln(i)),[i,ln(i)]}(l,c,C);S.push(j[e[0]],j[e[1]])}if(O=[...O,{placement:l,overflows:S}],!S.every(e=>e<=0)){let e=((null==(o=s.flip)?void 0:o.index)||0)+1,t=E[e];if(t&&(\"alignment\"!==h||x===i6(t)||O.every(e=>i6(e.placement)!==x||e.overflows[0]>0)))return{data:{index:e,overflows:O},reset:{placement:t}};let n=null==(a=O.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:a.placement;if(!n)switch(g){case\"bestFit\":{let e=null==(i=O.filter(e=>{if(k){let t=i6(e.placement);return t===x||\"y\"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:i[0];e&&(n=e);break}case\"initialPlacement\":n=u}if(l!==n)return{reset:{placement:n}}}return{}}},options:[s,c]},er=ee?null:(u=e=>{var t;let n,r,o=lE(e.elements.floating).documentElement;return{...Y,rootBoundary:D?{x:0,y:0,width:o.clientWidth,height:o.clientHeight}:void 0,mainAxis:\"none\"!==M,crossAxis:et,limiter:S||D?void 0:{...(void 0===(t=n=()=>{if(!K.current)return{};let{height:e}=K.current.getBoundingClientRect();return{offset:e/2+(\"number\"==typeof j?j:0)}})&&(t={}),{options:t,fn(e){let{x:n,y:r,placement:o,rects:a,middlewareData:i}=e,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=i0(t,e),u={x:n,y:r},d=i6(o),f=i4(d),p=u[f],h=u[d],m=i0(l,e),g=\"number\"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(s){let e=\"y\"===f?\"height\":\"width\",t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;pn&&(p=n)}if(c){var y,v;let e=\"y\"===f?\"width\":\"height\",t=s9.has(i1(o)),n=a.reference[d]-a.floating[e]+(t&&(null==(y=i.offset)?void 0:y[d])||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:(null==(v=i.offset)?void 0:v[d])||0)-(t?g.crossAxis:0);hr&&(h=r)}return{[f]:p,[d]:h}}}),options:[n,r]}}},d=[Y,S,D,j,M],{...(void 0===(r=u)&&(r={}),{name:\"shift\",options:r,async fn(e){let{x:t,y:n,placement:o}=e,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=i0(r,e),c={x:t,y:n},u=await s5(e,s),d=i6(i1(o)),f=i4(d),p=c[f],h=c[d];if(a){let e=\"y\"===f?\"top\":\"left\",t=\"y\"===f?\"bottom\":\"right\",n=p+u[e],r=p-u[t];p=iY(n,iW(p,r))}if(i){let e=\"y\"===d?\"top\":\"left\",t=\"y\"===d?\"bottom\":\"right\",n=h+u[e],r=h-u[t];h=iY(n,iW(h,r))}let m=l.fn({...e,[f]:p,[d]:h});return{...m,data:{x:m.x-t,y:m.y-n,enabled:{[f]:a,[d]:i}}}}}),options:[u,d]});\"shift\"===R||\"shift\"===M||\"center\"===_?J.push(er,en):J.push(en,er),J.push({...{name:\"size\",options:o=f={...Y,apply({elements:{floating:e},rects:{reference:t},availableWidth:n,availableHeight:r}){Object.entries({\"--available-width\":`${n}px`,\"--available-height\":`${r}px`,\"--anchor-width\":`${t.width}px`,\"--anchor-height\":`${t.height}px`}).forEach(([t,n])=>{e.style.setProperty(t,n)})}},async fn(e){var t,n;let r,a,{placement:i,rects:l,platform:s,elements:c}=e,{apply:u=()=>{},...d}=i0(o,e),f=await s5(e,d),p=i1(i),h=i2(i),m=\"y\"===i6(i),{width:g,height:y}=l.floating;\"top\"===p||\"bottom\"===p?(r=p,a=h===(await (null==s.isRTL?void 0:s.isRTL(c.floating))?\"start\":\"end\")?\"left\":\"right\"):(a=p,r=\"end\"===h?\"top\":\"bottom\");let v=y-f.top-f.bottom,b=g-f.left-f.right,A=iW(y-f[r],v),x=iW(g-f[a],b),w=!e.middlewareData.shift,C=A,_=x;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(_=b),null!=(n=e.middlewareData.shift)&&n.enabled.y&&(C=v),w&&!h){let e=iY(f.left,0),t=iY(f.right,0),n=iY(f.top,0),r=iY(f.bottom,0);m?_=g-2*(0!==e||0!==t?e+t:iY(f.left,f.right)):C=y-2*(0!==n||0!==r?n+r:iY(f.top,f.bottom))}await u({...e,availableWidth:_,availableHeight:C});let k=await s.getDimensions(c.floating);return g!==k.width||y!==k.height?{reset:{rects:!0}}:{}}},options:[f,p]},(h=()=>({element:K.current||document.createElement(\"div\"),padding:O,offsetParent:\"floating\"}),m=[O],{...{name:\"arrow\",options:g=h,async fn(e){let{x:t,y:n,placement:r,rects:o,platform:a,elements:i,middlewareData:l}=e,{element:s,padding:c=0,offsetParent:u=\"real\"}=i0(g,e)||{};if(null==s)return{};let d=lr(c),f={x:t,y:n},p=i4(i6(r)),h=i5(p),m=await a.getDimensions(s),y=\"y\"===p,v=y?\"clientHeight\":\"clientWidth\",b=o.reference[h]+o.reference[p]-f[p]-o.floating[h],A=f[p]-o.reference[p],x=\"real\"===u?await a.getOffsetParent?.(s):i.floating,w=i.floating[v]||o.floating[h];w&&await a.isElement?.(x)||(w=i.floating[v]||o.floating[h]);let C=w/2-m[h]/2-1,_=Math.min(d[y?\"top\":\"left\"],C),k=Math.min(d[y?\"bottom\":\"right\"],C),E=w-m[h]-k,j=w/2-m[h]/2+(b/2-A/2),S=iY(_,iW(j,E)),O=!l.arrow&&null!=i2(r)&&j!==S&&o.reference[h]/2-(j<_?_:k)-m[h]/2<0,B=O?j<_?j-_:j-E:0;return{[p]:f[p]+B,data:{[p]:S,centerOffset:j-S-B,...O&&{alignmentOffset:B}},reset:O}}},options:[h,m]}),{...(void 0===(a=y)&&(a={}),{name:\"hide\",options:a,async fn(e){let{rects:t}=e,{strategy:n=\"referenceHidden\",...r}=i0(a,e);switch(n){case\"referenceHidden\":{let n=s3(await s5(e,{...r,elementContext:\"reference\"}),t.reference);return{data:{referenceHiddenOffsets:n,referenceHidden:s6(n)}}}case\"escaped\":{let n=s3(await s5(e,{...r,altBoundary:!0}),t.floating);return{data:{escapedOffsets:n,escaped:s6(n)}}}default:return{}}}}),options:[y,v]},{name:\"transformOrigin\",fn(e){let{elements:t,middlewareData:n,placement:r,rects:o,y:a}=e,i=i1(r),l=i6(i),s=K.current,c=n.arrow?.x||0,u=n.arrow?.y||0,d=s?.clientWidth||0,f=s?.clientHeight||0,p=c+d/2,h=u+f/2,m=Math.abs(n.shift?.y||0),g=o.reference.height/2,y=m>(\"function\"==typeof C?C(cC(e,w,V)):C),v={top:`${p}px calc(100% + ${C}px)`,bottom:`${p}px ${-C}px`,left:`calc(100% + ${C}px) ${h}px`,right:`${-C}px ${h}px`}[i],b=`${p}px ${o.reference.y+g-a}px`;return t.floating.style.setProperty(\"--transform-origin\",et&&\"y\"===l&&y?b:v),{}}},N);let eo=I;!z&&I&&(eo={...I,elements:{reference:null,floating:null,domReference:null}});let ea=x.useMemo(()=>({elementResize:B&&\"undefined\"!=typeof ResizeObserver,layoutShift:B&&\"undefined\"!=typeof IntersectionObserver}),[B]),{refs:ei,elements:el,x:es,y:ec,middlewareData:eu,update:ed,placement:ep,context:eh,isPositioned:em,floatingStyles:eg}=function(e={}){let{nodeId:t}=e,n=aS({...e,elements:{reference:null,floating:null,...e.elements}}),r=e.rootContext||n,o=r.elements,[a,i]=x.useState(null),[l,s]=x.useState(null),c=o?.domReference||a,u=x.useRef(null),d=ak();ax(()=>{c&&(u.current=c)},[c]);let f=function(e){void 0===e&&(e={});let{placement:t=\"bottom\",strategy:n=\"absolute\",middleware:r=[],platform:o,elements:{reference:a,floating:i}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[u,d]=x.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=x.useState(r);cv(f,r)||p(r);let[h,m]=x.useState(null),[g,y]=x.useState(null),v=x.useCallback(e=>{e!==C.current&&(C.current=e,m(e))},[]),b=x.useCallback(e=>{e!==_.current&&(_.current=e,y(e))},[]),A=a||h,w=i||g,C=x.useRef(null),_=x.useRef(null),k=x.useRef(u),E=null!=s,j=cx(s),S=cx(o),O=cx(c),B=x.useCallback(()=>{if(!C.current||!_.current)return;let e={placement:t,strategy:n,middleware:f};S.current&&(e.platform=S.current),((e,t,n)=>{let r=new Map,o={platform:cp,...n},a={...o.platform,_c:r};return s4(e,t,{...o,platform:a})})(C.current,_.current,e).then(e=>{let t={...e,isPositioned:!1!==O.current};P.current&&!cv(k.current,t)&&(k.current=t,ef.flushSync(()=>{d(t)}))})},[f,t,n,S,O]);cy(()=>{!1===c&&k.current.isPositioned&&(k.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[c]);let P=x.useRef(!1);cy(()=>(P.current=!0,()=>{P.current=!1}),[]),cy(()=>{if(A&&(C.current=A),w&&(_.current=w),A&&w){if(j.current)return j.current(A,w,B);B()}},[A,w,B,j,E]);let I=x.useMemo(()=>({reference:C,floating:_,setReference:v,setFloating:b}),[v,b]),z=x.useMemo(()=>({reference:A,floating:w}),[A,w]),T=x.useMemo(()=>{let e={position:n,left:0,top:0};if(!z.floating)return e;let t=cA(z.floating,u.x),r=cA(z.floating,u.y);return l?{...e,transform:\"translate(\"+t+\"px, \"+r+\"px)\",...cb(z.floating)>=1.5&&{willChange:\"transform\"}}:{position:n,left:t,top:r}},[n,l,z.floating,u.x,u.y]);return x.useMemo(()=>({...u,update:B,refs:I,elements:z,floatingStyles:T}),[u,B,I,z,T])}({...e,elements:{...o,...l&&{reference:l}}}),p=x.useCallback(e=>{let t=aT(e)?{getBoundingClientRect:()=>e.getBoundingClientRect(),getClientRects:()=>e.getClientRects(),contextElement:e}:e;s(t),f.refs.setReference(t)},[f.refs]),h=x.useCallback(e=>{(aT(e)||null===e)&&(u.current=e,i(e)),(aT(f.refs.reference.current)||null===f.refs.reference.current||null!==e&&!aT(e))&&f.refs.setReference(e)},[f.refs]),m=x.useMemo(()=>({...f.refs,setReference:h,setPositionReference:p,domReference:u}),[f.refs,h,p]),g=x.useMemo(()=>({...f.elements,domReference:c}),[f.elements,c]),y=x.useMemo(()=>({...f,...r,refs:m,elements:g,nodeId:t}),[f,m,g,t,r]);return ax(()=>{r.dataRef.current.floatingContext=y;let e=d?.nodesRef.current.find(e=>e.id===t);e&&(e.context=y)}),x.useMemo(()=>({...f,context:y,refs:m,elements:g}),[f,m,g,y])}({rootContext:eo,placement:W,middleware:J,strategy:A,whileElementsMounted:P?void 0:(...e)=>cm(...e,ea),nodeId:L}),{sideX:ey,sideY:ev}=eu.adaptiveOrigin||{},eb=x.useMemo(()=>N?{position:A,[ey]:`${es}px`,[ev]:`${ec}px`}:eg,[N,ey,ev,A,es,ec,eg]),eA=x.useRef(null);ax(()=>{if(!z)return;let e=H.current,t=\"function\"==typeof e?e():e,n=(ck(t)?t.current:t)||null;n!==eA.current&&(ei.setPositionReference(n),eA.current=n)},[z,ei,q,H]),x.useEffect(()=>{if(!z)return;let e=H.current;\"function\"!=typeof e&&ck(e)&&e.current!==eA.current&&(ei.setPositionReference(e.current),eA.current=e.current)},[z,ei,q,H]),x.useEffect(()=>{if(P&&z&&el.domReference&&el.floating)return cm(el.domReference,el.floating,ed,ea)},[P,z,el,ed,ea]);let ex=cw(w,i1(ep),V),ew=i2(ep)||\"center\",eC=!!eu.hide?.referenceHidden,e_=x.useMemo(()=>({position:\"absolute\",top:eu.arrow?.y,left:eu.arrow?.x}),[eu.arrow]),ek=eu.arrow?.centerOffset!==0;return x.useMemo(()=>({positionerStyles:eb,arrowStyles:e_,arrowRef:K,arrowUncentered:ek,side:ex,align:ew,anchorHidden:eC,refs:ei,context:eh,isPositioned:em,update:ed}),[eb,e_,K,ek,ex,ew,eC,ei,eh,em,ed])}function ck(e){return null!=e&&\"current\"in e}function cE(e){let{children:t,elementsRef:n,labelsRef:r,onMapChange:o}=e,a=x.useRef(0),i=aa(cS).current,l=aa(cj).current,[s,c]=x.useState(0),u=x.useRef(s),d=af((e,t)=>{l.set(e,t??null),u.current+=1,c(u.current)}),f=af(e=>{l.delete(e),u.current+=1,c(u.current)}),p=x.useMemo(()=>{let e=new Map;return Array.from(l.keys()).sort(cO).forEach((t,n)=>{let r=l.get(t)??{};e.set(t,{...r,index:n})}),e},[l,s]);ax(()=>{u.current===s&&(n.current.length!==p.size&&(n.current.length=p.size),r&&r.current.length!==p.size&&(r.current.length=p.size)),o?.(p)},[o,p,n,r,s,u]);let h=af(e=>(i.add(e),()=>{i.delete(e)}));ax(()=>{i.forEach(e=>e(p))},[i,p]);let m=x.useMemo(()=>({register:d,unregister:f,subscribeMapChange:h,elementsRef:n,labelsRef:r,nextIndexRef:a}),[d,f,h,n,r,a]);return(0,b.jsx)(sl.Provider,{value:m,children:t})}function cj(){return new Map}function cS(){return new Set}function cO(e,t){let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0}let cB=x.forwardRef(function(e,t){let n,{cutout:r,...o}=e;if(r){let e=r?.getBoundingClientRect();n=`polygon(\n 0% 0%,\n 100% 0%,\n 100% 100%,\n 0% 100%,\n 0% 0%,\n ${e.left}px ${e.top}px,\n ${e.left}px ${e.bottom}px,\n ${e.right}px ${e.bottom}px,\n ${e.right}px ${e.top}px,\n ${e.left}px ${e.top}px\n )`}return(0,b.jsx)(\"div\",{ref:t,role:\"presentation\",\"data-base-ui-inert\":\"\",...o,style:{position:\"fixed\",inset:0,userSelect:\"none\",WebkitUserSelect:\"none\",clipPath:n}})}),cP=x.forwardRef(function(e,t){var n;let{anchor:r,positionMethod:o=\"absolute\",className:a,render:i,side:l,align:s,sideOffset:c=0,alignOffset:u=0,collisionBoundary:d=\"clipping-ancestors\",collisionPadding:f=5,arrowPadding:p=5,sticky:h=!1,trackAnchor:m=!0,collisionAvoidance:g=iZ,...y}=e,{open:v,setOpen:A,floatingRootContext:w,setPositionerElement:C,itemDomElements:_,itemLabels:k,mounted:E,modal:j,lastOpenChangeReason:S,parent:O,setHoverEnabled:B,triggerElement:P}=lA(),I=function(){let e=x.useContext(sJ);if(void 0===e)throw Error(\"Base UI: is missing.\");return e}(),z=function(e){let t=ab(),n=ak(),r=a_(),o=r;return ax(()=>{if(!t)return;let e={id:t,parentId:o};return n?.addNode(e),()=>{n?.removeNode(e)}},[n,t,o]),t}(),T=a_(),D=lD(!0),L=r,N=c,R=u,M=s;\"context-menu\"===O.type&&(L=O.context?.anchor??r,M=e.align??\"start\",R=e.alignOffset??2,N=e.sideOffset??-5);let Z=l,U=M;\"menu\"===O.type?(Z=Z??\"inline-end\",U=U??\"start\"):\"menubar\"===O.type&&(Z=Z??\"bottom\",U=U??\"start\");let F=\"context-menu\"===O.type,q=c_({anchor:L,floatingRootContext:w,positionMethod:D?\"fixed\":o,mounted:E,side:Z,sideOffset:N,align:U,alignOffset:R,arrowPadding:F?0:p,collisionBoundary:d,collisionPadding:f,sticky:h,nodeId:z,keepMounted:I,trackAnchor:m,collisionAvoidance:g,shiftCrossAxis:F}),{events:H}=ak(),V=x.useMemo(()=>{let e={};return v||(e.pointerEvents=\"none\"),{role:\"presentation\",hidden:!E,style:{...q.positionerStyles,...e}}},[v,E,q.positionerStyles]);x.useEffect(()=>{function e(e){e.open?(e.parentNodeId===z&&B(!1),e.nodeId!==z&&e.parentNodeId===T&&A(!1,void 0,\"sibling-open\")):e.parentNodeId===z&&B(!0)}return H.on(\"openchange\",e),()=>{H.off(\"openchange\",e)}},[H,z,T,A,B]),x.useEffect(()=>{H.emit(\"openchange\",{open:v,nodeId:z,parentNodeId:T})},[H,v,z,T]);let $=x.useMemo(()=>({open:v,side:q.side,align:q.align,anchorHidden:q.anchorHidden,nested:\"menu\"===O.type}),[v,q.side,q.align,q.anchorHidden,O.type]),W=x.useMemo(()=>({side:q.side,align:q.align,arrowRef:q.arrowRef,arrowUncentered:q.arrowUncentered,arrowStyles:q.arrowStyles,floatingContext:q.context}),[q.side,q.align,q.arrowRef,q.arrowUncentered,q.arrowStyles,q.context]),Y=sn(\"div\",e,{state:$,customStyleHookMapping:se,ref:[t,C],props:{...V,...y}}),K=E&&\"menu\"!==O.type&&(\"menubar\"!==O.type&&j&&\"trigger-hover\"!==S||\"menubar\"===O.type&&O.context.modal),X=null;return\"menubar\"===O.type?X=O.context.contentElement:void 0===O.type&&(X=P),(0,b.jsxs)(s1.Provider,{value:W,children:[K&&(0,b.jsx)(cB,{ref:\"context-menu\"===O.type||\"nested-context-menu\"===O.type?O.context.internalBackdropRef:null,inert:(n=!v,st>=19?n:n?\"true\":void 0),cutout:X}),(0,b.jsx)(aE,{id:z,children:(0,b.jsx)(cE,{elementsRef:_,labelsRef:k,children:Y})})]})}),cI={inert:new WeakMap,\"aria-hidden\":new WeakMap,none:new WeakMap};function cz(e){return\"inert\"===e?cI.inert:\"aria-hidden\"===e?cI[\"aria-hidden\"]:cI.none}let cT=new WeakSet,cD={},cL=0,cN=e=>e&&(e.host||cN(e.parentNode)),cR=[];function cM(){cR=cR.filter(e=>e.isConnected)}function cZ(){return cM(),cR[cR.length-1]}function cU(e,t){if(!t.current.includes(\"floating\")&&!e.getAttribute(\"role\")?.includes(\"dialog\"))return;let n=sU(),r=sM(e,n).filter(e=>{let t=e.getAttribute(\"data-tabindex\")||\"\";return sZ(e,n)||e.hasAttribute(\"data-tabindex\")&&!t.startsWith(\"-\")}),o=e.getAttribute(\"tabindex\");t.current.includes(\"floating\")||0===r.length?\"0\"!==o&&e.setAttribute(\"tabindex\",\"0\"):(\"-1\"!==o||e.hasAttribute(\"data-tabindex\")&&\"-1\"!==e.getAttribute(\"data-tabindex\"))&&(e.setAttribute(\"tabindex\",\"-1\"),e.setAttribute(\"data-tabindex\",\"-1\"))}function cF(e){let{context:t,children:n,disabled:r=!1,order:o=[\"content\"],initialFocus:a=0,returnFocus:i=!0,restoreFocus:l=!1,modal:s=!0,closeOnFocusOut:c=!0,getInsideElements:u=()=>[]}=e,{open:d,onOpenChange:f,events:p,dataRef:h,elements:{domReference:m,floating:g}}=t,y=af(()=>h.current.floatingContext?.nodeId),v=af(u),A=\"number\"==typeof a&&a<0,w=ix(m)&&A,C=a0(o),_=a0(a),k=a0(i),E=ak(),j=sK(),S=x.useRef(null),O=x.useRef(null),B=x.useRef(!1),P=x.useRef(!1),I=x.useRef(-1),z=ac(),T=null!=j,D=iw(g),L=af((e=D)=>e?sR(e,sU()):[]),N=af(e=>{let t=L(e);return C.current.map(()=>t).filter(Boolean).flat()});x.useEffect(()=>{if(r||!s)return;function e(e){\"Tab\"===e.key&&ig(D,im(ib(D)))&&0===L().length&&!w&&ir(e)}let t=ib(D);return t.addEventListener(\"keydown\",e),()=>{t.removeEventListener(\"keydown\",e)}},[r,m,D,s,C,w,L,N]),x.useEffect(()=>{if(!r&&g)return g.addEventListener(\"focusin\",e),()=>{g.removeEventListener(\"focusin\",e)};function e(e){let t=iy(e),n=L().indexOf(t);-1!==n&&(I.current=n)}},[r,g,L]),x.useEffect(()=>{if(r||!c)return;function e(){P.current=!0}function t(e){let t=e.relatedTarget,n=e.currentTarget,r=iy(e);queueMicrotask(()=>{let o=y(),a=!(ig(m,t)||ig(g,t)||ig(t,g)||ig(j?.portalNode,t)||t?.hasAttribute(iC(\"focus-guard\"))||E&&(iS(E.nodesRef.current,o).find(e=>ig(e.context?.elements.floating,t)||ig(e.context?.elements.domReference,t))||iO(E.nodesRef.current,o).find(e=>[e.context?.elements.floating,iw(e.context?.elements.floating)].includes(t)||e.context?.elements.domReference===t)));if(n===m&&D&&cU(D,C),l&&n!==m&&!r?.isConnected&&im(ib(D))===ib(D).body){aD(D)&&D.focus();let e=I.current,t=L(),n=t[e]||t[t.length-1]||D;aD(n)&&n.focus()}if(h.current.insideReactTree){h.current.insideReactTree=!1;return}if(P.current){P.current=!1;return}(w||!s)&&t&&a&&t!==cZ()&&(B.current=!0,f(!1,e,\"focus-out\"))})}let n=!!(!E&&j);function o(){h.current.insideReactTree=!0,z.start(0,()=>{h.current.insideReactTree=!1})}if(g&&aD(m))return m.addEventListener(\"focusout\",t),m.addEventListener(\"pointerdown\",e),g.addEventListener(\"focusout\",t),n&&g.addEventListener(\"focusout\",o,!0),()=>{m.removeEventListener(\"focusout\",t),m.removeEventListener(\"pointerdown\",e),g.removeEventListener(\"focusout\",t),n&&g.removeEventListener(\"focusout\",o,!0)}},[r,m,g,D,s,E,j,f,c,l,L,w,y,C,h,z]);let R=x.useRef(null),M=x.useRef(null),Z=lY(R,j?.beforeInsideRef),U=lY(M,j?.afterInsideRef);x.useEffect(()=>{if(r||!g)return;let e=Array.from(j?.portalNode?.querySelectorAll(`[${iC(\"portal\")}]`)||[]),t=E?iO(E.nodesRef.current,y()):[],n=function(e,t=!1,n=!1){let r=ib(e[0]).body;return function(e,t,n,r){let o,a=\"data-base-ui-inert\",i=r?\"inert\":n?\"aria-hidden\":null,l=(o=t,e.map(e=>{if(o.contains(e))return e;let t=cN(e);return o.contains(t)?t:null}).filter(e=>null!=e)),s=new Set,c=new Set(l),u=[];cD[a]||(cD[a]=new WeakMap);let d=cD[a];return l.forEach(function e(t){!(!t||s.has(t))&&(s.add(t),t.parentNode&&e(t.parentNode))}),function e(t){!t||c.has(t)||[].forEach.call(t.children,t=>{if(\"script\"!==aB(t))if(s.has(t))e(t);else{let e=i?t.getAttribute(i):null,n=null!==e&&\"false\"!==e,r=cz(i),o=(r.get(t)||0)+1,l=(d.get(t)||0)+1;r.set(t,o),d.set(t,l),u.push(t),1===o&&n&&cT.add(t),1===l&&t.setAttribute(a,\"\"),!n&&i&&t.setAttribute(i,\"inert\"===i?\"\":\"true\")}})}(t),s.clear(),cL+=1,()=>{u.forEach(e=>{let t=cz(i),n=(t.get(e)||0)-1,r=(d.get(e)||0)-1;t.set(e,n),d.set(e,r),n||(!cT.has(e)&&i&&e.removeAttribute(i),cT.delete(e)),r||e.removeAttribute(a)}),(cL-=1)||(cI.inert=new WeakMap,cI[\"aria-hidden\"]=new WeakMap,cI.none=new WeakMap,cT=new WeakSet,cD={})}}(e.concat(Array.from(r.querySelectorAll(\"[aria-live]\"))),r,t,n)}([g,t.find(e=>ix(e.context?.elements.domReference||null))?.context?.elements.domReference,...e,...v(),S.current,O.current,R.current,M.current,j?.beforeOutsideRef.current,j?.afterOutsideRef.current,w?m:null].filter(e=>null!=e),s||w);return()=>{n()}},[r,m,g,s,C,j,w,E,y,v]),ax(()=>{if(r||!aD(D))return;let e=im(ib(D));queueMicrotask(()=>{let t=N(D),n=_.current,r=(\"number\"==typeof n?t[n]:n.current)||D,o=ig(D,e);A||o||!d||lf(r,{preventScroll:r===D})})},[r,d,D,A,N,_]),ax(()=>{var e;if(r||!D)return;let t=ib(D);function n({reason:e,event:t,nested:n}){if([\"hover\",\"safe-polygon\"].includes(e)&&\"mouseleave\"===t.type&&(B.current=!0),\"outside-press\"===e)if(n)B.current=!1;else if(io(t)||ia(t))B.current=!1;else{let e=!1;document.createElement(\"div\").focus({get preventScroll(){return e=!0,!1}}),e?B.current=!1:B.current=!0}}e=im(t),cM(),e&&\"body\"!==aB(e)&&(cR.push(e),cR.length>20&&(cR=cR.slice(-20))),p.on(\"openchange\",n);let o=t.createElement(\"span\");return o.setAttribute(\"tabindex\",\"-1\"),o.setAttribute(\"aria-hidden\",\"true\"),Object.assign(o.style,sf),T&&m&&m.insertAdjacentElement(\"afterend\",o),()=>{p.off(\"openchange\",n);let e=im(t),r=ig(g,e)||E&&iS(E.nodesRef.current,y(),!1).some(t=>ig(t.context?.elements.floating,e)),a=function(){if(\"boolean\"==typeof k.current){let e=m||cZ();return e&&e.isConnected?e:o}return k.current.current||o}();queueMicrotask(()=>{let n=function(e){let t=sU();return sZ(e,t)?e:sR(e,t)[0]||e}(a);k.current&&!B.current&&aD(n)&&(n===e||e===t.body||r)&&n.focus({preventScroll:!0}),o.remove()})}},[r,g,D,k,h,p,E,T,m,y]),x.useEffect(()=>{queueMicrotask(()=>{B.current=!1})},[r]),x.useEffect(()=>{if(r||!d)return;function e(e){let t=iy(e);t?.closest(\"[data-base-ui-click-trigger]\")&&(P.current=!0)}let t=ib(D);return t.addEventListener(\"pointerdown\",e,!0),()=>{t.removeEventListener(\"pointerdown\",e,!0)}},[r,d,D]),ax(()=>{if(!r&&j)return j.setFocusManagerState({modal:s,closeOnFocusOut:c,open:d,onOpenChange:f,domReference:m}),()=>{j.setFocusManagerState(null)}},[r,j,s,d,f,c,m]),ax(()=>{if(!r&&D)return cU(D,C),()=>{queueMicrotask(cM)}},[r,D,C]);let F=!r&&(!s||!w)&&(T||s);return(0,b.jsxs)(x.Fragment,{children:[F&&(0,b.jsx)(sp,{\"data-type\":\"inside\",ref:Z,onFocus:e=>{if(s){let e=N();lf(e[e.length-1])}else if(j?.preserveTabOrder&&j.portalNode)if(B.current=!1,sV(e,j.portalNode)){let e=sq(m);e?.focus()}else j.beforeOutsideRef.current?.focus()}}),n,F&&(0,b.jsx)(sp,{\"data-type\":\"inside\",ref:U,onFocus:e=>{if(s)lf(N()[0]);else if(j?.preserveTabOrder&&j.portalNode)if(c&&(B.current=!0),sV(e,j.portalNode)){let e=sH(m);e?.focus()}else j.afterOutsideRef.current?.focus()}})]})}let cq={...se,...l0},cH=x.forwardRef(function(e,t){let{render:n,className:r,finalFocus:o,...a}=e,{open:i,setOpen:l,popupRef:s,transitionStatus:c,popupProps:u,mounted:d,instantType:f,onOpenChangeComplete:p,parent:h,lastOpenChangeReason:m,rootId:g}=lA(),{side:y,align:v,floatingContext:A}=function(){let e=x.useContext(s1);if(void 0===e)throw Error(\"Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within .\");return e}();lC({open:i,ref:s,onComplete(){i&&p?.(!0)}});let{events:w}=ak();x.useEffect(()=>{function e(e){l(!1,e.domEvent,e.reason)}return w.on(\"close\",e),()=>{w.off(\"close\",e)}},[w,l]);let C=sn(\"div\",e,{state:x.useMemo(()=>({transitionStatus:c,side:y,align:v,open:i,nested:\"menu\"===h.type,instant:f}),[c,y,v,i,h.type,f]),ref:[t,s],customStyleHookMapping:cq,props:[u,\"starting\"===c?iN:iR,a,{\"data-rootownerid\":g}]}),_=void 0===h.type||\"context-menu\"===h.type;return\"menubar\"===h.type&&\"outside-press\"!==m&&(_=!0),(0,b.jsx)(cF,{context:A,modal:!1,disabled:!d,returnFocus:o||_,initialFocus:\"menu\"===h.type?-1:0,restoreFocus:!0,children:C})}),cV=x.createContext(void 0),c$=x.forwardRef(function(e,t){let{render:n,className:r,...o}=e,[a,i]=x.useState(void 0),l=x.useMemo(()=>({setLabelId:i}),[i]),s=sn(\"div\",e,{ref:t,props:{role:\"group\",\"aria-labelledby\":a,...o}});return(0,b.jsx)(cV.Provider,{value:l,children:s})});function cW(e){return ab(e,\"base-ui\")}let cY=x.forwardRef(function(e,t){let{className:n,render:r,id:o,...a}=e,i=cW(o),{setLabelId:l}=function(){let e=x.useContext(cV);if(void 0===e)throw Error(\"Base UI: MenuGroupRootContext is missing. Menu group parts must be used within .\");return e}();return ax(()=>(l(i),()=>{l(void 0)}),[l,i]),sn(\"div\",e,{ref:t,props:{id:i,role:\"presentation\",...a}})}),cK={type:\"regular-item\"},cX=x.memo(x.forwardRef(function(e,t){let{className:n,closeOnClick:r=!0,disabled:o=!1,highlighted:a,id:i,menuEvents:l,itemProps:s,render:c,allowMouseUpTriggerRef:u,typingRef:d,nativeButton:f,...p}=e,{getItemProps:h,itemRef:m}=function(e){let{closeOnClick:t,disabled:n=!1,highlighted:r,id:o,menuEvents:a,allowMouseUpTriggerRef:i,typingRef:l,nativeButton:s,itemMetadata:c}=e,u=x.useRef(null),{getButtonProps:d,buttonRef:f}=si({disabled:n,focusableWhenDisabled:!0,native:s}),p=x.useCallback(e=>lM({id:o,role:\"menuitem\",tabIndex:r?0:-1,onMouseEnter(){\"submenu-trigger\"===c.type&&c.setActive()},onKeyUp:e=>{\" \"===e.key&&l.current&&e.preventBaseUIHandler()},onClick:e=>{t&&a.emit(\"close\",{domEvent:e,reason:\"item-press\"})},onMouseUp:()=>{u.current&&i.current&&\"regular-item\"===c.type&&u.current.click()}},e,d),[o,r,d,l,t,a,i,c]),h=lY(u,f);return x.useMemo(()=>({getItemProps:p,itemRef:h}),[p,h])}({closeOnClick:r,disabled:o,highlighted:a,id:i,menuEvents:l,allowMouseUpTriggerRef:u,typingRef:d,nativeButton:f,itemMetadata:cK});return sn(\"div\",e,{state:x.useMemo(()=>({disabled:o,highlighted:a}),[o,a]),ref:[m,t],props:[s,p,h]})})),cG=x.forwardRef(function(e,t){let{id:n,label:r,nativeButton:o=!1,...a}=e,i=x.useRef(null),l=sc({label:r}),s=lY(t,l.ref,i),{itemProps:c,activeIndex:u,allowMouseUpTriggerRef:d,typingRef:f}=lA(),p=cW(n),h=l.index===u,{events:m}=ak();return(0,b.jsx)(cX,{...a,id:p,ref:s,highlighted:h,menuEvents:m,itemProps:c,allowMouseUpTriggerRef:d,typingRef:f,nativeButton:o})});var cQ=\"__next_builtin__\";function cJ(e){return e.replace(new RegExp(\"^\".concat(cQ)),\"\").replace(new RegExp(\"\".concat(\"@boundary\",\"$\")),\"\")}var c0=\"boundary:\";function c1(e){return e.startsWith(c0)}function c2(e){return e.replace(c0,\"\")}function c4(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n.\");return e}let ul=x.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,setTriggerElement:i,triggerProps:l}=ui();return sn(\"button\",e,{state:x.useMemo(()=>({open:a}),[a]),ref:[t,i],props:[l,o],customStyleHookMapping:l8})}),us=x.createContext(void 0);function uc(){let e=x.useContext(us);if(void 0===e)throw Error(\"Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within .\");return e}let uu=x.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,arrowRef:i,side:l,align:s,arrowUncentered:c,arrowStyles:u}=uc();return sn(\"div\",e,{state:x.useMemo(()=>({open:a,side:l,align:s,uncentered:c}),[a,l,s,c]),ref:[t,i],props:[{style:u,\"aria-hidden\":!0},o],customStyleHookMapping:se})}),ud={...se,...l0},uf=x.forwardRef(function(e,t){let{className:n,render:r,...o}=e,{open:a,instantType:i,transitionStatus:l,popupProps:s,popupRef:c,onOpenChangeComplete:u}=ui(),{side:d,align:f}=uc();return lC({open:a,ref:c,onComplete(){a&&u?.(!0)}}),sn(\"div\",e,{state:x.useMemo(()=>({open:a,side:d,align:f,instant:i,transitionStatus:l}),[a,d,f,i,l]),ref:[t,c],props:[s,\"starting\"===l?iN:iR,o],customStyleHookMapping:ud})}),up=x.createContext(void 0),uh=x.forwardRef(function(e,t){let{render:n,className:r,anchor:o,positionMethod:a=\"absolute\",side:i=\"top\",align:l=\"center\",sideOffset:s=0,alignOffset:c=0,collisionBoundary:u=\"clipping-ancestors\",collisionPadding:d=5,arrowPadding:f=5,sticky:p=!1,trackAnchor:h=!0,collisionAvoidance:m=iU,...g}=e,{open:y,setPositionerElement:v,mounted:A,floatingRootContext:w,trackCursorAxis:C,hoverable:_}=ui(),k=c_({anchor:o,positionMethod:a,floatingRootContext:w,mounted:A,side:i,sideOffset:s,align:l,alignOffset:c,collisionBoundary:u,collisionPadding:d,sticky:p,arrowPadding:f,trackAnchor:h,keepMounted:function(){let e=x.useContext(up);if(void 0===e)throw Error(\"Base UI: is missing.\");return e}(),collisionAvoidance:m}),E=x.useMemo(()=>{let e={};return y&&\"both\"!==C&&_||(e.pointerEvents=\"none\"),{role:\"presentation\",hidden:!A,style:{...k.positionerStyles,...e}}},[y,C,_,A,k.positionerStyles]),j=x.useMemo(()=>({props:E,...k}),[E,k]),S=x.useMemo(()=>({open:y,side:j.side,align:j.align,anchorHidden:j.anchorHidden}),[y,j.side,j.align,j.anchorHidden]),O=x.useMemo(()=>({...S,arrowRef:j.arrowRef,arrowStyles:j.arrowStyles,arrowUncentered:j.arrowUncentered}),[S,j.arrowRef,j.arrowStyles,j.arrowUncentered]),B=sn(\"div\",e,{state:S,props:[j.props,g],ref:[t,v],customStyleHookMapping:se});return(0,b.jsx)(us.Provider,{value:O,children:B})});function um(e){let t=sG({root:e.root});return t&&ef.createPortal(e.children,t)}function ug(e){let{children:t,keepMounted:n=!1,container:r}=e,{mounted:o}=ui();return o||n?(0,b.jsx)(up.Provider,{value:n,children:(0,b.jsx)(um,{root:r,children:t})}):null}let uy=x.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new as,currentIdRef:{current:null},currentContextRef:{current:null}});function uv(e){let{children:t,delay:n,timeoutMs:r=0}=e,o=x.useRef(n),a=x.useRef(n),i=x.useRef(null),l=x.useRef(null),s=ac();return(0,b.jsx)(uy.Provider,{value:x.useMemo(()=>({hasProvider:!0,delayRef:o,initialDelayRef:a,currentIdRef:i,timeoutMs:r,currentContextRef:l,timeout:s}),[r,s]),children:t})}let ub=x.createContext(void 0),uA=function(e){let{delay:t,closeDelay:n,timeout:r=400}=e,o=x.useMemo(()=>({delay:t,closeDelay:n}),[t,n]),a=x.useMemo(()=>({open:t,close:n}),[t,n]);return(0,b.jsx)(ub.Provider,{value:o,children:(0,b.jsx)(uv,{delay:a,timeoutMs:r,children:e.children})})};function ux(e){return null!=e&&null!=e.clientX}function uw(e){let{disabled:t=!1,defaultOpen:n=!1,onOpenChange:r,open:o,delay:a,closeDelay:i,hoverable:l=!0,trackCursorAxis:s=\"none\",actionsRef:c,onOpenChangeComplete:u}=e,d=a??600,f=i??0,[p,h]=x.useState(null),[m,g]=x.useState(null),[y,v]=x.useState(),A=x.useRef(null),[w,C]=am({controlled:o,default:n,name:\"Tooltip\",state:\"open\"}),_=!t&&w;function k(e,t,n){let o=\"trigger-hover\"===n,a=e&&\"trigger-focus\"===n,i=!e&&(\"trigger-press\"===n||\"escape-key\"===n);function l(){r?.(e,t,n),C(e)}o?ef.flushSync(l):l(),a||i?v(a?\"focus\":\"dismiss\"):\"trigger-hover\"===n&&v(void 0)}let E=af(k);w&&t&&k(!1,void 0,\"disabled\");let{mounted:j,setMounted:S,transitionStatus:O}=lw(_),B=af(()=>{S(!1),u?.(!1)});lC({enabled:!c,open:_,ref:A,onComplete(){_||B()}}),x.useImperativeHandle(c,()=>({unmount:B}),[B]);let P=aS({elements:{reference:p,floating:m},open:_,onOpenChange(e,t,n){E(e,t,lz(n))}}),I=x.useContext(ub),{delayRef:z,isInstantPhase:T,hasProvider:D}=function(e,t={}){let{open:n,onOpenChange:r,floatingId:o}=e,{enabled:a=!0}=t,{currentIdRef:i,delayRef:l,timeoutMs:s,initialDelayRef:c,currentContextRef:u,hasProvider:d,timeout:f}=x.useContext(uy),[p,h]=x.useState(!1);return ax(()=>{function e(){h(!1),u.current?.setIsInstantPhase(!1),i.current=null,u.current=null,l.current=c.current}if(a&&i.current&&!n&&i.current===o){if(h(!1),s)return f.start(s,e),()=>{f.clear()};e()}},[a,n,o,i,l,s,c,u,f]),ax(()=>{if(!a||!n)return;let e=u.current,t=i.current;u.current={onOpenChange:r,setIsInstantPhase:h},i.current=o,l.current={open:0,close:ik(c.current,\"close\")},null!==t&&t!==o?(f.clear(),h(!0),e?.setIsInstantPhase(!0),e?.onOpenChange(!1)):(h(!1),e?.setIsInstantPhase(!1))},[a,n,o,r,i,l,s,c,u,f]),ax(()=>()=>{u.current=null},[u]),x.useMemo(()=>({hasProvider:d,delayRef:l,isInstantPhase:p}),[d,l,p])}(P),L=T?\"delay\":y,N=ij(P,{enabled:!t,mouseOnly:!0,move:!1,handleClose:l&&\"both\"!==s?iP():null,restMs(){let e=I?.delay,t=\"object\"==typeof z.current?z.current.open:void 0,n=d;return D&&(n=0!==t?a??e??d:0),n},delay(){let e=\"object\"==typeof z.current?z.current.close:void 0,t=f;return null==i&&D&&(t=e),{close:t}}}),R=iz(P,{enabled:!t}),M=iH(P,{enabled:!t,referencePress:!0}),{getReferenceProps:Z,getFloatingProps:U}=lg([N,R,M,function(e,t={}){let{open:n,dataRef:r,elements:{floating:o,domReference:a},refs:i}=e,{enabled:l=!0,axis:s=\"both\",x:c=null,y:u=null}=t,d=x.useRef(!1),f=x.useRef(null),[p,h]=x.useState(),[m,g]=x.useState([]),y=af((e,t)=>{if(!d.current&&(!r.current.openEvent||ux(r.current.openEvent))){var n,o;let l,c,u;i.setPositionReference((n=a,o={x:e,y:t,axis:s,dataRef:r,pointerType:p},l=null,c=null,u=!1,{contextElement:n||void 0,getBoundingClientRect(){let e=n?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},t=\"x\"===o.axis||\"both\"===o.axis,r=\"y\"===o.axis||\"both\"===o.axis,a=[\"mouseenter\",\"mousemove\"].includes(o.dataRef.current.openEvent?.type||\"\")&&\"touch\"!==o.pointerType,i=e.width,s=e.height,d=e.x,f=e.y;return null==l&&o.x&&t&&(l=e.x-o.x),null==c&&o.y&&r&&(c=e.y-o.y),d-=l||0,f-=c||0,i=0,s=0,!u||a?(i=\"y\"===o.axis?e.width:0,s=\"x\"===o.axis?e.height:0,d=t&&null!=o.x?o.x:d,f=r&&null!=o.y?o.y:f):u&&!a&&(s=\"x\"===o.axis?e.height:s,i=\"y\"===o.axis?e.width:i),u=!0,{width:i,height:s,x:d,y:f,top:f,right:d+i,bottom:f+s,left:d}}}))}}),v=af(e=>{null==c&&null==u&&(n?f.current||g([]):y(e.clientX,e.clientY))}),b=ii(p)?o:n,A=x.useCallback(()=>{if(!b||!l||null!=c||null!=u)return;let e=aP(o);function t(n){ig(o,iy(n))?(e.removeEventListener(\"mousemove\",t),f.current=null):y(n.clientX,n.clientY)}if(!r.current.openEvent||ux(r.current.openEvent)){e.addEventListener(\"mousemove\",t);let n=()=>{e.removeEventListener(\"mousemove\",t),f.current=null};return f.current=n,n}i.setPositionReference(a)},[b,l,c,u,o,r,i,a,y]);x.useEffect(()=>A(),[A,m]),x.useEffect(()=>{l&&!o&&(d.current=!1)},[l,o]),x.useEffect(()=>{!l&&n&&(d.current=!0)},[l,n]),ax(()=>{l&&(null!=c||null!=u)&&(d.current=!1,y(c,u))},[l,c,u,y]);let w=x.useMemo(()=>{function e(e){h(e.pointerType)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:v,onMouseEnter:v}},[v]);return x.useMemo(()=>l?{reference:w}:{},[l,w])}(P,{enabled:!t&&\"none\"!==s,axis:\"none\"===s?void 0:s})]),F=x.useMemo(()=>({open:_,setOpen:E,mounted:j,setMounted:S,setTriggerElement:h,positionerElement:m,setPositionerElement:g,popupRef:A,triggerProps:Z(),popupProps:U(),floatingRootContext:P,instantType:L,transitionStatus:O,onOpenChangeComplete:u}),[_,E,j,S,h,m,g,A,Z,U,P,L,O,u]),q=x.useMemo(()=>({...F,delay:d,closeDelay:f,trackCursorAxis:s,hoverable:l}),[F,d,f,s,l]);return(0,b.jsx)(ua.Provider,{value:q,children:e.children})}var uC=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/components/tooltip/tooltip.css\"),u_={};u_.styleTagTransform=h(),u_.setAttributes=u(),u_.insert=s(),u_.domAPI=i(),u_.insertStyleElement=f(),o()(uC.Z,u_),uC.Z&&uC.Z.locals&&uC.Z.locals;var uk=(0,x.forwardRef)(function(e,t){var n,r,o,a,i,l,s,c,u,d,f,p,h=(0,A.c)(35),m=e.className,g=e.children,y=e.title,v=e.direction,x=e.arrowSize,w=e.offset,C=void 0===v?\"top\":v,_=void 0===x?6:x,k=da().shadowRoot;if(!y)return g;h[0]!==g?(n=function(e){var t,n;return(0,b.jsx)(\"span\",(t=function(e){for(var t=1;t0,s=\"segment-explorer-footer-button \".concat(l?\"\":\"segment-explorer-footer-button--disabled\"),c=l?i:void 0,u=!l;return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"span\",{className:\"segment-explorer-footer-text\",children:\"Clear Segment Overrides\"}),o[0]=t):t=o[0],o[1]!==a||o[2]!==l?(n=l&&(0,b.jsx)(\"span\",{className:\"segment-explorer-footer-badge\",children:a}),o[1]=a,o[2]=l,o[3]=n):n=o[3],o[4]!==s||o[5]!==c||o[6]!==u||o[7]!==n?(r=(0,b.jsx)(\"div\",{className:\"segment-explorer-footer\",children:(0,b.jsxs)(\"button\",{className:s,onClick:c,disabled:u,type:\"button\",children:[t,n]})}),o[4]=s,o[5]=c,o[6]=u,o[7]=n,o[8]=r):r=o[8],r}function uI(e){var t,n,r,o,a,i=(0,A.c)(15),l=e.type,s=e.isBuiltin,c=e.isOverridden,u=e.filePath,d=e.fileName,f=\"segment-explorer-file-label--\".concat(l),p=s&&\"segment-explorer-file-label--builtin\",h=c&&\"segment-explorer-file-label--overridden\";return i[0]!==f||i[1]!==p||i[2]!==h?(t=eG(\"segment-explorer-file-label\",f,p,h),i[0]=f,i[1]=p,i[2]=h,i[3]=t):t=i[3],i[4]!==u?(n=function(){var e;e=new URLSearchParams({file:{filePath:u}.filePath,isAppRelativePath:\"1\"}),fetch(\"\".concat( false||\"\",\"/__nextjs_launch-editor?\").concat(e.toString()))},i[4]=u,i[5]=n):n=i[5],i[6]!==d?(r=(0,b.jsx)(\"span\",{className:\"segment-explorer-file-label-text\",children:d}),i[6]=d,i[7]=r):r=i[7],i[8]!==s?(o=s?(0,b.jsx)(uL,{}):(0,b.jsx)(uR,{className:\"code-icon\"}),i[8]=s,i[9]=o):o=i[9],i[10]!==t||i[11]!==n||i[12]!==r||i[13]!==o?(a=(0,b.jsxs)(\"span\",{className:t,onClick:n,children:[r,o]}),i[10]=t,i[11]=n,i[12]=r,i[13]=o,i[14]=a):a=i[14],a}function uz(e){var t,n,r,o,a,i,l,s,c,u=(0,A.c)(17),d=e.page,f=(0,x.useSyncExternalStore)(o6,o9,o8);u[0]!==f?(n=function e(t){var n,r=0;return(null==(n=t.value)?void 0:n.setBoundaryType)&&null!==t.value.boundaryType&&!c1(t.value.type)&&r++,Object.values(t.children).forEach(function(t){t&&(r+=e(t))}),r}(f),u[0]=f,u[1]=n):n=u[1],t=n,u[2]!==f?(r=function(){!function e(t){var n;(null==(n=t.value)?void 0:n.setBoundaryType)&&t.value.setBoundaryType(null),Object.values(t.children).forEach(function(t){t&&e(t)})}(f)},u[2]=f,u[3]=r):r=u[3];var p=r;return u[4]===Symbol.for(\"react.memo_cache_sentinel\")?(o={display:\"flex\",flexDirection:\"column\",height:\"100%\"},u[4]=o):o=u[4],u[5]!==d?(a=(0,b.jsx)(uB,{page:d}),u[5]=d,u[6]=a):a=u[6],u[7]===Symbol.for(\"react.memo_cache_sentinel\")?(i={flex:\"1 1 auto\",overflow:\"auto\"},u[7]=i):i=u[7],u[8]!==f?(l=(0,b.jsx)(\"div\",{className:\"segment-explorer-content\",\"data-nextjs-devtool-segment-explorer\":!0,style:i,children:(0,b.jsx)(uD,{node:f,level:0,segment:\"\"})}),u[8]=f,u[9]=l):l=u[9],u[10]!==t||u[11]!==p?(s=(0,b.jsx)(uP,{activeBoundariesCount:t,onGlobalReset:p}),u[10]=t,u[11]=p,u[12]=s):s=u[12],u[13]!==a||u[14]!==l||u[15]!==s?(c=(0,b.jsxs)(\"div\",{\"data-nextjs-devtools-panel-segments-explorer\":!0,style:o,children:[a,l,s]}),u[13]=a,u[14]=l,u[15]=s,u[16]=c):c=u[16],c}var uT=\"global-error\";function uD(e){var t=e.segment,n=e.node,r=e.level,o=(0,x.useMemo)(function(){return Object.keys(n.children)},[n.children]),a=(0,x.useMemo)(function(){var e=[];return o.forEach(function(t){var r=n.children[t];if(r&&r.value){var o=c2(r.value.type),a=o===uT;(a&&!r.value.pagePath.startsWith(cQ)||!a&&c1(r.value.type))&&e.push(o)}}),0===r&&!e.includes(uT)},[n.children,o,r]),i=o.sort(function(e,t){var r=e.includes(\".\"),o=t.includes(\".\");if(r&&!o)return -1;if(!r&&o)return 1;if(r&&o){var a,i,l,s,c,u,d,f,p=null==(i=n.children[e])||null==(a=i.value)?void 0:a.type,h=null==(s=n.children[t])||null==(l=s.value)?void 0:l.type,m=function(e){return e?\"layout\"===e?1:\"template\"===e?2:\"page\"===e?3:c1(e)?4:5:5},g=m(p),y=m(h);if(g!==y)return g-y;var v=(null==(u=n.children[e])||null==(c=u.value)?void 0:c.pagePath)||\"\",b=(null==(f=n.children[t])||null==(d=f.value)?void 0:d.pagePath)||\"\";return v.localeCompare(b)}return e.localeCompare(t)}),l=0!==r||t?t:\"app\",s=[],c=[],u=!0,d=!1,f=void 0;try{for(var p,h=i[Symbol.iterator]();!(u=(p=h.next()).done);u=!0){var m=p.value,g=n.children[m];if(g){if(uO(g)){c.push(m);continue}s.push(m)}}}catch(e){d=!0,f=e}finally{try{u||null==h.return||h.return()}finally{if(d)throw f}}for(var y=cJ(c[0]||\"\").split(\".\").pop()||\"js\",v=null,A=i.length-1;A>=0;A--){var w=n.children[i[A]];if(w&&w.value){var C=c1(w.value.type);if(!v&&!C){v=w;break}}}var _=null,k=!0,E=!1,j=void 0;try{for(var S,O=i[Symbol.iterator]();!(k=(S=O.next()).done);k=!0){var B=S.value,P=n.children[B];if(P&&P.value&&c1(P.value.type)){_=P;break}}}catch(e){E=!0,j=e}finally{try{k||null==O.return||O.return()}finally{if(E)throw j}}v=v||_;var I=c.length>0,z={\"not-found\":null,loading:null,error:null,\"global-error\":null};return c.forEach(function(e){var t=n.children[e];if(t&&t.value&&c1(t.value.type)){var r=c2(t.value.type);r in z&&(z[r]=t.value.pagePath||null)}}),(0,b.jsxs)(b.Fragment,{children:[I&&(0,b.jsx)(\"div\",{className:\"segment-explorer-item\",\"data-nextjs-devtool-segment-explorer-segment\":t+\"-\"+r,children:(0,b.jsx)(\"div\",{className:\"segment-explorer-item-row\",style:uj({},{paddingLeft:\"\".concat((r+1)*8,\"px\")}),children:(0,b.jsx)(\"div\",{className:\"segment-explorer-item-row-main\",children:(0,b.jsxs)(\"div\",{className:\"segment-explorer-filename\",children:[l&&(0,b.jsxs)(\"span\",{className:\"segment-explorer-filename--path\",children:[l,(0,b.jsx)(\"small\",{children:\"/\"})]}),a&&(0,b.jsx)(uE,{possibleExtension:y,missingGlobalError:a}),c.length>0&&(0,b.jsx)(\"span\",{className:\"segment-explorer-files\",children:c.map(function(e){var t=n.children[e];if(!t||!t.value||c1(t.value.type))return null;var r=t.value.pagePath,o=r.split(\"/\").pop()||\"\",a=r.startsWith(cQ),i=cJ(o),l=a?\"The default Next.js \".concat(t.value.type,\" is being shown. You can customize this page by adding your own \").concat(i,\" file to the app/ directory.\"):null,s=null!==t.value.boundaryType;return(0,b.jsx)(uk,{className:\"segment-explorer-file-label-tooltip--\"+(a?\"lg\":\"sm\"),direction:a?\"right\":\"top\",title:l,offset:12,children:(0,b.jsx)(uI,{type:t.value.type,isBuiltin:a,isOverridden:s,filePath:r,fileName:i})},e)})}),v&&v.value&&(0,b.jsx)(c8,{nodeState:v.value,boundaries:z})]})})})}),s.map(function(e){var o=n.children[e];if(!o)return null;var a=I?e:t+\" / \"+e;return(0,b.jsx)(uD,{segment:a,node:o,level:I?r+1:r},e)})]})}function uL(e){var t,n,r,o=(0,A.c)(4);return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{d:\"M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8Z\",fill:\"var(--color-gray-400)\"}),n=(0,b.jsx)(\"path\",{d:\"M7.75 7C8.30228 7.00001 8.75 7.44772 8.75 8V11.25H7.25V8.5H6.25V7H7.75ZM8 4C8.55228 4 9 4.44772 9 5C9 5.55228 8.55228 6 8 6C7.44772 6 7 5.55228 7 5C7 4.44772 7.44772 4 8 4Z\",fill:\"var(--color-gray-900)\"}),o[0]=t,o[1]=n):(t=o[0],n=o[1]),o[2]!==e?(r=(0,b.jsxs)(\"svg\",uS(uj({width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",fill:\"none\",xmlns:\"http://www.w3.org/2000/svg\"},e),{children:[t,n]})),o[2]=e,o[3]=r):r=o[3],r}function uN(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 20 20\",fill:\"var(--color-gray-600)\",xmlns:\"http://www.w3.org/2000/svg\",children:(0,b.jsx)(\"path\",{d:\"M4.5 11.25C4.5 11.3881 4.61193 11.5 4.75 11.5H14.4395L11.9395 9L13 7.93945L16.7803 11.7197L16.832 11.7764C17.0723 12.0709 17.0549 12.5057 16.7803 12.7803L13 16.5605L11.9395 15.5L14.4395 13H4.75C3.7835 13 3 12.2165 3 11.25V4.25H4.5V11.25Z\"})}),t[0]=e):e=t[0],e}function uR(e){var t,n,r=(0,A.c)(3);return r[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{fillRule:\"evenodd\",clipRule:\"evenodd\",d:\"M7.22763 14.1819L10.2276 2.18193L10.4095 1.45432L8.95432 1.09052L8.77242 1.81812L5.77242 13.8181L5.59051 14.5457L7.04573 14.9095L7.22763 14.1819ZM3.75002 12.0607L3.21969 11.5304L0.39647 8.70713C0.00594559 8.31661 0.00594559 7.68344 0.39647 7.29292L3.21969 4.46969L3.75002 3.93936L4.81068 5.00002L4.28035 5.53035L1.81068 8.00003L4.28035 10.4697L4.81068 11L3.75002 12.0607ZM12.25 12.0607L12.7804 11.5304L15.6036 8.70713C15.9941 8.31661 15.9941 7.68344 15.6036 7.29292L12.7804 4.46969L12.25 3.93936L11.1894 5.00002L11.7197 5.53035L14.1894 8.00003L11.7197 10.4697L11.1894 11L12.25 12.0607Z\",fill:\"currentColor\"}),r[0]=t):t=r[0],r[1]!==e?(n=(0,b.jsx)(\"svg\",uS(uj({width:\"12\",height:\"12\",strokeLinejoin:\"round\",viewBox:\"0 0 16 16\",fill:\"currentColor\"},e),{children:t})),r[1]=e,r[2]=n):n=r[2],n}function uM(){var e,t,n=(e=[\"\\n .dev-tools-info-close-button:focus-visible {\\n outline: var(--focus-ring);\\n }\\n \"],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return uM=function(){return n},n}function uZ(e){var t,n,r,o,a,i,l,s,c,u,d,f=(0,A.c)(18),p=e.title,h=e.children,m=e.ref,g=r2().setPanel,y=(0,x.useRef)(null);return f[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=function(){var e;null==(e=y.current)||e.focus()},n=[],f[0]=t,f[1]=n):(t=f[0],n=f[1]),(0,x.useLayoutEffect)(t,n),f[2]===Symbol.for(\"react.memo_cache_sentinel\")?(r={width:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",padding:\"8px 20px\",userSelect:\"none\",WebkitUserSelect:\"none\",borderBottom:\"1px solid var(--color-gray-alpha-400)\"},f[2]=r):r=f[2],f[3]===Symbol.for(\"react.memo_cache_sentinel\")?(o={margin:0,fontSize:\"14px\",color:\"var(--color-text-primary)\",fontWeight:\"normal\"},f[3]=o):o=f[3],f[4]!==p?(a=(0,b.jsx)(\"h3\",{style:o,children:p}),f[4]=p,f[5]=a):a=f[5],f[6]!==g?(i=function(){g(\"panel-selector\")},f[6]=g,f[7]=i):i=f[7],f[8]===Symbol.for(\"react.memo_cache_sentinel\")?(l={background:\"none\",border:\"none\",cursor:\"pointer\",padding:\"4px\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",borderRadius:\"4px\",color:\"var(--color-gray-900)\"},s=(0,b.jsx)(uU,{}),f[8]=l,f[9]=s):(l=f[8],s=f[9]),f[10]!==i?(c=(0,b.jsx)(\"button\",{ref:y,id:\"_next-devtools-panel-close\",className:\"dev-tools-info-close-button\",onClick:i,\"aria-label\":\"Close devtools panel\",style:l,children:s}),f[10]=i,f[11]=c):c=f[11],f[12]===Symbol.for(\"react.memo_cache_sentinel\")?(u=(0,b.jsx)(\"style\",{children:es(uM())}),f[12]=u):u=f[12],f[13]!==h||f[14]!==m||f[15]!==a||f[16]!==c?(d=(0,b.jsxs)(\"div\",{style:r,ref:m,children:[a,h,c,u]}),f[13]=h,f[14]=m,f[15]=a,f[16]=c,f[17]=d):d=f[17],d}function uU(e){var t,n,r,o=(0,A.c)(4),a=e.size,i=void 0===a?22:a;return o[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t=(0,b.jsx)(\"path\",{d:\"M18 6 6 18\"}),n=(0,b.jsx)(\"path\",{d:\"m6 6 12 12\"}),o[0]=t,o[1]=n):(t=o[0],n=o[1]),o[2]!==i?(r=(0,b.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:i,height:i,viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[t,n]}),o[2]=i,o[3]=r):r=o[3],r}function uF(){var e,t=(0,A.c)(1);return t[0]===Symbol.for(\"react.memo_cache_sentinel\")?(e=(0,b.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"16\",height:\"16\",viewBox:\"0 0 20 20\",fill:\"none\",children:(0,b.jsx)(\"path\",{fill:\"currentColor\",fillRule:\"evenodd\",d:\"m9.7 3.736.045-.236h.51l.044.236a2.024 2.024 0 0 0 1.334 1.536c.19.066.375.143.554.23.618.301 1.398.29 2.03-.143l.199-.136.36.361-.135.199a2.024 2.024 0 0 0-.143 2.03c.087.179.164.364.23.554.224.65.783 1.192 1.536 1.334l.236.044v.51l-.236.044a2.024 2.024 0 0 0-1.536 1.334 4.95 4.95 0 0 1-.23.554 2.024 2.024 0 0 0 .143 2.03l.136.199-.361.36-.199-.135a2.024 2.024 0 0 0-2.03-.143c-.179.087-.364.164-.554.23a2.024 2.024 0 0 0-1.334 1.536l-.044.236h-.51l-.044-.236a2.024 2.024 0 0 0-1.334-1.536 4.952 4.952 0 0 1-.554-.23 2.024 2.024 0 0 0-2.03.143l-.199.136-.36-.361.135-.199a2.024 2.024 0 0 0 .143-2.03 4.958 4.958 0 0 1-.23-.554 2.024 2.024 0 0 0-1.536-1.334l-.236-.044v-.51l.236-.044a2.024 2.024 0 0 0 1.536-1.334 4.96 4.96 0 0 1 .23-.554 2.024 2.024 0 0 0-.143-2.03l-.136-.199.361-.36.199.135a2.024 2.024 0 0 0 2.03.143c.179-.087.364-.164.554-.23a2.024 2.024 0 0 0 1.334-1.536ZM8.5 2h3l.274 1.46c.034.185.17.333.348.394.248.086.49.186.722.3.17.082.37.074.526-.033l1.226-.839 2.122 2.122-.84 1.226a.524.524 0 0 0-.032.526c.114.233.214.474.3.722.061.177.21.314.394.348L18 8.5v3l-1.46.274a.524.524 0 0 0-.394.348 6.47 6.47 0 0 1-.3.722.524.524 0 0 0 .033.526l.839 1.226-2.122 2.122-1.226-.84a.524.524 0 0 0-.526-.032 6.477 6.477 0 0 1-.722.3.524.524 0 0 0-.348.394L11.5 18h-3l-.274-1.46a.524.524 0 0 0-.348-.394 6.477 6.477 0 0 1-.722-.3.524.524 0 0 0-.526.033l-1.226.839-2.122-2.122.84-1.226a.524.524 0 0 0 .032-.526 6.453 6.453 0 0 1-.3-.722.524.524 0 0 0-.394-.348L2 11.5v-3l1.46-.274a.524.524 0 0 0 .394-.348c.086-.248.186-.49.3-.722a.524.524 0 0 0-.033-.526l-.839-1.226 2.122-2.122 1.226.84a.524.524 0 0 0 .526.032 6.46 6.46 0 0 1 .722-.3.524.524 0 0 0 .348-.394L8.5 2Zm3 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm1.5 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z\",clipRule:\"evenodd\"})}),t[0]=e):e=t[0],e}var uq=__nested_webpack_require_378213__(\"../../node_modules/.pnpm/css-loader@7.1.2_@rspack+core@1.4.5_@swc+helpers@0.5.15__webpack@5.98.0_@swc+core@1.11.24_@sw_wm7ee5ic4mofrhisudwon4qpq4/node_modules/css-loader/dist/cjs.js!./src/next-devtools/dev-overlay/menu/panel-router.css\"),uH={};uH.styleTagTransform=h(),uH.setAttributes=u(),uH.insert=s(),uH.domAPI=i(),uH.insertStyleElement=f(),o()(uq.Z,uH),uq.Z&&uq.Z.locals&&uq.Z.locals;var uV=function(){var e,t,n,r,o,a,i,l,s,c,u,d=(0,A.c)(32),f=r2(),p=f.setPanel,h=f.setSelectedIndex,m=da(),g=m.state,y=m.dispatch,v=u4().totalErrorCount,x=\"app\"===g.routerType;d[0]!==y||d[1]!==p||d[2]!==h||d[3]!==g.isErrorOverlayOpen||d[4]!==v?(e=v>0&&{title:\"\".concat(v,\" \").concat(1===v?\"issue\":\"issues\",\" found. Click to view details in the dev overlay.\"),label:\"Issues\",value:(0,b.jsx)(oz,{children:v}),onClick:function(){if(g.isErrorOverlayOpen){y({type:F}),p(null);return}p(null),h(-1),v>0&&y({type:U})}},d[0]=y,d[1]=p,d[2]=h,d[3]=g.isErrorOverlayOpen,d[4]=v,d[5]=e):e=d[5];var w=\"Current route is \".concat(g.staticIndicator?\"static\":\"dynamic\",\".\"),C=g.staticIndicator?\"Static\":\"Dynamic\";d[6]!==p?(t=function(){return p(\"route-type\")},d[6]=p,d[7]=t):t=d[7];var _=g.staticIndicator?\"static\":\"dynamic\";return d[8]!==_?(n={\"data-nextjs-route-type\":_},d[8]=_,d[9]=n):n=d[9],d[10]!==w||d[11]!==C||d[12]!==t||d[13]!==n?(r={title:w,label:\"Route\",value:C,onClick:t,attributes:n},d[10]=w,d[11]=C,d[12]=t,d[13]=n,d[14]=r):r=d[14],d[15]!==p?(o= false?0:{title:\"Learn about Turbopack and how to enable it in your application.\",label:\"Try Turbopack\",value:(0,b.jsx)(oT,{}),onClick:function(){return p(\"turbo-info\")}},d[15]=p,d[16]=o):o=d[16],d[17]!==x||d[18]!==p?(a= true&&x&&{label:\"Route Info\",value:(0,b.jsx)(oT,{}),onClick:function(){return p(\"segment-explorer\")},attributes:{\"data-segment-explorer\":!0}},d[17]=x,d[18]=p,d[19]=a):a=d[19],d[20]===Symbol.for(\"react.memo_cache_sentinel\")?(i=(0,b.jsx)(uF,{}),d[20]=i):i=d[20],d[21]!==p?(l=function(){return p(\"preferences\")},d[21]=p,d[22]=l):l=d[22],d[23]===Symbol.for(\"react.memo_cache_sentinel\")?(s={\"data-preferences\":!0},d[23]=s):s=d[23],d[24]!==l?(c={label:\"Preferences\",value:i,onClick:l,footer:!0,attributes:s},d[24]=l,d[25]=c):c=d[25],d[26]!==e||d[27]!==c||d[28]!==r||d[29]!==o||d[30]!==a?(u=(0,b.jsx)(oP,{items:[e,r,o,a,c]}),d[26]=e,d[27]=c,d[28]=r,d[29]=o,d[30]=a,d[31]=u):u=d[31],u},u$=function(){var e,t=(0,A.c)(4),n=da(),r=n.state,o=n.dispatch,a=n.shadowRoot;return t[0]!==o||t[1]!==a||t[2]!==r.disableDevIndicator?(e=function(){o({type:Z,disabled:!r.disableDevIndicator});var e=a.getElementById(\"panel-route\"),t=a.getElementById(\"data-devtools-indicator\");if(e&&e.firstElementChild){var n=e.firstElementChild,i=\"none\"===n.style.display;n.style.display=i?\"\":\"none\"}if(t){var l=\"none\"===t.style.display;t.style.display=l?\"\":\"none\"}},t[0]=o,t[1]=a,t[2]=r.disableDevIndicator,t[3]=e):e=t[3],e},uW=function(){var e,t,n,r,o,a,i,l,s,c,u,d,f,p,h,m,g,y,v,w,C,_,k,E,j,S,O=(0,A.c)(44),B=da().state,P=r2().triggerRef,I=u$(),z=\"app\"===B.routerType;O[0]!==B.hideShortcut||O[1]!==I?(s=B.hideShortcut?(e={},t=B.hideShortcut,n=I,t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e):{},O[0]=B.hideShortcut,O[1]=I,O[2]=s):s=O[2],r=s,o=P,(l=(0,A.c)(4))[0]!==o||l[1]!==r?(a=function(){var e=function(e){if(!((n=t9((t=o).current))&&(\"true\"===n.contentEditable||\"INPUT\"===n.tagName||\"TEXTAREA\"===n.tagName||\"SELECT\"===n.tagName||\"true\"===n.dataset[\"shortcut-recorder\"])&&!n.hasAttribute(\"readonly\"))){var t,n,a=[];e.metaKey&&a.push(\"Meta\"),e.ctrlKey&&a.push(\"Control\"),e.altKey&&a.push(\"Alt\"),e.shiftKey&&a.push(\"Shift\"),\"Meta\"!==e.key&&\"Control\"!==e.key&&\"Alt\"!==e.key&&\"Shift\"!==e.key&&a.push(e.code);var i=a.join(\"+\");r[i]&&(e.preventDefault(),r[i]())}};return window.addEventListener(\"keydown\",e),function(){return window.removeEventListener(\"keydown\",e)}},i=[o,r],l[0]=o,l[1]=r,l[2]=a,l[3]=i):(a=l[2],i=l[3]),(0,x.useEffect)(a,i),O[3]===Symbol.for(\"react.memo_cache_sentinel\")?(c=(0,b.jsx)(uQ,{name:\"panel-selector\",children:(0,b.jsx)(uV,{})}),O[3]=c):c=O[3];var T=500/B.scale;O[4]!==T?(u={kind:\"fixed\",height:T,width:512},O[4]=T,O[5]=u):u=O[5],O[6]===Symbol.for(\"react.memo_cache_sentinel\")?(d=(0,b.jsx)(uZ,{title:\"Preferences\"}),f=(0,b.jsx)(uK,{}),O[6]=d,O[7]=f):(d=O[6],f=O[7]),O[8]!==u?(p=(0,b.jsx)(uQ,{name:\"preferences\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sizeConfig:u,closeOnClickOutside:!0,header:d,children:f})}),O[8]=u,O[9]=p):p=O[9];var D=B.staticIndicator?\"static\":\"dynamic\",L=B.staticIndicator?300/B.scale:325/B.scale,N=400/B.scale;O[10]!==L||O[11]!==N?(h={kind:\"fixed\",height:L,width:N},O[10]=L,O[11]=N,O[12]=h):h=O[12];var R=\"\".concat(B.staticIndicator?\"Static\":\"Dynamic\",\" Route\");O[13]!==R?(m=(0,b.jsx)(uZ,{title:R}),O[13]=R,O[14]=m):m=O[14],O[15]!==B.routerType||O[16]!==B.staticIndicator?(g=(0,b.jsx)(n1,{routerType:B.routerType,isStaticRoute:B.staticIndicator}),O[15]=B.routerType,O[16]=B.staticIndicator,O[17]=g):g=O[17];var M=n0[B.routerType][B.staticIndicator?\"static\":\"dynamic\"];O[18]!==M?(y=(0,b.jsx)(uY,{href:M}),O[18]=M,O[19]=y):y=O[19],O[20]!==g||O[21]!==y?(v=(0,b.jsxs)(\"div\",{className:\"panel-content\",children:[g,y]}),O[20]=g,O[21]=y,O[22]=v):v=O[22],O[23]!==h||O[24]!==m||O[25]!==v||O[26]!==D?(w=(0,b.jsx)(uQ,{name:\"route-type\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sizeConfig:h,closeOnClickOutside:!0,header:m,children:v},D)}),O[23]=h,O[24]=m,O[25]=v,O[26]=D,O[27]=w):w=O[27],O[28]!==z||O[29]!==B.page||O[30]!==B.scale?(C= true&&z&&(0,b.jsx)(uQ,{name:\"segment-explorer\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sharePanelPositionGlobally:!1,draggable:!0,sizeConfig:{kind:\"resizable\",maxHeight:\"90vh\",maxWidth:\"90vw\",minHeight:200/B.scale,minWidth:250/B.scale,initialSize:{height:375/B.scale,width:400/B.scale}},header:(0,b.jsx)(uZ,{title:\"Route Info\"}),children:(0,b.jsx)(uz,{page:B.page})})}),O[28]=z,O[29]=B.page,O[30]=B.scale,O[31]=C):C=O[31];var Z=470/B.scale,U=400/B.scale;return O[32]!==Z||O[33]!==U?(_={kind:\"fixed\",height:Z,width:U},O[32]=Z,O[33]=U,O[34]=_):_=O[34],O[35]===Symbol.for(\"react.memo_cache_sentinel\")?(k=(0,b.jsx)(uZ,{title:\"Try Turbopack\"}),O[35]=k):k=O[35],O[36]===Symbol.for(\"react.memo_cache_sentinel\")?(E=(0,b.jsxs)(\"div\",{className:\"panel-content\",children:[(0,b.jsx)(nY,{}),(0,b.jsx)(uY,{href:\"https://nextjs.org/docs/app/api-reference/turbopack\"})]}),O[36]=E):E=O[36],O[37]!==_?(j=(0,b.jsx)(uQ,{name:\"turbo-info\",children:(0,b.jsx)(o0,{sharePanelSizeGlobally:!1,sizeConfig:_,closeOnClickOutside:!0,header:k,children:E})}),O[37]=_,O[38]=j):j=O[38],O[39]!==w||O[40]!==C||O[41]!==j||O[42]!==p?(S=(0,b.jsxs)(b.Fragment,{children:[c,p,w,C,j]}),O[39]=w,O[40]=C,O[41]=j,O[42]=p,O[43]=S):S=O[43],S},uY=function(e){var t,n=(0,A.c)(2),r=e.href;return n[0]!==r?(t=(0,b.jsx)(\"div\",{className:\"dev-tools-info-button-container\",children:(0,b.jsx)(\"a\",{className:\"dev-tools-info-learn-more-button\",href:r,target:\"_blank\",rel:\"noreferrer noopener\",children:\"Learn More\"})}),n[0]=r,n[1]=t):t=n[1],t},uK=function(){var e,t,n,r,o=(0,A.c)(17),a=da(),i=a.dispatch,l=a.state,s=r2(),c=s.setPanel,u=s.setSelectedIndex,d=ow();return o[0]!==i?(e=function(e){i({type:X,scale:e})},o[0]=i,o[1]=e):e=o[1],o[2]!==i||o[3]!==d?(t=function(e){i({type:Y,devToolsPosition:e}),d(e)},o[2]=i,o[3]=d,o[4]=t):t=o[4],o[5]!==i||o[6]!==c||o[7]!==u?(n=function(){i({type:Z,disabled:!0}),u(-1),c(null),fetch(\"/__nextjs_disable_dev_indicator\",{method:\"POST\"})},o[5]=i,o[6]=c,o[7]=u,o[8]=n):n=o[8],o[9]!==l.devToolsPosition||o[10]!==l.hideShortcut||o[11]!==l.scale||o[12]!==l.theme||o[13]!==e||o[14]!==t||o[15]!==n?(r=(0,b.jsx)(\"div\",{className:\"user-preferences-wrapper\",children:(0,b.jsx)(rC,{theme:l.theme,position:l.devToolsPosition,scale:l.scale,setScale:e,setPosition:t,hideShortcut:l.hideShortcut,setHideShortcut:uJ,hide:n})}),o[9]=l.devToolsPosition,o[10]=l.hideShortcut,o[11]=l.scale,o[12]=l.theme,o[13]=e,o[14]=t,o[15]=n,o[16]=r):r=o[16],r},uX=function(){return(0,x.useContext)(uG)},uG=(0,x.createContext)(null);function uQ(e){var t,n,r,o,a,i=(0,A.c)(12),l=e.children,s=e.name,c=r2().panel;i[0]===Symbol.for(\"react.memo_cache_sentinel\")?(t={enterDelay:0,exitDelay:200},i[0]=t):t=i[0];var u=rD(s===c,t),d=u.mounted,f=u.rendered;if(!d)return null;i[1]!==d||i[2]!==s?(n={name:s,mounted:d},i[1]=d,i[2]=s,i[3]=n):n=i[3];var p=+!!f;i[4]!==p?(r={\"--panel-opacity\":p,\"--panel-transition\":\"opacity \".concat(200,\"ms \").concat(t7)},i[4]=p,i[5]=r):r=i[5];var h=r;return i[6]!==l||i[7]!==h?(o=(0,b.jsx)(\"div\",{id:\"panel-route\",className:\"panel-route\",style:h,children:l}),i[6]=l,i[7]=h,i[8]=o):o=i[8],i[9]!==n||i[10]!==o?(a=(0,b.jsx)(uG,{value:n,children:o}),i[9]=n,i[10]=o,i[11]=a):a=i[11],a}function uJ(e){rA({hideShortcut:e})}function u0(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);ne.length)&&(t=e.length);for(var n=0,r=Array(t);n1&&void 0!==arguments[1]?arguments[1]:\"/home/sahamone/Documents/La Banquise/website-front/banquise-website/.next\";return e?(e=e.split(\"\\n\").map(function(e){return e.includes(\"(eval \")&&(e=e.replace(/eval code/g,\"eval\").replace(/\\(eval at [^()]* \\(/,\"(file://\").replace(/\\),.*$/g,\")\")),e}).join(\"\\n\"),(0,C.parse)(e).map(function(e){try{var n=new URL(e.file),r=_.exec(n.pathname);if(r){var o,a=null==t||null==(o=t.replace(/\\\\/g,\"/\"))?void 0:o.replace(/\\/$/,\"\");a&&(e.file=\"file://\"+a.concat(r.pop())+n.search)}}catch(e){}return{file:e.file,line1:e.lineNumber,column1:e.column,methodName:e.methodName,arguments:e.arguments}})):[]}((o.stack||\"\")+(i||\"\")),s={id:t,error:o,frames:l,type:r(o)?\"recoverable\":(a=o)&&\"NEXT_CONSOLE_ERROR\"===a[k]?\"console\":\"runtime\"},c=e.filter(function(e){return e.error.stack!==s.error.stack&&eo(e.error.stack)!==eo(s.error.stack)||n(e.error)!==n(s.error)});return c.length===e.length?(c.push(s),c):e},s[0]=n,s[1]=r,s[2]=a):a=s[2],c=a,(s[3]!==c?(i=function(e,t){switch(t.type){case R:return S(j({},e),{debugInfo:t.debugInfo});case B:return S(j({},e),{staticIndicator:t.staticIndicator});case P:return S(j({},e),{buildError:null});case I:return S(j({},e),{buildError:t.message});case z:return S(j({},e),{refreshState:{type:\"pending\",errors:[]}});case T:return S(j({},e),{buildError:null,errors:\"pending\"===e.refreshState.type?e.refreshState.errors:[],refreshState:{type:\"idle\"}});case L:case N:switch(e.refreshState.type){case\"idle\":return S(j({},e),{nextId:e.nextId+1,errors:c(e.errors,e.nextId,t.reason)});case\"pending\":return S(j({},e),{nextId:e.nextId+1,refreshState:S(j({},e.refreshState),{errors:c(e.errors,e.nextId,t.reason)})});default:return e}case D:return S(j({},e),{versionInfo:t.versionInfo});case Z:return S(j({},e),{disableDevIndicator:t.disabled});case M:return S(j({},e),{showIndicator:!0,disableDevIndicator:ea||!!t.devIndicator.disabledUntil});case U:return S(j({},e),{isErrorOverlayOpen:!0});case F:return S(j({},e),{isErrorOverlayOpen:!1});case q:return S(j({},e),{isErrorOverlayOpen:!e.isErrorOverlayOpen});case H:return S(j({},e),{buildingIndicator:!0});case V:return S(j({},e),{buildingIndicator:!1});case $:return S(j({},e),{renderingIndicator:!0});case W:return S(j({},e),{renderingIndicator:!1});case Y:return S(j({},e),{devToolsPosition:t.devToolsPosition});case K:return S(j({},e),{devToolsPanelPosition:S(j({},e.devToolsPanelPosition),E({},t.key,t.devToolsPanelPosition))});case X:return S(j({},e),{scale:t.scale});case en:return S(j({},e),{page:t.page});case G:var n=t.devToolsConfig,r=n.theme,o=n.disableDevIndicator,a=n.devToolsPosition,i=n.devToolsPanelPosition,l=n.devToolsPanelSize,s=n.scale,u=n.hideShortcut;return S(j({},e),{theme:null!=r?r:e.theme,disableDevIndicator:null!=o?o:e.disableDevIndicator,devToolsPosition:null!=a?a:e.devToolsPosition,devToolsPanelPosition:null!=i?i:e.devToolsPanelPosition,scale:null!=s?s:e.scale,devToolsPanelSize:null!=l?l:e.devToolsPanelSize,hideShortcut:void 0!==u?u:e.hideShortcut});default:return e}},s[3]=c,s[4]=i):i=s[4],s[5]!==t)?(o=t,l=S(j({},ei),{isErrorOverlayOpen:\"pages\"===o,routerType:o}),s[5]=t,s[6]=l):l=s[6],u=(0,x.useReducer)(i,l),d=2,function(e){if(Array.isArray(e))return e}(u)||function(e,t){var n,r,o=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(u,2)||u9(u,d)||function(){throw TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()),es=el[0],ec=el[1];return O[0]!==er.host||O[1]!==es.theme?(f=function(){var e=er.host;\"dark\"===es.theme?(e.classList.add(\"dark\"),e.classList.remove(\"light\")):\"light\"===es.theme?(e.classList.add(\"light\"),e.classList.remove(\"dark\")):(e.classList.remove(\"dark\"),e.classList.remove(\"light\"))},O[0]=er.host,O[1]=es.theme,O[2]=f):f=O[2],O[3]!==er||O[4]!==es.theme?(p=[er,es.theme],O[3]=er,O[4]=es.theme,O[5]=p):p=O[5],(0,x.useLayoutEffect)(f,p),O[6]!==ec?(h=function(){u8=ec;var e=setTimeout(function(){!function(e){try{var t=!0,n=!1,r=void 0;try{for(var o,a=u7[Symbol.iterator]();!(t=(o=a.next()).done);t=!0)(0,o.value)(e)}catch(e){n=!0,r=e}finally{try{t||null==a.return||a.return()}finally{if(n)throw r}}}finally{u7.length=0}}(ec)});return function(){u8=null,clearTimeout(e)}},O[6]=ec,O[7]=h):h=O[7],O[8]===Symbol.for(\"react.memo_cache_sentinel\")?(m=[],O[8]=m):m=O[8],(0,x.useInsertionEffect)(h,m),O[9]===Symbol.for(\"react.memo_cache_sentinel\")?(g=(0,b.jsx)(eu,{}),O[9]=g):g=O[9],O[10]!==ec||O[11]!==J||O[12]!==er||O[13]!==es?(y={dispatch:ec,getSquashedHydrationErrorDetails:J,shadowRoot:er,state:es},O[10]=ec,O[11]=J,O[12]=er,O[13]=es,O[14]=y):y=O[14],O[15]===Symbol.for(\"react.memo_cache_sentinel\")?(v=(0,b.jsx)(u5,{}),O[15]=v):v=O[15],O[16]!==y?(w=(0,b.jsxs)(b.Fragment,{children:[g,(0,b.jsx)(dr,{value:y,children:v})]}),O[16]=y,O[17]=w):w=O[17],w}var dr=(0,x.createContext)(null),da=function(){return(0,x.useContext)(dr)},di=!1,dl=!1;function ds(){return null}function dc(e,t){if(di)throw Error(\"Next DevTools: Pages Dev Overlay is already mounted. This is a bug in Next.js\");if(!dl){var n=document.createElement(\"script\");n.style.display=\"block\",n.style.position=\"absolute\",n.setAttribute(\"data-nextjs-dev-overlay\",\"true\");var r=document.createElement(\"nextjs-portal\");n.appendChild(r),document.body.appendChild(n);var o=(0,el.createRoot)(r,{identifierPrefix:\"ndt-\"}),a=r.attachShadow({mode:\"open\"});(0,x.startTransition)(function(){o.render((0,b.jsx)(dn,{getOwnerStack:e,getSquashedHydrationErrorDetails:ds,isRecoverableError:t,routerType:\"app\",shadowRoot:a}))}),dl=!0}}function du(e,t,n){if(dl)throw Error(\"Next DevTools: App Dev Overlay is already mounted. This is a bug in Next.js\");if(!di){var r=document.createElement(\"nextjs-portal\");r.style.position=\"absolute\",new MutationObserver(function(e){var t=!0,n=!1,o=void 0;try{for(var a,i=e[Symbol.iterator]();!(t=(a=i.next()).done);t=!0){var l=a.value;if(\"childList\"===l.type){var s=!0,c=!1,u=void 0;try{for(var d,f=l.removedNodes[Symbol.iterator]();!(s=(d=f.next()).done);s=!0)d.value===r&&document.body.appendChild(r)}catch(e){c=!0,u=e}finally{try{s||null==f.return||f.return()}finally{if(c)throw u}}}}}catch(e){n=!0,o=e}finally{try{t||null==i.return||i.return()}finally{if(n)throw o}}}).observe(document.body,{childList:!0}),document.body.appendChild(r);var o=(0,el.createRoot)(r,{identifierPrefix:\"ndt-\"}),a=r.attachShadow({mode:\"open\"});(0,x.startTransition)(function(){o.render((0,b.jsx)(dn,{getOwnerStack:e,getSquashedHydrationErrorDetails:t,isRecoverableError:n,routerType:\"pages\",shadowRoot:a}))}),di=!0}}})(),exports.DevOverlayContext=__nested_webpack_exports__.DevOverlayContext,exports.dispatcher=__nested_webpack_exports__.dispatcher,exports.renderAppDevOverlay=__nested_webpack_exports__.renderAppDevOverlay,exports.renderPagesDevOverlay=__nested_webpack_exports__.renderPagesDevOverlay,exports.useDevOverlayContext=__nested_webpack_exports__.useDevOverlayContext,__nested_webpack_exports__)-1===[\"DevOverlayContext\",\"dispatcher\",\"renderAppDevOverlay\",\"renderPagesDevOverlay\",\"useDevOverlayContext\"].indexOf(__webpack_i__)&&(exports[__webpack_i__]=__nested_webpack_exports__[__webpack_i__]);Object.defineProperty(exports, \"__esModule\", ({value:!0}));\n//# sourceMappingURL=index.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy8ucG5wbS9uZXh0QDE1LjUuM19yZWFjdC1kb21AMTkuMS4xX3JlYWN0QDE5LjEuMV9fcmVhY3RAMTkuMS4xL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbmV4dC1kZXZ0b29scy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiO0FBQUEseUJBQXlCLDZSQUE2UixhQUFhLE9BQU8sUUFBUSxFQUFFLDhhQUE4YTtBQUNsd0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDZJQUE2SSxL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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sMklBQTJJLFlBQVksYUFBYSxXQUFXLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLFdBQVcsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxZQUFZLE1BQU0sWUFBWSxPQUFPLE1BQU0sVUFBVSxVQUFVLFVBQVUsWUFBWSxPQUFPLGFBQWEsT0FBTyxVQUFVLFVBQVUsVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLEtBQUssS0FBSyxVQUFVLE1BQU0sUUFBUSxVQUFVLFVBQVUsVUFBVSxNQUFNLEtBQUssVUFBVSxVQUFVLFlBQVksTUFBTSxLQUFLLFVBQVUsVUFBVSxZQUFZLE1BQU0sS0FBSyxVQUFVLFVBQVUsWUFBWSxNQUFNLEtBQUssVUFBVSxVQUFVLFlBQVksT0FBTyxNQUFNLFVBQVUsVUFBVSxZQUFZLE9BQU8sTUFBTSxVQUFVLFVBQVUsWUFBWSxPQUFPLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sS0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU0saUlBQWlJLFlBQVksV0FBVyxVQUFVLFVBQVUsTUFBTSxLQUFLLFVBQVUsWUFBWSxhQUFhLGFBQWEsV0FBVyxNQUFNLEtBQUssWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLEtBQUssWUFBWSxNQUFNLEtBQUssVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLE1BQU0sS0FBSyxVQUFVLFlBQVksYUFBYSxXQUFXLFlBQVksT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLE9BQU8sS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLE1BQU0sS0FBSyxZQUFZLFdBQVcsVUFBVSxLQUFLLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxXQUFXLFlBQVksT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksYUFBYSxhQUFhLFdBQVcsVUFBVSxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsTUFBTSxLQUFLLFlBQVksYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLE9BQU8sS0FBSyxVQUFVLFVBQVUsVUFBVSxZQUFZLE1BQU0sS0FBSyxVQUFVLFVBQVUsWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsV0FBVyxVQUFVLE1BQU0sS0FBSyxZQUFZLGFBQWEsT0FBTyxZQUFZLE1BQU0sVUFBVSxZQUFZLGFBQWEsT0FBTyxLQUFLLFVBQVUsWUFBWSxhQUFhLFdBQVcsVUFBVSxVQUFVLFlBQVksYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsV0FBVyxVQUFVLFVBQVUsWUFBWSxhQUFhLGFBQWEsYUFBYSxhQUFhLFdBQVcsT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksV0FBVyxNQUFNLEtBQUssVUFBVSxrREFBa0QsOEJBQThCLG1CQUFtQixnQkFBZ0IsaUJBQWlCLEdB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QTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTSxzR0FBc0csV0FBVyxZQUFZLFdBQVcsT0FBTyxVQUFVLEtBQUssT0FBTyxZQUFZLE9BQU8sS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLE9BQU8sY0FBYyxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sT0FBTyxXQUFXLFlBQVksYUFBYSxhQUFhLGFBQWEsT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksT0FBTyxLQUFLLFlBQVksV0FBVyxZQUFZLE9BQU8sVUFBVSxVQUFVLFlBQVksT0FBTyxLQUFLLFVBQVUsWUFBWSxPQUFPLE1BQU0sWUFBWSxhQUFhLGFBQWEsV0FBVyxZQUFZLGFBQWEsYUFBYSxPQUFPLEtBQUssWUFBWSxhQUFhLGFBQWEsT0FBTyxPQUFPLFVBQVUsWUFBWSxPQUFPLFFBQVEsWUFBWSxPQUFPLEtBQUssWUFBWSxPQUFPLEtBQUssWUFBWSxXQUFXLE9BQU8sS0FBSyxZQUFZLE9BQU8sTUFBTSxZQUFZLE9BQU8sS0FBSyxVQUFVLE9BQU8sTUFBTSxZQUFZLFdBQVcsVUFBVSxZQUFZLE9BQU8sS0FBSyxVQUFVLE9BQU8sS0FBSyxVQUFVLE1BQU0sS0FBSyxVQUFVLFlBQVksYUFBYSxP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Q0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4R0FBOEcsWUFBWSxhQUFhLGNBQWMsYUFBYSxjQUFjLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxjQUFjLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxPQUFPLEtBQUssS0FBSyxZQUFZLGFBQWEsY0FBYyxhQUFhLGNBQWMsYUFB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QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGlIQUFpSCxVQUFVLEtBQUssYUFBYSxhQUFhLGFBQWEsY0FBYyxhQUFhLGNBQWMsYUFBYSxhQUFhLGNBQWMsTUFBTSxPQUFPLE1BQU0sTUFBTSxZQUFZLGNBQWMsYUFBYSxhQUFhLGFBQWEsYUFBYSxNQUFNLE9BQU8sTUFBTSxPQUFPLGFBQWEsYUFBYSxjQUFjLGFBQWEsTUFBTSxRQUFRLGFBQWEsY0FBYyxhQUFhLGFBQWEsYUFBYSxnQkFBZ0IsY0FBYyxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsY0FBYyxnQkFBZ0IsS0FBSyxZQUFZLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFhLGFBQWEsYUFBYSxhQUFh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RSxrQkFBa0IseUJBQXlCLDJMQUEyTCxtRUFBbUUsc0VBQXNFLHVIQUF1SCx1REFBdUQsMEJBQTBCLG1CQUFtQixHQUFHLDZCQUE2QiwrQ0FBK0MsMkJBQTJCLGFBQWEsY0FBYyxZQUFZLGlCQUFpQixtR0FBbUcsUUFBUSx1Q0FBdUMscUdBQXFHLDhDQUE4Qyw4Q0FBOEMsMkJBQTJCLHdCQUF3QixvQkFBb0IsWUFBWSxFQUFFLGlDQUFpQyx1QkFBdUIsdUdBQXVHLEdBQUcsU0FBUyxtQkFBbUIsaUdBQWlHLFFBQVEsOENBQThDLDZEQUE2RCx1QkFBdUIsSUFBSSxpQ0FBaUMsdUJBQXVCLE1BQU0sY0FBYyx5QkFBeUIsdUJBQXVCLElBQUksOENBQThDLHVCQUF1QiwrQ0FBK0MsU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxpQkFBaUIsU0FBUyxTQUFTLFFBQVEsSUFBSSw4QkFBOEIsUUFBUSxlQUFlLHlCQUF5QixhQUFhLCtCQUErQiwyQkFBMkIsd0JBQXdCLG9CQUFvQixZQUFZLEVBQUUsaUNBQWlDLHVCQUF1Qix3R0FBd0csR0FBRyxVQUFVLElBQUkseUJBQXlCLENBQUMsMEJBQW1CLG1CQUFtQixrQkFBa0IsQ0FBQywwQkFBbUIsWUFBWSwyQkFBMkIsQ0FBQywwQkFBbUIscUJBQXFCLDZCQUE2QixDQUFDLDBCQUFtQix1QkFBdUIsNEJBQTRCLENBQUMsMEJBQW1CLHNCQUFzQiwwQkFBbUIsOEpBQThKLDBCQUFtQixpQkFBaUIsOENBQTJDLENBQUMsU0FBUyxFQUFDO0FBQzF6bUUiLCJzb3VyY2VzIjpbIi9ob21lL3NhaGFtb25lL0RvY3VtZW50cy9MYSBCYW5xdWlzZS93ZWJzaXRlLWZyb250L2JhbnF1aXNlLXdlYnNpdGUvbm9kZV9tb2R1bGVzLy5wbnBtL25leHRAMTUuNS4zX3JlYWN0LWRvbUAxOS4xLjFfcmVhY3RAMTkuMS4xX19yZWFjdEAxOS4xLjEvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jb21waWxlZC9uZXh0LWRldnRvb2xzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3dlYnBhY2tfbW9kdWxlc19fPXtcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL2RldnRvb2xzLWluZGljYXRvci9kZXZ0b29scy1pbmRpY2F0b3IuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYFtkYXRhLW5leHRqcy10b2FzdF0ge1xuICAmW2RhdGEtaGlkZGVuPSd0cnVlJ10ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItbWVudSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LW1lbnUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcbiAgei1pbmRleDogMztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgb3BhY2l0eTogMDtcbiAgb3V0bGluZTogMDtcbiAgbWluLXdpZHRoOiAyNDhweDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS1hbmltYXRlLW91dC1kdXJhdGlvbi1tcylcbiAgICB2YXIoLS1hbmltYXRlLW91dC10aW1pbmctZnVuY3Rpb24pO1xuXG4gICZbZGF0YS1yZW5kZXJlZD0ndHJ1ZSddIHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIHNjYWxlOiAxO1xuICB9XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWlubmVyIHtcbiAgcGFkZGluZzogNnB4O1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItaXRlbSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDhweCA2cHg7XG4gIGhlaWdodDogdmFyKC0tc2l6ZS0zNik7XG4gIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gIHN2ZyB7XG4gICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XG4gIH1cblxuICAmOmZvY3VzLXZpc2libGUge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItZm9vdGVyIHtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xuICBwYWRkaW5nOiA2cHg7XG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1pdGVtW2RhdGEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xufVxuXG4uZGV2LXRvb2xzLWluZGljYXRvci1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XG4gIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG59XG5cbi5kZXYtdG9vbHMtaW5kaWNhdG9yLXZhbHVlIHtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cblxuLmRldi10b29scy1pbmRpY2F0b3ItaXNzdWUtY291bnQge1xuICAtLWNvbG9yLXByaW1hcnk6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcbiAgLS1jb2xvci1zZWNvbmRhcnk6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGdhcDogOHB4O1xuICBtaW4td2lkdGg6IHZhcigtLXNpemUtNDApO1xuICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcbiAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcbiAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtYWxsKTtcbiAgcGFkZGluZzogMnB4O1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgYm9yZGVyLXJhZGl1czogMTI4cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMyk7XG4gIGZvbnQtdmFyaWFudC1udW1lcmljOiB0YWJ1bGFyLW51bXM7XG5cbiAgJltkYXRhLWhhcy1pc3N1ZXM9J3RydWUnXSB7XG4gICAgLS1jb2xvci1wcmltYXJ5OiB2YXIoLS1jb2xvci1yZWQtODAwKTtcbiAgICAtLWNvbG9yLXNlY29uZGFyeTogdmFyKC0tY29sb3ItcmVkLTEwMCk7XG4gIH1cblxuICAuZGV2LXRvb2xzLWluZGljYXRvci1pc3N1ZS1jb3VudC1pbmRpY2F0b3Ige1xuICAgIHdpZHRoOiB2YXIoLS1zaXplLTgpO1xuICAgIGhlaWdodDogdmFyKC0tc2l6ZS04KTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAycHggdmFyKC0tY29sb3Itc2Vjb25kYXJ5KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIH1cbn1cblxuLmRldi10b29scy1pbmRpY2F0b3Itc2hvcnRjdXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBnYXA6IDRweDtcblxuICBrYmQge1xuICAgIHdpZHRoOiB2YXIoLS1zaXplLTIwKTtcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjApO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcbiAgfVxufVxuXG4uZGV2LXRvb2xzLWdyYWJiaW5nIHtcbiAgY3Vyc29yOiBncmFiYmluZztcblxuICA+ICoge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvZGV2dG9vbHMtaW5kaWNhdG9yL2RldnRvb2xzLWluZGljYXRvci5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBO0VBQ0U7SUFDRSxhQUFhO0VBQ2Y7QUFDRjs7QUFFQTtFQUNFLGFBQWE7RUFDYixzQkFBc0I7RUFDdEIsdUJBQXVCO0VBQ3ZCLHVDQUF1QztFQUN2Qyw2Q0FBNkM7RUFDN0MsNEJBQTRCO0VBQzVCLDhCQUE4QjtFQUM5QixnQ0FBZ0M7RUFDaEMsa0JBQWtCO0VBQ2xCLG1DQUFtQztFQUNuQyxVQUFVO0VBQ1YsZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixVQUFVO0VBQ1YsZ0JBQWdCO0VBQ2hCO3NDQUNvQzs7RUFFcEM7SUFDRSxVQUFVO0lBQ1YsUUFBUTtFQUNWO0FBQ0Y7O0FBRUE7RUFDRSxZQUFZO0VBQ1osV0FBVztBQUNiOztBQUVBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixnQ0FBZ0M7RUFDaEMsaUJBQWlCO0VBQ2pCLG1CQUFtQjs7RUFFbkI7SUFDRSxxQkFBcUI7SUFDckIsc0JBQXNCO0VBQ3hCOztFQUVBO0lBQ0UsVUFBVTtFQUNaO0FBQ0Y7O0FBRUE7RUFDRSx1Q0FBdUM7RUFDdkMsWUFBWTtFQUNaLDJDQUEyQztFQUMzQyxXQUFXO0FBQ2I7O0FBRUE7RUFDRSxlQUFlO0VBQ2YsdUNBQXVDO0FBQ3pDOztBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLDJCQUEyQjtFQUMzQiw2QkFBNkI7QUFDL0I7O0FBRUE7RUFDRSx5QkFBeUI7RUFDekIsMkJBQTJCO0VBQzNCLDRCQUE0QjtFQUM1QixpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxzQ0FBc0M7RUFDdEMsd0NBQXdDO0VBQ3hDLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixRQUFRO0VBQ1IseUJBQXlCO0VBQ3pCLHNCQUFzQjtFQUN0Qix1Q0FBdUM7RUFDdkMsNkNBQTZDO0VBQzdDLDRCQUE0QjtFQUM1QiwrQkFBK0I7RUFDL0IsWUFBWTtFQUNaLDZCQUE2QjtFQUM3QixvQkFBb0I7RUFDcEIsZ0JBQWdCO0VBQ2hCLHlCQUF5QjtFQUN6QixrQ0FBa0M7O0VBRWxDO0lBQ0UscUNBQXFDO0lBQ3JDLHVDQUF1QztFQUN6Qzs7RUFFQTtJQUNFLG9CQUFvQjtJQUNwQixxQkFBcUI7SUFDckIsZ0NBQWdDO0lBQ2hDLDRDQUE0QztJQUM1QyxrQkFBa0I7RUFDcEI7QUFDRjs7QUFFQTtFQUNFLGFBQWE7RUFDYixRQUFROztFQUVSO0lBQ0UscUJBQXFCO0lBQ3JCLHNCQUFzQjtJQUN0QixhQUFhO0lBQ2IsdUJBQXVCO0lBQ3ZCLG1CQUFtQjtJQUNuQixnQ0FBZ0M7SUFDaEMsdUNBQXVDO0lBQ3ZDLG1DQUFtQztJQUNuQyx1Q0FBdUM7SUFDdkMsNkJBQTZCO0lBQzdCLGtCQUFrQjtJQUNsQix5QkFBeUI7SUFDekIsMkJBQTJCO0VBQzdCO0FBQ0Y7O0FBRUE7RUFDRSxnQkFBZ0I7O0VBRWhCO0lBQ0Usb0JBQW9CO0VBQ3RCO0FBQ0ZcIixzb3VyY2VzQ29udGVudDpbXCJbZGF0YS1uZXh0anMtdG9hc3RdIHtcXG4gICZbZGF0YS1oaWRkZW49J3RydWUnXSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLW1lbnUge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctbWVudSk7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xcbiAgei1pbmRleDogMztcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBvcGFjaXR5OiAwO1xcbiAgb3V0bGluZTogMDtcXG4gIG1pbi13aWR0aDogMjQ4cHg7XFxuICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLWFuaW1hdGUtb3V0LWR1cmF0aW9uLW1zKVxcbiAgICB2YXIoLS1hbmltYXRlLW91dC10aW1pbmctZnVuY3Rpb24pO1xcblxcbiAgJltkYXRhLXJlbmRlcmVkPSd0cnVlJ10ge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgICBzY2FsZTogMTtcXG4gIH1cXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItaW5uZXIge1xcbiAgcGFkZGluZzogNnB4O1xcbiAgd2lkdGg6IDEwMCU7XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWl0ZW0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwYWRkaW5nOiA4cHggNnB4O1xcbiAgaGVpZ2h0OiB2YXIoLS1zaXplLTM2KTtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xcblxcbiAgc3ZnIHtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgfVxcblxcbiAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgb3V0bGluZTogMDtcXG4gIH1cXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItZm9vdGVyIHtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gIHBhZGRpbmc6IDZweDtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3ItaXRlbVtkYXRhLXNlbGVjdGVkPSd0cnVlJ10ge1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xcbn1cXG5cXG4uZGV2LXRvb2xzLWluZGljYXRvci1sYWJlbCB7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLXZhbHVlIHtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxufVxcblxcbi5kZXYtdG9vbHMtaW5kaWNhdG9yLWlzc3VlLWNvdW50IHtcXG4gIC0tY29sb3ItcHJpbWFyeTogdmFyKC0tY29sb3ItZ3JheS04MDApO1xcbiAgLS1jb2xvci1zZWNvbmRhcnk6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZ2FwOiA4cHg7XFxuICBtaW4td2lkdGg6IHZhcigtLXNpemUtNDApO1xcbiAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3ctc21hbGwpO1xcbiAgcGFkZGluZzogMnB4O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBib3JkZXItcmFkaXVzOiAxMjhweDtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTMpO1xcbiAgZm9udC12YXJpYW50LW51bWVyaWM6IHRhYnVsYXItbnVtcztcXG5cXG4gICZbZGF0YS1oYXMtaXNzdWVzPSd0cnVlJ10ge1xcbiAgICAtLWNvbG9yLXByaW1hcnk6IHZhcigtLWNvbG9yLXJlZC04MDApO1xcbiAgICAtLWNvbG9yLXNlY29uZGFyeTogdmFyKC0tY29sb3ItcmVkLTEwMCk7XFxuICB9XFxuXFxuICAuZGV2LXRvb2xzLWluZGljYXRvci1pc3N1ZS1jb3VudC1pbmRpY2F0b3Ige1xcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS04KTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTgpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5KTtcXG4gICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHZhcigtLWNvbG9yLXNlY29uZGFyeSk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gIH1cXG59XFxuXFxuLmRldi10b29scy1pbmRpY2F0b3Itc2hvcnRjdXQge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGdhcDogNHB4O1xcblxcbiAga2JkIHtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjApO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZCk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgfVxcbn1cXG5cXG4uZGV2LXRvb2xzLWdyYWJiaW5nIHtcXG4gIGN1cnNvcjogZ3JhYmJpbmc7XFxuXFxuICA+ICoge1xcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIH1cXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL2RldnRvb2xzLXBhbmVsL3Jlc2l6ZS9yZXNpemUtaGFuZGxlLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAucmVzaXplLWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgLyogdG9kbzogYmV0dGVyIHogaW5kZXggKi9cbiAgei1pbmRleDogMTA7XG4gIC8qIHRvZG86IGlzIHRoaXMgbmVlZGVkICovXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4ucmVzaXplLWxpbmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIC8qIHRvZG8gc21hcnRlciB6IGluZGV4ICovXG4gIHotaW5kZXg6IC0xO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgLyogYSBub3JtYWwgZXhpdCBhbmltYXRpb24gY3VydmUtIGF0IHRoaXMgcG9pbnQgdGhlIGV4aXQgYW5pbWF0aW9uIGlzICovXG4gIC8qIGltbWVkaWF0ZWx5IHJlc3BvbnNpdmUgc28gd2UgZG9uJ3QgbmVlZCBhIGJlc3Bva2UgY3VydmUgKi9cbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcbiAgLyogdG9kbzogYmV0dGVyIHZhcj8gKi9cbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xufVxuXG4vKiBzdGFydCByZWFsbHkgZmFzdCBiZWNhdXNlIHdlIHN0YXJ0IHN1cGVyIGhpZGRlbiBpbml0aWFsbHkgYmVoaW5kIHRoZSBwYW5lbCwgb3RoZXJ3aXNlIGZlZWxzIGxpa2UgYW4gdW5pbnRlbmRlZCBhbmltYXRpb24gZGVsYXkgKi9cbi5yZXNpemUtY29udGFpbmVyOmhvdmVyIH4gLnJlc2l6ZS1saW5lIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyLCAwLjkpO1xufVxuXG4ucmVzaXplLWNvbnRhaW5lci5yaWdodCxcbi5yZXNpemUtY29udGFpbmVyLmxlZnQge1xuICB0b3A6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDIycHg7XG4gIGN1cnNvcjogZXctcmVzaXplO1xufVxuXG4vKiB0b2RvOiBkb24ndCBoYXJkIGNvZGUgYWxsIHRoZXNlIHZhbHVlcy91c2UgdmFycyAqL1xuXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20sXG4ucmVzaXplLWNvbnRhaW5lci50b3Age1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAyMnB4O1xuICBjdXJzb3I6IG5zLXJlc2l6ZTtcbn1cblxuLnJlc2l6ZS1jb250YWluZXIudG9wIHtcbiAgdG9wOiAtN3B4O1xufVxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tIHtcbiAgYm90dG9tOiAtN3B4O1xufVxuLnJlc2l6ZS1jb250YWluZXIubGVmdCB7XG4gIGxlZnQ6IC03cHg7XG59XG4ucmVzaXplLWNvbnRhaW5lci5yaWdodCB7XG4gIHJpZ2h0OiAtN3B4O1xufVxuXG4ucmVzaXplLWNvbnRhaW5lci50b3AtbGVmdCxcbi5yZXNpemUtY29udGFpbmVyLnRvcC1yaWdodCxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1sZWZ0LFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLXJpZ2h0IHtcbiAgd2lkdGg6IDI2cHg7XG4gIGhlaWdodDogMjZweDtcbiAgei1pbmRleDogMTU7XG59XG5cbi5yZXNpemUtY29udGFpbmVyLnRvcC1sZWZ0IHtcbiAgdG9wOiAtNXB4O1xuICBsZWZ0OiAtNXB4O1xuICBjdXJzb3I6IG53c2UtcmVzaXplO1xufVxuLnJlc2l6ZS1jb250YWluZXIudG9wLXJpZ2h0IHtcbiAgdG9wOiAtNXB4O1xuICByaWdodDogLTVweDtcbiAgY3Vyc29yOiBuZXN3LXJlc2l6ZTtcbn1cbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1sZWZ0IHtcbiAgYm90dG9tOiAtNXB4O1xuICBsZWZ0OiAtNXB4O1xuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xufVxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tLXJpZ2h0IHtcbiAgYm90dG9tOiAtNXB4O1xuICByaWdodDogLTVweDtcbiAgY3Vyc29yOiBud3NlLXJlc2l6ZTtcbn1cblxuLnJlc2l6ZS1saW5lLnRvcCxcbi5yZXNpemUtbGluZS5ib3R0b20ge1xuICBoZWlnaHQ6IDE4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XG59XG5cbi5yZXNpemUtbGluZS5sZWZ0LFxuLnJlc2l6ZS1saW5lLnJpZ2h0IHtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xufVxuXG4ucmVzaXplLWxpbmUudG9wIHtcbiAgdG9wOiAtN3B4O1xuICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLWxlZnQsIDJweCkpO1xuICB3aWR0aDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLWhvcml6b250YWwsIDRweCkpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKSB2YXIoLS1yb3VuZGVkLWxnKSAwIDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxOHB4KTtcbn1cblxuLnJlc2l6ZS1saW5lLmJvdHRvbSB7XG4gIGJvdHRvbTogLTdweDtcbiAgbGVmdDogY2FsYygtMSAqIHZhcigtLWJvcmRlci1sZWZ0LCAycHgpKTtcbiAgd2lkdGg6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci1ob3Jpem9udGFsLCA0cHgpKTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIHZhcigtLXJvdW5kZWQtbGcpIHZhcigtLXJvdW5kZWQtbGcpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE4cHgpO1xufVxuXG4ucmVzaXplLWxpbmUubGVmdCB7XG4gIHRvcDogY2FsYygtMSAqIHZhcigtLWJvcmRlci10b3AsIDJweCkpO1xuICBsZWZ0OiAtN3B4O1xuICBoZWlnaHQ6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci12ZXJ0aWNhbCwgNHB4KSk7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpIDAgMCB2YXIoLS1yb3VuZGVkLWxnKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDE4cHgpO1xufVxuXG4ucmVzaXplLWxpbmUucmlnaHQge1xuICB0b3A6IGNhbGMoLTEgKiB2YXIoLS1ib3JkZXItdG9wLCAycHgpKTtcbiAgcmlnaHQ6IC03cHg7XG4gIGhlaWdodDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLXZlcnRpY2FsLCA0cHgpKTtcbiAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1yb3VuZGVkLWxnKSB2YXIoLS1yb3VuZGVkLWxnKSAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE4cHgpO1xufVxuXG4ucmVzaXplLWNvbnRhaW5lci5yaWdodDpob3ZlciB+IC5yZXNpemUtbGluZS5yaWdodCxcbi5yZXNpemUtY29udGFpbmVyLmxlZnQ6aG92ZXIgfiAucmVzaXplLWxpbmUubGVmdCxcbi5yZXNpemUtbGluZS5yaWdodC5kcmFnZ2luZyxcbi5yZXNpemUtbGluZS5sZWZ0LmRyYWdnaW5nIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xufVxuXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b206aG92ZXIgfiAucmVzaXplLWxpbmUuYm90dG9tLFxuLnJlc2l6ZS1jb250YWluZXIudG9wOmhvdmVyIH4gLnJlc2l6ZS1saW5lLnRvcCxcbi5yZXNpemUtbGluZS5ib3R0b20uZHJhZ2dpbmcsXG4ucmVzaXplLWxpbmUudG9wLmRyYWdnaW5nIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4vKiBtYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBzaG93IG11bHRpcGxlIGhhbmRsZXMgYXQgb25jZVxuICogd2Ugc2hvdWxkIG9ubHkgZXZlciBzaG93IHRoZSBjdXJyZW50bHkgcmVzaXppbmcgaGFuZGxlXG4gKiByZWdhcmRsZXNzIG9mIGhvdmVyIHN0YXRlIFxuICovXG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci5yaWdodDpob3ZlciB+IC5yZXNpemUtbGluZS5yaWdodCB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMjBweCk7XG59XG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci5sZWZ0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLmxlZnQge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7XG59XG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci5ib3R0b206aG92ZXIgfiAucmVzaXplLWxpbmUuYm90dG9tIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcbn1cbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLnRvcDpob3ZlciB+IC5yZXNpemUtbGluZS50b3Age1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvZGV2dG9vbHMtcGFuZWwvcmVzaXplL3Jlc2l6ZS1oYW5kbGUuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLGtCQUFrQjtFQUNsQix5QkFBeUI7RUFDekIsV0FBVztFQUNYLHlCQUF5QjtFQUN6Qix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIseUJBQXlCO0VBQ3pCLFdBQVc7RUFDWCxvQkFBb0I7RUFDcEIsdUVBQXVFO0VBQ3ZFLDREQUE0RDtFQUM1RCx1REFBdUQ7RUFDdkQsc0JBQXNCO0VBQ3RCLHVDQUF1QztBQUN6Qzs7QUFFQSxtSUFBbUk7QUFDbkk7RUFDRSw0REFBNEQ7QUFDOUQ7O0FBRUE7O0VBRUUsTUFBTTtFQUNOLFlBQVk7RUFDWixXQUFXO0VBQ1gsaUJBQWlCO0FBQ25COztBQUVBLG9EQUFvRDs7QUFFcEQ7O0VBRUUsT0FBTztFQUNQLFdBQVc7RUFDWCxZQUFZO0VBQ1osaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsU0FBUztBQUNYO0FBQ0E7RUFDRSxZQUFZO0FBQ2Q7QUFDQTtFQUNFLFVBQVU7QUFDWjtBQUNBO0VBQ0UsV0FBVztBQUNiOztBQUVBOzs7O0VBSUUsV0FBVztFQUNYLFlBQVk7RUFDWixXQUFXO0FBQ2I7O0FBRUE7RUFDRSxTQUFTO0VBQ1QsVUFBVTtFQUNWLG1CQUFtQjtBQUNyQjtBQUNBO0VBQ0UsU0FBUztFQUNULFdBQVc7RUFDWCxtQkFBbUI7QUFDckI7QUFDQTtFQUNFLFlBQVk7RUFDWixVQUFVO0VBQ1YsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxZQUFZO0VBQ1osV0FBVztFQUNYLG1CQUFtQjtBQUNyQjs7QUFFQTs7RUFFRSxZQUFZO0VBQ1osV0FBVztFQUNYLDZDQUE2QztBQUMvQzs7QUFFQTs7RUFFRSxXQUFXO0VBQ1gsWUFBWTtFQUNaLDZDQUE2QztBQUMvQzs7QUFFQTtFQUNFLFNBQVM7RUFDVCx3Q0FBd0M7RUFDeEMsaURBQWlEO0VBQ2pELHNEQUFzRDtFQUN0RCwyQkFBMkI7QUFDN0I7O0FBRUE7RUFDRSxZQUFZO0VBQ1osd0NBQXdDO0VBQ3hDLGlEQUFpRDtFQUNqRCxzREFBc0Q7RUFDdEQsNEJBQTRCO0FBQzlCOztBQUVBO0VBQ0Usc0NBQXNDO0VBQ3RDLFVBQVU7RUFDVixnREFBZ0Q7RUFDaEQsc0RBQXNEO0VBQ3RELDJCQUEyQjtBQUM3Qjs7QUFFQTtFQUNFLHNDQUFzQztFQUN0QyxXQUFXO0VBQ1gsZ0RBQWdEO0VBQ2hELHNEQUFzRDtFQUN0RCw0QkFBNEI7QUFDOUI7O0FBRUE7Ozs7RUFJRSx3QkFBd0I7QUFDMUI7O0FBRUE7Ozs7RUFJRSx3QkFBd0I7QUFDMUI7O0FBRUE7OztFQUdFO0FBQ0Y7RUFDRSw0QkFBNEI7QUFDOUI7QUFDQTtFQUNFLDJCQUEyQjtBQUM3QjtBQUNBO0VBQ0UsNEJBQTRCO0FBQzlCO0FBQ0E7RUFDRSwyQkFBMkI7QUFDN0JcIixzb3VyY2VzQ29udGVudDpbXCIucmVzaXplLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAvKiB0b2RvOiBiZXR0ZXIgeiBpbmRleCAqL1xcbiAgei1pbmRleDogMTA7XFxuICAvKiB0b2RvOiBpcyB0aGlzIG5lZWRlZCAqL1xcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XFxufVxcblxcbi5yZXNpemUtbGluZSB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAvKiB0b2RvIHNtYXJ0ZXIgeiBpbmRleCAqL1xcbiAgei1pbmRleDogLTE7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIC8qIGEgbm9ybWFsIGV4aXQgYW5pbWF0aW9uIGN1cnZlLSBhdCB0aGlzIHBvaW50IHRoZSBleGl0IGFuaW1hdGlvbiBpcyAqL1xcbiAgLyogaW1tZWRpYXRlbHkgcmVzcG9uc2l2ZSBzbyB3ZSBkb24ndCBuZWVkIGEgYmVzcG9rZSBjdXJ2ZSAqL1xcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNHMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKTtcXG4gIC8qIHRvZG86IGJldHRlciB2YXI/ICovXFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxufVxcblxcbi8qIHN0YXJ0IHJlYWxseSBmYXN0IGJlY2F1c2Ugd2Ugc3RhcnQgc3VwZXIgaGlkZGVuIGluaXRpYWxseSBiZWhpbmQgdGhlIHBhbmVsLCBvdGhlcndpc2UgZmVlbHMgbGlrZSBhbiB1bmludGVuZGVkIGFuaW1hdGlvbiBkZWxheSAqL1xcbi5yZXNpemUtY29udGFpbmVyOmhvdmVyIH4gLnJlc2l6ZS1saW5lIHtcXG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjI1cyBjdWJpYy1iZXppZXIoMC4yMywgMSwgMC4zMiwgMC45KTtcXG59XFxuXFxuLnJlc2l6ZS1jb250YWluZXIucmlnaHQsXFxuLnJlc2l6ZS1jb250YWluZXIubGVmdCB7XFxuICB0b3A6IDA7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICB3aWR0aDogMjJweDtcXG4gIGN1cnNvcjogZXctcmVzaXplO1xcbn1cXG5cXG4vKiB0b2RvOiBkb24ndCBoYXJkIGNvZGUgYWxsIHRoZXNlIHZhbHVlcy91c2UgdmFycyAqL1xcblxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbSxcXG4ucmVzaXplLWNvbnRhaW5lci50b3Age1xcbiAgbGVmdDogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgaGVpZ2h0OiAyMnB4O1xcbiAgY3Vyc29yOiBucy1yZXNpemU7XFxufVxcblxcbi5yZXNpemUtY29udGFpbmVyLnRvcCB7XFxuICB0b3A6IC03cHg7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbSB7XFxuICBib3R0b206IC03cHg7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLmxlZnQge1xcbiAgbGVmdDogLTdweDtcXG59XFxuLnJlc2l6ZS1jb250YWluZXIucmlnaHQge1xcbiAgcmlnaHQ6IC03cHg7XFxufVxcblxcbi5yZXNpemUtY29udGFpbmVyLnRvcC1sZWZ0LFxcbi5yZXNpemUtY29udGFpbmVyLnRvcC1yaWdodCxcXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tbGVmdCxcXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tcmlnaHQge1xcbiAgd2lkdGg6IDI2cHg7XFxuICBoZWlnaHQ6IDI2cHg7XFxuICB6LWluZGV4OiAxNTtcXG59XFxuXFxuLnJlc2l6ZS1jb250YWluZXIudG9wLWxlZnQge1xcbiAgdG9wOiAtNXB4O1xcbiAgbGVmdDogLTVweDtcXG4gIGN1cnNvcjogbndzZS1yZXNpemU7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLnRvcC1yaWdodCB7XFxuICB0b3A6IC01cHg7XFxuICByaWdodDogLTVweDtcXG4gIGN1cnNvcjogbmVzdy1yZXNpemU7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLmJvdHRvbS1sZWZ0IHtcXG4gIGJvdHRvbTogLTVweDtcXG4gIGxlZnQ6IC01cHg7XFxuICBjdXJzb3I6IG5lc3ctcmVzaXplO1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5ib3R0b20tcmlnaHQge1xcbiAgYm90dG9tOiAtNXB4O1xcbiAgcmlnaHQ6IC01cHg7XFxuICBjdXJzb3I6IG53c2UtcmVzaXplO1xcbn1cXG5cXG4ucmVzaXplLWxpbmUudG9wLFxcbi5yZXNpemUtbGluZS5ib3R0b20ge1xcbiAgaGVpZ2h0OiAxOHB4O1xcbiAgd2lkdGg6IDEwMCU7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxufVxcblxcbi5yZXNpemUtbGluZS5sZWZ0LFxcbi5yZXNpemUtbGluZS5yaWdodCB7XFxuICB3aWR0aDogMThweDtcXG4gIGhlaWdodDogMTAwJTtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG59XFxuXFxuLnJlc2l6ZS1saW5lLnRvcCB7XFxuICB0b3A6IC03cHg7XFxuICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLWxlZnQsIDJweCkpO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci1ob3Jpem9udGFsLCA0cHgpKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpIHZhcigtLXJvdW5kZWQtbGcpIDAgMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxOHB4KTtcXG59XFxuXFxuLnJlc2l6ZS1saW5lLmJvdHRvbSB7XFxuICBib3R0b206IC03cHg7XFxuICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tYm9yZGVyLWxlZnQsIDJweCkpO1xcbiAgd2lkdGg6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci1ob3Jpem9udGFsLCA0cHgpKTtcXG4gIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1yb3VuZGVkLWxnKSB2YXIoLS1yb3VuZGVkLWxnKTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMThweCk7XFxufVxcblxcbi5yZXNpemUtbGluZS5sZWZ0IHtcXG4gIHRvcDogY2FsYygtMSAqIHZhcigtLWJvcmRlci10b3AsIDJweCkpO1xcbiAgbGVmdDogLTdweDtcXG4gIGhlaWdodDogY2FsYygxMDAlICsgdmFyKC0tYm9yZGVyLXZlcnRpY2FsLCA0cHgpKTtcXG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpIDAgMCB2YXIoLS1yb3VuZGVkLWxnKTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxOHB4KTtcXG59XFxuXFxuLnJlc2l6ZS1saW5lLnJpZ2h0IHtcXG4gIHRvcDogY2FsYygtMSAqIHZhcigtLWJvcmRlci10b3AsIDJweCkpO1xcbiAgcmlnaHQ6IC03cHg7XFxuICBoZWlnaHQ6IGNhbGMoMTAwJSArIHZhcigtLWJvcmRlci12ZXJ0aWNhbCwgNHB4KSk7XFxuICBib3JkZXItcmFkaXVzOiAwIHZhcigtLXJvdW5kZWQtbGcpIHZhcigtLXJvdW5kZWQtbGcpIDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTE4cHgpO1xcbn1cXG5cXG4ucmVzaXplLWNvbnRhaW5lci5yaWdodDpob3ZlciB+IC5yZXNpemUtbGluZS5yaWdodCxcXG4ucmVzaXplLWNvbnRhaW5lci5sZWZ0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLmxlZnQsXFxuLnJlc2l6ZS1saW5lLnJpZ2h0LmRyYWdnaW5nLFxcbi5yZXNpemUtbGluZS5sZWZ0LmRyYWdnaW5nIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcXG59XFxuXFxuLnJlc2l6ZS1jb250YWluZXIuYm90dG9tOmhvdmVyIH4gLnJlc2l6ZS1saW5lLmJvdHRvbSxcXG4ucmVzaXplLWNvbnRhaW5lci50b3A6aG92ZXIgfiAucmVzaXplLWxpbmUudG9wLFxcbi5yZXNpemUtbGluZS5ib3R0b20uZHJhZ2dpbmcsXFxuLnJlc2l6ZS1saW5lLnRvcC5kcmFnZ2luZyB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxufVxcblxcbi8qIG1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IHNob3cgbXVsdGlwbGUgaGFuZGxlcyBhdCBvbmNlXFxuICogd2Ugc2hvdWxkIG9ubHkgZXZlciBzaG93IHRoZSBjdXJyZW50bHkgcmVzaXppbmcgaGFuZGxlXFxuICogcmVnYXJkbGVzcyBvZiBob3ZlciBzdGF0ZSBcXG4gKi9cXG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci5yaWdodDpob3ZlciB+IC5yZXNpemUtbGluZS5yaWdodCB7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTIwcHgpO1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci5sZWZ0OmhvdmVyIH4gLnJlc2l6ZS1saW5lLmxlZnQge1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpO1xcbn1cXG4ucmVzaXplLWNvbnRhaW5lci5uby1ob3Zlci5ib3R0b206aG92ZXIgfiAucmVzaXplLWxpbmUuYm90dG9tIHtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMjBweCk7XFxufVxcbi5yZXNpemUtY29udGFpbmVyLm5vLWhvdmVyLnRvcDpob3ZlciB+IC5yZXNpemUtbGluZS50b3Age1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpO1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBsPWl9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvb3ZlcnZpZXcvc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAuc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA0cHg7XG4gIHBhZGRpbmc6IDRweCA2cHg7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dCAucGx1cy1pY29uIHtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMjVzIGVhc2U7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItdGV4dDpob3ZlciAucGx1cy1pY29uIHtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlciBzdmcge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBmbGV4LXNocmluazogMDtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlcjpob3ZlciBzdmcge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS03MDApO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyW2Rpc2FibGVkXSBzdmcsXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyW2Rpc2FibGVkXTpob3ZlciBzdmcge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93biB7XG4gIHBhZGRpbmc6IDhweDtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gIG1pbi13aWR0aDogMTIwcHg7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGJveC1zaGFkb3c6IDBweCA0cHggOHB4IC00cHggY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWNvbG9yLWdyYXktOTAwKSA0JSwgdHJhbnNwYXJlbnQpO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1wb3NpdGlvbmVyIHtcbiAgei1pbmRleDogdmFyKC0tdG9wLXotaW5kZXgpO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogOHB4O1xuICBsaW5lLWhlaWdodDogMjBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG1pbi13aWR0aDogMjIwcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW1bZGF0YS1kaXNhYmxlZF0ge1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtIHN2ZyB7XG4gIG1hcmdpbi1yaWdodDogMTJweDtcbiAgY29sb3I6IGN1cnJlbnRDb2xvcjtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbTpob3ZlciB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbTpmaXJzdC1jaGlsZCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcbn1cblxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbTpsYXN0LWNoaWxkIHtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4O1xufVxuXG4uc2VnbWVudC1ib3VuZGFyeS1ncm91cC1sYWJlbCB7XG4gIHBhZGRpbmc6IDhweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBsaW5lLWhlaWdodDogMTZweDtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9vdmVydmlldy9zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXIuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsUUFBUTtFQUNSLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsZ0JBQWdCO0VBQ2hCLDZCQUE2QjtFQUM3QixvQkFBb0I7RUFDcEIsWUFBWTtFQUNaLHlCQUF5QjtFQUN6QixlQUFlO0VBQ2YsdUNBQXVDO0FBQ3pDOztBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQixpQkFBaUI7RUFDakIsb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxnQ0FBZ0M7QUFDbEM7O0FBRUE7RUFDRSw0QkFBNEI7QUFDOUI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsWUFBWTtFQUNaLGNBQWM7RUFDZCxzQkFBc0I7QUFDeEI7O0FBRUE7RUFDRSw0QkFBNEI7QUFDOUI7O0FBRUE7O0VBRUUsNEJBQTRCO0VBQzVCLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFLFlBQVk7RUFDWix1Q0FBdUM7RUFDdkMsdUNBQXVDO0VBQ3ZDLG1CQUFtQjtFQUNuQixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZixzRkFBc0Y7QUFDeEY7O0FBRUE7RUFDRSwyQkFBMkI7QUFDN0I7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLFlBQVk7RUFDWixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQiw2QkFBNkI7RUFDN0IsZUFBZTtFQUNmLGdCQUFnQjtFQUNoQixZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFdBQVc7QUFDYjs7QUFFQTtFQUNFLDRCQUE0QjtFQUM1QixtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0UsaUNBQWlDO0FBQ25DOztBQUVBO0VBQ0UsMkJBQTJCO0VBQzNCLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLDhCQUE4QjtFQUM5QiwrQkFBK0I7QUFDakM7O0FBRUE7RUFDRSxZQUFZO0VBQ1osZUFBZTtFQUNmLGlCQUFpQjtFQUNqQixnQkFBZ0I7RUFDaEIsNEJBQTRCO0FBQzlCXCIsc291cmNlc0NvbnRlbnQ6W1wiLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlciB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGdhcDogNHB4O1xcbiAgcGFkZGluZzogNHB4IDZweDtcXG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XFxuICBib3JkZXI6IG5vbmU7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHQge1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG5cXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHQgLnBsdXMtaWNvbiB7XFxuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgZWFzZTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlci10ZXh0OmhvdmVyIC5wbHVzLWljb24ge1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktODAwKTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlciBzdmcge1xcbiAgd2lkdGg6IDE0cHg7XFxuICBoZWlnaHQ6IDE0cHg7XFxuICBmbGV4LXNocmluazogMDtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXI6aG92ZXIgc3ZnIHtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTcwMCk7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXJbZGlzYWJsZWRdIHN2ZyxcXG4uc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyW2Rpc2FibGVkXTpob3ZlciBzdmcge1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duIHtcXG4gIHBhZGRpbmc6IDhweDtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIGJvcmRlci1yYWRpdXM6IDE2cHg7XFxuICBtaW4td2lkdGg6IDEyMHB4O1xcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XFxuICBjdXJzb3I6IGRlZmF1bHQ7XFxuICBib3gtc2hhZG93OiAwcHggNHB4IDhweCAtNHB4IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1jb2xvci1ncmF5LTkwMCkgNCUsIHRyYW5zcGFyZW50KTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24tcG9zaXRpb25lciB7XFxuICB6LWluZGV4OiB2YXIoLS10b3Atei1pbmRleCk7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW0ge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwYWRkaW5nOiA4cHg7XFxuICBsaW5lLWhlaWdodDogMjBweDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgbWluLXdpZHRoOiAyMjBweDtcXG4gIGJvcmRlcjogbm9uZTtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICB3aWR0aDogMTAwJTtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbVtkYXRhLWRpc2FibGVkXSB7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbSBzdmcge1xcbiAgbWFyZ2luLXJpZ2h0OiAxMnB4O1xcbiAgY29sb3I6IGN1cnJlbnRDb2xvcjtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbTpob3ZlciB7XFxuICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duLWl0ZW06Zmlyc3QtY2hpbGQge1xcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4O1xcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDtcXG59XFxuXFxuLnNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbTpsYXN0LWNoaWxkIHtcXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDtcXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7XFxufVxcblxcbi5zZWdtZW50LWJvdW5kYXJ5LWdyb3VwLWxhYmVsIHtcXG4gIHBhZGRpbmc6IDhweDtcXG4gIGZvbnQtc2l6ZTogMTNweDtcXG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xcbiAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9vdmVydmlldy9zZWdtZW50LWV4cGxvcmVyLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAuc2VnbWVudC1leHBsb3Jlci1jb250ZW50IHtcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcbiAgcGFkZGluZzogMCA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLXBhZ2Utcm91dGUtYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTRweCAxNnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XG4gIGdhcDogMTJweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItcGFnZS1yb3V0ZS1iYXItcGF0aCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1tb25vKTtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW0ge1xuICBtYXJnaW46IDRweCAwO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW06bnRoLWNoaWxkKGV2ZW4pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xufVxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbS1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBwYWRkaW5nLXRvcDogMTBweDtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDRweDtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW0tcm93LW1haW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB3aGl0ZS1zcGFjZTogcHJlO1xuICBjdXJzb3I6IGRlZmF1bHQ7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1jaGlsZHJlbi0taW50ZW5kZWQge1xuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZSBzZWxlY3Qge1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVuYW1lLS1wYXRoIHtcbiAgbWFyZ2luLXJpZ2h0OiA4cHg7XG59XG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tcGF0aCBzbWFsbCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDA7XG4gIG9wYWNpdHk6IDA7XG59XG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tbmFtZSB7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTgwMCk7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVzIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGdhcDogOHB4O1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZXMgKyAuc2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyIHtcbiAgbWFyZ2luLWxlZnQ6IDhweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbCB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMCA2cHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIHVzZXItc2VsZWN0OiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMzAwKTtcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG59XG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLXRleHQge1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tb3ZlcnJpZGRlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTMwMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsIC5jb2RlLWljb24ge1xuICBvcGFjaXR5OiAwO1xuICBtYXJnaW4tbGVmdDogMDtcbiAgd2lkdGg6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjE1cyBlYXNlLWluLW91dDtcbn1cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWw6aG92ZXIgLmNvZGUtaWNvbiB7XG4gIG9wYWNpdHk6IDE7XG4gIHdpZHRoOiAxMnB4O1xuICBtYXJnaW4tbGVmdDogNHB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsOmhvdmVyIHtcbiAgZmlsdGVyOiBicmlnaHRuZXNzKDAuOTUpO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1idWlsdGluIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XG4gIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XG4gIGhlaWdodDogMjRweDtcbiAgY3Vyc29yOiBkZWZhdWx0O1xufVxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tYnVpbHRpbiBzdmcge1xuICBtYXJnaW4tbGVmdDogNHB4O1xuICBtYXJnaW4tcmlnaHQ6IC00cHg7XG59XG5cbi8qIEZvb3RlciBzdHlsZXMgKi9cbi5zZWdtZW50LWV4cGxvcmVyLWZvb3RlciB7XG4gIHBhZGRpbmc6IDhweDtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b24ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiA2cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMjAwKTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbi0tZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItdGV4dCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJhZGdlIHtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtaW4td2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgcGFkZGluZzogMCA2cHg7XG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWFtYmVyLTMwMCk7XG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xuICBmb250LXdlaWdodDogNjAwO1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10b29sdGlwLS1zbSB7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdG9vbHRpcC0tbGcge1xuICBtaW4td2lkdGg6IDIwMHB4O1xufVxuXG4uc2VnbWVudC1leHBsb3Jlci1zdWdnZXN0aW9ucyB7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBnYXA6IDhweDtcbn1cblxuLnNlZ21lbnQtZXhwbG9yZXItc3VnZ2VzdGlvbnMtdG9vbHRpcCB7XG4gIHdpZHRoOiAyMDBweDtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9vdmVydmlldy9zZWdtZW50LWV4cGxvcmVyLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSx5QkFBeUI7RUFDekIsY0FBYztFQUNkLFdBQVc7RUFDWCxZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGtCQUFrQjtFQUNsQiw2Q0FBNkM7RUFDN0MsU0FBUztBQUNYOztBQUVBO0VBQ0UseUJBQXlCO0VBQ3pCLGdCQUFnQjtFQUNoQiw2QkFBNkI7RUFDN0IsNkJBQTZCO0VBQzdCLG1CQUFtQjtFQUNuQixpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxhQUFhO0VBQ2Isa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0UsNkNBQTZDO0FBQy9DO0FBQ0E7RUFDRSxhQUFhO0VBQ2Isc0JBQXNCO0VBQ3RCLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixlQUFlO0VBQ2YsNkJBQTZCO0FBQy9COztBQUVBO0VBQ0Usa0JBQWtCO0FBQ3BCOztBQUVBO0VBQ0Usb0JBQW9CO0VBQ3BCLFdBQVc7RUFDWCxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UscUJBQXFCO0VBQ3JCLFFBQVE7RUFDUixVQUFVO0FBQ1o7QUFDQTtFQUNFLDRCQUE0QjtBQUM5Qjs7QUFFQTtFQUNFLG9CQUFvQjtFQUNwQixRQUFRO0VBQ1IsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0Usb0JBQW9CO0VBQ3BCLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsY0FBYztFQUNkLFlBQVk7RUFDWixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLHlCQUF5QjtFQUN6QixnQkFBZ0I7RUFDaEIsaUJBQWlCO0VBQ2pCLGVBQWU7RUFDZix1Q0FBdUM7RUFDdkMsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSxvQkFBb0I7RUFDcEIsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0Usd0NBQXdDO0VBQ3hDLDZCQUE2QjtBQUMvQjs7QUFFQTtFQUNFLFVBQVU7RUFDVixjQUFjO0VBQ2QsUUFBUTtFQUNSLGlDQUFpQztBQUNuQztBQUNBO0VBQ0UsVUFBVTtFQUNWLFdBQVc7RUFDWCxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSx3QkFBd0I7QUFDMUI7O0FBRUE7RUFDRSw2QkFBNkI7RUFDN0IsNEJBQTRCO0VBQzVCLHdDQUF3QztFQUN4QyxZQUFZO0VBQ1osZUFBZTtBQUNqQjtBQUNBO0VBQ0UsZ0JBQWdCO0VBQ2hCLGtCQUFrQjtBQUNwQjs7QUFFQSxrQkFBa0I7QUFDbEI7RUFDRSxZQUFZO0VBQ1osMkNBQTJDO0VBQzNDLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsdUJBQXVCO0VBQ3ZCLFFBQVE7RUFDUixXQUFXO0VBQ1gsWUFBWTtFQUNaLHVDQUF1QztFQUN2Qyx1Q0FBdUM7RUFDdkMsa0JBQWtCO0VBQ2xCLDZCQUE2QjtFQUM3Qix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGVBQWU7RUFDZix1Q0FBdUM7QUFDekM7O0FBRUE7RUFDRSxpQ0FBaUM7QUFDbkM7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxvQkFBb0I7RUFDcEIsbUJBQW1CO0VBQ25CLHVCQUF1QjtFQUN2QixlQUFlO0VBQ2YsWUFBWTtFQUNaLGNBQWM7RUFDZCxrQ0FBa0M7RUFDbEMsNkJBQTZCO0VBQzdCLG1CQUFtQjtFQUNuQix5QkFBeUI7RUFDekIsZ0JBQWdCO0VBQ2hCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxvQkFBb0I7RUFDcEIsUUFBUTtBQUNWOztBQUVBO0VBQ0UsWUFBWTtBQUNkXCIsc291cmNlc0NvbnRlbnQ6W1wiLnNlZ21lbnQtZXhwbG9yZXItY29udGVudCB7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgcGFkZGluZzogMCA4cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItcGFnZS1yb3V0ZS1iYXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBwYWRkaW5nOiAxNHB4IDE2cHg7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICBnYXA6IDEycHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLXBhZ2Utcm91dGUtYmFyLXBhdGgge1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LW1vbm8pO1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1pdGVtIHtcXG4gIG1hcmdpbjogNHB4IDA7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWl0ZW06bnRoLWNoaWxkKGV2ZW4pIHtcXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItaXRlbS1yb3cge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICBwYWRkaW5nLXRvcDogMTBweDtcXG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xcbiAgcGFkZGluZy1yaWdodDogNHB4O1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1pdGVtLXJvdy1tYWluIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgd2hpdGUtc3BhY2U6IHByZTtcXG4gIGN1cnNvcjogZGVmYXVsdDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1jaGlsZHJlbi0taW50ZW5kZWQge1xcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUgc2VsZWN0IHtcXG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tcGF0aCB7XFxuICBtYXJnaW4tcmlnaHQ6IDhweDtcXG59XFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWUtLXBhdGggc21hbGwge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgd2lkdGg6IDA7XFxuICBvcGFjaXR5OiAwO1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tbmFtZSB7XFxuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS04MDApO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlcyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGdhcDogOHB4O1xcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGVzICsgLnNlZ21lbnQtYm91bmRhcnktdHJpZ2dlciB7XFxuICBtYXJnaW4tbGVmdDogOHB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsIHtcXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgcGFkZGluZzogMCA2cHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxuICBib3JkZXItcmFkaXVzOiAxNnB4O1xcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XFxuICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIHVzZXItc2VsZWN0OiBub25lO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0zMDApO1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdGV4dCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLW92ZXJyaWRkZW4ge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYW1iZXItMzAwKTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsIC5jb2RlLWljb24ge1xcbiAgb3BhY2l0eTogMDtcXG4gIG1hcmdpbi1sZWZ0OiAwO1xcbiAgd2lkdGg6IDA7XFxuICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMgZWFzZS1pbi1vdXQ7XFxufVxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWw6aG92ZXIgLmNvZGUtaWNvbiB7XFxuICBvcGFjaXR5OiAxO1xcbiAgd2lkdGg6IDEycHg7XFxuICBtYXJnaW4tbGVmdDogNHB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsOmhvdmVyIHtcXG4gIGZpbHRlcjogYnJpZ2h0bmVzcygwLjk1KTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tYnVpbHRpbiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tY29sb3ItZ3JheS01MDApO1xcbiAgaGVpZ2h0OiAyNHB4O1xcbiAgY3Vyc29yOiBkZWZhdWx0O1xcbn1cXG4uc2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1idWlsdGluIHN2ZyB7XFxuICBtYXJnaW4tbGVmdDogNHB4O1xcbiAgbWFyZ2luLXJpZ2h0OiAtNHB4O1xcbn1cXG5cXG4vKiBGb290ZXIgc3R5bGVzICovXFxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyIHtcXG4gIHBhZGRpbmc6IDhweDtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICB1c2VyLXNlbGVjdDogbm9uZTtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZm9vdGVyLWJ1dHRvbiB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZ2FwOiA4cHg7XFxuICB3aWR0aDogMTAwJTtcXG4gIHBhZGRpbmc6IDZweDtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2U7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uLS1kaXNhYmxlZCB7XFxuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1mb290ZXItdGV4dCB7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1iYWRnZSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIG1pbi13aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIHBhZGRpbmc6IDAgNnB4O1xcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYW1iZXItMzAwKTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcXG4gIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMik7XFxuICBmb250LXdlaWdodDogNjAwO1xcbiAgbGluZS1oZWlnaHQ6IDE7XFxufVxcblxcbi5zZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdG9vbHRpcC0tc20ge1xcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG59XFxuXFxuLnNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC10b29sdGlwLS1sZyB7XFxuICBtaW4td2lkdGg6IDIwMHB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1zdWdnZXN0aW9ucyB7XFxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcXG4gIGdhcDogOHB4O1xcbn1cXG5cXG4uc2VnbWVudC1leHBsb3Jlci1zdWdnZXN0aW9ucy10b29sdGlwIHtcXG4gIHdpZHRoOiAyMDBweDtcXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL3RvYXN0L3N0eWxlLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAubmV4dGpzLXRvYXN0IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiB2YXIoLS10b3Atei1pbmRleCk7XG4gIG1heC13aWR0aDogNDIwcHg7XG4gIGJveC1zaGFkb3c6IDBweCAxNnB4IDMycHggcmdiYSgwLCAwLCAwLCAwLjI1KTtcbn1cblxuLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50IHtcbiAgcGFkZGluZzogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC00eGwpO1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1icmlnaHQtd2hpdGUpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvdG9hc3Qvc3R5bGUuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLGVBQWU7RUFDZiwyQkFBMkI7RUFDM0IsZ0JBQWdCO0VBQ2hCLDZDQUE2QztBQUMvQzs7QUFFQTtFQUNFLGFBQWE7RUFDYixpQ0FBaUM7RUFDakMsZ0JBQWdCO0VBQ2hCLHFDQUFxQztFQUNyQyx1Q0FBdUM7QUFDekNcIixzb3VyY2VzQ29udGVudDpbXCIubmV4dGpzLXRvYXN0IHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIHotaW5kZXg6IHZhcigtLXRvcC16LWluZGV4KTtcXG4gIG1heC13aWR0aDogNDIwcHg7XFxuICBib3gtc2hhZG93OiAwcHggMTZweCAzMnB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XFxufVxcblxcbi5uZXh0anMtdG9hc3QtZXJyb3JzLXBhcmVudCB7XFxuICBwYWRkaW5nOiAxNnB4O1xcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC00eGwpO1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZSk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXJlZCk7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy90b29sdGlwL3Rvb2x0aXAuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYC50b29sdGlwLXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbGluZS1oZWlnaHQ6IDE7XG59XG5cbi50b29sdGlwIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA2cHggMTJweDtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xufVxuXG4udG9vbHRpcC1hcnJvdyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4udG9vbHRpcC1hcnJvdy0tdG9wIHtcbiAgYm9yZGVyLXdpZHRoOiB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIHZhcigtLWFycm93LXNpemUsIDZweCkgMFxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCk7XG4gIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGJvdHRvbTogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xufVxuXG4udG9vbHRpcC1hcnJvdy0tYm90dG9tIHtcbiAgYm9yZGVyLXdpZHRoOiAwIHZhcigtLWFycm93LXNpemUsIDZweCkgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KVxuICAgIHZhcigtLWFycm93LXNpemUsIDZweCk7XG4gIGJvcmRlci1ib3R0b20tY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIHRvcDogMDtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTtcbn1cblxuLnRvb2x0aXAtYXJyb3ctLWxlZnQge1xuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCkgMCB2YXIoLS1hcnJvdy1zaXplLCA2cHgpXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcbiAgYm9yZGVyLWxlZnQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIHJpZ2h0OiAwO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XG59XG5cbi50b29sdGlwLWFycm93LS1yaWdodCB7XG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSB2YXIoLS1hcnJvdy1zaXplLCA2cHgpXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSAwO1xuICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG4gIGxlZnQ6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG59XG5cbi50b29sdGlwLXBvc2l0aW9uZXIge1xuICB6LWluZGV4OiB2YXIoLS10b3Atei1pbmRleCk7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBQUE7RUFDRSxrQkFBa0I7RUFDbEIscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLG9CQUFvQjtFQUNwQiw0QkFBNEI7RUFDNUIsd0NBQXdDO0FBQzFDOztBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFFBQVE7RUFDUixTQUFTO0VBQ1QsbUJBQW1CO0VBQ25CLG9DQUFvQztFQUNwQyx5QkFBeUI7QUFDM0I7O0FBRUE7RUFDRTswQkFDd0I7RUFDeEIsd0NBQXdDO0VBQ3hDLFNBQVM7RUFDVCwyQkFBMkI7QUFDN0I7O0FBRUE7RUFDRTswQkFDd0I7RUFDeEIsMkNBQTJDO0VBQzNDLE1BQU07RUFDTiw0QkFBNEI7QUFDOUI7O0FBRUE7RUFDRTswQkFDd0I7RUFDeEIseUNBQXlDO0VBQ3pDLFFBQVE7RUFDUiwyQkFBMkI7QUFDN0I7O0FBRUE7RUFDRTs0QkFDMEI7RUFDMUIsMENBQTBDO0VBQzFDLE9BQU87RUFDUCw0QkFBNEI7QUFDOUI7O0FBRUE7RUFDRSwyQkFBMkI7QUFDN0JcIixzb3VyY2VzQ29udGVudDpbXCIudG9vbHRpcC13cmFwcGVyIHtcXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIGxpbmUtaGVpZ2h0OiAxO1xcbn1cXG5cXG4udG9vbHRpcCB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBwYWRkaW5nOiA2cHggMTJweDtcXG4gIGJvcmRlci1yYWRpdXM6IDhweDtcXG4gIGZvbnQtc2l6ZTogMTRweDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XFxuICBwb2ludGVyLWV2ZW50czogbm9uZTtcXG4gIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbn1cXG5cXG4udG9vbHRpcC1hcnJvdyB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMDtcXG4gIGhlaWdodDogMDtcXG4gIGJvcmRlci1zdHlsZTogc29saWQ7XFxuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCk7XFxuICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xcbn1cXG5cXG4udG9vbHRpcC1hcnJvdy0tdG9wIHtcXG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIDBcXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcXG4gIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBib3R0b206IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxufVxcblxcbi50b29sdGlwLWFycm93LS1ib3R0b20ge1xcbiAgYm9yZGVyLXdpZHRoOiAwIHZhcigtLWFycm93LXNpemUsIDZweCkgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KVxcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpO1xcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gIHRvcDogMDtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7XFxufVxcblxcbi50b29sdGlwLWFycm93LS1sZWZ0IHtcXG4gIGJvcmRlci13aWR0aDogdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KSAwIHZhcigtLWFycm93LXNpemUsIDZweClcXG4gICAgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KTtcXG4gIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgcmlnaHQ6IDA7XFxuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7XFxufVxcblxcbi50b29sdGlwLWFycm93LS1yaWdodCB7XFxuICBib3JkZXItd2lkdGg6IHZhcigtLWFycm93LXNpemUsIDZweCkgdmFyKC0tYXJyb3ctc2l6ZSwgNnB4KVxcbiAgICB2YXIoLS1hcnJvdy1zaXplLCA2cHgpIDA7XFxuICBib3JkZXItcmlnaHQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICBsZWZ0OiAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcXG59XFxuXFxuLnRvb2x0aXAtcG9zaXRpb25lciB7XFxuICB6LWluZGV4OiB2YXIoLS10b3Atei1pbmRleCk7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvZ2xvYmFsLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+Zn0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSxsPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvbm9ybWFsaXplLmNzc1wiKSxzPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2RlZmF1bHQtdGhlbWUuY3NzXCIpLGM9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvZGFyay10aGVtZS5jc3NcIiksdT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9jb2xvcnMuY3NzXCIpLGQ9aSgpKG8oKSk7ZC5pKGwuWiksZC5pKHMuWiksZC5pKGMuWiksZC5pKHUuWiksZC5wdXNoKFtlLmlkLGAvKiBkZXZ0b29sIGdsb2JhbCBjc3MgdmFyaWFibGVzICovXG46aG9zdCB7XG4gIC8qIHZhcmlhYmxlcyAqL1xuICAtLXRvcC16LWluZGV4OiAyMTQ3NDgzNjQ3O1xufVxuXG4vKiBnbG9iYWwgc3R5bGVzICovXG4qIHtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG59XG5cbi8qIGdsb2JhbCByZXNldCBmb3IgZHJhZ2dhYmxlIGNvbnRlbnQgc2Nyb2xsYmFyIHN0eWxlcyAqL1xuW2RhdGEtbmV4dGpzLXNjcm9sbGFibGUtY29udGVudF0sXG5bZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XSAqIHtcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG4gICAgaGVpZ2h0OiA2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIDFyZW0gMXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxcmVtIDFyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICB9XG5cbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS01MDApO1xuICB9XG59XG5cbi8qIFBsYWNlIG92ZXJmbG93OiBoaWRkZW4gb24gdGhpcyBzbyB3ZSBjYW4gYnJlYWsgb3V0IGZyb20gW2RhdGEtbmV4dGpzLWRpYWxvZ10gKi9cbltkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRdIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDtcbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvZ2xvYmFsLmNzc1wiXSxuYW1lczpbXSxtYXBwaW5nczpcIkFBS0EsaUNBQWlDO0FBQ2pDO0VBQ0UsY0FBYztFQUNkLHlCQUF5QjtBQUMzQjs7QUFFQSxrQkFBa0I7QUFDbEI7RUFDRSxtQ0FBbUM7QUFDckM7O0FBRUEsd0RBQXdEO0FBQ3hEOztFQUVFO0lBQ0UsVUFBVTtJQUNWLFdBQVc7SUFDWCw0QkFBNEI7SUFDNUIsbUJBQW1CO0VBQ3JCOztFQUVBO0lBQ0UsYUFBYTtFQUNmOztFQUVBO0lBQ0UsNEJBQTRCO0lBQzVCLDZDQUE2QztFQUMvQzs7RUFFQTtJQUNFLG1CQUFtQjtJQUNuQix1Q0FBdUM7RUFDekM7QUFDRjs7QUFFQSxpRkFBaUY7QUFDakY7RUFDRSxnQkFBZ0I7RUFDaEIsc0JBQXNCO0FBQ3hCXCIsc291cmNlc0NvbnRlbnQ6W1wiQGltcG9ydCAnLi9ub3JtYWxpemUuY3NzJztcXG5AaW1wb3J0ICcuL3N0eWxlcy9kZWZhdWx0LXRoZW1lLmNzcyc7XFxuQGltcG9ydCAnLi9zdHlsZXMvZGFyay10aGVtZS5jc3MnO1xcbkBpbXBvcnQgJy4vc3R5bGVzL2NvbG9ycy5jc3MnO1xcblxcbi8qIGRldnRvb2wgZ2xvYmFsIGNzcyB2YXJpYWJsZXMgKi9cXG46aG9zdCB7XFxuICAvKiB2YXJpYWJsZXMgKi9cXG4gIC0tdG9wLXotaW5kZXg6IDIxNDc0ODM2NDc7XFxufVxcblxcbi8qIGdsb2JhbCBzdHlsZXMgKi9cXG4qIHtcXG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xcbn1cXG5cXG4vKiBnbG9iYWwgcmVzZXQgZm9yIGRyYWdnYWJsZSBjb250ZW50IHNjcm9sbGJhciBzdHlsZXMgKi9cXG5bZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XSxcXG5bZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XSAqIHtcXG4gICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcXG4gICAgd2lkdGg6IDZweDtcXG4gICAgaGVpZ2h0OiA2cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCAxcmVtIDFyZW07XFxuICAgIG1hcmdpbi1ib3R0b206IDFyZW07XFxuICB9XFxuXFxuICAmOjotd2Via2l0LXNjcm9sbGJhci1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcblxcbiAgJjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xcbiAgICBib3JkZXItcmFkaXVzOiAwIDAgMXJlbSAxcmVtO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICB9XFxuXFxuICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XFxuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNTAwKTtcXG4gIH1cXG59XFxuXFxuLyogUGxhY2Ugb3ZlcmZsb3c6IGhpZGRlbiBvbiB0aGlzIHNvIHdlIGNhbiBicmVhayBvdXQgZnJvbSBbZGF0YS1uZXh0anMtZGlhbG9nXSAqL1xcbltkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRdIHtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xcbn1cXG5cIl0sc291cmNlUm9vdDpcIlwifV0pO2xldCBmPWR9LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L21lbnUvcGFuZWwtcm91dGVyLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGAvKiBQYW5lbCBjb250ZW50IHBhZGRpbmcgc3R5bGVzICovXG4ucGFuZWwtY29udGVudCB7XG4gIHBhZGRpbmc6IDE2cHg7XG4gIHBhZGRpbmctdG9wOiA4cHg7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi8qIFVzZXIgcHJlZmVyZW5jZXMgd3JhcHBlciBzdHlsZXMgKi9cbi51c2VyLXByZWZlcmVuY2VzLXdyYXBwZXIge1xuICBwYWRkaW5nOiAyMHB4O1xuICBwYWRkaW5nLXRvcDogOHB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4vKiBQYW5lbCByb3V0ZSBiYXNlIHN0eWxlcyAqL1xuLnBhbmVsLXJvdXRlIHtcbiAgb3BhY2l0eTogdmFyKC0tcGFuZWwtb3BhY2l0eSk7XG4gIHRyYW5zaXRpb246IHZhcigtLXBhbmVsLXRyYW5zaXRpb24pO1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9tZW51L3BhbmVsLXJvdXRlci5jc3NcIl0sbmFtZXM6W10sbWFwcGluZ3M6XCJBQUFBLGlDQUFpQztBQUNqQztFQUNFLGFBQWE7RUFDYixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0FBQ2xCOztBQUVBLG9DQUFvQztBQUNwQztFQUNFLGFBQWE7RUFDYixnQkFBZ0I7RUFDaEIsZ0JBQWdCO0FBQ2xCOztBQUVBLDRCQUE0QjtBQUM1QjtFQUNFLDZCQUE2QjtFQUM3QixtQ0FBbUM7QUFDckNcIixzb3VyY2VzQ29udGVudDpbXCIvKiBQYW5lbCBjb250ZW50IHBhZGRpbmcgc3R5bGVzICovXFxuLnBhbmVsLWNvbnRlbnQge1xcbiAgcGFkZGluZzogMTZweDtcXG4gIHBhZGRpbmctdG9wOiA4cHg7XFxuICBvdmVyZmxvdzogaGlkZGVuO1xcbn1cXG5cXG4vKiBVc2VyIHByZWZlcmVuY2VzIHdyYXBwZXIgc3R5bGVzICovXFxuLnVzZXItcHJlZmVyZW5jZXMtd3JhcHBlciB7XFxuICBwYWRkaW5nOiAyMHB4O1xcbiAgcGFkZGluZy10b3A6IDhweDtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxufVxcblxcbi8qIFBhbmVsIHJvdXRlIGJhc2Ugc3R5bGVzICovXFxuLnBhbmVsLXJvdXRlIHtcXG4gIG9wYWNpdHk6IHZhcigtLXBhbmVsLW9wYWNpdHkpO1xcbiAgdHJhbnNpdGlvbjogdmFyKC0tcGFuZWwtdHJhbnNpdGlvbik7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvbm9ybWFsaXplLmNzc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtuLmQodCx7WjooKT0+bH0pO3ZhciByPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCIpLG89bi5uKHIpLGE9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiKSxpPW4ubihhKSgpKG8oKSk7aS5wdXNoKFtlLmlkLGA6aG9zdCB7XG4gIGFsbDogaW5pdGlhbDtcblxuICAvKiB0aGUgZGlyZWN0aW9uIHByb3BlcnR5IGlzIG5vdCByZXNldCBieSAnYWxsJyAqL1xuICBkaXJlY3Rpb246IGx0cjtcbn1cblxuLyohXG4gKiBCb290c3RyYXAgUmVib290IHY0LjQuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVGhlIEJvb3RzdHJhcCBBdXRob3JzXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFR3aXR0ZXIsIEluYy5cbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXG4gKiBGb3JrZWQgZnJvbSBOb3JtYWxpemUuY3NzLCBsaWNlbnNlZCBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZClcbiAqL1xuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbn1cblxuOmhvc3Qge1xuICBmb250LWZhbWlseTogc2Fucy1zZXJpZjtcbiAgbGluZS1oZWlnaHQ6IDEuMTU7XG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApO1xufVxuXG5hcnRpY2xlLFxuYXNpZGUsXG5maWdjYXB0aW9uLFxuZmlndXJlLFxuZm9vdGVyLFxuaGVhZGVyLFxuaGdyb3VwLFxubWFpbixcbm5hdixcbnNlY3Rpb24ge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuOmhvc3Qge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsICdTZWdvZSBVSScsIFJvYm90byxcbiAgICAnSGVsdmV0aWNhIE5ldWUnLCBBcmlhbCwgJ05vdG8gU2FucycsIHNhbnMtc2VyaWYsICdBcHBsZSBDb2xvciBFbW9qaScsXG4gICAgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsICdOb3RvIENvbG9yIEVtb2ppJztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogdmFyKC0tY29sb3ItZm9udCk7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbjpob3N0Om5vdChidXR0b24pIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbn1cblxuW3RhYmluZGV4PSctMSddOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG59XG5cbmhyIHtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG4gIGhlaWdodDogMDtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbmgxLFxuaDIsXG5oMyxcbmg0LFxuaDUsXG5oNiB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxucCB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG59XG5cbmFiYnJbdGl0bGVdLFxuYWJicltkYXRhLW9yaWdpbmFsLXRpdGxlXSB7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICBjdXJzb3I6IGhlbHA7XG4gIGJvcmRlci1ib3R0b206IDA7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXAtaW5rOiBub25lO1xuICB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XG59XG5cbmFkZHJlc3Mge1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5vbCxcbnVsLFxuZGwge1xuICBtYXJnaW4tdG9wOiAwO1xuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xufVxuXG5vbCBvbCxcbnVsIHVsLFxub2wgdWwsXG51bCBvbCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbmR0IHtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cblxuZGQge1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIG1hcmdpbi1sZWZ0OiAwO1xufVxuXG5ibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwIDAgMTZweDtcbn1cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbmEge1xuICBjb2xvcjogIzAwN2JmZjtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuYTpob3ZlciB7XG4gIGNvbG9yOiAjMDA1NmIzO1xuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbn1cblxuYTpub3QoW2hyZWZdKSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbmE6bm90KFtocmVmXSk6aG92ZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5wcmUsXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBTRk1vbm8tUmVndWxhciwgTWVubG8sIE1vbmFjbywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLFxuICAgICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxZW07XG59XG5cbnByZSB7XG4gIG1hcmdpbi10b3A6IDA7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG5maWd1cmUge1xuICBtYXJnaW46IDAgMCAxNnB4O1xufVxuXG5pbWcge1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbnN2ZyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxuY2FwdGlvbiB7XG4gIHBhZGRpbmctdG9wOiAxMnB4O1xuICBwYWRkaW5nLWJvdHRvbTogMTJweDtcbiAgY29sb3I6ICM2Yzc1N2Q7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGNhcHRpb24tc2lkZTogYm90dG9tO1xufVxuXG50aCB7XG4gIHRleHQtYWxpZ246IGluaGVyaXQ7XG59XG5cbmxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbmJ1dHRvbiB7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gIGJvcmRlcjogMDtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xuICBiYWNrZ3JvdW5kOiBub25lO1xuICBhcHBlYXJhbmNlOiBub25lO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbmJ1dHRvbjpmb2N1cyB7XG4gIG91dGxpbmU6IDFweCBkb3R0ZWQ7XG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcbn1cblxuYnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xuICBvdXRsaW5lOiBub25lO1xufVxuXG5pbnB1dCxcbmJ1dHRvbixcbnNlbGVjdCxcbm9wdGdyb3VwLFxudGV4dGFyZWEge1xuICBtYXJnaW46IDA7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICBmb250LXNpemU6IGluaGVyaXQ7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG5idXR0b24sXG5pbnB1dCB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xufVxuXG5idXR0b24sXG5zZWxlY3Qge1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuc2VsZWN0IHtcbiAgd29yZC13cmFwOiBub3JtYWw7XG59XG5cbmJ1dHRvbixcblt0eXBlPSdidXR0b24nXSxcblt0eXBlPSdyZXNldCddLFxuW3R5cGU9J3N1Ym1pdCddIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbmJ1dHRvbjpub3QoOmRpc2FibGVkKSxcblt0eXBlPSdidXR0b24nXTpub3QoOmRpc2FibGVkKSxcblt0eXBlPSdyZXNldCddOm5vdCg6ZGlzYWJsZWQpLFxuW3R5cGU9J3N1Ym1pdCddOm5vdCg6ZGlzYWJsZWQpIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0nYnV0dG9uJ106Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPSdzdWJtaXQnXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuaW5wdXRbdHlwZT0ncmFkaW8nXSxcbmlucHV0W3R5cGU9J2NoZWNrYm94J10ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwYWRkaW5nOiAwO1xufVxuXG5pbnB1dFt0eXBlPSdkYXRlJ10sXG5pbnB1dFt0eXBlPSd0aW1lJ10sXG5pbnB1dFt0eXBlPSdkYXRldGltZS1sb2NhbCddLFxuaW5wdXRbdHlwZT0nbW9udGgnXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbGlzdGJveDtcbn1cblxudGV4dGFyZWEge1xuICBvdmVyZmxvdzogYXV0bztcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbn1cblxuZmllbGRzZXQge1xuICBtaW4td2lkdGg6IDA7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyOiAwO1xufVxuXG5sZWdlbmQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICBmb250LXNpemU6IDI0cHg7XG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICBjb2xvcjogaW5oZXJpdDtcbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbn1cblxucHJvZ3Jlc3Mge1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbixcblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuW3R5cGU9J3NlYXJjaCddIHtcbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuW3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xufVxuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgZm9udDogaW5oZXJpdDtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbm91dHB1dCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuc3VtbWFyeSB7XG4gIGRpc3BsYXk6IGxpc3QtaXRlbTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG50ZW1wbGF0ZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbltoaWRkZW5dIHtcbiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xufVxuYCxcIlwiLHt2ZXJzaW9uOjMsc291cmNlczpbXCJ3ZWJwYWNrOi8vLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9ub3JtYWxpemUuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLFlBQVk7O0VBRVosaURBQWlEO0VBQ2pELGNBQWM7QUFDaEI7O0FBRUE7Ozs7OztFQU1FO0FBQ0Y7OztFQUdFLHNCQUFzQjtBQUN4Qjs7QUFFQTtFQUNFLHVCQUF1QjtFQUN2QixpQkFBaUI7RUFDakIsOEJBQThCO0VBQzlCLDZDQUE2QztBQUMvQzs7QUFFQTs7Ozs7Ozs7OztFQVVFLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxTQUFTO0VBQ1Q7OzJEQUV5RDtFQUN6RCxlQUFlO0VBQ2YsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtFQUNoQix3QkFBd0I7RUFDeEIsZ0JBQWdCO0FBQ2xCOztBQUVBO0VBQ0Usc0JBQXNC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OztBQUVBO0VBQ0Usd0JBQXdCO0FBQzFCOztBQUVBO0VBQ0UsYUFBYTtFQUNiLDBCQUEwQjtBQUM1Qjs7QUFFQTtFQUNFLHFCQUFxQjtBQUN2Qjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixlQUFlO0FBQ2pCOztBQUVBO0VBQ0UsYUFBYTtBQUNmOztBQUVBO0VBQ0Usd0JBQXdCO0FBQzFCXCIsc291cmNlc0NvbnRlbnQ6W1wiOmhvc3Qge1xcbiAgYWxsOiBpbml0aWFsO1xcblxcbiAgLyogdGhlIGRpcmVjdGlvbiBwcm9wZXJ0eSBpcyBub3QgcmVzZXQgYnkgJ2FsbCcgKi9cXG4gIGRpcmVjdGlvbjogbHRyO1xcbn1cXG5cXG4vKiFcXG4gKiBCb290c3RyYXAgUmVib290IHY0LjQuMSAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcXG4gKiBDb3B5cmlnaHQgMjAxMS0yMDE5IFRoZSBCb290c3RyYXAgQXV0aG9yc1xcbiAqIENvcHlyaWdodCAyMDExLTIwMTkgVHdpdHRlciwgSW5jLlxcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFzdGVyL0xJQ0VOU0UpXFxuICogRm9ya2VkIGZyb20gTm9ybWFsaXplLmNzcywgbGljZW5zZWQgTUlUIChodHRwczovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzL2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQpXFxuICovXFxuKixcXG4qOjpiZWZvcmUsXFxuKjo6YWZ0ZXIge1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG59XFxuXFxuOmhvc3Qge1xcbiAgZm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7XFxuICBsaW5lLWhlaWdodDogMS4xNTtcXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTtcXG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTtcXG59XFxuXFxuYXJ0aWNsZSxcXG5hc2lkZSxcXG5maWdjYXB0aW9uLFxcbmZpZ3VyZSxcXG5mb290ZXIsXFxuaGVhZGVyLFxcbmhncm91cCxcXG5tYWluLFxcbm5hdixcXG5zZWN0aW9uIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbn1cXG5cXG46aG9zdCB7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sXFxuICAgICdIZWx2ZXRpY2EgTmV1ZScsIEFyaWFsLCAnTm90byBTYW5zJywgc2Fucy1zZXJpZiwgJ0FwcGxlIENvbG9yIEVtb2ppJyxcXG4gICAgJ1NlZ29lIFVJIEVtb2ppJywgJ1NlZ29lIFVJIFN5bWJvbCcsICdOb3RvIENvbG9yIEVtb2ppJztcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWZvbnQpO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG59XFxuXFxuOmhvc3Q6bm90KGJ1dHRvbikge1xcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG59XFxuXFxuW3RhYmluZGV4PSctMSddOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xcbiAgb3V0bGluZTogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG5ociB7XFxuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcXG4gIGhlaWdodDogMDtcXG4gIG92ZXJmbG93OiB2aXNpYmxlO1xcbn1cXG5cXG5oMSxcXG5oMixcXG5oMyxcXG5oNCxcXG5oNSxcXG5oNiB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbn1cXG5cXG5wIHtcXG4gIG1hcmdpbi10b3A6IDA7XFxuICBtYXJnaW4tYm90dG9tOiAxNnB4O1xcbn1cXG5cXG5hYmJyW3RpdGxlXSxcXG5hYmJyW2RhdGEtb3JpZ2luYWwtdGl0bGVdIHtcXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xcbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XFxuICBjdXJzb3I6IGhlbHA7XFxuICBib3JkZXItYm90dG9tOiAwO1xcbiAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XFxuICB0ZXh0LWRlY29yYXRpb24tc2tpcC1pbms6IG5vbmU7XFxufVxcblxcbmFkZHJlc3Mge1xcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcXG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG5vbCxcXG51bCxcXG5kbCB7XFxuICBtYXJnaW4tdG9wOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogMTZweDtcXG59XFxuXFxub2wgb2wsXFxudWwgdWwsXFxub2wgdWwsXFxudWwgb2wge1xcbiAgbWFyZ2luLWJvdHRvbTogMDtcXG59XFxuXFxuZHQge1xcbiAgZm9udC13ZWlnaHQ6IDcwMDtcXG59XFxuXFxuZGQge1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgbWFyZ2luLWxlZnQ6IDA7XFxufVxcblxcbmJsb2NrcXVvdGUge1xcbiAgbWFyZ2luOiAwIDAgMTZweDtcXG59XFxuXFxuYixcXG5zdHJvbmcge1xcbiAgZm9udC13ZWlnaHQ6IGJvbGRlcjtcXG59XFxuXFxuc21hbGwge1xcbiAgZm9udC1zaXplOiA4MCU7XFxufVxcblxcbnN1YixcXG5zdXAge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgZm9udC1zaXplOiA3NSU7XFxuICBsaW5lLWhlaWdodDogMDtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG59XFxuXFxuc3ViIHtcXG4gIGJvdHRvbTogLTAuMjVlbTtcXG59XFxuXFxuc3VwIHtcXG4gIHRvcDogLTAuNWVtO1xcbn1cXG5cXG5hIHtcXG4gIGNvbG9yOiAjMDA3YmZmO1xcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxufVxcblxcbmE6aG92ZXIge1xcbiAgY29sb3I6ICMwMDU2YjM7XFxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcXG59XFxuXFxuYTpub3QoW2hyZWZdKSB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG59XFxuXFxuYTpub3QoW2hyZWZdKTpob3ZlciB7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcXG59XFxuXFxucHJlLFxcbmNvZGUsXFxua2JkLFxcbnNhbXAge1xcbiAgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsXFxuICAgICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcXG4gIGZvbnQtc2l6ZTogMWVtO1xcbn1cXG5cXG5wcmUge1xcbiAgbWFyZ2luLXRvcDogMDtcXG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XFxuICBvdmVyZmxvdzogYXV0bztcXG59XFxuXFxuZmlndXJlIHtcXG4gIG1hcmdpbjogMCAwIDE2cHg7XFxufVxcblxcbmltZyB7XFxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xcbn1cXG5cXG5zdmcge1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxufVxcblxcbnRhYmxlIHtcXG4gIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XFxufVxcblxcbmNhcHRpb24ge1xcbiAgcGFkZGluZy10b3A6IDEycHg7XFxuICBwYWRkaW5nLWJvdHRvbTogMTJweDtcXG4gIGNvbG9yOiAjNmM3NTdkO1xcbiAgdGV4dC1hbGlnbjogbGVmdDtcXG4gIGNhcHRpb24tc2lkZTogYm90dG9tO1xcbn1cXG5cXG50aCB7XFxuICB0ZXh0LWFsaWduOiBpbmhlcml0O1xcbn1cXG5cXG5sYWJlbCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBtYXJnaW4tYm90dG9tOiA4cHg7XFxufVxcblxcbmJ1dHRvbiB7XFxuICBib3JkZXItcmFkaXVzOiAwO1xcbiAgYm9yZGVyOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGJhY2tncm91bmQ6IG5vbmU7XFxuICBhcHBlYXJhbmNlOiBub25lO1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xcbn1cXG5cXG5idXR0b246Zm9jdXMge1xcbiAgb3V0bGluZTogMXB4IGRvdHRlZDtcXG4gIG91dGxpbmU6IDVweCBhdXRvIC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcjtcXG59XFxuXFxuYnV0dG9uOmZvY3VzOm5vdCg6Zm9jdXMtdmlzaWJsZSkge1xcbiAgb3V0bGluZTogbm9uZTtcXG59XFxuXFxuaW5wdXQsXFxuYnV0dG9uLFxcbnNlbGVjdCxcXG5vcHRncm91cCxcXG50ZXh0YXJlYSB7XFxuICBtYXJnaW46IDA7XFxuICBmb250LWZhbWlseTogaW5oZXJpdDtcXG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcXG4gIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xcbn1cXG5cXG5idXR0b24sXFxuaW5wdXQge1xcbiAgb3ZlcmZsb3c6IHZpc2libGU7XFxufVxcblxcbmJ1dHRvbixcXG5zZWxlY3Qge1xcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XFxufVxcblxcbnNlbGVjdCB7XFxuICB3b3JkLXdyYXA6IG5vcm1hbDtcXG59XFxuXFxuYnV0dG9uLFxcblt0eXBlPSdidXR0b24nXSxcXG5bdHlwZT0ncmVzZXQnXSxcXG5bdHlwZT0nc3VibWl0J10ge1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XFxufVxcblxcbmJ1dHRvbjpub3QoOmRpc2FibGVkKSxcXG5bdHlwZT0nYnV0dG9uJ106bm90KDpkaXNhYmxlZCksXFxuW3R5cGU9J3Jlc2V0J106bm90KDpkaXNhYmxlZCksXFxuW3R5cGU9J3N1Ym1pdCddOm5vdCg6ZGlzYWJsZWQpIHtcXG4gIGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuYnV0dG9uOjotbW96LWZvY3VzLWlubmVyLFxcblt0eXBlPSdidXR0b24nXTo6LW1vei1mb2N1cy1pbm5lcixcXG5bdHlwZT0ncmVzZXQnXTo6LW1vei1mb2N1cy1pbm5lcixcXG5bdHlwZT0nc3VibWl0J106Oi1tb3otZm9jdXMtaW5uZXIge1xcbiAgcGFkZGluZzogMDtcXG4gIGJvcmRlci1zdHlsZTogbm9uZTtcXG59XFxuXFxuaW5wdXRbdHlwZT0ncmFkaW8nXSxcXG5pbnB1dFt0eXBlPSdjaGVja2JveCddIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBwYWRkaW5nOiAwO1xcbn1cXG5cXG5pbnB1dFt0eXBlPSdkYXRlJ10sXFxuaW5wdXRbdHlwZT0ndGltZSddLFxcbmlucHV0W3R5cGU9J2RhdGV0aW1lLWxvY2FsJ10sXFxuaW5wdXRbdHlwZT0nbW9udGgnXSB7XFxuICAtd2Via2l0LWFwcGVhcmFuY2U6IGxpc3Rib3g7XFxufVxcblxcbnRleHRhcmVhIHtcXG4gIG92ZXJmbG93OiBhdXRvO1xcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcXG59XFxuXFxuZmllbGRzZXQge1xcbiAgbWluLXdpZHRoOiAwO1xcbiAgcGFkZGluZzogMDtcXG4gIG1hcmdpbjogMDtcXG4gIGJvcmRlcjogMDtcXG59XFxuXFxubGVnZW5kIHtcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBtYXgtd2lkdGg6IDEwMCU7XFxuICBwYWRkaW5nOiAwO1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgZm9udC1zaXplOiAyNHB4O1xcbiAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XFxuICBjb2xvcjogaW5oZXJpdDtcXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XFxufVxcblxcbnByb2dyZXNzIHtcXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcXG59XFxuXFxuW3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxcblt0eXBlPSdudW1iZXInXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XFxuICBoZWlnaHQ6IGF1dG87XFxufVxcblxcblt0eXBlPSdzZWFyY2gnXSB7XFxuICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG59XFxuXFxuW3R5cGU9J3NlYXJjaCddOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHtcXG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcXG59XFxuXFxuOjotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbiB7XFxuICBmb250OiBpbmhlcml0O1xcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XFxufVxcblxcbm91dHB1dCB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxufVxcblxcbnN1bW1hcnkge1xcbiAgZGlzcGxheTogbGlzdC1pdGVtO1xcbiAgY3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG50ZW1wbGF0ZSB7XFxuICBkaXNwbGF5OiBub25lO1xcbn1cXG5cXG5baGlkZGVuXSB7XFxuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvcGFuZWwvZHluYW1pYy1wYW5lbC5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgLyogUGFuZWwgY29udGFpbmVyIGJhc2Ugc3R5bGVzIHdpdGggZHluYW1pYyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nICovXG4uZHluYW1pYy1wYW5lbC1jb250YWluZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHotaW5kZXg6IDIxNDc0ODM2NDY7XG4gIG91dGxpbmU6IG5vbmU7XG4gIHRvcDogdmFyKC0tcGFuZWwtdG9wLCBhdXRvKTtcbiAgYm90dG9tOiB2YXIoLS1wYW5lbC1ib3R0b20sIGF1dG8pO1xuICBsZWZ0OiB2YXIoLS1wYW5lbC1sZWZ0LCBhdXRvKTtcbiAgcmlnaHQ6IHZhcigtLXBhbmVsLXJpZ2h0LCBhdXRvKTtcbiAgd2lkdGg6IHZhcigtLXBhbmVsLXdpZHRoKTtcbiAgaGVpZ2h0OiB2YXIoLS1wYW5lbC1oZWlnaHQpO1xuICBtaW4td2lkdGg6IHZhcigtLXBhbmVsLW1pbi13aWR0aCk7XG4gIG1pbi1oZWlnaHQ6IHZhcigtLXBhbmVsLW1pbi1oZWlnaHQpO1xuICBtYXgtd2lkdGg6IHZhcigtLXBhbmVsLW1heC13aWR0aCk7XG4gIG1heC1oZWlnaHQ6IHZhcigtLXBhbmVsLW1heC1oZWlnaHQpO1xufVxuXG4vKiBQYW5lbCBjb250ZW50IGNvbnRhaW5lciBzdHlsZXMgKi9cbi5wYW5lbC1jb250ZW50LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4vKiBEcmFnZ2FibGUgY29udGVudCBhcmVhIHN0eWxlcyAqL1xuLmRyYWdnYWJsZS1jb250ZW50IHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3BhbmVsL2R5bmFtaWMtcGFuZWwuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQSxvRUFBb0U7QUFDcEU7RUFDRSxlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLGFBQWE7RUFDYiwyQkFBMkI7RUFDM0IsaUNBQWlDO0VBQ2pDLDZCQUE2QjtFQUM3QiwrQkFBK0I7RUFDL0IseUJBQXlCO0VBQ3pCLDJCQUEyQjtFQUMzQixpQ0FBaUM7RUFDakMsbUNBQW1DO0VBQ25DLGlDQUFpQztFQUNqQyxtQ0FBbUM7QUFDckM7O0FBRUEsbUNBQW1DO0FBQ25DO0VBQ0Usa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osNkNBQTZDO0VBQzdDLGdDQUFnQztFQUNoQyx1Q0FBdUM7RUFDdkMsYUFBYTtFQUNiLHNCQUFzQjtBQUN4Qjs7QUFFQSxrQ0FBa0M7QUFDbEM7RUFDRSxPQUFPO0VBQ1AsY0FBYztBQUNoQlwiLHNvdXJjZXNDb250ZW50OltcIi8qIFBhbmVsIGNvbnRhaW5lciBiYXNlIHN0eWxlcyB3aXRoIGR5bmFtaWMgcG9zaXRpb25pbmcgYW5kIHNpemluZyAqL1xcbi5keW5hbWljLXBhbmVsLWNvbnRhaW5lciB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICB6LWluZGV4OiAyMTQ3NDgzNjQ2O1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIHRvcDogdmFyKC0tcGFuZWwtdG9wLCBhdXRvKTtcXG4gIGJvdHRvbTogdmFyKC0tcGFuZWwtYm90dG9tLCBhdXRvKTtcXG4gIGxlZnQ6IHZhcigtLXBhbmVsLWxlZnQsIGF1dG8pO1xcbiAgcmlnaHQ6IHZhcigtLXBhbmVsLXJpZ2h0LCBhdXRvKTtcXG4gIHdpZHRoOiB2YXIoLS1wYW5lbC13aWR0aCk7XFxuICBoZWlnaHQ6IHZhcigtLXBhbmVsLWhlaWdodCk7XFxuICBtaW4td2lkdGg6IHZhcigtLXBhbmVsLW1pbi13aWR0aCk7XFxuICBtaW4taGVpZ2h0OiB2YXIoLS1wYW5lbC1taW4taGVpZ2h0KTtcXG4gIG1heC13aWR0aDogdmFyKC0tcGFuZWwtbWF4LXdpZHRoKTtcXG4gIG1heC1oZWlnaHQ6IHZhcigtLXBhbmVsLW1heC1oZWlnaHQpO1xcbn1cXG5cXG4vKiBQYW5lbCBjb250ZW50IGNvbnRhaW5lciBzdHlsZXMgKi9cXG4ucGFuZWwtY29udGVudC1jb250YWluZXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDEwMCU7XFxuICBoZWlnaHQ6IDEwMCU7XFxuICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcXG4gIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4vKiBEcmFnZ2FibGUgY29udGVudCBhcmVhIHN0eWxlcyAqL1xcbi5kcmFnZ2FibGUtY29udGVudCB7XFxuICBmbGV4OiAxO1xcbiAgb3ZlcmZsb3c6IGF1dG87XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2NvbG9ycy5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgOmhvc3Qge1xuICAvKiBcbiAgICogQ0FVVElPTjogVEhJUyBJUyBBIFdPUktBUk9VTkQhXG4gICAqIEZvciBub3csIHdlIHVzZSBAYmFiZWwvY29kZS1mcmFtZSB0byBwYXJzZSB0aGUgY29kZSBmcmFtZSB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IG9wdGlvbiB0byBjaGFuZ2UgdGhlIGNvbG9yLlxuICAgKiB4LXJlZjogaHR0cHM6Ly9naXRodWIuY29tL2JhYmVsL2JhYmVsL2Jsb2IvZWZhNTIzMjRmZjgzNWI3OTRjNDgwODBmMTQ4NzdiNmNhZjMyY2QxNS9wYWNrYWdlcy9iYWJlbC1jb2RlLWZyYW1lL3NyYy9kZWZzLnRzI0w0MC1MNTRcbiAgICogU28sIHdlIGRvIGEgd29ya2Fyb3VuZCBtYXBwaW5nIHRvIGNoYW5nZSB0aGUgY29sb3IgbWF0Y2hpbmcgdGhlIHRoZW1lLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaW4gQGJhYmVsL2NvZGUtZnJhbWUsIHRoZSBcImtleXdvcmRcIiBpcyBtYXBwZWQgdG8gQU5TSSBcImN5YW5cIi5cbiAgICogV2Ugd2FudCB0aGUgXCJrZXl3b3JkXCIgdG8gdXNlIHRoZSBcInN5bnRheC1rZXl3b3JkXCIgY29sb3IgaW4gdGhlIHRoZW1lLlxuICAgKiBTbywgd2UgbWFwIHRoZSBcImN5YW5cIiB0byB0aGUgXCJzeW50YXgta2V5d29yZFwiIGluIHRoZSB0aGVtZS5cbiAgICovXG4gIC8qIGN5YW46IGtleXdvcmQgKi9cbiAgLS1jb2xvci1hbnNpLWN5YW46IHZhcigtLWNvbG9yLXN5bnRheC1rZXl3b3JkKTtcbiAgLyogeWVsbG93OiBjYXBpdGFsaXplZCwganN4SWRlbnRpZmllciwgcHVuY3R1YXRpb24gKi9cbiAgLS1jb2xvci1hbnNpLXllbGxvdzogdmFyKC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uKTtcbiAgLyogbWFnZW50YTogbnVtYmVyLCByZWdleCAqL1xuICAtLWNvbG9yLWFuc2ktbWFnZW50YTogdmFyKC0tY29sb3Itc3ludGF4LWtleXdvcmQpO1xuICAvKiBncmVlbjogc3RyaW5nICovXG4gIC0tY29sb3ItYW5zaS1ncmVlbjogdmFyKC0tY29sb3Itc3ludGF4LXN0cmluZyk7XG4gIC8qIGdyYXkgKGJyaWdodCBibGFjayk6IGNvbW1lbnQsIGd1dHRlciAqL1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsYWNrOiB2YXIoLS1jb2xvci1zeW50YXgtY29tbWVudCk7XG5cbiAgLyogQW5zaSAtIFRlbXBvcmFyeSAqL1xuICAtLWNvbG9yLWFuc2ktc2VsZWN0aW9uOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTMwMCk7XG4gIC0tY29sb3ItYW5zaS1iZzogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xuICAtLWNvbG9yLWFuc2ktZmc6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XG5cbiAgLS1jb2xvci1hbnNpLXdoaXRlOiB2YXIoLS1jb2xvci1ncmF5LTcwMCk7XG4gIC0tY29sb3ItYW5zaS1ibGFjazogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xuICAtLWNvbG9yLWFuc2ktYmx1ZTogdmFyKC0tY29sb3ItYmx1ZS03MDApO1xuICAtLWNvbG9yLWFuc2ktcmVkOiB2YXIoLS1jb2xvci1yZWQtNzAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZTogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1ibHVlOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XG4gIC0tY29sb3ItYW5zaS1icmlnaHQtY3lhbjogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWdyZWVuOiB2YXIoLS1jb2xvci1ncmVlbi04MDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LW1hZ2VudGE6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1yZWQ6IHZhcigtLWNvbG9yLXJlZC04MDApO1xuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LXllbGxvdzogdmFyKC0tY29sb3ItYW1iZXItOTAwKTtcblxuICAvKiBCYWNrZ3JvdW5kIExpZ2h0ICovXG4gIC0tY29sb3ItYmFja2dyb3VuZC0xMDA6ICNmZmZmZmY7XG4gIC0tY29sb3ItYmFja2dyb3VuZC0yMDA6ICNmYWZhZmE7XG5cbiAgLyogU3ludGF4IExpZ2h0ICovXG4gIC0tY29sb3Itc3ludGF4LWNvbW1lbnQ6ICM1NDU0NTQ7XG4gIC0tY29sb3Itc3ludGF4LWNvbnN0YW50OiAjMTcxNzE3O1xuICAtLWNvbG9yLXN5bnRheC1mdW5jdGlvbjogIzAwNTRhZDtcbiAgLS1jb2xvci1zeW50YXgta2V5d29yZDogI2E1MTg1MDtcbiAgLS1jb2xvci1zeW50YXgtbGluazogIzA2NjA1NjtcbiAgLS1jb2xvci1zeW50YXgtcGFyYW1ldGVyOiAjOGYzZTAwO1xuICAtLWNvbG9yLXN5bnRheC1wdW5jdHVhdGlvbjogIzE3MTcxNztcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nOiAjMDM2MTU3O1xuICAtLWNvbG9yLXN5bnRheC1zdHJpbmctZXhwcmVzc2lvbjogIzA2NjA1NjtcblxuICAvKiBHcmF5IFNjYWxlIExpZ2h0ICovXG4gIC0tY29sb3ItZ3JheS0xMDA6ICNmMmYyZjI7XG4gIC0tY29sb3ItZ3JheS0yMDA6ICNlYmViZWI7XG4gIC0tY29sb3ItZ3JheS0zMDA6ICNlNmU2ZTY7XG4gIC0tY29sb3ItZ3JheS00MDA6ICNlYWVhZWE7XG4gIC0tY29sb3ItZ3JheS01MDA6ICNjOWM5Yzk7XG4gIC0tY29sb3ItZ3JheS02MDA6ICNhOGE4YTg7XG4gIC0tY29sb3ItZ3JheS03MDA6ICM4ZjhmOGY7XG4gIC0tY29sb3ItZ3JheS04MDA6ICM3ZDdkN2Q7XG4gIC0tY29sb3ItZ3JheS05MDA6ICM2NjY2NjY7XG4gIC0tY29sb3ItZ3JheS0xMDAwOiAjMTcxNzE3O1xuXG4gIC8qIEdyYXkgQWxwaGEgU2NhbGUgTGlnaHQgKi9cbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTIwMDogcmdiYSgwLCAwLCAwLCAwLjA4MSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS0zMDA6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTQwMDogcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTUwMDogcmdiYSgwLCAwLCAwLCAwLjIxKTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTYwMDogcmdiYSgwLCAwLCAwLCAwLjM0KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTcwMDogcmdiYSgwLCAwLCAwLCAwLjQ0KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTgwMDogcmdiYSgwLCAwLCAwLCAwLjUxKTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTkwMDogcmdiYSgwLCAwLCAwLCAwLjYwNSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDAwOiByZ2JhKDAsIDAsIDAsIDAuOTEpO1xuXG4gIC8qIEJsdWUgU2NhbGUgTGlnaHQgKi9cbiAgLS1jb2xvci1ibHVlLTEwMDogI2YwZjdmZjtcbiAgLS1jb2xvci1ibHVlLTIwMDogI2VkZjZmZjtcbiAgLS1jb2xvci1ibHVlLTMwMDogI2UxZjBmZjtcbiAgLS1jb2xvci1ibHVlLTQwMDogI2NkZTdmZjtcbiAgLS1jb2xvci1ibHVlLTUwMDogIzk5Y2VmZjtcbiAgLS1jb2xvci1ibHVlLTYwMDogIzUyYWVmZjtcbiAgLS1jb2xvci1ibHVlLTcwMDogIzAwNzBmMztcbiAgLS1jb2xvci1ibHVlLTgwMDogIzAwNjBkMTtcbiAgLS1jb2xvci1ibHVlLTkwMDogIzAwNjdkNjtcbiAgLS1jb2xvci1ibHVlLTEwMDA6ICMwMDI1YWQ7XG5cbiAgLyogUmVkIFNjYWxlIExpZ2h0ICovXG4gIC0tY29sb3ItcmVkLTEwMDogI2ZmZjBmMDtcbiAgLS1jb2xvci1yZWQtMjAwOiAjZmZlYmViO1xuICAtLWNvbG9yLXJlZC0zMDA6ICNmZmU1ZTU7XG4gIC0tY29sb3ItcmVkLTQwMDogI2ZkZDhkODtcbiAgLS1jb2xvci1yZWQtNTAwOiAjZjhiYWJhO1xuICAtLWNvbG9yLXJlZC02MDA6ICNmODcyNzQ7XG4gIC0tY29sb3ItcmVkLTcwMDogI2U1NDg0ZDtcbiAgLS1jb2xvci1yZWQtODAwOiAjZGEzMDM2O1xuICAtLWNvbG9yLXJlZC05MDA6ICNjYTJhMzA7XG4gIC0tY29sb3ItcmVkLTEwMDA6ICMzODEzMTY7XG5cbiAgLyogQW1iZXIgU2NhbGUgTGlnaHQgKi9cbiAgLS1jb2xvci1hbWJlci0xMDA6ICNmZmY2ZTU7XG4gIC0tY29sb3ItYW1iZXItMjAwOiAjZmZmNGQ1O1xuICAtLWNvbG9yLWFtYmVyLTMwMDogI2ZlZjBjZDtcbiAgLS1jb2xvci1hbWJlci00MDA6ICNmZmRkYmY7XG4gIC0tY29sb3ItYW1iZXItNTAwOiAjZmZjOTZiO1xuICAtLWNvbG9yLWFtYmVyLTYwMDogI2Y1YjA0NztcbiAgLS1jb2xvci1hbWJlci03MDA6ICNmZmIyMjQ7XG4gIC0tY29sb3ItYW1iZXItODAwOiAjZmY5OTBhO1xuICAtLWNvbG9yLWFtYmVyLTkwMDogI2EzNTIwMDtcbiAgLS1jb2xvci1hbWJlci0xMDAwOiAjNGUyMDA5O1xuXG4gIC8qIEdyZWVuIFNjYWxlIExpZ2h0ICovXG4gIC0tY29sb3ItZ3JlZW4tMTAwOiAjZWZmYmVmO1xuICAtLWNvbG9yLWdyZWVuLTIwMDogI2VhZmFlYTtcbiAgLS1jb2xvci1ncmVlbi0zMDA6ICNkY2Y2ZGM7XG4gIC0tY29sb3ItZ3JlZW4tNDAwOiAjYzhmMWM5O1xuICAtLWNvbG9yLWdyZWVuLTUwMDogIzk5ZTU5ZjtcbiAgLS1jb2xvci1ncmVlbi02MDA6ICM2Y2RhNzY7XG4gIC0tY29sb3ItZ3JlZW4tNzAwOiAjNDZhNzU4O1xuICAtLWNvbG9yLWdyZWVuLTgwMDogIzM4OGU0YTtcbiAgLS1jb2xvci1ncmVlbi05MDA6ICMyOTdjM2I7XG4gIC0tY29sb3ItZ3JlZW4tMTAwMDogIzE4MzExZTtcblxuICAvKiBUdXJib3BhY2sgTGlnaHQgLSBUZW1wb3JhcnkgKi9cbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1yZWQ6ICNmZjFlNTY7XG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZTogIzAwOTZmZjtcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLXJlZDogI2YwYWRiZTtcbiAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLWJsdWU6ICNhZGNjZWE7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtcmVkOiAjZmZmN2Y5O1xuICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLWJsdWU6ICNmNmZiZmY7XG59XG5gLFwiXCIse3ZlcnNpb246Myxzb3VyY2VzOltcIndlYnBhY2s6Ly8uL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L3N0eWxlcy9jb2xvcnMuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFOzs7Ozs7Ozs7SUFTRTtFQUNGLGtCQUFrQjtFQUNsQiw4Q0FBOEM7RUFDOUMsb0RBQW9EO0VBQ3BELGlEQUFpRDtFQUNqRCwyQkFBMkI7RUFDM0IsaURBQWlEO0VBQ2pELGtCQUFrQjtFQUNsQiw4Q0FBOEM7RUFDOUMseUNBQXlDO0VBQ3pDLHNEQUFzRDs7RUFFdEQscUJBQXFCO0VBQ3JCLG1EQUFtRDtFQUNuRCw0Q0FBNEM7RUFDNUMsdUNBQXVDOztFQUV2Qyx5Q0FBeUM7RUFDekMseUNBQXlDO0VBQ3pDLHdDQUF3QztFQUN4QyxzQ0FBc0M7RUFDdEMsaURBQWlEO0VBQ2pELCtDQUErQztFQUMvQywrQ0FBK0M7RUFDL0MsaURBQWlEO0VBQ2pELGtEQUFrRDtFQUNsRCw2Q0FBNkM7RUFDN0Msa0RBQWtEOztFQUVsRCxxQkFBcUI7RUFDckIsK0JBQStCO0VBQy9CLCtCQUErQjs7RUFFL0IsaUJBQWlCO0VBQ2pCLCtCQUErQjtFQUMvQixnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLCtCQUErQjtFQUMvQiw0QkFBNEI7RUFDNUIsaUNBQWlDO0VBQ2pDLG1DQUFtQztFQUNuQyw4QkFBOEI7RUFDOUIseUNBQXlDOztFQUV6QyxxQkFBcUI7RUFDckIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsMEJBQTBCOztFQUUxQiwyQkFBMkI7RUFDM0IsMkNBQTJDO0VBQzNDLDRDQUE0QztFQUM1QywwQ0FBMEM7RUFDMUMsMkNBQTJDO0VBQzNDLDJDQUEyQztFQUMzQywyQ0FBMkM7RUFDM0MsMkNBQTJDO0VBQzNDLDJDQUEyQztFQUMzQyw0Q0FBNEM7RUFDNUMsNENBQTRDOztFQUU1QyxxQkFBcUI7RUFDckIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIseUJBQXlCO0VBQ3pCLHlCQUF5QjtFQUN6Qix5QkFBeUI7RUFDekIsMEJBQTBCOztFQUUxQixvQkFBb0I7RUFDcEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIsd0JBQXdCO0VBQ3hCLHdCQUF3QjtFQUN4Qix3QkFBd0I7RUFDeEIseUJBQXlCOztFQUV6QixzQkFBc0I7RUFDdEIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMkJBQTJCOztFQUUzQixzQkFBc0I7RUFDdEIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCO0VBQzFCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMkJBQTJCOztFQUUzQixnQ0FBZ0M7RUFDaEMsbUNBQW1DO0VBQ25DLG9DQUFvQztFQUNwQyxxQ0FBcUM7RUFDckMsc0NBQXNDO0VBQ3RDLHlDQUF5QztFQUN6QywwQ0FBMEM7QUFDNUNcIixzb3VyY2VzQ29udGVudDpbJzpob3N0IHtcXG4gIC8qIFxcbiAgICogQ0FVVElPTjogVEhJUyBJUyBBIFdPUktBUk9VTkQhXFxuICAgKiBGb3Igbm93LCB3ZSB1c2UgQGJhYmVsL2NvZGUtZnJhbWUgdG8gcGFyc2UgdGhlIGNvZGUgZnJhbWUgd2hpY2ggZG9lcyBub3Qgc3VwcG9ydCBvcHRpb24gdG8gY2hhbmdlIHRoZSBjb2xvci5cXG4gICAqIHgtcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYmFiZWwvYmFiZWwvYmxvYi9lZmE1MjMyNGZmODM1Yjc5NGM0ODA4MGYxNDg3N2I2Y2FmMzJjZDE1L3BhY2thZ2VzL2JhYmVsLWNvZGUtZnJhbWUvc3JjL2RlZnMudHMjTDQwLUw1NFxcbiAgICogU28sIHdlIGRvIGEgd29ya2Fyb3VuZCBtYXBwaW5nIHRvIGNoYW5nZSB0aGUgY29sb3IgbWF0Y2hpbmcgdGhlIHRoZW1lLlxcbiAgICpcXG4gICAqIEZvciBleGFtcGxlLCBpbiBAYmFiZWwvY29kZS1mcmFtZSwgdGhlIFwia2V5d29yZFwiIGlzIG1hcHBlZCB0byBBTlNJIFwiY3lhblwiLlxcbiAgICogV2Ugd2FudCB0aGUgXCJrZXl3b3JkXCIgdG8gdXNlIHRoZSBcInN5bnRheC1rZXl3b3JkXCIgY29sb3IgaW4gdGhlIHRoZW1lLlxcbiAgICogU28sIHdlIG1hcCB0aGUgXCJjeWFuXCIgdG8gdGhlIFwic3ludGF4LWtleXdvcmRcIiBpbiB0aGUgdGhlbWUuXFxuICAgKi9cXG4gIC8qIGN5YW46IGtleXdvcmQgKi9cXG4gIC0tY29sb3ItYW5zaS1jeWFuOiB2YXIoLS1jb2xvci1zeW50YXgta2V5d29yZCk7XFxuICAvKiB5ZWxsb3c6IGNhcGl0YWxpemVkLCBqc3hJZGVudGlmaWVyLCBwdW5jdHVhdGlvbiAqL1xcbiAgLS1jb2xvci1hbnNpLXllbGxvdzogdmFyKC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uKTtcXG4gIC8qIG1hZ2VudGE6IG51bWJlciwgcmVnZXggKi9cXG4gIC0tY29sb3ItYW5zaS1tYWdlbnRhOiB2YXIoLS1jb2xvci1zeW50YXgta2V5d29yZCk7XFxuICAvKiBncmVlbjogc3RyaW5nICovXFxuICAtLWNvbG9yLWFuc2ktZ3JlZW46IHZhcigtLWNvbG9yLXN5bnRheC1zdHJpbmcpO1xcbiAgLyogZ3JheSAoYnJpZ2h0IGJsYWNrKTogY29tbWVudCwgZ3V0dGVyICovXFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWJsYWNrOiB2YXIoLS1jb2xvci1zeW50YXgtY29tbWVudCk7XFxuXFxuICAvKiBBbnNpIC0gVGVtcG9yYXJ5ICovXFxuICAtLWNvbG9yLWFuc2ktc2VsZWN0aW9uOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTMwMCk7XFxuICAtLWNvbG9yLWFuc2ktYmc6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gIC0tY29sb3ItYW5zaS1mZzogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG5cXG4gIC0tY29sb3ItYW5zaS13aGl0ZTogdmFyKC0tY29sb3ItZ3JheS03MDApO1xcbiAgLS1jb2xvci1hbnNpLWJsYWNrOiB2YXIoLS1jb2xvci1ncmF5LTIwMCk7XFxuICAtLWNvbG9yLWFuc2ktYmx1ZTogdmFyKC0tY29sb3ItYmx1ZS03MDApO1xcbiAgLS1jb2xvci1hbnNpLXJlZDogdmFyKC0tY29sb3ItcmVkLTcwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LXdoaXRlOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgLS1jb2xvci1hbnNpLWJyaWdodC1ibHVlOiB2YXIoLS1jb2xvci1ibHVlLTgwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LWN5YW46IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtZ3JlZW46IHZhcigtLWNvbG9yLWdyZWVuLTgwMCk7XFxuICAtLWNvbG9yLWFuc2ktYnJpZ2h0LW1hZ2VudGE6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQtcmVkOiB2YXIoLS1jb2xvci1yZWQtODAwKTtcXG4gIC0tY29sb3ItYW5zaS1icmlnaHQteWVsbG93OiB2YXIoLS1jb2xvci1hbWJlci05MDApO1xcblxcbiAgLyogQmFja2dyb3VuZCBMaWdodCAqL1xcbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTEwMDogI2ZmZmZmZjtcXG4gIC0tY29sb3ItYmFja2dyb3VuZC0yMDA6ICNmYWZhZmE7XFxuXFxuICAvKiBTeW50YXggTGlnaHQgKi9cXG4gIC0tY29sb3Itc3ludGF4LWNvbW1lbnQ6ICM1NDU0NTQ7XFxuICAtLWNvbG9yLXN5bnRheC1jb25zdGFudDogIzE3MTcxNztcXG4gIC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uOiAjMDA1NGFkO1xcbiAgLS1jb2xvci1zeW50YXgta2V5d29yZDogI2E1MTg1MDtcXG4gIC0tY29sb3Itc3ludGF4LWxpbms6ICMwNjYwNTY7XFxuICAtLWNvbG9yLXN5bnRheC1wYXJhbWV0ZXI6ICM4ZjNlMDA7XFxuICAtLWNvbG9yLXN5bnRheC1wdW5jdHVhdGlvbjogIzE3MTcxNztcXG4gIC0tY29sb3Itc3ludGF4LXN0cmluZzogIzAzNjE1NztcXG4gIC0tY29sb3Itc3ludGF4LXN0cmluZy1leHByZXNzaW9uOiAjMDY2MDU2O1xcblxcbiAgLyogR3JheSBTY2FsZSBMaWdodCAqL1xcbiAgLS1jb2xvci1ncmF5LTEwMDogI2YyZjJmMjtcXG4gIC0tY29sb3ItZ3JheS0yMDA6ICNlYmViZWI7XFxuICAtLWNvbG9yLWdyYXktMzAwOiAjZTZlNmU2O1xcbiAgLS1jb2xvci1ncmF5LTQwMDogI2VhZWFlYTtcXG4gIC0tY29sb3ItZ3JheS01MDA6ICNjOWM5Yzk7XFxuICAtLWNvbG9yLWdyYXktNjAwOiAjYThhOGE4O1xcbiAgLS1jb2xvci1ncmF5LTcwMDogIzhmOGY4ZjtcXG4gIC0tY29sb3ItZ3JheS04MDA6ICM3ZDdkN2Q7XFxuICAtLWNvbG9yLWdyYXktOTAwOiAjNjY2NjY2O1xcbiAgLS1jb2xvci1ncmF5LTEwMDA6ICMxNzE3MTc7XFxuXFxuICAvKiBHcmF5IEFscGhhIFNjYWxlIExpZ2h0ICovXFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwOiByZ2JhKDAsIDAsIDAsIDAuMDUpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTIwMDogcmdiYSgwLCAwLCAwLCAwLjA4MSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMzAwOiByZ2JhKDAsIDAsIDAsIDAuMSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNDAwOiByZ2JhKDAsIDAsIDAsIDAuMDgpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTUwMDogcmdiYSgwLCAwLCAwLCAwLjIxKTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS02MDA6IHJnYmEoMCwgMCwgMCwgMC4zNCk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNzAwOiByZ2JhKDAsIDAsIDAsIDAuNDQpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTgwMDogcmdiYSgwLCAwLCAwLCAwLjUxKTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS05MDA6IHJnYmEoMCwgMCwgMCwgMC42MDUpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTEwMDA6IHJnYmEoMCwgMCwgMCwgMC45MSk7XFxuXFxuICAvKiBCbHVlIFNjYWxlIExpZ2h0ICovXFxuICAtLWNvbG9yLWJsdWUtMTAwOiAjZjBmN2ZmO1xcbiAgLS1jb2xvci1ibHVlLTIwMDogI2VkZjZmZjtcXG4gIC0tY29sb3ItYmx1ZS0zMDA6ICNlMWYwZmY7XFxuICAtLWNvbG9yLWJsdWUtNDAwOiAjY2RlN2ZmO1xcbiAgLS1jb2xvci1ibHVlLTUwMDogIzk5Y2VmZjtcXG4gIC0tY29sb3ItYmx1ZS02MDA6ICM1MmFlZmY7XFxuICAtLWNvbG9yLWJsdWUtNzAwOiAjMDA3MGYzO1xcbiAgLS1jb2xvci1ibHVlLTgwMDogIzAwNjBkMTtcXG4gIC0tY29sb3ItYmx1ZS05MDA6ICMwMDY3ZDY7XFxuICAtLWNvbG9yLWJsdWUtMTAwMDogIzAwMjVhZDtcXG5cXG4gIC8qIFJlZCBTY2FsZSBMaWdodCAqL1xcbiAgLS1jb2xvci1yZWQtMTAwOiAjZmZmMGYwO1xcbiAgLS1jb2xvci1yZWQtMjAwOiAjZmZlYmViO1xcbiAgLS1jb2xvci1yZWQtMzAwOiAjZmZlNWU1O1xcbiAgLS1jb2xvci1yZWQtNDAwOiAjZmRkOGQ4O1xcbiAgLS1jb2xvci1yZWQtNTAwOiAjZjhiYWJhO1xcbiAgLS1jb2xvci1yZWQtNjAwOiAjZjg3Mjc0O1xcbiAgLS1jb2xvci1yZWQtNzAwOiAjZTU0ODRkO1xcbiAgLS1jb2xvci1yZWQtODAwOiAjZGEzMDM2O1xcbiAgLS1jb2xvci1yZWQtOTAwOiAjY2EyYTMwO1xcbiAgLS1jb2xvci1yZWQtMTAwMDogIzM4MTMxNjtcXG5cXG4gIC8qIEFtYmVyIFNjYWxlIExpZ2h0ICovXFxuICAtLWNvbG9yLWFtYmVyLTEwMDogI2ZmZjZlNTtcXG4gIC0tY29sb3ItYW1iZXItMjAwOiAjZmZmNGQ1O1xcbiAgLS1jb2xvci1hbWJlci0zMDA6ICNmZWYwY2Q7XFxuICAtLWNvbG9yLWFtYmVyLTQwMDogI2ZmZGRiZjtcXG4gIC0tY29sb3ItYW1iZXItNTAwOiAjZmZjOTZiO1xcbiAgLS1jb2xvci1hbWJlci02MDA6ICNmNWIwNDc7XFxuICAtLWNvbG9yLWFtYmVyLTcwMDogI2ZmYjIyNDtcXG4gIC0tY29sb3ItYW1iZXItODAwOiAjZmY5OTBhO1xcbiAgLS1jb2xvci1hbWJlci05MDA6ICNhMzUyMDA7XFxuICAtLWNvbG9yLWFtYmVyLTEwMDA6ICM0ZTIwMDk7XFxuXFxuICAvKiBHcmVlbiBTY2FsZSBMaWdodCAqL1xcbiAgLS1jb2xvci1ncmVlbi0xMDA6ICNlZmZiZWY7XFxuICAtLWNvbG9yLWdyZWVuLTIwMDogI2VhZmFlYTtcXG4gIC0tY29sb3ItZ3JlZW4tMzAwOiAjZGNmNmRjO1xcbiAgLS1jb2xvci1ncmVlbi00MDA6ICNjOGYxYzk7XFxuICAtLWNvbG9yLWdyZWVuLTUwMDogIzk5ZTU5ZjtcXG4gIC0tY29sb3ItZ3JlZW4tNjAwOiAjNmNkYTc2O1xcbiAgLS1jb2xvci1ncmVlbi03MDA6ICM0NmE3NTg7XFxuICAtLWNvbG9yLWdyZWVuLTgwMDogIzM4OGU0YTtcXG4gIC0tY29sb3ItZ3JlZW4tOTAwOiAjMjk3YzNiO1xcbiAgLS1jb2xvci1ncmVlbi0xMDAwOiAjMTgzMTFlO1xcblxcbiAgLyogVHVyYm9wYWNrIExpZ2h0IC0gVGVtcG9yYXJ5ICovXFxuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZDogI2ZmMWU1NjtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZTogIzAwOTZmZjtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1yZWQ6ICNmMGFkYmU7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItYmx1ZTogI2FkY2NlYTtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtcmVkOiAjZmZmN2Y5O1xcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1ibHVlOiAjZjZmYmZmO1xcbn1cXG4nXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2RhcmstdGhlbWUuY3NzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO24uZCh0LHtaOigpPT5sfSk7dmFyIHI9bihcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIiksbz1uLm4ociksYT1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCIpLGk9bi5uKGEpKCkobygpKTtpLnB1c2goW2UuaWQsYDpob3N0KC5kYXJrKSB7XG4gIC0tY29sb3ItZm9udDogd2hpdGU7XG4gIC0tY29sb3ItYmFja2Ryb3A6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgLS1jb2xvci1ib3JkZXItc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcblxuICAtLWNvbG9yLXRpdGxlLWNvbG9yOiAjZmFmYWZhO1xuICAtLWNvbG9yLXN0YWNrLW5vdGVzOiAjYTlhOWE5O1xuXG4gIC8qIEJhY2tncm91bmQgRGFyayAqL1xuICAtLWNvbG9yLWJhY2tncm91bmQtMTAwOiAjMGEwYTBhO1xuICAtLWNvbG9yLWJhY2tncm91bmQtMjAwOiAjMDAwMDAwO1xuXG4gIC8qIFN5bnRheCBEYXJrICovXG4gIC0tY29sb3Itc3ludGF4LWNvbW1lbnQ6ICNhMGEwYTA7XG4gIC0tY29sb3Itc3ludGF4LWNvbnN0YW50OiAjZWRlZGVkO1xuICAtLWNvbG9yLXN5bnRheC1mdW5jdGlvbjogIzUyYTlmZjtcbiAgLS1jb2xvci1zeW50YXgta2V5d29yZDogI2Y3NmU5OTtcbiAgLS1jb2xvci1zeW50YXgtbGluazogIzBhYzViMjtcbiAgLS1jb2xvci1zeW50YXgtcGFyYW1ldGVyOiAjZjFhMTBkO1xuICAtLWNvbG9yLXN5bnRheC1wdW5jdHVhdGlvbjogI2VkZWRlZDtcbiAgLS1jb2xvci1zeW50YXgtc3RyaW5nOiAjMGFjNWIyO1xuICAtLWNvbG9yLXN5bnRheC1zdHJpbmctZXhwcmVzc2lvbjogIzBhYzViMjtcblxuICAvKiBHcmF5IFNjYWxlIERhcmsgKi9cbiAgLS1jb2xvci1ncmF5LTEwMDogIzFhMWExYTtcbiAgLS1jb2xvci1ncmF5LTIwMDogIzFmMWYxZjtcbiAgLS1jb2xvci1ncmF5LTMwMDogIzI5MjkyOTtcbiAgLS1jb2xvci1ncmF5LTQwMDogIzJlMmUyZTtcbiAgLS1jb2xvci1ncmF5LTUwMDogIzQ1NDU0NTtcbiAgLS1jb2xvci1ncmF5LTYwMDogIzg3ODc4NztcbiAgLS1jb2xvci1ncmF5LTcwMDogIzhmOGY4ZjtcbiAgLS1jb2xvci1ncmF5LTgwMDogIzdkN2Q3ZDtcbiAgLS1jb2xvci1ncmF5LTkwMDogI2EwYTBhMDtcbiAgLS1jb2xvci1ncmF5LTEwMDA6ICNlZGVkZWQ7XG5cbiAgLyogR3JheSBBbHBoYSBTY2FsZSBEYXJrICovXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNjYpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDg3KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTMwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyNSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xuICAtLWNvbG9yLWdyYXktYWxwaGEtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjM5KTtcbiAgLS1jb2xvci1ncmF5LWFscGhhLTYwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUwNik7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nyk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS05MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42MSk7XG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIzKTtcblxuICAvKiBCbHVlIFNjYWxlIERhcmsgKi9cbiAgLS1jb2xvci1ibHVlLTEwMDogIzBmMWIyZDtcbiAgLS1jb2xvci1ibHVlLTIwMDogIzEwMjQzZTtcbiAgLS1jb2xvci1ibHVlLTMwMDogIzBmMzA1ODtcbiAgLS1jb2xvci1ibHVlLTQwMDogIzBkMzg2ODtcbiAgLS1jb2xvci1ibHVlLTUwMDogIzBhNDQ4MTtcbiAgLS1jb2xvci1ibHVlLTYwMDogIzAwOTFmZjtcbiAgLS1jb2xvci1ibHVlLTcwMDogIzAwNzBmMztcbiAgLS1jb2xvci1ibHVlLTgwMDogIzAwNjBkMTtcbiAgLS1jb2xvci1ibHVlLTkwMDogIzUyYTlmZjtcbiAgLS1jb2xvci1ibHVlLTEwMDA6ICNlYWY2ZmY7XG5cbiAgLyogUmVkIFNjYWxlIERhcmsgKi9cbiAgLS1jb2xvci1yZWQtMTAwOiAjMmExMzE0O1xuICAtLWNvbG9yLXJlZC0yMDA6ICMzZDE3MTk7XG4gIC0tY29sb3ItcmVkLTMwMDogIzU1MWExZTtcbiAgLS1jb2xvci1yZWQtNDAwOiAjNjcxZTIyO1xuICAtLWNvbG9yLXJlZC01MDA6ICM4MjIwMjU7XG4gIC0tY29sb3ItcmVkLTYwMDogI2U1NDg0ZDtcbiAgLS1jb2xvci1yZWQtNzAwOiAjZTU0ODRkO1xuICAtLWNvbG9yLXJlZC04MDA6ICNkYTMwMzY7XG4gIC0tY29sb3ItcmVkLTkwMDogI2ZmNjM2OTtcbiAgLS1jb2xvci1yZWQtMTAwMDogI2ZmZWNlZTtcblxuICAvKiBBbWJlciBTY2FsZSBEYXJrICovXG4gIC0tY29sb3ItYW1iZXItMTAwOiAjMjcxNzAwO1xuICAtLWNvbG9yLWFtYmVyLTIwMDogIzM0MWMwMDtcbiAgLS1jb2xvci1hbWJlci0zMDA6ICM0YTI5MDA7XG4gIC0tY29sb3ItYW1iZXItNDAwOiAjNTczMzAwO1xuICAtLWNvbG9yLWFtYmVyLTUwMDogIzY5M2YwNTtcbiAgLS1jb2xvci1hbWJlci02MDA6ICNlNzljMTM7XG4gIC0tY29sb3ItYW1iZXItNzAwOiAjZmZiMjI0O1xuICAtLWNvbG9yLWFtYmVyLTgwMDogI2ZmOTkwYTtcbiAgLS1jb2xvci1hbWJlci05MDA6ICNmMWExMGQ7XG4gIC0tY29sb3ItYW1iZXItMTAwMDogI2ZlZjNkZDtcblxuICAvKiBHcmVlbiBTY2FsZSBEYXJrICovXG4gIC0tY29sb3ItZ3JlZW4tMTAwOiAjMGIyMjExO1xuICAtLWNvbG9yLWdyZWVuLTIwMDogIzBmMmMxNztcbiAgLS1jb2xvci1ncmVlbi0zMDA6ICMxMTM1MWI7XG4gIC0tY29sb3ItZ3JlZW4tNDAwOiAjMGM0NjFiO1xuICAtLWNvbG9yLWdyZWVuLTUwMDogIzEyNjQyNztcbiAgLS1jb2xvci1ncmVlbi02MDA6ICMxYTkzMzg7XG4gIC0tY29sb3ItZ3JlZW4tNzAwOiAjNDZhNzU4O1xuICAtLWNvbG9yLWdyZWVuLTgwMDogIzM4OGU0YTtcbiAgLS1jb2xvci1ncmVlbi05MDA6ICM2M2MxNzQ7XG4gIC0tY29sb3ItZ3JlZW4tMTAwMDogI2U1ZmJlYjtcblxuICAvKiBUdXJib3BhY2sgRGFyayAtIFRlbXBvcmFyeSAqL1xuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZDogI2ZmNmQ5MjtcbiAgLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlOiAjNDViMmZmO1xuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItcmVkOiAjNmUyOTNiO1xuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItYmx1ZTogIzI4NGY4MDtcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1yZWQ6ICMyNTBkMTI7XG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtYmx1ZTogIzBhMTcyMztcbn1cblxuQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykge1xuICA6aG9zdCg6bm90KC5saWdodCkpIHtcbiAgICAtLWNvbG9yLWZvbnQ6IHdoaXRlO1xuICAgIC0tY29sb3ItYmFja2Ryb3A6IHJnYmEoMCwgMCwgMCwgMC44KTtcbiAgICAtLWNvbG9yLWJvcmRlci1zaGFkb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xuXG4gICAgLS1jb2xvci10aXRsZS1jb2xvcjogI2ZhZmFmYTtcbiAgICAtLWNvbG9yLXN0YWNrLW5vdGVzOiAjYTlhOWE5O1xuXG4gICAgLyogQmFja2dyb3VuZCBEYXJrICovXG4gICAgLS1jb2xvci1iYWNrZ3JvdW5kLTEwMDogIzBhMGEwYTtcbiAgICAtLWNvbG9yLWJhY2tncm91bmQtMjAwOiAjMDAwMDAwO1xuXG4gICAgLyogU3ludGF4IERhcmsgKi9cbiAgICAtLWNvbG9yLXN5bnRheC1jb21tZW50OiAjYTBhMGEwO1xuICAgIC0tY29sb3Itc3ludGF4LWNvbnN0YW50OiAjZWRlZGVkO1xuICAgIC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uOiAjNTJhOWZmO1xuICAgIC0tY29sb3Itc3ludGF4LWtleXdvcmQ6ICNmNzZlOTk7XG4gICAgLS1jb2xvci1zeW50YXgtbGluazogIzBhYzViMjtcbiAgICAtLWNvbG9yLXN5bnRheC1wYXJhbWV0ZXI6ICNmMWExMGQ7XG4gICAgLS1jb2xvci1zeW50YXgtcHVuY3R1YXRpb246ICNlZGVkZWQ7XG4gICAgLS1jb2xvci1zeW50YXgtc3RyaW5nOiAjMGFjNWIyO1xuICAgIC0tY29sb3Itc3ludGF4LXN0cmluZy1leHByZXNzaW9uOiAjMGFjNWIyO1xuXG4gICAgLyogR3JheSBTY2FsZSBEYXJrICovXG4gICAgLS1jb2xvci1ncmF5LTEwMDogIzFhMWExYTtcbiAgICAtLWNvbG9yLWdyYXktMjAwOiAjMWYxZjFmO1xuICAgIC0tY29sb3ItZ3JheS0zMDA6ICMyOTI5Mjk7XG4gICAgLS1jb2xvci1ncmF5LTQwMDogIzJlMmUyZTtcbiAgICAtLWNvbG9yLWdyYXktNTAwOiAjNDU0NTQ1O1xuICAgIC0tY29sb3ItZ3JheS02MDA6ICM4Nzg3ODc7XG4gICAgLS1jb2xvci1ncmF5LTcwMDogIzhmOGY4ZjtcbiAgICAtLWNvbG9yLWdyYXktODAwOiAjN2Q3ZDdkO1xuICAgIC0tY29sb3ItZ3JheS05MDA6ICNhMGEwYTA7XG4gICAgLS1jb2xvci1ncmF5LTEwMDA6ICNlZGVkZWQ7XG5cbiAgICAvKiBHcmF5IEFscGhhIFNjYWxlIERhcmsgKi9cbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDY2KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDg3KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTI1KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMjM5KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTA2KTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTQpO1xuICAgIC0tY29sb3ItZ3JheS1hbHBoYS04MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40Nyk7XG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTkwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYxKTtcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyMyk7XG5cbiAgICAvKiBCbHVlIFNjYWxlIERhcmsgKi9cbiAgICAtLWNvbG9yLWJsdWUtMTAwOiAjMGYxYjJkO1xuICAgIC0tY29sb3ItYmx1ZS0yMDA6ICMxMDI0M2U7XG4gICAgLS1jb2xvci1ibHVlLTMwMDogIzBmMzA1ODtcbiAgICAtLWNvbG9yLWJsdWUtNDAwOiAjMGQzODY4O1xuICAgIC0tY29sb3ItYmx1ZS01MDA6ICMwYTQ0ODE7XG4gICAgLS1jb2xvci1ibHVlLTYwMDogIzAwOTFmZjtcbiAgICAtLWNvbG9yLWJsdWUtNzAwOiAjMDA3MGYzO1xuICAgIC0tY29sb3ItYmx1ZS04MDA6ICMwMDYwZDE7XG4gICAgLS1jb2xvci1ibHVlLTkwMDogIzUyYTlmZjtcbiAgICAtLWNvbG9yLWJsdWUtMTAwMDogI2VhZjZmZjtcblxuICAgIC8qIFJlZCBTY2FsZSBEYXJrICovXG4gICAgLS1jb2xvci1yZWQtMTAwOiAjMmExMzE0O1xuICAgIC0tY29sb3ItcmVkLTIwMDogIzNkMTcxOTtcbiAgICAtLWNvbG9yLXJlZC0zMDA6ICM1NTFhMWU7XG4gICAgLS1jb2xvci1yZWQtNDAwOiAjNjcxZTIyO1xuICAgIC0tY29sb3ItcmVkLTUwMDogIzgyMjAyNTtcbiAgICAtLWNvbG9yLXJlZC02MDA6ICNlNTQ4NGQ7XG4gICAgLS1jb2xvci1yZWQtNzAwOiAjZTU0ODRkO1xuICAgIC0tY29sb3ItcmVkLTgwMDogI2RhMzAzNjtcbiAgICAtLWNvbG9yLXJlZC05MDA6ICNmZjYzNjk7XG4gICAgLS1jb2xvci1yZWQtMTAwMDogI2ZmZWNlZTtcblxuICAgIC8qIEFtYmVyIFNjYWxlIERhcmsgKi9cbiAgICAtLWNvbG9yLWFtYmVyLTEwMDogIzI3MTcwMDtcbiAgICAtLWNvbG9yLWFtYmVyLTIwMDogIzM0MWMwMDtcbiAgICAtLWNvbG9yLWFtYmVyLTMwMDogIzRhMjkwMDtcbiAgICAtLWNvbG9yLWFtYmVyLTQwMDogIzU3MzMwMDtcbiAgICAtLWNvbG9yLWFtYmVyLTUwMDogIzY5M2YwNTtcbiAgICAtLWNvbG9yLWFtYmVyLTYwMDogI2U3OWMxMztcbiAgICAtLWNvbG9yLWFtYmVyLTcwMDogI2ZmYjIyNDtcbiAgICAtLWNvbG9yLWFtYmVyLTgwMDogI2ZmOTkwYTtcbiAgICAtLWNvbG9yLWFtYmVyLTkwMDogI2YxYTEwZDtcbiAgICAtLWNvbG9yLWFtYmVyLTEwMDA6ICNmZWYzZGQ7XG5cbiAgICAvKiBHcmVlbiBTY2FsZSBEYXJrICovXG4gICAgLS1jb2xvci1ncmVlbi0xMDA6ICMwYjIyMTE7XG4gICAgLS1jb2xvci1ncmVlbi0yMDA6ICMwZjJjMTc7XG4gICAgLS1jb2xvci1ncmVlbi0zMDA6ICMxMTM1MWI7XG4gICAgLS1jb2xvci1ncmVlbi00MDA6ICMwYzQ2MWI7XG4gICAgLS1jb2xvci1ncmVlbi01MDA6ICMxMjY0Mjc7XG4gICAgLS1jb2xvci1ncmVlbi02MDA6ICMxYTkzMzg7XG4gICAgLS1jb2xvci1ncmVlbi03MDA6ICM0NmE3NTg7XG4gICAgLS1jb2xvci1ncmVlbi04MDA6ICMzODhlNGE7XG4gICAgLS1jb2xvci1ncmVlbi05MDA6ICM2M2MxNzQ7XG4gICAgLS1jb2xvci1ncmVlbi0xMDAwOiAjZTVmYmViO1xuXG4gICAgLyogVHVyYm9wYWNrIERhcmsgLSBUZW1wb3JhcnkgKi9cbiAgICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZDogI2ZmNmQ5MjtcbiAgICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LWJsdWU6ICM0NWIyZmY7XG4gICAgLS1jb2xvci10dXJib3BhY2stYm9yZGVyLXJlZDogIzZlMjkzYjtcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItYmx1ZTogIzI4NGY4MDtcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLXJlZDogIzI1MGQxMjtcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1iYWNrZ3JvdW5kLWJsdWU6ICMwYTE3MjM7XG4gIH1cbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2RhcmstdGhlbWUuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFLG1CQUFtQjtFQUNuQixvQ0FBb0M7RUFDcEMsaURBQWlEOztFQUVqRCw0QkFBNEI7RUFDNUIsNEJBQTRCOztFQUU1QixvQkFBb0I7RUFDcEIsK0JBQStCO0VBQy9CLCtCQUErQjs7RUFFL0IsZ0JBQWdCO0VBQ2hCLCtCQUErQjtFQUMvQixnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLCtCQUErQjtFQUMvQiw0QkFBNEI7RUFDNUIsaUNBQWlDO0VBQ2pDLG1D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d0I7SUFDeEIseUJBQXlCOztJQUV6QixxQkFBcUI7SUFDckIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMkJBQTJCOztJQUUzQixxQkFBcUI7SUFDckIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwwQkFBMEI7SUFDMUIsMkJBQTJCOztJQUUzQiwrQkFBK0I7SUFDL0IsbUNBQW1DO0lBQ25DLG9DQUFvQztJQUNwQyxxQ0FBcUM7SUFDckMsc0NBQXNDO0lBQ3RDLHlDQUF5QztJQUN6QywwQ0FBMEM7RUFDNUM7QUFDRlwiLHNvdXJjZXNDb250ZW50OltcIjpob3N0KC5kYXJrKSB7XFxuICAtLWNvbG9yLWZvbnQ6IHdoaXRlO1xcbiAgLS1jb2xvci1iYWNrZHJvcDogcmdiYSgwLCAwLCAwLCAwLjgpO1xcbiAgLS1jb2xvci1ib3JkZXItc2hhZG93OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcXG5cXG4gIC0tY29sb3ItdGl0bGUtY29sb3I6ICNmYWZhZmE7XFxuICAtLWNvbG9yLXN0YWNrLW5vdGVzOiAjYTlhOWE5O1xcblxcbiAgLyogQmFja2dyb3VuZCBEYXJrICovXFxuICAtLWNvbG9yLWJhY2tncm91bmQtMTAwOiAjMGEwYTBhO1xcbiAgLS1jb2xvci1iYWNrZ3JvdW5kLTIwMDogIzAwMDAwMDtcXG5cXG4gIC8qIFN5bnRheCBEYXJrICovXFxuICAtLWNvbG9yLXN5bnRheC1jb21tZW50OiAjYTBhMGEwO1xcbiAgLS1jb2xvci1zeW50YXgtY29uc3RhbnQ6ICNlZGVkZWQ7XFxuICAtLWNvbG9yLXN5bnRheC1mdW5jdGlvbjogIzUyYTlmZjtcXG4gIC0tY29sb3Itc3ludGF4LWtleXdvcmQ6ICNmNzZlOTk7XFxuICAtLWNvbG9yLXN5bnRheC1saW5rOiAjMGFjNWIyO1xcbiAgLS1jb2xvci1zeW50YXgtcGFyYW1ldGVyOiAjZjFhMTBkO1xcbiAgLS1jb2xvci1zeW50YXgtcHVuY3R1YXRpb246ICNlZGVkZWQ7XFxuICAtLWNvbG9yLXN5bnRheC1zdHJpbmc6ICMwYWM1YjI7XFxuICAtLWNvbG9yLXN5bnRheC1zdHJpbmctZXhwcmVzc2lvbjogIzBhYzViMjtcXG5cXG4gIC8qIEdyYXkgU2NhbGUgRGFyayAqL1xcbiAgLS1jb2xvci1ncmF5LTEwMDogIzFhMWExYTtcXG4gIC0tY29sb3ItZ3JheS0yMDA6ICMxZjFmMWY7XFxuICAtLWNvbG9yLWdyYXktMzAwOiAjMjkyOTI5O1xcbiAgLS1jb2xvci1ncmF5LTQwMDogIzJlMmUyZTtcXG4gIC0tY29sb3ItZ3JheS01MDA6ICM0NTQ1NDU7XFxuICAtLWNvbG9yLWdyYXktNjAwOiAjODc4Nzg3O1xcbiAgLS1jb2xvci1ncmF5LTcwMDogIzhmOGY4ZjtcXG4gIC0tY29sb3ItZ3JheS04MDA6ICM3ZDdkN2Q7XFxuICAtLWNvbG9yLWdyYXktOTAwOiAjYTBhMGEwO1xcbiAgLS1jb2xvci1ncmF5LTEwMDA6ICNlZGVkZWQ7XFxuXFxuICAvKiBHcmF5IEFscGhhIFNjYWxlIERhcmsgKi9cXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNjYpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTIwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4Nyk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtMzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTI1KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS00MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTUwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzOSk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtNjAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTA2KTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS03MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NCk7XFxuICAtLWNvbG9yLWdyYXktYWxwaGEtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDcpO1xcbiAgLS1jb2xvci1ncmF5LWFscGhhLTkwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYxKTtcXG4gIC0tY29sb3ItZ3JheS1hbHBoYS0xMDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOTIzKTtcXG5cXG4gIC8qIEJsdWUgU2NhbGUgRGFyayAqL1xcbiAgLS1jb2xvci1ibHVlLTEwMDogIzBmMWIyZDtcXG4gIC0tY29sb3ItYmx1ZS0yMDA6ICMxMDI0M2U7XFxuICAtLWNvbG9yLWJsdWUtMzAwOiAjMGYzMDU4O1xcbiAgLS1jb2xvci1ibHVlLTQwMDogIzBkMzg2ODtcXG4gIC0tY29sb3ItYmx1ZS01MDA6ICMwYTQ0ODE7XFxuICAtLWNvbG9yLWJsdWUtNjAwOiAjMDA5MWZmO1xcbiAgLS1jb2xvci1ibHVlLTcwMDogIzAwNzBmMztcXG4gIC0tY29sb3ItYmx1ZS04MDA6ICMwMDYwZDE7XFxuICAtLWNvbG9yLWJsdWUtOTAwOiAjNTJhOWZmO1xcbiAgLS1jb2xvci1ibHVlLTEwMDA6ICNlYWY2ZmY7XFxuXFxuICAvKiBSZWQgU2NhbGUgRGFyayAqL1xcbiAgLS1jb2xvci1yZWQtMTAwOiAjMmExMzE0O1xcbiAgLS1jb2xvci1yZWQtMjAwOiAjM2QxNzE5O1xcbiAgLS1jb2xvci1yZWQtMzAwOiAjNTUxYTFlO1xcbiAgLS1jb2xvci1yZWQtNDAwOiAjNjcxZTIyO1xcbiAgLS1jb2xvci1yZWQtNTAwOiAjODIyMDI1O1xcbiAgLS1jb2xvci1yZWQtNjAwOiAjZTU0ODRkO1xcbiAgLS1jb2xvci1yZWQtNzAwOiAjZTU0ODRkO1xcbiAgLS1jb2xvci1yZWQtODAwOiAjZGEzMDM2O1xcbiAgLS1jb2xvci1yZWQtOTAwOiAjZmY2MzY5O1xcbiAgLS1jb2xvci1yZWQtMTAwMDogI2ZmZWNlZTtcXG5cXG4gIC8qIEFtYmVyIFNjYWxlIERhcmsgKi9cXG4gIC0tY29sb3ItYW1iZXItMTAwOiAjMjcxNzAwO1xcbiAgLS1jb2xvci1hbWJlci0yMDA6ICMzNDFjMDA7XFxuICAtLWNvbG9yLWFtYmVyLTMwMDogIzRhMjkwMDtcXG4gIC0tY29sb3ItYW1iZXItNDAwOiAjNTczMzAwO1xcbiAgLS1jb2xvci1hbWJlci01MDA6ICM2OTNmMDU7XFxuICAtLWNvbG9yLWFtYmVyLTYwMDogI2U3OWMxMztcXG4gIC0tY29sb3ItYW1iZXItNzAwOiAjZmZiMjI0O1xcbiAgLS1jb2xvci1hbWJlci04MDA6ICNmZjk5MGE7XFxuICAtLWNvbG9yLWFtYmVyLTkwMDogI2YxYTEwZDtcXG4gIC0tY29sb3ItYW1iZXItMTAwMDogI2ZlZjNkZDtcXG5cXG4gIC8qIEdyZWVuIFNjYWxlIERhcmsgKi9cXG4gIC0tY29sb3ItZ3JlZW4tMTAwOiAjMGIyMjExO1xcbiAgLS1jb2xvci1ncmVlbi0yMDA6ICMwZjJjMTc7XFxuICAtLWNvbG9yLWdyZWVuLTMwMDogIzExMzUxYjtcXG4gIC0tY29sb3ItZ3JlZW4tNDAwOiAjMGM0NjFiO1xcbiAgLS1jb2xvci1ncmVlbi01MDA6ICMxMjY0Mjc7XFxuICAtLWNvbG9yLWdyZWVuLTYwMDogIzFhOTMzODtcXG4gIC0tY29sb3ItZ3JlZW4tNzAwOiAjNDZhNzU4O1xcbiAgLS1jb2xvci1ncmVlbi04MDA6ICMzODhlNGE7XFxuICAtLWNvbG9yLWdyZWVuLTkwMDogIzYzYzE3NDtcXG4gIC0tY29sb3ItZ3JlZW4tMTAwMDogI2U1ZmJlYjtcXG5cXG4gIC8qIFR1cmJvcGFjayBEYXJrIC0gVGVtcG9yYXJ5ICovXFxuICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZDogI2ZmNmQ5MjtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZTogIzQ1YjJmZjtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJvcmRlci1yZWQ6ICM2ZTI5M2I7XFxuICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItYmx1ZTogIzI4NGY4MDtcXG4gIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtcmVkOiAjMjUwZDEyO1xcbiAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1ibHVlOiAjMGExNzIzO1xcbn1cXG5cXG5AbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7XFxuICA6aG9zdCg6bm90KC5saWdodCkpIHtcXG4gICAgLS1jb2xvci1mb250OiB3aGl0ZTtcXG4gICAgLS1jb2xvci1iYWNrZHJvcDogcmdiYSgwLCAwLCAwLCAwLjgpO1xcbiAgICAtLWNvbG9yLWJvcmRlci1zaGFkb3c6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNDUpO1xcblxcbiAgICAtLWNvbG9yLXRpdGxlLWNvbG9yOiAjZmFmYWZhO1xcbiAgICAtLWNvbG9yLXN0YWNrLW5vdGVzOiAjYTlhOWE5O1xcblxcbiAgICAvKiBCYWNrZ3JvdW5kIERhcmsgKi9cXG4gICAgLS1jb2xvci1iYWNrZ3JvdW5kLTEwMDogIzBhMGEwYTtcXG4gICAgLS1jb2xvci1iYWNrZ3JvdW5kLTIwMDogIzAwMDAwMDtcXG5cXG4gICAgLyogU3ludGF4IERhcmsgKi9cXG4gICAgLS1jb2xvci1zeW50YXgtY29tbWVudDogI2EwYTBhMDtcXG4gICAgLS1jb2xvci1zeW50YXgtY29uc3RhbnQ6ICNlZGVkZWQ7XFxuICAgIC0tY29sb3Itc3ludGF4LWZ1bmN0aW9uOiAjNTJhOWZmO1xcbiAgICAtLWNvbG9yLXN5bnRheC1rZXl3b3JkOiAjZjc2ZTk5O1xcbiAgICAtLWNvbG9yLXN5bnRheC1saW5rOiAjMGFjNWIyO1xcbiAgICAtLWNvbG9yLXN5bnRheC1wYXJhbWV0ZXI6ICNmMWExMGQ7XFxuICAgIC0tY29sb3Itc3ludGF4LXB1bmN0dWF0aW9uOiAjZWRlZGVkO1xcbiAgICAtLWNvbG9yLXN5bnRheC1zdHJpbmc6ICMwYWM1YjI7XFxuICAgIC0tY29sb3Itc3ludGF4LXN0cmluZy1leHByZXNzaW9uOiAjMGFjNWIyO1xcblxcbiAgICAvKiBHcmF5IFNjYWxlIERhcmsgKi9cXG4gICAgLS1jb2xvci1ncmF5LTEwMDogIzFhMWExYTtcXG4gICAgLS1jb2xvci1ncmF5LTIwMDogIzFmMWYxZjtcXG4gICAgLS1jb2xvci1ncmF5LTMwMDogIzI5MjkyOTtcXG4gICAgLS1jb2xvci1ncmF5LTQwMDogIzJlMmUyZTtcXG4gICAgLS1jb2xvci1ncmF5LTUwMDogIzQ1NDU0NTtcXG4gICAgLS1jb2xvci1ncmF5LTYwMDogIzg3ODc4NztcXG4gICAgLS1jb2xvci1ncmF5LTcwMDogIzhmOGY4ZjtcXG4gICAgLS1jb2xvci1ncmF5LTgwMDogIzdkN2Q3ZDtcXG4gICAgLS1jb2xvci1ncmF5LTkwMDogI2EwYTBhMDtcXG4gICAgLS1jb2xvci1ncmF5LTEwMDA6ICNlZGVkZWQ7XFxuXFxuICAgIC8qIEdyYXkgQWxwaGEgU2NhbGUgRGFyayAqL1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDY2KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTIwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4Nyk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS0zMDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xMjUpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNDAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTQ1KTtcXG4gICAgLS1jb2xvci1ncmF5LWFscGhhLTUwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIzOSk7XFxuICAgIC0tY29sb3ItZ3JheS1hbHBoYS02MDA6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41MDYpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtNzAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTQpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtODAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDcpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtOTAwOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNjEpO1xcbiAgICAtLWNvbG9yLWdyYXktYWxwaGEtMTAwMDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkyMyk7XFxuXFxuICAgIC8qIEJsdWUgU2NhbGUgRGFyayAqL1xcbiAgICAtLWNvbG9yLWJsdWUtMTAwOiAjMGYxYjJkO1xcbiAgICAtLWNvbG9yLWJsdWUtMjAwOiAjMTAyNDNlO1xcbiAgICAtLWNvbG9yLWJsdWUtMzAwOiAjMGYzMDU4O1xcbiAgICAtLWNvbG9yLWJsdWUtNDAwOiAjMGQzODY4O1xcbiAgICAtLWNvbG9yLWJsdWUtNTAwOiAjMGE0NDgxO1xcbiAgICAtLWNvbG9yLWJsdWUtNjAwOiAjMDA5MWZmO1xcbiAgICAtLWNvbG9yLWJsdWUtNzAwOiAjMDA3MGYzO1xcbiAgICAtLWNvbG9yLWJsdWUtODAwOiAjMDA2MGQxO1xcbiAgICAtLWNvbG9yLWJsdWUtOTAwOiAjNTJhOWZmO1xcbiAgICAtLWNvbG9yLWJsdWUtMTAwMDogI2VhZjZmZjtcXG5cXG4gICAgLyogUmVkIFNjYWxlIERhcmsgKi9cXG4gICAgLS1jb2xvci1yZWQtMTAwOiAjMmExMzE0O1xcbiAgICAtLWNvbG9yLXJlZC0yMDA6ICMzZDE3MTk7XFxuICAgIC0tY29sb3ItcmVkLTMwMDogIzU1MWExZTtcXG4gICAgLS1jb2xvci1yZWQtNDAwOiAjNjcxZTIyO1xcbiAgICAtLWNvbG9yLXJlZC01MDA6ICM4MjIwMjU7XFxuICAgIC0tY29sb3ItcmVkLTYwMDogI2U1NDg0ZDtcXG4gICAgLS1jb2xvci1yZWQtNzAwOiAjZTU0ODRkO1xcbiAgICAtLWNvbG9yLXJlZC04MDA6ICNkYTMwMzY7XFxuICAgIC0tY29sb3ItcmVkLTkwMDogI2ZmNjM2OTtcXG4gICAgLS1jb2xvci1yZWQtMTAwMDogI2ZmZWNlZTtcXG5cXG4gICAgLyogQW1iZXIgU2NhbGUgRGFyayAqL1xcbiAgICAtLWNvbG9yLWFtYmVyLTEwMDogIzI3MTcwMDtcXG4gICAgLS1jb2xvci1hbWJlci0yMDA6ICMzNDFjMDA7XFxuICAgIC0tY29sb3ItYW1iZXItMzAwOiAjNGEyOTAwO1xcbiAgICAtLWNvbG9yLWFtYmVyLTQwMDogIzU3MzMwMDtcXG4gICAgLS1jb2xvci1hbWJlci01MDA6ICM2OTNmMDU7XFxuICAgIC0tY29sb3ItYW1iZXItNjAwOiAjZTc5YzEzO1xcbiAgICAtLWNvbG9yLWFtYmVyLTcwMDogI2ZmYjIyNDtcXG4gICAgLS1jb2xvci1hbWJlci04MDA6ICNmZjk5MGE7XFxuICAgIC0tY29sb3ItYW1iZXItOTAwOiAjZjFhMTBkO1xcbiAgICAtLWNvbG9yLWFtYmVyLTEwMDA6ICNmZWYzZGQ7XFxuXFxuICAgIC8qIEdyZWVuIFNjYWxlIERhcmsgKi9cXG4gICAgLS1jb2xvci1ncmVlbi0xMDA6ICMwYjIyMTE7XFxuICAgIC0tY29sb3ItZ3JlZW4tMjAwOiAjMGYyYzE3O1xcbiAgICAtLWNvbG9yLWdyZWVuLTMwMDogIzExMzUxYjtcXG4gICAgLS1jb2xvci1ncmVlbi00MDA6ICMwYzQ2MWI7XFxuICAgIC0tY29sb3ItZ3JlZW4tNTAwOiAjMTI2NDI3O1xcbiAgICAtLWNvbG9yLWdyZWVuLTYwMDogIzFhOTMzODtcXG4gICAgLS1jb2xvci1ncmVlbi03MDA6ICM0NmE3NTg7XFxuICAgIC0tY29sb3ItZ3JlZW4tODAwOiAjMzg4ZTRhO1xcbiAgICAtLWNvbG9yLWdyZWVuLTkwMDogIzYzYzE3NDtcXG4gICAgLS1jb2xvci1ncmVlbi0xMDAwOiAjZTVmYmViO1xcblxcbiAgICAvKiBUdXJib3BhY2sgRGFyayAtIFRlbXBvcmFyeSAqL1xcbiAgICAtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZDogI2ZmNmQ5MjtcXG4gICAgLS1jb2xvci10dXJib3BhY2stdGV4dC1ibHVlOiAjNDViMmZmO1xcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItcmVkOiAjNmUyOTNiO1xcbiAgICAtLWNvbG9yLXR1cmJvcGFjay1ib3JkZXItYmx1ZTogIzI4NGY4MDtcXG4gICAgLS1jb2xvci10dXJib3BhY2stYmFja2dyb3VuZC1yZWQ6ICMyNTBkMTI7XFxuICAgIC0tY29sb3ItdHVyYm9wYWNrLWJhY2tncm91bmQtYmx1ZTogIzBhMTcyMztcXG4gIH1cXG59XFxuXCJdLHNvdXJjZVJvb3Q6XCJcIn1dKTtsZXQgbD1pfSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9zdHlsZXMvZGVmYXVsdC10aGVtZS5jc3NcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7bi5kKHQse1o6KCk9Pmx9KTt2YXIgcj1uKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiKSxvPW4ubihyKSxhPW4oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIiksaT1uLm4oYSkoKShvKCkpO2kucHVzaChbZS5pZCxgOmhvc3Qge1xuICAvKiBcbiAgICogQWx0aG91Z2ggdGhlIHN0eWxlIGFwcGxpZWQgdG8gdGhlIHNoYWRvdyBob3N0IGlzIGlzb2xhdGVkLFxuICAgKiB0aGUgZWxlbWVudCB0aGF0IGF0dGFjaGVkIHRoZSBzaGFkb3cgaG9zdCAoaS5lLiBcIm5leHRqcy1wb3J0YWxcIilcbiAgICogaXMgc3RpbGwgYWZmZWN0ZWQgYnkgdGhlIHBhcmVudCdzIHN0eWxlIChlLmcuIFwiYm9keVwiKS4gVGhpcyBtYXlcbiAgICogb2NjdXIgc3R5bGUgY29uZmxpY3RzIGxpa2UgXCJkaXNwbGF5OiBmbGV4XCIsIHdpdGggb3RoZXIgY2hpbGRyZW5cbiAgICogZWxlbWVudHMgdGhlcmVmb3JlIGdpdmUgdGhlIHNoYWRvdyBob3N0IGFuIGFic29sdXRlIHBvc2l0aW9uLlxuICAgKi9cbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gIC0tY29sb3ItZm9udDogIzc1NzU3NTtcbiAgLS1jb2xvci1iYWNrZHJvcDogcmdiYSgyNTAsIDI1MCwgMjUwLCAwLjgpO1xuICAtLWNvbG9yLWJvcmRlci1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNDUpO1xuXG4gIC0tY29sb3ItdGl0bGUtY29sb3I6ICMxZjFmMWY7XG4gIC0tY29sb3Itc3RhY2stbm90ZXM6ICM3Nzc7XG5cbiAgLS1jb2xvci1hY2NlbnRzLTE6ICM4MDgwODA7XG4gIC0tY29sb3ItYWNjZW50cy0yOiAjMjIyMjIyO1xuICAtLWNvbG9yLWFjY2VudHMtMzogIzQwNDA0MDtcblxuICAtLWZvbnQtc3RhY2stbW9ub3NwYWNlOiAnX19uZXh0anMtR2Vpc3QgTW9ubycsICdHZWlzdCBNb25vJywgJ1NGTW9uby1SZWd1bGFyJyxcbiAgICBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIE1lbmxvLCBDb3VyaWVyLCBtb25vc3BhY2U7XG4gIC0tZm9udC1zdGFjay1zYW5zOiAnX19uZXh0anMtR2Vpc3QnLCAnR2Vpc3QnLCAtYXBwbGUtc3lzdGVtLCAnU291cmNlIFNhbnMgUHJvJyxcbiAgICBzYW5zLXNlcmlmO1xuXG4gIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLXNhbnMpO1xuICBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub25lO1xuXG4gIC8qIFRPRE86IFJlbW92ZSByZXBsYWNlZCBvbmVzLiAqL1xuICAtLXNoYWRvdy1zbTogMCAxcHggMnB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XG4gIC0tc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAtLXNoYWRvdy1tZDogMCA0cHggNnB4IC0xcHggcmdiKDAgMCAwIC8gMC4xKSwgMCAycHggNHB4IC0ycHggcmdiKDAgMCAwIC8gMC4xKTtcbiAgLS1zaGFkb3ctbGc6IDAgMTBweCAxNXB4IC0zcHggcmdiKDAgMCAwIC8gMC4xKSxcbiAgICAwIDRweCA2cHggLTRweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAtLXNoYWRvdy14bDogMCAyMHB4IDI1cHggLTVweCByZ2IoMCAwIDAgLyAwLjEpLFxuICAgIDAgOHB4IDEwcHggLTZweCByZ2IoMCAwIDAgLyAwLjEpO1xuICAtLXNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDAuMjUpO1xuICAtLXNoYWRvdy1pbm5lcjogaW5zZXQgMCAycHggNHB4IDAgcmdiKDAgMCAwIC8gMC4wNSk7XG4gIC0tc2hhZG93LW5vbmU6IDAgMCAjMDAwMDtcblxuICAtLXNoYWRvdy1zbWFsbDogMHB4IDJweCAycHggcmdiYSgwLCAwLCAwLCAwLjA0KTtcbiAgLS1zaGFkb3ctbWVudTogMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjAyKSxcbiAgICAwcHggNHB4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4wNCksIDBweCAxNnB4IDI0cHggLThweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xuXG4gIC0tZm9jdXMtY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcbiAgLS1mb2N1cy1yaW5nOiAycHggc29saWQgdmFyKC0tZm9jdXMtY29sb3IpO1xuXG4gIC0tdGltaW5nLXN3aWZ0OiBjdWJpYy1iZXppZXIoMC4yMywgMC44OCwgMC4yNiwgMC45Mik7XG4gIC0tdGltaW5nLW92ZXJsYXk6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMSk7XG4gIC8qIHByZXR0aWVyLWlnbm9yZSAqL1xuICAtLXRpbWluZy1ib3VuY2U6IGxpbmVhcigwIDAlLCAwLjAwNTg3MSAxJSwgMC4wMjIwNTggMiUsIDAuMDQ2NjEyIDMlLCAwLjA3NzgyMyA0JSwgMC4xMTQxOTkgNSUsIDAuMTU0NDQxIDYlLCAwLjE5NzQzMSA3LjAwMDAwMDAwMDAwMDAwMSUsIDAuMjQyMjA4IDglLCAwLjI4Nzk1OSA5JSwgMC4zMzM5OTUgMTAlLCAwLjM3OTc0MyAxMSUsIDAuNDI0NzMyIDEyJSwgMC40Njg1OCAxMyUsIDAuNTEwOTgyIDE0LjAwMDAwMDAwMDAwMDAwMiUsIDAuNTUxNzAyIDE1JSwgMC41OTA1NjQgMTYlLCAwLjYyNzQ0NSAxNyUsIDAuNjYyMjYxIDE4JSwgMC42OTQ5NzEgMTklLCAwLjcyNTU2MSAyMCUsIDAuNzU0MDQ3IDIxJSwgMC43ODA0NjIgMjIlLCAwLjgwNDg2MSAyMyUsIDAuODI3MzEgMjQlLCAwLjg0Nzg4OCAyNSUsIDAuODY2Njc5IDI2JSwgMC44ODM3NzUgMjclLCAwLjg5OTI3MiAyOC4wMDAwMDAwMDAwMDAwMDQlLCAwLjkxMzI2NyAyOC45OTk5OTk5OTk5OTk5OTYlLCAwLjkyNTg1NiAzMCUsIDAuOTM3MTM3IDMxJSwgMC45NDcyMDUgMzIlLCAwLjk1NjE1MyAzMyUsIDAuOTY0MDcgMzQlLCAwLjk3MTA0MyAzNSUsIDAuOTc3MTUzIDM2JSwgMC45ODI0NzkgMzclLCAwLjk4NzA5NCAzOCUsIDAuOTkxMDY2IDM5JSwgMC45OTQ0NjIgNDAlLCAwLjk5NzMzOSA0MSUsIDAuOTk5NzU1IDQyJSwgMS4wMDE3NjEgNDMlLCAxLjAwMzQwNCA0NCUsIDEuMDA0NzI3IDQ1JSwgMS4wMDU3NyA0NiUsIDEuMDA2NTY5IDQ3JSwgMS4wMDcxNTcgNDglLCAxLjAwNzU2MyA0OSUsIDEuMDA3ODEzIDUwJSwgMS4wMDc5MzEgNTElLCAxLjAwNzkzOSA1MiUsIDEuMDA3ODU1IDUzJSwgMS4wMDc2OTcgNTQlLCAxLjAwNzQ3NyA1NS4wMDAwMDAwMDAwMDAwMSUsIDEuMDA3MjEgNTYuMDAwMDAwMDAwMDAwMDElLCAxLjAwNjkwNyA1Ni45OTk5OTk5OTk5OTk5OSUsIDEuMDA2NTc2IDU3Ljk5OTk5OTk5OTk5OTk5JSwgMS4wMDYyMjggNTklLCAxLjAwNTg2OCA2MCUsIDEuMDA1NTAzIDYxJSwgMS4wMDUxMzcgNjIlLCAxLjAwNDc3NiA2MyUsIDEuMDA0NDIyIDY0JSwgMS4wMDQwNzggNjUlLCAxLjAwMzc0NiA2NiUsIDEuMDAzNDI5IDY3JSwgMS4wMDMxMjcgNjglLCAxLjAwMjg0IDY5JSwgMS4wMDI1NzEgNzAlLCAxLjAwMjMxOCA3MSUsIDEuMDAyMDgyIDcyJSwgMS4wMDE4NjMgNzMlLCAxLjAwMTY2IDc0JSwgMS4wMDE0NzMgNzUlLCAxLjAwMTMwMSA3NiUsIDEuMDAxMTQzIDc3JSwgMS4wMDEgNzglLCAxLjAwMDg2OSA3OSUsIDEuMDAwNzUyIDgwJSwgMS4wMDA2NDUgODElLCAxLjAwMDU1IDgyJSwgMS4wMDA0NjQgODMlLCAxLjAwMDM4OCA4NCUsIDEuMDAwMzIxIDg1JSwgMS4wMDAyNjEgODYlLCAxLjAwMDIwOSA4NyUsIDEuMDAwMTYzIDg4JSwgMS4wMDAxMjMgODklLCAxLjAwMDA4OCA5MCUpO1xuXG4gIC0tcm91bmRlZC1ub25lOiAwcHg7XG4gIC0tcm91bmRlZC1zbTogMnB4O1xuICAtLXJvdW5kZWQtbWQ6IDRweDtcbiAgLS1yb3VuZGVkLW1kLTI6IDZweDtcbiAgLS1yb3VuZGVkLWxnOiA4cHg7XG4gIC0tcm91bmRlZC14bDogMTJweDtcbiAgLS1yb3VuZGVkLTJ4bDogMTZweDtcbiAgLS1yb3VuZGVkLTN4bDogMjRweDtcbiAgLS1yb3VuZGVkLTR4bDogMzJweDtcbiAgLS1yb3VuZGVkLWZ1bGw6IDk5OTlweDtcblxuICAvKiBcbiAgICBUaGlzIHZhbHVlIGdldHMgc2V0IGZyb20gdGhlIERldiBUb29scyBwcmVmZXJlbmNlcyxcbiAgICBhbmQgd2UgdXNlIHRoZSBmb2xsb3dpbmcgLS1zaXplLSogdmFyaWFibGVzIHRvIFxuICAgIHNjYWxlIHRoZSByZWxldmFudCBlbGVtZW50cy5cblxuICAgIFRoZSByZWFzb24gd2h5IHdlIGRvbid0IHJlbHkgb24gcmVtIHZhbHVlcyBpcyBiZWNhdXNlXG4gICAgaWYgYW4gYXBwIHNldHMgdGhlaXIgcm9vdCBmb250IHNpemUgdG8gc29tZXRoaW5nIHRpbnksIFxuICAgIGl0IGZlZWxzIHVuZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgYXBwIHJvb3Qgc2l6ZSBsZWFrIFxuICAgIGludG8gYSBOZXh0LmpzIHN1cmZhY2UuXG5cbiAgICBodHRwczovL2dpdGh1Yi5jb20vdmVyY2VsL25leHQuanMvZGlzY3Vzc2lvbnMvNzY4MTJcbiAgKi9cbiAgLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlOiAxO1xuICAtLXNpemUtMTogY2FsYygxcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0yOiBjYWxjKDJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTM6IGNhbGMoM3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNDogY2FsYyg0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS01OiBjYWxjKDVweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTY6IGNhbGMoNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNzogY2FsYyg3cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS04OiBjYWxjKDhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTk6IGNhbGMoOXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTA6IGNhbGMoMTBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTExOiBjYWxjKDExcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xMjogY2FsYygxMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTM6IGNhbGMoMTNweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTE0OiBjYWxjKDE0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xNTogY2FsYygxNXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMTY6IGNhbGMoMTZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTE3OiBjYWxjKDE3cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0xODogY2FsYygxOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMjA6IGNhbGMoMjBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTIyOiBjYWxjKDIycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0yNDogY2FsYygyNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMjY6IGNhbGMoMjZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTI4OiBjYWxjKDI4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0zMDogY2FsYygzMHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMzI6IGNhbGMoMzJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTM0OiBjYWxjKDM0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS0zNjogY2FsYygzNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtMzg6IGNhbGMoMzhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTQwOiBjYWxjKDQwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS00MjogY2FsYyg0MnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuICAtLXNpemUtNDQ6IGNhbGMoNDRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcbiAgLS1zaXplLTQ2OiBjYWxjKDQ2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XG4gIC0tc2l6ZS00ODogY2FsYyg0OHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xuXG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYge1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG59XG5cbmEge1xuICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS05MDApO1xuICAmOmhvdmVyIHtcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS05MDApO1xuICB9XG4gICY6Zm9jdXMtdmlzaWJsZSB7XG4gICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XG4gIH1cbn1cbmAsXCJcIix7dmVyc2lvbjozLHNvdXJjZXM6W1wid2VicGFjazovLy4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvc3R5bGVzL2RlZmF1bHQtdGhlbWUuY3NzXCJdLG5hbWVzOltdLG1hcHBpbmdzOlwiQUFBQTtFQUNFOzs7Ozs7SUFNRTtFQUNGLGtCQUFrQjs7RUFFbEIscUJBQXFCO0VBQ3JCLDBDQUEwQztFQUMxQywyQ0FBMkM7O0VBRTNDLDRCQUE0QjtFQUM1Qix5QkFBeUI7O0VBRXpCLDBCQUEwQjtFQUMxQiwwQkFBMEI7RUFDMUIsMEJBQTBCOztFQUUxQjswREFDd0Q7RUFDeEQ7Y0FDWTs7RUFFWixtQ0FBbUM7RUFDbkMsNEJBQTRCOztFQUU1QixnQ0FBZ0M7RUFDaEMsMENBQTBDO0VBQzFDLHVFQUF1RTtFQUN2RSw2RUFBNkU7RUFDN0U7bUNBQ2lDO0VBQ2pDO29DQUNrQztFQUNsQyxpREFBaUQ7RUFDakQsbURBQW1EO0VBQ25ELHdCQUF3Qjs7RUFFeEIsK0NBQStDO0VBQy9DO2dGQUM4RTs7RUFFOUUsb0NBQW9DO0VBQ3BDLDBDQUEwQzs7RUFFMUMsb0RBQW9EO0VBQ3BELHVEQUF1RDtFQUN2RCxvQkFBb0I7RUFDcEIsaTNDQUFpM0M7O0VBRWozQyxtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGlCQUFpQjtFQUNqQixtQkFBbUI7RUFDbkIsaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQixzQkFBc0I7O0VBRXRCOzs7Ozs7Ozs7OztHQVdDO0VBQ0QsMkJBQTJCO0VBQzNCLG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELG1EQUFtRDtFQUNuRCxtREFBbUQ7RUFDbkQsbURBQW1EO0VBQ25ELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEO0VBQ3JELHFEQUFxRDtFQUNyRCxxREFBcUQ7RUFDckQscURBQXFEOztFQUVyRDtJQUNFLGFBQWE7RUFDZjtBQUNGOztBQUVBOzs7Ozs7RUFNRSxrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLGdCQUFnQjtBQUNsQjs7QUFFQTtFQUNFLDRCQUE0QjtFQUM1QjtJQUNFLDRCQUE0QjtFQUM5QjtFQUNBO0lBQ0UsMEJBQTBCO0VBQzVCO0FBQ0ZcIixzb3VyY2VzQ29udGVudDpbXCI6aG9zdCB7XFxuICAvKiBcXG4gICAqIEFsdGhvdWdoIHRoZSBzdHlsZSBhcHBsaWVkIHRvIHRoZSBzaGFkb3cgaG9zdCBpcyBpc29sYXRlZCxcXG4gICAqIHRoZSBlbGVtZW50IHRoYXQgYXR0YWNoZWQgdGhlIHNoYWRvdyBob3N0IChpLmUuIFxcXCJuZXh0anMtcG9ydGFsXFxcIilcXG4gICAqIGlzIHN0aWxsIGFmZmVjdGVkIGJ5IHRoZSBwYXJlbnQncyBzdHlsZSAoZS5nLiBcXFwiYm9keVxcXCIpLiBUaGlzIG1heVxcbiAgICogb2NjdXIgc3R5bGUgY29uZmxpY3RzIGxpa2UgXFxcImRpc3BsYXk6IGZsZXhcXFwiLCB3aXRoIG90aGVyIGNoaWxkcmVuXFxuICAgKiBlbGVtZW50cyB0aGVyZWZvcmUgZ2l2ZSB0aGUgc2hhZG93IGhvc3QgYW4gYWJzb2x1dGUgcG9zaXRpb24uXFxuICAgKi9cXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG5cXG4gIC0tY29sb3ItZm9udDogIzc1NzU3NTtcXG4gIC0tY29sb3ItYmFja2Ryb3A6IHJnYmEoMjUwLCAyNTAsIDI1MCwgMC44KTtcXG4gIC0tY29sb3ItYm9yZGVyLXNoYWRvdzogcmdiYSgwLCAwLCAwLCAwLjE0NSk7XFxuXFxuICAtLWNvbG9yLXRpdGxlLWNvbG9yOiAjMWYxZjFmO1xcbiAgLS1jb2xvci1zdGFjay1ub3RlczogIzc3NztcXG5cXG4gIC0tY29sb3ItYWNjZW50cy0xOiAjODA4MDgwO1xcbiAgLS1jb2xvci1hY2NlbnRzLTI6ICMyMjIyMjI7XFxuICAtLWNvbG9yLWFjY2VudHMtMzogIzQwNDA0MDtcXG5cXG4gIC0tZm9udC1zdGFjay1tb25vc3BhY2U6ICdfX25leHRqcy1HZWlzdCBNb25vJywgJ0dlaXN0IE1vbm8nLCAnU0ZNb25vLVJlZ3VsYXInLFxcbiAgICBDb25zb2xhcywgJ0xpYmVyYXRpb24gTW9ubycsIE1lbmxvLCBDb3VyaWVyLCBtb25vc3BhY2U7XFxuICAtLWZvbnQtc3RhY2stc2FuczogJ19fbmV4dGpzLUdlaXN0JywgJ0dlaXN0JywgLWFwcGxlLXN5c3RlbSwgJ1NvdXJjZSBTYW5zIFBybycsXFxuICAgIHNhbnMtc2VyaWY7XFxuXFxuICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcXG4gIGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vbmU7XFxuXFxuICAvKiBUT0RPOiBSZW1vdmUgcmVwbGFjZWQgb25lcy4gKi9cXG4gIC0tc2hhZG93LXNtOiAwIDFweCAycHggMCByZ2IoMCAwIDAgLyAwLjA1KTtcXG4gIC0tc2hhZG93OiAwIDFweCAzcHggMCByZ2IoMCAwIDAgLyAwLjEpLCAwIDFweCAycHggLTFweCByZ2IoMCAwIDAgLyAwLjEpO1xcbiAgLS1zaGFkb3ctbWQ6IDAgNHB4IDZweCAtMXB4IHJnYigwIDAgMCAvIDAuMSksIDAgMnB4IDRweCAtMnB4IHJnYigwIDAgMCAvIDAuMSk7XFxuICAtLXNoYWRvdy1sZzogMCAxMHB4IDE1cHggLTNweCByZ2IoMCAwIDAgLyAwLjEpLFxcbiAgICAwIDRweCA2cHggLTRweCByZ2IoMCAwIDAgLyAwLjEpO1xcbiAgLS1zaGFkb3cteGw6IDAgMjBweCAyNXB4IC01cHggcmdiKDAgMCAwIC8gMC4xKSxcXG4gICAgMCA4cHggMTBweCAtNnB4IHJnYigwIDAgMCAvIDAuMSk7XFxuICAtLXNoYWRvdy0yeGw6IDAgMjVweCA1MHB4IC0xMnB4IHJnYigwIDAgMCAvIDAuMjUpO1xcbiAgLS1zaGFkb3ctaW5uZXI6IGluc2V0IDAgMnB4IDRweCAwIHJnYigwIDAgMCAvIDAuMDUpO1xcbiAgLS1zaGFkb3ctbm9uZTogMCAwICMwMDAwO1xcblxcbiAgLS1zaGFkb3ctc21hbGw6IDBweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4wNCk7XFxuICAtLXNoYWRvdy1tZW51OiAwcHggMXB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMDIpLFxcbiAgICAwcHggNHB4IDhweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC4wNCksIDBweCAxNnB4IDI0cHggLThweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xcblxcbiAgLS1mb2N1cy1jb2xvcjogdmFyKC0tY29sb3ItYmx1ZS04MDApO1xcbiAgLS1mb2N1cy1yaW5nOiAycHggc29saWQgdmFyKC0tZm9jdXMtY29sb3IpO1xcblxcbiAgLS10aW1pbmctc3dpZnQ6IGN1YmljLWJlemllcigwLjIzLCAwLjg4LCAwLjI2LCAwLjkyKTtcXG4gIC0tdGltaW5nLW92ZXJsYXk6IGN1YmljLWJlemllcigwLjE3NSwgMC44ODUsIDAuMzIsIDEuMSk7XFxuICAvKiBwcmV0dGllci1pZ25vcmUgKi9cXG4gIC0tdGltaW5nLWJvdW5jZTogbGluZWFyKDAgMCUsIDAuMDA1ODcxIDElLCAwLjAyMjA1OCAyJSwgMC4wNDY2MTIgMyUsIDAuMDc3ODIzIDQlLCAwLjExNDE5OSA1JSwgMC4xNTQ0NDEgNiUsIDAuMTk3NDMxIDcuMDAwMDAwMDAwMDAwMDAxJSwgMC4yNDIyMDggOCUsIDAuMjg3OTU5IDklLCAwLjMzMzk5NSAxMCUsIDAuMzc5NzQzIDExJSwgMC40MjQ3MzIgMTIlLCAwLjQ2ODU4IDEzJSwgMC41MTA5ODIgMTQuMDAwMDAwMDAwMDAwMDAyJSwgMC41NTE3MDIgMTUlLCAwLjU5MDU2NCAxNiUsIDAuNjI3NDQ1IDE3JSwgMC42NjIyNjEgMTglLCAwLjY5NDk3MSAxOSUsIDAuNzI1NTYxIDIwJSwgMC43NTQwNDcgMjElLCAwLjc4MDQ2MiAyMiUsIDAuODA0ODYxIDIzJSwgMC44MjczMSAyNCUsIDAuODQ3ODg4IDI1JSwgMC44NjY2NzkgMjYlLCAwLjg4Mzc3NSAyNyUsIDAuODk5MjcyIDI4LjAwMDAwMDAwMDAwMDAwNCUsIDAuOTEzMjY3IDI4Ljk5OTk5OTk5OTk5OTk5NiUsIDAuOTI1ODU2IDMwJSwgMC45MzcxMzcgMzElLCAwLjk0NzIwNSAzMiUsIDAuOTU2MTUzIDMzJSwgMC45NjQwNyAzNCUsIDAuOTcxMDQzIDM1JSwgMC45NzcxNTMgMzYlLCAwLjk4MjQ3OSAzNyUsIDAuOTg3MDk0IDM4JSwgMC45OTEwNjYgMzklLCAwLjk5NDQ2MiA0MCUsIDAuOTk3MzM5IDQxJSwgMC45OTk3NTUgNDIlLCAxLjAwMTc2MSA0MyUsIDEuMDAzNDA0IDQ0JSwgMS4wMDQ3MjcgNDUlLCAxLjAwNTc3IDQ2JSwgMS4wMDY1NjkgNDclLCAxLjAwNzE1NyA0OCUsIDEuMDA3NTYzIDQ5JSwgMS4wMDc4MTMgNTAlLCAxLjAwNzkzMSA1MSUsIDEuMDA3OTM5IDUyJSwgMS4wMDc4NTUgNTMlLCAxLjAwNzY5NyA1NCUsIDEuMDA3NDc3IDU1LjAwMDAwMDAwMDAwMDAxJSwgMS4wMDcyMSA1Ni4wMDAwMDAwMDAwMDAwMSUsIDEuMDA2OTA3IDU2Ljk5OTk5OTk5OTk5OTk5JSwgMS4wMDY1NzYgNTcuOTk5OTk5OTk5OTk5OTklLCAxLjAwNjIyOCA1OSUsIDEuMDA1ODY4IDYwJSwgMS4wMDU1MDMgNjElLCAxLjAwNTEzNyA2MiUsIDEuMDA0Nzc2IDYzJSwgMS4wMDQ0MjIgNjQlLCAxLjAwNDA3OCA2NSUsIDEuMDAzNzQ2IDY2JSwgMS4wMDM0MjkgNjclLCAxLjAwMzEyNyA2OCUsIDEuMDAyODQgNjklLCAxLjAwMjU3MSA3MCUsIDEuMDAyMzE4IDcxJSwgMS4wMDIwODIgNzIlLCAxLjAwMTg2MyA3MyUsIDEuMDAxNjYgNzQlLCAxLjAwMTQ3MyA3NSUsIDEuMDAxMzAxIDc2JSwgMS4wMDExNDMgNzclLCAxLjAwMSA3OCUsIDEuMDAwODY5IDc5JSwgMS4wMDA3NTIgODAlLCAxLjAwMDY0NSA4MSUsIDEuMDAwNTUgODIlLCAxLjAwMDQ2NCA4MyUsIDEuMDAwMzg4IDg0JSwgMS4wMDAzMjEgODUlLCAxLjAwMDI2MSA4NiUsIDEuMDAwMjA5IDg3JSwgMS4wMDAxNjMgODglLCAxLjAwMDEyMyA4OSUsIDEuMDAwMDg4IDkwJSk7XFxuXFxuICAtLXJvdW5kZWQtbm9uZTogMHB4O1xcbiAgLS1yb3VuZGVkLXNtOiAycHg7XFxuICAtLXJvdW5kZWQtbWQ6IDRweDtcXG4gIC0tcm91bmRlZC1tZC0yOiA2cHg7XFxuICAtLXJvdW5kZWQtbGc6IDhweDtcXG4gIC0tcm91bmRlZC14bDogMTJweDtcXG4gIC0tcm91bmRlZC0yeGw6IDE2cHg7XFxuICAtLXJvdW5kZWQtM3hsOiAyNHB4O1xcbiAgLS1yb3VuZGVkLTR4bDogMzJweDtcXG4gIC0tcm91bmRlZC1mdWxsOiA5OTk5cHg7XFxuXFxuICAvKiBcXG4gICAgVGhpcyB2YWx1ZSBnZXRzIHNldCBmcm9tIHRoZSBEZXYgVG9vbHMgcHJlZmVyZW5jZXMsXFxuICAgIGFuZCB3ZSB1c2UgdGhlIGZvbGxvd2luZyAtLXNpemUtKiB2YXJpYWJsZXMgdG8gXFxuICAgIHNjYWxlIHRoZSByZWxldmFudCBlbGVtZW50cy5cXG5cXG4gICAgVGhlIHJlYXNvbiB3aHkgd2UgZG9uJ3QgcmVseSBvbiByZW0gdmFsdWVzIGlzIGJlY2F1c2VcXG4gICAgaWYgYW4gYXBwIHNldHMgdGhlaXIgcm9vdCBmb250IHNpemUgdG8gc29tZXRoaW5nIHRpbnksIFxcbiAgICBpdCBmZWVscyB1bmV4cGVjdGVkIHRvIGhhdmUgdGhlIGFwcCByb290IHNpemUgbGVhayBcXG4gICAgaW50byBhIE5leHQuanMgc3VyZmFjZS5cXG5cXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzL2Rpc2N1c3Npb25zLzc2ODEyXFxuICAqL1xcbiAgLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlOiAxO1xcbiAgLS1zaXplLTE6IGNhbGMoMXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTI6IGNhbGMoMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTM6IGNhbGMoM3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTQ6IGNhbGMoNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTU6IGNhbGMoNXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTY6IGNhbGMoNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTc6IGNhbGMoN3B4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTg6IGNhbGMoOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTk6IGNhbGMoOXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTEwOiBjYWxjKDEwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTE6IGNhbGMoMTFweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xMjogY2FsYygxMnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTEzOiBjYWxjKDEzcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTQ6IGNhbGMoMTRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xNTogY2FsYygxNXB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTE2OiBjYWxjKDE2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMTc6IGNhbGMoMTdweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0xODogY2FsYygxOHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTIwOiBjYWxjKDIwcHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMjI6IGNhbGMoMjJweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0yNDogY2FsYygyNHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTI2OiBjYWxjKDI2cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMjg6IGNhbGMoMjhweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0zMDogY2FsYygzMHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTMyOiBjYWxjKDMycHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtMzQ6IGNhbGMoMzRweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS0zNjogY2FsYygzNnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTM4OiBjYWxjKDM4cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNDA6IGNhbGMoNDBweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS00MjogY2FsYyg0MnB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcbiAgLS1zaXplLTQ0OiBjYWxjKDQ0cHggLyB2YXIoLS1uZXh0anMtZGV2LXRvb2xzLXNjYWxlKSk7XFxuICAtLXNpemUtNDY6IGNhbGMoNDZweCAvIHZhcigtLW5leHRqcy1kZXYtdG9vbHMtc2NhbGUpKTtcXG4gIC0tc2l6ZS00ODogY2FsYyg0OHB4IC8gdmFyKC0tbmV4dGpzLWRldi10b29scy1zY2FsZSkpO1xcblxcbiAgQG1lZGlhIHByaW50IHtcXG4gICAgZGlzcGxheTogbm9uZTtcXG4gIH1cXG59XFxuXFxuaDEsXFxuaDIsXFxuaDMsXFxuaDQsXFxuaDUsXFxuaDYge1xcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XFxufVxcblxcbmEge1xcbiAgY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtOTAwKTtcXG4gICY6aG92ZXIge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYmx1ZS05MDApO1xcbiAgfVxcbiAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICB9XFxufVxcblwiXSxzb3VyY2VSb290OlwiXCJ9XSk7bGV0IGw9aX0sXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHQudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24odCl7dmFyIG49XCJcIixyPXZvaWQgMCE9PXRbNV07cmV0dXJuIHRbNF0mJihuKz1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KHRbNF0sXCIpIHtcIikpLHRbMl0mJihuKz1cIkBtZWRpYSBcIi5jb25jYXQodFsyXSxcIiB7XCIpKSxyJiYobis9XCJAbGF5ZXJcIi5jb25jYXQodFs1XS5sZW5ndGg+MD9cIiBcIi5jb25jYXQodFs1XSk6XCJcIixcIiB7XCIpKSxuKz1lKHQpLHImJihuKz1cIn1cIiksdFsyXSYmKG4rPVwifVwiKSx0WzRdJiYobis9XCJ9XCIpLG59KS5qb2luKFwiXCIpfSx0Lmk9ZnVuY3Rpb24oZSxuLHIsbyxhKXtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9W1tudWxsLGUsdm9pZCAwXV0pO3ZhciBpPXt9O2lmKHIpZm9yKHZhciBsPTA7bDx0aGlzLmxlbmd0aDtsKyspe3ZhciBzPXRoaXNbbF1bMF07bnVsbCE9cyYmKGlbc109ITApfWZvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXt2YXIgdT1bXS5jb25jYXQoZVtjXSk7ciYmaVt1WzBdXXx8KHZvaWQgMCE9PWEmJih2b2lkIDA9PT11WzVdfHwodVsxXT1cIkBsYXllclwiLmNvbmNhdCh1WzVdLmxlbmd0aD4wP1wiIFwiLmNvbmNhdCh1WzVdKTpcIlwiLFwiIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpKSx1WzVdPWEpLG4mJih1WzJdJiYodVsxXT1cIkBtZWRpYSBcIi5jb25jYXQodVsyXSxcIiB7XCIpLmNvbmNhdCh1WzFdLFwifVwiKSksdVsyXT1uKSxvJiYodVs0XT8odVsxXT1cIkBzdXBwb3J0cyAoXCIuY29uY2F0KHVbNF0sXCIpIHtcIikuY29uY2F0KHVbMV0sXCJ9XCIpLHVbNF09byk6dVs0XT1cIlwiLmNvbmNhdChvKSksdC5wdXNoKHUpKX19LHR9fSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZVsxXSxuPWVbM107aWYoIW4pcmV0dXJuIHQ7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYnRvYSl7dmFyIHI9YnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkobikpKSk7cmV0dXJuW3RdLmNvbmNhdChbXCIvKiMgXCIuY29uY2F0KFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KHIpLFwiICovXCIpXSkuam9pbihcIlxcblwiKX1yZXR1cm5bdF0uam9pbihcIlxcblwiKX19LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9W107ZnVuY3Rpb24gbihlKXtmb3IodmFyIG49LTEscj0wO3I8dC5sZW5ndGg7cisrKWlmKHRbcl0uaWRlbnRpZmllcj09PWUpe249cjticmVha31yZXR1cm4gbn1mdW5jdGlvbiByKGUscil7Zm9yKHZhciBvPXt9LGE9W10saT0wO2k8ZS5sZW5ndGg7aSsrKXt2YXIgbD1lW2ldLHM9ci5iYXNlP2xbMF0rci5iYXNlOmxbMF0sYz1vW3NdfHwwLHU9XCJcIi5jb25jYXQocyxcIiBcIikuY29uY2F0KGMpO29bc109YysxO3ZhciBkPW4odSksZj17Y3NzOmxbMV0sbWVkaWE6bFsyXSxzb3VyY2VNYXA6bFszXSxzdXBwb3J0czpsWzRdLGxheWVyOmxbNV19O2lmKC0xIT09ZCl0W2RdLnJlZmVyZW5jZXMrKyx0W2RdLnVwZGF0ZXIoZik7ZWxzZXt2YXIgcD1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZG9tQVBJKHQpO3JldHVybiBuLnVwZGF0ZShlKSxmdW5jdGlvbih0KXt0Pyh0LmNzcyE9PWUuY3NzfHx0Lm1lZGlhIT09ZS5tZWRpYXx8dC5zb3VyY2VNYXAhPT1lLnNvdXJjZU1hcHx8dC5zdXBwb3J0cyE9PWUuc3VwcG9ydHN8fHQubGF5ZXIhPT1lLmxheWVyKSYmbi51cGRhdGUoZT10KTpuLnJlbW92ZSgpfX0oZixyKTtyLmJ5SW5kZXg9aSx0LnNwbGljZShpLDAse2lkZW50aWZpZXI6dSx1cGRhdGVyOnAscmVmZXJlbmNlczoxfSl9YS5wdXNoKHUpfXJldHVybiBhfWUuZXhwb3J0cz1mdW5jdGlvbihlLG8pe3ZhciBhPXIoZT1lfHxbXSxvPW98fHt9KTtyZXR1cm4gZnVuY3Rpb24oZSl7ZT1lfHxbXTtmb3IodmFyIGk9MDtpPGEubGVuZ3RoO2krKyl7dmFyIGw9bihhW2ldKTt0W2xdLnJlZmVyZW5jZXMtLX1mb3IodmFyIHM9cihlLG8pLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIHU9bihhW2NdKTswPT09dFt1XS5yZWZlcmVuY2VzJiYodFt1XS51cGRhdGVyKCksdC5zcGxpY2UodSwxKSl9YT1zfX19LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtyZXR1cm4gZS5zZXRBdHRyaWJ1dGVzKHQsZS5hdHRyaWJ1dGVzKSxlLmluc2VydCh0LGUub3B0aW9ucyksdH19LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uLm5jO3QmJmUuc2V0QXR0cmlidXRlKFwibm9uY2VcIix0KX19LFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjpmdW5jdGlvbihlKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50KXJldHVybnt1cGRhdGU6ZnVuY3Rpb24oKXt9LHJlbW92ZTpmdW5jdGlvbigpe319O3ZhciB0PWUuaW5zZXJ0U3R5bGVFbGVtZW50KGUpO3JldHVybnt1cGRhdGU6ZnVuY3Rpb24obil7dmFyIHIsbyxhO3I9XCJcIixuLnN1cHBvcnRzJiYocis9XCJAc3VwcG9ydHMgKFwiLmNvbmNhdChuLnN1cHBvcnRzLFwiKSB7XCIpKSxuLm1lZGlhJiYocis9XCJAbWVkaWEgXCIuY29uY2F0KG4ubWVkaWEsXCIge1wiKSksKG89dm9pZCAwIT09bi5sYXllcikmJihyKz1cIkBsYXllclwiLmNvbmNhdChuLmxheWVyLmxlbmd0aD4wP1wiIFwiLmNvbmNhdChuLmxheWVyKTpcIlwiLFwiIHtcIikpLHIrPW4uY3NzLG8mJihyKz1cIn1cIiksbi5tZWRpYSYmKHIrPVwifVwiKSxuLnN1cHBvcnRzJiYocis9XCJ9XCIpLChhPW4uc291cmNlTWFwKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGJ0b2EmJihyKz1cIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGEpKSkpLFwiICovXCIpKSxlLnN0eWxlVGFnVHJhbnNmb3JtKHIsdCxlLm9wdGlvbnMpfSxyZW1vdmU6ZnVuY3Rpb24oKXshZnVuY3Rpb24oZSl7aWYobnVsbCE9PWUucGFyZW50Tm9kZSllLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9KHQpfX19fSxcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI6ZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7aWYodC5zdHlsZVNoZWV0KXQuc3R5bGVTaGVldC5jc3NUZXh0PWU7ZWxzZXtmb3IoO3QuZmlyc3RDaGlsZDspdC5yZW1vdmVDaGlsZCh0LmZpcnN0Q2hpbGQpO3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpfX19LFwiLi9kaXN0L2NvbXBpbGVkL2Fuc2VyL2luZGV4LmpzXCI6ZnVuY3Rpb24oZSl7KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezIxMTplPT57dmFyIHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxuPVtbe2NvbG9yOlwiMCwgMCwgMFwiLGNsYXNzOlwiYW5zaS1ibGFja1wifSx7Y29sb3I6XCIxODcsIDAsIDBcIixjbGFzczpcImFuc2ktcmVkXCJ9LHtjb2xvcjpcIjAsIDE4NywgMFwiLGNsYXNzOlwiYW5zaS1ncmVlblwifSx7Y29sb3I6XCIxODcsIDE4NywgMFwiLGNsYXNzOlwiYW5zaS15ZWxsb3dcIn0se2NvbG9yOlwiMCwgMCwgMTg3XCIsY2xhc3M6XCJhbnNpLWJsdWVcIn0se2NvbG9yOlwiMTg3LCAwLCAxODdcIixjbGFzczpcImFuc2ktbWFnZW50YVwifSx7Y29sb3I6XCIwLCAxODcsIDE4N1wiLGNsYXNzOlwiYW5zaS1jeWFuXCJ9LHtjb2xvcjpcIjI1NSwyNTUsMjU1XCIsY2xhc3M6XCJhbnNpLXdoaXRlXCJ9XSxbe2NvbG9yOlwiODUsIDg1LCA4NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQtYmxhY2tcIn0se2NvbG9yOlwiMjU1LCA4NSwgODVcIixjbGFzczpcImFuc2ktYnJpZ2h0LXJlZFwifSx7Y29sb3I6XCIwLCAyNTUsIDBcIixjbGFzczpcImFuc2ktYnJpZ2h0LWdyZWVuXCJ9LHtjb2xvcjpcIjI1NSwgMjU1LCA4NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQteWVsbG93XCJ9LHtjb2xvcjpcIjg1LCA4NSwgMjU1XCIsY2xhc3M6XCJhbnNpLWJyaWdodC1ibHVlXCJ9LHtjb2xvcjpcIjI1NSwgODUsIDI1NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQtbWFnZW50YVwifSx7Y29sb3I6XCI4NSwgMjU1LCAyNTVcIixjbGFzczpcImFuc2ktYnJpZ2h0LWN5YW5cIn0se2NvbG9yOlwiMjU1LCAyNTUsIDI1NVwiLGNsYXNzOlwiYW5zaS1icmlnaHQtd2hpdGVcIn1dXTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYoISh0aGlzIGluc3RhbmNlb2YgZSkpdGhyb3cgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO3RoaXMuZmc9dGhpcy5iZz10aGlzLmZnX3RydWVjb2xvcj10aGlzLmJnX3RydWVjb2xvcj1udWxsLHRoaXMuYnJpZ2h0PTB9cmV0dXJuIHQoZSxudWxsLFt7a2V5OlwiZXNjYXBlRm9ySHRtbFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybihuZXcgZSkuZXNjYXBlRm9ySHRtbCh0KX19LHtrZXk6XCJsaW5raWZ5XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuKG5ldyBlKS5saW5raWZ5KHQpfX0se2tleTpcImFuc2lUb0h0bWxcIix2YWx1ZTpmdW5jdGlvbih0LG4pe3JldHVybihuZXcgZSkuYW5zaVRvSHRtbCh0LG4pfX0se2tleTpcImFuc2lUb0pzb25cIix2YWx1ZTpmdW5jdGlvbih0LG4pe3JldHVybihuZXcgZSkuYW5zaVRvSnNvbih0LG4pfX0se2tleTpcImFuc2lUb1RleHRcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4obmV3IGUpLmFuc2lUb1RleHQodCl9fV0pLHQoZSxbe2tleTpcInNldHVwUGFsZXR0ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5QQUxFVFRFX0NPTE9SUz1bXTtmb3IodmFyIGU9MDtlPDI7KytlKWZvcih2YXIgdD0wO3Q8ODsrK3QpdGhpcy5QQUxFVFRFX0NPTE9SUy5wdXNoKG5bZV1bdF0uY29sb3IpO2Zvcih2YXIgcj1bMCw5NSwxMzUsMTc1LDIxNSwyNTVdLG89ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByW2VdK1wiLCBcIityW3RdK1wiLCBcIityW25dfSxhPTA7YTw2OysrYSlmb3IodmFyIGk9MDtpPDY7KytpKWZvcih2YXIgbD0wO2w8NjsrK2wpdGhpcy5QQUxFVFRFX0NPTE9SUy5wdXNoKG8oYSxpLGwpKTtmb3IodmFyIHM9OCxjPTA7YzwyNDsrK2Mscys9MTApdGhpcy5QQUxFVFRFX0NPTE9SUy5wdXNoKG8ocyxzLHMpKX19LHtrZXk6XCJlc2NhcGVGb3JIdG1sXCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWyY8Pl0vZ20sZnVuY3Rpb24oZSl7cmV0dXJuXCImXCI9PWU/XCImYW1wO1wiOlwiPFwiPT1lP1wiJmx0O1wiOlwiPlwiPT1lP1wiJmd0O1wiOlwiXCJ9KX19LHtrZXk6XCJsaW5raWZ5XCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvKGh0dHBzPzpcXC9cXC9bXlxcc10rKS9nbSxmdW5jdGlvbihlKXtyZXR1cm4nPGEgaHJlZj1cIicrZSsnXCI+JytlK1wiPC9hPlwifSl9fSx7a2V5OlwiYW5zaVRvSHRtbFwiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMucHJvY2VzcyhlLHQsITApfX0se2tleTpcImFuc2lUb0pzb25cIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybih0PXR8fHt9KS5qc29uPSEwLHQuY2xlYXJMaW5lPSExLHRoaXMucHJvY2VzcyhlLHQsITApfX0se2tleTpcImFuc2lUb1RleHRcIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wcm9jZXNzKGUse30sITEpfX0se2tleTpcInByb2Nlc3NcIix2YWx1ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyxvPWUuc3BsaXQoL1xcMDMzXFxbLyksYT1vLnNoaWZ0KCk7bnVsbD09dCYmKHQ9e30pLHQuY2xlYXJMaW5lPS9cXHIvLnRlc3QoZSk7dmFyIGk9by5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHIucHJvY2Vzc0NodW5rKGUsdCxuKX0pO2lmKHQmJnQuanNvbil7dmFyIGw9dGhpcy5wcm9jZXNzQ2h1bmtKc29uKFwiXCIpO3JldHVybiBsLmNvbnRlbnQ9YSxsLmNsZWFyTGluZT10LmNsZWFyTGluZSxpLnVuc2hpZnQobCksdC5yZW1vdmVfZW1wdHkmJihpPWkuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmlzRW1wdHkoKX0pKSxpfXJldHVybiBpLnVuc2hpZnQoYSksaS5qb2luKFwiXCIpfX0se2tleTpcInByb2Nlc3NDaHVua0pzb25cIix2YWx1ZTpmdW5jdGlvbihlLHQscil7dmFyIG89KHQ9dm9pZCAwPT09dD97fTp0KS51c2VfY2xhc3Nlcz12b2lkIDAhPT10LnVzZV9jbGFzc2VzJiZ0LnVzZV9jbGFzc2VzLGE9dC5rZXk9bz9cImNsYXNzXCI6XCJjb2xvclwiLGk9e2NvbnRlbnQ6ZSxmZzpudWxsLGJnOm51bGwsZmdfdHJ1ZWNvbG9yOm51bGwsYmdfdHJ1ZWNvbG9yOm51bGwsY2xlYXJMaW5lOnQuY2xlYXJMaW5lLGRlY29yYXRpb246bnVsbCx3YXNfcHJvY2Vzc2VkOiExLGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4haS5jb250ZW50fX0sbD1lLm1hdGNoKC9eKFshXFx4M2MtXFx4M2ZdKikoW1xcZDtdKikoW1xceDIwLVxceDJjXSpbXFx4NDAtXFx4N2VdKShbXFxzXFxTXSopL20pO2lmKCFsKXJldHVybiBpO2kuY29udGVudD1sWzRdO3ZhciBzPWxbMl0uc3BsaXQoXCI7XCIpO2lmKFwiXCIhPT1sWzFdfHxcIm1cIiE9PWxbM118fCFyKXJldHVybiBpO2Zvcih0aGlzLmRlY29yYXRpb249bnVsbDtzLmxlbmd0aD4wOyl7dmFyIGM9cGFyc2VJbnQocy5zaGlmdCgpKTtpZihpc05hTihjKXx8MD09PWMpdGhpcy5mZz10aGlzLmJnPXRoaXMuZGVjb3JhdGlvbj1udWxsO2Vsc2UgaWYoMT09PWMpdGhpcy5kZWNvcmF0aW9uPVwiYm9sZFwiO2Vsc2UgaWYoMj09PWMpdGhpcy5kZWNvcmF0aW9uPVwiZGltXCI7ZWxzZSBpZigzPT1jKXRoaXMuZGVjb3JhdGlvbj1cIml0YWxpY1wiO2Vsc2UgaWYoND09Yyl0aGlzLmRlY29yYXRpb249XCJ1bmRlcmxpbmVcIjtlbHNlIGlmKDU9PWMpdGhpcy5kZWNvcmF0aW9uPVwiYmxpbmtcIjtlbHNlIGlmKDc9PT1jKXRoaXMuZGVjb3JhdGlvbj1cInJldmVyc2VcIjtlbHNlIGlmKDg9PT1jKXRoaXMuZGVjb3JhdGlvbj1cImhpZGRlblwiO2Vsc2UgaWYoOT09PWMpdGhpcy5kZWNvcmF0aW9uPVwic3RyaWtldGhyb3VnaFwiO2Vsc2UgaWYoMzk9PWMpdGhpcy5mZz1udWxsO2Vsc2UgaWYoNDk9PWMpdGhpcy5iZz1udWxsO2Vsc2UgaWYoYz49MzAmJmM8MzgpdGhpcy5mZz1uWzBdW2MlMTBdW2FdO2Vsc2UgaWYoYz49OTAmJmM8OTgpdGhpcy5mZz1uWzFdW2MlMTBdW2FdO2Vsc2UgaWYoYz49NDAmJmM8NDgpdGhpcy5iZz1uWzBdW2MlMTBdW2FdO2Vsc2UgaWYoYz49MTAwJiZjPDEwOCl0aGlzLmJnPW5bMV1bYyUxMF1bYV07ZWxzZSBpZigzOD09PWN8fDQ4PT09Yyl7dmFyIHU9Mzg9PT1jO2lmKHMubGVuZ3RoPj0xKXt2YXIgZD1zLnNoaWZ0KCk7aWYoXCI1XCI9PT1kJiZzLmxlbmd0aD49MSl7dmFyIGY9cGFyc2VJbnQocy5zaGlmdCgpKTtpZihmPj0wJiZmPD0yNTUpaWYobyl7dmFyIHA9Zj49MTY/XCJhbnNpLXBhbGV0dGUtXCIrZjpuWysoZj43KV1bZiU4XS5jbGFzczt1P3RoaXMuZmc9cDp0aGlzLmJnPXB9ZWxzZSB0aGlzLlBBTEVUVEVfQ09MT1JTfHx0aGlzLnNldHVwUGFsZXR0ZSgpLHU/dGhpcy5mZz10aGlzLlBBTEVUVEVfQ09MT1JTW2ZdOnRoaXMuYmc9dGhpcy5QQUxFVFRFX0NPTE9SU1tmXX1lbHNlIGlmKFwiMlwiPT09ZCYmcy5sZW5ndGg+PTMpe3ZhciBoPXBhcnNlSW50KHMuc2hpZnQoKSksbT1wYXJzZUludChzLnNoaWZ0KCkpLGc9cGFyc2VJbnQocy5zaGlmdCgpKTtpZihoPj0wJiZoPD0yNTUmJm0+PTAmJm08PTI1NSYmZz49MCYmZzw9MjU1KXt2YXIgeT1oK1wiLCBcIittK1wiLCBcIitnO28/dT8odGhpcy5mZz1cImFuc2ktdHJ1ZWNvbG9yXCIsdGhpcy5mZ190cnVlY29sb3I9eSk6KHRoaXMuYmc9XCJhbnNpLXRydWVjb2xvclwiLHRoaXMuYmdfdHJ1ZWNvbG9yPXkpOnU/dGhpcy5mZz15OnRoaXMuYmc9eX19fX19cmV0dXJuIG51bGw9PT10aGlzLmZnJiZudWxsPT09dGhpcy5iZyYmbnVsbD09PXRoaXMuZGVjb3JhdGlvbnx8KGkuZmc9dGhpcy5mZyxpLmJnPXRoaXMuYmcsaS5mZ190cnVlY29sb3I9dGhpcy5mZ190cnVlY29sb3IsaS5iZ190cnVlY29sb3I9dGhpcy5iZ190cnVlY29sb3IsaS5kZWNvcmF0aW9uPXRoaXMuZGVjb3JhdGlvbixpLndhc19wcm9jZXNzZWQ9ITApLGl9fSx7a2V5OlwicHJvY2Vzc0NodW5rXCIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXM7dD10fHx7fTt2YXIgbz10aGlzLnByb2Nlc3NDaHVua0pzb24oZSx0LG4pO2lmKHQuanNvbilyZXR1cm4gbztpZihvLmlzRW1wdHkoKSlyZXR1cm5cIlwiO2lmKCFvLndhc19wcm9jZXNzZWQpcmV0dXJuIG8uY29udGVudDt2YXIgYT10LnVzZV9jbGFzc2VzLGk9W10sbD1bXSxzPXt9LGM9ZnVuY3Rpb24oZSl7dmFyIHQ9W10sbj12b2lkIDA7Zm9yKG4gaW4gZSllLmhhc093blByb3BlcnR5KG4pJiZ0LnB1c2goXCJkYXRhLVwiK24rJz1cIicrci5lc2NhcGVGb3JIdG1sKGVbbl0pKydcIicpO3JldHVybiB0Lmxlbmd0aD4wP1wiIFwiK3Quam9pbihcIiBcIik6XCJcIn07cmV0dXJuKG8uZmcmJihhPyhsLnB1c2goby5mZytcIi1mZ1wiKSxudWxsIT09by5mZ190cnVlY29sb3ImJihzW1wiYW5zaS10cnVlY29sb3ItZmdcIl09by5mZ190cnVlY29sb3Isby5mZ190cnVlY29sb3I9bnVsbCkpOmkucHVzaChcImNvbG9yOnJnYihcIitvLmZnK1wiKVwiKSksby5iZyYmKGE/KGwucHVzaChvLmJnK1wiLWJnXCIpLG51bGwhPT1vLmJnX3RydWVjb2xvciYmKHNbXCJhbnNpLXRydWVjb2xvci1iZ1wiXT1vLmJnX3RydWVjb2xvcixvLmJnX3RydWVjb2xvcj1udWxsKSk6aS5wdXNoKFwiYmFja2dyb3VuZC1jb2xvcjpyZ2IoXCIrby5iZytcIilcIikpLG8uZGVjb3JhdGlvbiYmKGE/bC5wdXNoKFwiYW5zaS1cIitvLmRlY29yYXRpb24pOlwiYm9sZFwiPT09by5kZWNvcmF0aW9uP2kucHVzaChcImZvbnQtd2VpZ2h0OmJvbGRcIik6XCJkaW1cIj09PW8uZGVjb3JhdGlvbj9pLnB1c2goXCJvcGFjaXR5OjAuNVwiKTpcIml0YWxpY1wiPT09by5kZWNvcmF0aW9uP2kucHVzaChcImZvbnQtc3R5bGU6aXRhbGljXCIpOlwicmV2ZXJzZVwiPT09by5kZWNvcmF0aW9uP2kucHVzaChcImZpbHRlcjppbnZlcnQoMTAwJSlcIik6XCJoaWRkZW5cIj09PW8uZGVjb3JhdGlvbj9pLnB1c2goXCJ2aXNpYmlsaXR5OmhpZGRlblwiKTpcInN0cmlrZXRocm91Z2hcIj09PW8uZGVjb3JhdGlvbj9pLnB1c2goXCJ0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoXCIpOmkucHVzaChcInRleHQtZGVjb3JhdGlvbjpcIitvLmRlY29yYXRpb24pKSxhKT8nPHNwYW4gY2xhc3M9XCInK2wuam9pbihcIiBcIikrJ1wiJytjKHMpK1wiPlwiK28uY29udGVudCtcIjwvc3Bhbj5cIjonPHNwYW4gc3R5bGU9XCInK2kuam9pbihcIjtcIikrJ1wiJytjKHMpK1wiPlwiK28uY29udGVudCtcIjwvc3Bhbj5cIn19XSksZX0oKX19LG49e307ZnVuY3Rpb24gcihlKXt2YXIgbz1uW2VdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgYT1uW2VdPXtleHBvcnRzOnt9fSxpPSEwO3RyeXt0W2VdKGEsYS5leHBvcnRzLHIpLGk9ITF9ZmluYWxseXtpJiZkZWxldGUgbltlXX1yZXR1cm4gYS5leHBvcnRzfXIuYWI9XCIvL1wiLGUuZXhwb3J0cz1yKDIxMSl9KSgpfSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1jbGllbnQucHJvZHVjdGlvbi5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcixvPW4oXCIuL2Rpc3QvY29tcGlsZWQvc2NoZWR1bGVyL2luZGV4LmpzXCIpLGE9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9pbmRleC5qc1wiKSxpPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2luZGV4LmpzXCIpO2Z1bmN0aW9uIGwoZSl7dmFyIHQ9XCJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvXCIrZTtpZigxPGFyZ3VtZW50cy5sZW5ndGgpe3QrPVwiP2FyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtmb3IodmFyIG49MjtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKX1yZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIitlK1wiOyB2aXNpdCBcIit0K1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn1mdW5jdGlvbiBzKGUpe3ZhciB0PWUsbj1lO2lmKGUuYWx0ZXJuYXRlKWZvcig7dC5yZXR1cm47KXQ9dC5yZXR1cm47ZWxzZXtlPXQ7ZG8gMCE9KDQwOTgmKHQ9ZSkuZmxhZ3MpJiYobj10LnJldHVybiksZT10LnJldHVybjt3aGlsZShlKX1yZXR1cm4gMz09PXQudGFnP246bnVsbH1mdW5jdGlvbiBjKGUpe2lmKDEzPT09ZS50YWcpe3ZhciB0PWUubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09dCYmbnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKHQ9ZS5tZW1vaXplZFN0YXRlKSxudWxsIT09dClyZXR1cm4gdC5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIHUoZSl7aWYoMzE9PT1lLnRhZyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKG51bGw9PT10JiZudWxsIT09KGU9ZS5hbHRlcm5hdGUpJiYodD1lLm1lbW9pemVkU3RhdGUpLG51bGwhPT10KXJldHVybiB0LmRlaHlkcmF0ZWR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChlKXtpZihzKGUpIT09ZSl0aHJvdyBFcnJvcihsKDE4OCkpfXZhciBmPU9iamVjdC5hc3NpZ24scD1TeW1ib2wuZm9yKFwicmVhY3QuZWxlbWVudFwiKSxoPVN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxtPVN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIiksZz1TeW1ib2wuZm9yKFwicmVhY3QuZnJhZ21lbnRcIikseT1TeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksdj1TeW1ib2wuZm9yKFwicmVhY3QucHJvZmlsZXJcIiksYj1TeW1ib2wuZm9yKFwicmVhY3QuY29uc3VtZXJcIiksQT1TeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSx4PVN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSx3PVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxDPVN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZV9saXN0XCIpLF89U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksaz1TeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtTeW1ib2wuZm9yKFwicmVhY3Quc2NvcGVcIik7dmFyIEU9U3ltYm9sLmZvcihcInJlYWN0LmFjdGl2aXR5XCIpO1N5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpLFN5bWJvbC5mb3IoXCJyZWFjdC50cmFjaW5nX21hcmtlclwiKTt2YXIgaj1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKTtTeW1ib2wuZm9yKFwicmVhY3Qudmlld190cmFuc2l0aW9uXCIpO3ZhciBTPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBPKGUpe3JldHVybiBudWxsPT09ZXx8XCJvYmplY3RcIiE9dHlwZW9mIGU/bnVsbDpcImZ1bmN0aW9uXCI9PXR5cGVvZihlPVMmJmVbU118fGVbXCJAQGl0ZXJhdG9yXCJdKT9lOm51bGx9dmFyIEI9U3ltYm9sLmZvcihcInJlYWN0LmNsaWVudC5yZWZlcmVuY2VcIiksUD1BcnJheS5pc0FycmF5LEk9YS5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsej1pLl9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxUPXtwZW5kaW5nOiExLGRhdGE6bnVsbCxtZXRob2Q6bnVsbCxhY3Rpb246bnVsbH0sRD1bXSxMPS0xO2Z1bmN0aW9uIE4oZSl7cmV0dXJue2N1cnJlbnQ6ZX19ZnVuY3Rpb24gUihlKXswPkx8fChlLmN1cnJlbnQ9RFtMXSxEW0xdPW51bGwsTC0tKX1mdW5jdGlvbiBNKGUsdCl7RFsrK0xdPWUuY3VycmVudCxlLmN1cnJlbnQ9dH12YXIgWj1OKG51bGwpLFU9TihudWxsKSxGPU4obnVsbCkscT1OKG51bGwpO2Z1bmN0aW9uIEgoZSx0KXtzd2l0Y2goTShGLHQpLE0oVSxlKSxNKFosbnVsbCksdC5ub2RlVHlwZSl7Y2FzZSA5OmNhc2UgMTE6ZT0oZT10LmRvY3VtZW50RWxlbWVudCkmJihlPWUubmFtZXNwYWNlVVJJKT9jaChlKTowO2JyZWFrO2RlZmF1bHQ6aWYoZT10LnRhZ05hbWUsdD10Lm5hbWVzcGFjZVVSSSllPWNtKHQ9Y2godCksZSk7ZWxzZSBzd2l0Y2goZSl7Y2FzZVwic3ZnXCI6ZT0xO2JyZWFrO2Nhc2VcIm1hdGhcIjplPTI7YnJlYWs7ZGVmYXVsdDplPTB9fVIoWiksTShaLGUpfWZ1bmN0aW9uIFYoKXtSKFopLFIoVSksUihGKX1mdW5jdGlvbiAkKGUpe251bGwhPT1lLm1lbW9pemVkU3RhdGUmJk0ocSxlKTt2YXIgdD1aLmN1cnJlbnQsbj1jbSh0LGUudHlwZSk7dCE9PW4mJihNKFUsZSksTShaLG4pKX1mdW5jdGlvbiBXKGUpe1UuY3VycmVudD09PWUmJihSKFopLFIoVSkpLHEuY3VycmVudD09PWUmJihSKHEpLGM5Ll9jdXJyZW50VmFsdWU9VCl9ZnVuY3Rpb24gWShlKXtpZih2b2lkIDA9PT10TCl0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChlKXt2YXIgdD1lLnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO3RMPXQmJnRbMV18fFwiXCIsdE49LTE8ZS5zdGFjay5pbmRleE9mKFwiXFxuICAgIGF0XCIpP1wiICg8YW5vbnltb3VzPilcIjotMTxlLnN0YWNrLmluZGV4T2YoXCJAXCIpP1wiQHVua25vd246MDowXCI6XCJcIn1yZXR1cm5cIlxcblwiK3RMK2UrdE59dmFyIEs9ITE7ZnVuY3Rpb24gWChlLHQpe2lmKCFlfHxLKXJldHVyblwiXCI7Sz0hMDt2YXIgbj1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e3ZhciByPXtEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3Q6ZnVuY3Rpb24oKXt0cnl7aWYodCl7dmFyIG49ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpfTtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkobi5wcm90b3R5cGUsXCJwcm9wc1wiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpfX0pLFwib2JqZWN0XCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KG4sW10pfWNhdGNoKGUpe3ZhciByPWV9UmVmbGVjdC5jb25zdHJ1Y3QoZSxbXSxuKX1lbHNle3RyeXtuLmNhbGwoKX1jYXRjaChlKXtyPWV9ZS5jYWxsKG4ucHJvdG90eXBlKX19ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChlKXtyPWV9KG49ZSgpKSYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi5jYXRjaCYmbi5jYXRjaChmdW5jdGlvbigpe30pfX1jYXRjaChlKXtpZihlJiZyJiZcInN0cmluZ1wiPT10eXBlb2YgZS5zdGFjaylyZXR1cm5bZS5zdGFjayxyLnN0YWNrXX1yZXR1cm5bbnVsbCxudWxsXX19O3IuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LmRpc3BsYXlOYW1lPVwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCI7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCxcIm5hbWVcIik7byYmby5jb25maWd1cmFibGUmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCxcIm5hbWVcIix7dmFsdWU6XCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIn0pO3ZhciBhPXIuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksaT1hWzBdLGw9YVsxXTtpZihpJiZsKXt2YXIgcz1pLnNwbGl0KFwiXFxuXCIpLGM9bC5zcGxpdChcIlxcblwiKTtmb3Iobz1yPTA7cjxzLmxlbmd0aCYmIXNbcl0uaW5jbHVkZXMoXCJEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3RcIik7KXIrKztmb3IoO288Yy5sZW5ndGgmJiFjW29dLmluY2x1ZGVzKFwiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290XCIpOylvKys7aWYocj09PXMubGVuZ3RofHxvPT09Yy5sZW5ndGgpZm9yKHI9cy5sZW5ndGgtMSxvPWMubGVuZ3RoLTE7MTw9ciYmMDw9byYmc1tyXSE9PWNbb107KW8tLTtmb3IoOzE8PXImJjA8PW87ci0tLG8tLSlpZihzW3JdIT09Y1tvXSl7aWYoMSE9PXJ8fDEhPT1vKWRvIGlmKHItLSxvLS0sMD5vfHxzW3JdIT09Y1tvXSl7dmFyIHU9XCJcXG5cIitzW3JdLnJlcGxhY2UoXCIgYXQgbmV3IFwiLFwiIGF0IFwiKTtyZXR1cm4gZS5kaXNwbGF5TmFtZSYmdS5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpJiYodT11LnJlcGxhY2UoXCI8YW5vbnltb3VzPlwiLGUuZGlzcGxheU5hbWUpKSx1fXdoaWxlKDE8PXImJjA8PW8pO2JyZWFrfX19ZmluYWxseXtLPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPW59cmV0dXJuKG49ZT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6XCJcIik/WShuKTpcIlwifWZ1bmN0aW9uIEcoZSl7dHJ5e3ZhciB0PVwiXCIsbj1udWxsO2RvIHQrPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUudGFnKXtjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OnJldHVybiBZKGUudHlwZSk7Y2FzZSAxNjpyZXR1cm4gWShcIkxhenlcIik7Y2FzZSAxMzpyZXR1cm4gZS5jaGlsZCE9PXQmJm51bGwhPT10P1koXCJTdXNwZW5zZSBGYWxsYmFja1wiKTpZKFwiU3VzcGVuc2VcIik7Y2FzZSAxOTpyZXR1cm4gWShcIlN1c3BlbnNlTGlzdFwiKTtjYXNlIDA6Y2FzZSAxNTpyZXR1cm4gWChlLnR5cGUsITEpO2Nhc2UgMTE6cmV0dXJuIFgoZS50eXBlLnJlbmRlciwhMSk7Y2FzZSAxOnJldHVybiBYKGUudHlwZSwhMCk7Y2FzZSAzMTpyZXR1cm4gWShcIkFjdGl2aXR5XCIpO2RlZmF1bHQ6cmV0dXJuXCJcIn19KGUsbiksbj1lLGU9ZS5yZXR1cm47d2hpbGUoZSk7cmV0dXJuIHR9Y2F0Y2goZSl7cmV0dXJuXCJcXG5FcnJvciBnZW5lcmF0aW5nIHN0YWNrOiBcIitlLm1lc3NhZ2UrXCJcXG5cIitlLnN0YWNrfX12YXIgUT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEo9by51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGVlPW8udW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssZXQ9by51bnN0YWJsZV9zaG91bGRZaWVsZCxlbj1vLnVuc3RhYmxlX3JlcXVlc3RQYWludCxlcj1vLnVuc3RhYmxlX25vdyxlbz1vLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGVhPW8udW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksZWk9by51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxlbD1vLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGVzPW8udW5zdGFibGVfTG93UHJpb3JpdHksZWM9by51bnN0YWJsZV9JZGxlUHJpb3JpdHksZXU9by5sb2csZWQ9by51bnN0YWJsZV9zZXREaXNhYmxlWWllbGRWYWx1ZSxlZj1udWxsLGVwPW51bGw7ZnVuY3Rpb24gZWgoZSl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZXUmJmVkKGUpLGVwJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlcC5zZXRTdHJpY3RNb2RlKXRyeXtlcC5zZXRTdHJpY3RNb2RlKGVmLGUpfWNhdGNoKGUpe319dmFyIGVtPU1hdGguY2x6MzI/TWF0aC5jbHozMjpmdW5jdGlvbihlKXtyZXR1cm4gMD09KGU+Pj49MCk/MzI6MzEtKGVnKGUpL2V5fDApfDB9LGVnPU1hdGgubG9nLGV5PU1hdGguTE4yLGV2PTI1NixlYj00MTk0MzA0O2Z1bmN0aW9uIGVBKGUpe3ZhciB0PTQyJmU7aWYoMCE9PXQpcmV0dXJuIHQ7c3dpdGNoKGUmLWUpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OnJldHVybiA2NDtjYXNlIDEyODpyZXR1cm4gMTI4O2Nhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiA0MTk0MDQ4JmU7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDB4MTAwMDAwMDpjYXNlIDB4MjAwMDAwMDpyZXR1cm4gMHgzYzAwMDAwJmU7Y2FzZSAweDQwMDAwMDA6cmV0dXJuIDB4NDAwMDAwMDtjYXNlIDB4ODAwMDAwMDpyZXR1cm4gMHg4MDAwMDAwO2Nhc2UgMHgxMDAwMDAwMDpyZXR1cm4gMHgxMDAwMDAwMDtjYXNlIDB4MjAwMDAwMDA6cmV0dXJuIDB4MjAwMDAwMDA7Y2FzZSAweDQwMDAwMDAwOnJldHVybiAwO2RlZmF1bHQ6cmV0dXJuIGV9fWZ1bmN0aW9uIGV4KGUsdCxuKXt2YXIgcj1lLnBlbmRpbmdMYW5lcztpZigwPT09cilyZXR1cm4gMDt2YXIgbz0wLGE9ZS5zdXNwZW5kZWRMYW5lcyxpPWUucGluZ2VkTGFuZXM7ZT1lLndhcm1MYW5lczt2YXIgbD0weDdmZmZmZmYmcjtyZXR1cm4gMCE9PWw/MCE9KHI9bCZ+YSk/bz1lQShyKTowIT0oaSY9bCk/bz1lQShpKTpufHwwIT0obj1sJn5lKSYmKG89ZUEobikpOjAhPShsPXImfmEpP289ZUEobCk6MCE9PWk/bz1lQShpKTpufHwwIT0obj1yJn5lKSYmKG89ZUEobikpLDA9PT1vPzA6MCE9PXQmJnQhPT1vJiYwPT0odCZhKSYmKChhPW8mLW8pPj0obj10Ji10KXx8MzI9PT1hJiYwIT0oNDE5NDA0OCZuKSk/dDpvfWZ1bmN0aW9uIGV3KGUsdCl7cmV0dXJuIDA9PShlLnBlbmRpbmdMYW5lcyZ+KGUuc3VzcGVuZGVkTGFuZXMmfmUucGluZ2VkTGFuZXMpJnQpfWZ1bmN0aW9uIGVDKCl7dmFyIGU9ZXY7cmV0dXJuIDA9PSg0MTk0MDQ4Jihldjw8PTEpKSYmKGV2PTI1NiksZX1mdW5jdGlvbiBlXygpe3ZhciBlPWViO3JldHVybiAwPT0oMHgzYzAwMDAwJihlYjw8PTEpKSYmKGViPTQxOTQzMDQpLGV9ZnVuY3Rpb24gZWsoZSl7Zm9yKHZhciB0PVtdLG49MDszMT5uO24rKyl0LnB1c2goZSk7cmV0dXJuIHR9ZnVuY3Rpb24gZUUoZSx0KXtlLnBlbmRpbmdMYW5lc3w9dCwweDEwMDAwMDAwIT09dCYmKGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTAsZS53YXJtTGFuZXM9MCl9ZnVuY3Rpb24gZWooZSx0LG4pe2UucGVuZGluZ0xhbmVzfD10LGUuc3VzcGVuZGVkTGFuZXMmPX50O3ZhciByPTMxLWVtKHQpO2UuZW50YW5nbGVkTGFuZXN8PXQsZS5lbnRhbmdsZW1lbnRzW3JdPTB4NDAwMDAwMDB8ZS5lbnRhbmdsZW1lbnRzW3JdfDQxOTQwOTAmbn1mdW5jdGlvbiBlUyhlLHQpe3ZhciBuPWUuZW50YW5nbGVkTGFuZXN8PXQ7Zm9yKGU9ZS5lbnRhbmdsZW1lbnRzO247KXt2YXIgcj0zMS1lbShuKSxvPTE8PHI7byZ0fGVbcl0mdCYmKGVbcl18PXQpLG4mPX5vfX1mdW5jdGlvbiBlTyhlLHQpe3ZhciBuPXQmLXQ7cmV0dXJuIDAhPSgobj0wIT0oNDImbik/MTplQihuKSkmKGUuc3VzcGVuZGVkTGFuZXN8dCkpPzA6bn1mdW5jdGlvbiBlQihlKXtzd2l0Y2goZSl7Y2FzZSAyOmU9MTticmVhaztjYXNlIDg6ZT00O2JyZWFrO2Nhc2UgMzI6ZT0xNjticmVhaztjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpjYXNlIDQxOTQzMDQ6Y2FzZSA4Mzg4NjA4OmNhc2UgMHgxMDAwMDAwOmNhc2UgMHgyMDAwMDAwOmU9MTI4O2JyZWFrO2Nhc2UgMHgxMDAwMDAwMDplPTB4ODAwMDAwMDticmVhaztkZWZhdWx0OmU9MH1yZXR1cm4gZX1mdW5jdGlvbiBlUChlKXtyZXR1cm4gMjwoZSY9LWUpPzg8ZT8wIT0oMHg3ZmZmZmZmJmUpPzMyOjB4MTAwMDAwMDA6ODoyfWZ1bmN0aW9uIGVJKCl7dmFyIGU9ei5wO3JldHVybiAwIT09ZT9lOnZvaWQgMD09PShlPXdpbmRvdy5ldmVudCk/MzI6dWQoZS50eXBlKX1mdW5jdGlvbiBleihlLHQpe3ZhciBuPXoucDt0cnl7cmV0dXJuIHoucD1lLHQoKX1maW5hbGx5e3oucD1ufX12YXIgZVQ9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksZUQ9XCJfX3JlYWN0RmliZXIkXCIrZVQsZUw9XCJfX3JlYWN0UHJvcHMkXCIrZVQsZU49XCJfX3JlYWN0Q29udGFpbmVyJFwiK2VULGVSPVwiX19yZWFjdEV2ZW50cyRcIitlVCxlTT1cIl9fcmVhY3RMaXN0ZW5lcnMkXCIrZVQsZVo9XCJfX3JlYWN0SGFuZGxlcyRcIitlVCxlVT1cIl9fcmVhY3RSZXNvdXJjZXMkXCIrZVQsZUY9XCJfX3JlYWN0TWFya2VyJFwiK2VUO2Z1bmN0aW9uIGVxKGUpe2RlbGV0ZSBlW2VEXSxkZWxldGUgZVtlTF0sZGVsZXRlIGVbZVJdLGRlbGV0ZSBlW2VNXSxkZWxldGUgZVtlWl19ZnVuY3Rpb24gZUgoZSl7dmFyIHQ9ZVtlRF07aWYodClyZXR1cm4gdDtmb3IodmFyIG49ZS5wYXJlbnROb2RlO247KXtpZih0PW5bZU5dfHxuW2VEXSl7aWYobj10LmFsdGVybmF0ZSxudWxsIT09dC5jaGlsZHx8bnVsbCE9PW4mJm51bGwhPT1uLmNoaWxkKWZvcihlPWN6KGUpO251bGwhPT1lOyl7aWYobj1lW2VEXSlyZXR1cm4gbjtlPWN6KGUpfXJldHVybiB0fW49KGU9bikucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBlVihlKXtpZihlPWVbZURdfHxlW2VOXSl7dmFyIHQ9ZS50YWc7aWYoNT09PXR8fDY9PT10fHwxMz09PXR8fDMxPT09dHx8MjY9PT10fHwyNz09PXR8fDM9PT10KXJldHVybiBlfXJldHVybiBudWxsfWZ1bmN0aW9uIGUkKGUpe3ZhciB0PWUudGFnO2lmKDU9PT10fHwyNj09PXR8fDI3PT09dHx8Nj09PXQpcmV0dXJuIGUuc3RhdGVOb2RlO3Rocm93IEVycm9yKGwoMzMpKX1mdW5jdGlvbiBlVyhlKXt2YXIgdD1lW2VVXTtyZXR1cm4gdHx8KHQ9ZVtlVV09e2hvaXN0YWJsZVN0eWxlczpuZXcgTWFwLGhvaXN0YWJsZVNjcmlwdHM6bmV3IE1hcH0pLHR9ZnVuY3Rpb24gZVkoZSl7ZVtlRl09ITB9dmFyIGVLPW5ldyBTZXQsZVg9e307ZnVuY3Rpb24gZUcoZSx0KXtlUShlLHQpLGVRKGUrXCJDYXB0dXJlXCIsdCl9ZnVuY3Rpb24gZVEoZSx0KXtmb3IoZVhbZV09dCxlPTA7ZTx0Lmxlbmd0aDtlKyspZUsuYWRkKHRbZV0pfXZhciBlSj1SZWdFeHAoXCJeWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRdWzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAwRjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFGRkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJGRUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZGRkRcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxcXHUyMDNGLVxcXFx1MjA0MF0qJFwiKSxlMD17fSxlMT17fTtmdW5jdGlvbiBlMihlLHQsbil7aWYoUS5jYWxsKGUxLHQpfHwhUS5jYWxsKGUwLHQpJiYoZUoudGVzdCh0KT9lMVt0XT0hMDooZTBbdF09ITAsITEpKSlpZihudWxsPT09billLnJlbW92ZUF0dHJpYnV0ZSh0KTtlbHNle3N3aXRjaCh0eXBlb2Ygbil7Y2FzZVwidW5kZWZpbmVkXCI6Y2FzZVwiZnVuY3Rpb25cIjpjYXNlXCJzeW1ib2xcIjplLnJlbW92ZUF0dHJpYnV0ZSh0KTtyZXR1cm47Y2FzZVwiYm9vbGVhblwiOnZhciByPXQudG9Mb3dlckNhc2UoKS5zbGljZSgwLDUpO2lmKFwiZGF0YS1cIiE9PXImJlwiYXJpYS1cIiE9PXIpcmV0dXJuIHZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUodCl9ZS5zZXRBdHRyaWJ1dGUodCxcIlwiK24pfX1mdW5jdGlvbiBlNChlLHQsbil7aWYobnVsbD09PW4pZS5yZW1vdmVBdHRyaWJ1dGUodCk7ZWxzZXtzd2l0Y2godHlwZW9mIG4pe2Nhc2VcInVuZGVmaW5lZFwiOmNhc2VcImZ1bmN0aW9uXCI6Y2FzZVwic3ltYm9sXCI6Y2FzZVwiYm9vbGVhblwiOmUucmVtb3ZlQXR0cmlidXRlKHQpO3JldHVybn1lLnNldEF0dHJpYnV0ZSh0LFwiXCIrbil9fWZ1bmN0aW9uIGU1KGUsdCxuLHIpe2lmKG51bGw9PT1yKWUucmVtb3ZlQXR0cmlidXRlKG4pO2Vsc2V7c3dpdGNoKHR5cGVvZiByKXtjYXNlXCJ1bmRlZmluZWRcIjpjYXNlXCJmdW5jdGlvblwiOmNhc2VcInN5bWJvbFwiOmNhc2VcImJvb2xlYW5cIjplLnJlbW92ZUF0dHJpYnV0ZShuKTtyZXR1cm59ZS5zZXRBdHRyaWJ1dGVOUyh0LG4sXCJcIityKX19ZnVuY3Rpb24gZTMoZSl7c3dpdGNoKHR5cGVvZiBlKXtjYXNlXCJiaWdpbnRcIjpjYXNlXCJib29sZWFuXCI6Y2FzZVwibnVtYmVyXCI6Y2FzZVwic3RyaW5nXCI6Y2FzZVwidW5kZWZpbmVkXCI6Y2FzZVwib2JqZWN0XCI6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm5cIlwifX1mdW5jdGlvbiBlNihlKXt2YXIgdD1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJlwiaW5wdXRcIj09PWUudG9Mb3dlckNhc2UoKSYmKFwiY2hlY2tib3hcIj09PXR8fFwicmFkaW9cIj09PXQpfWZ1bmN0aW9uIGU5KGUpe2lmKCFlLl92YWx1ZVRyYWNrZXIpe3ZhciB0PWU2KGUpP1wiY2hlY2tlZFwiOlwidmFsdWVcIjtlLl92YWx1ZVRyYWNrZXI9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsdCk7aWYoIWUuaGFzT3duUHJvcGVydHkodCkmJnZvaWQgMCE9PXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIuZ2V0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLnNldCl7dmFyIG89ci5nZXQsYT1yLnNldDtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvLmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtuPVwiXCIrZSxhLmNhbGwodGhpcyxlKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOnIuZW51bWVyYWJsZX0pLHtnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBufSxzZXRWYWx1ZTpmdW5jdGlvbihlKXtuPVwiXCIrZX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7ZS5fdmFsdWVUcmFja2VyPW51bGwsZGVsZXRlIGVbdF19fX19KGUsdCxcIlwiK2VbdF0pfX1mdW5jdGlvbiBlOChlKXtpZighZSlyZXR1cm4hMTt2YXIgdD1lLl92YWx1ZVRyYWNrZXI7aWYoIXQpcmV0dXJuITA7dmFyIG49dC5nZXRWYWx1ZSgpLHI9XCJcIjtyZXR1cm4gZSYmKHI9ZTYoZSk/ZS5jaGVja2VkP1widHJ1ZVwiOlwiZmFsc2VcIjplLnZhbHVlKSwoZT1yKSE9PW4mJih0LnNldFZhbHVlKGUpLCEwKX1mdW5jdGlvbiBlNyhlKXtpZih2b2lkIDA9PT0oZT1lfHwoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50OnZvaWQgMCkpKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2godCl7cmV0dXJuIGUuYm9keX19dmFyIHRlPS9bXFxuXCJcXFxcXS9nO2Z1bmN0aW9uIHR0KGUpe3JldHVybiBlLnJlcGxhY2UodGUsZnVuY3Rpb24oZSl7cmV0dXJuXCJcXFxcXCIrZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KStcIiBcIn0pfWZ1bmN0aW9uIHRuKGUsdCxuLHIsbyxhLGksbCl7ZS5uYW1lPVwiXCIsbnVsbCE9aSYmXCJmdW5jdGlvblwiIT10eXBlb2YgaSYmXCJzeW1ib2xcIiE9dHlwZW9mIGkmJlwiYm9vbGVhblwiIT10eXBlb2YgaT9lLnR5cGU9aTplLnJlbW92ZUF0dHJpYnV0ZShcInR5cGVcIiksbnVsbCE9dD9cIm51bWJlclwiPT09aT8oMD09PXQmJlwiXCI9PT1lLnZhbHVlfHxlLnZhbHVlIT10KSYmKGUudmFsdWU9XCJcIitlMyh0KSk6ZS52YWx1ZSE9PVwiXCIrZTModCkmJihlLnZhbHVlPVwiXCIrZTModCkpOlwic3VibWl0XCIhPT1pJiZcInJlc2V0XCIhPT1pfHxlLnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpLG51bGwhPXQ/dG8oZSxpLGUzKHQpKTpudWxsIT1uP3RvKGUsaSxlMyhuKSk6bnVsbCE9ciYmZS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKSxudWxsPT1vJiZudWxsIT1hJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIWEpLG51bGwhPW8mJihlLmNoZWNrZWQ9byYmXCJmdW5jdGlvblwiIT10eXBlb2YgbyYmXCJzeW1ib2xcIiE9dHlwZW9mIG8pLG51bGwhPWwmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGwmJlwic3ltYm9sXCIhPXR5cGVvZiBsJiZcImJvb2xlYW5cIiE9dHlwZW9mIGw/ZS5uYW1lPVwiXCIrZTMobCk6ZS5yZW1vdmVBdHRyaWJ1dGUoXCJuYW1lXCIpfWZ1bmN0aW9uIHRyKGUsdCxuLHIsbyxhLGksbCl7aWYobnVsbCE9YSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYSYmXCJzeW1ib2xcIiE9dHlwZW9mIGEmJlwiYm9vbGVhblwiIT10eXBlb2YgYSYmKGUudHlwZT1hKSxudWxsIT10fHxudWxsIT1uKXtpZigoXCJzdWJtaXRcIj09PWF8fFwicmVzZXRcIj09PWEpJiZudWxsPT10KXJldHVybiB2b2lkIGU5KGUpO249bnVsbCE9bj9cIlwiK2UzKG4pOlwiXCIsdD1udWxsIT10P1wiXCIrZTModCk6bixsfHx0PT09ZS52YWx1ZXx8KGUudmFsdWU9dCksZS5kZWZhdWx0VmFsdWU9dH1yPVwiZnVuY3Rpb25cIiE9dHlwZW9mKHI9bnVsbCE9cj9yOm8pJiZcInN5bWJvbFwiIT10eXBlb2YgciYmISFyLGUuY2hlY2tlZD1sP2UuY2hlY2tlZDohIXIsZS5kZWZhdWx0Q2hlY2tlZD0hIXIsbnVsbCE9aSYmXCJmdW5jdGlvblwiIT10eXBlb2YgaSYmXCJzeW1ib2xcIiE9dHlwZW9mIGkmJlwiYm9vbGVhblwiIT10eXBlb2YgaSYmKGUubmFtZT1pKSxlOShlKX1mdW5jdGlvbiB0byhlLHQsbil7XCJudW1iZXJcIj09PXQmJmU3KGUub3duZXJEb2N1bWVudCk9PT1lfHxlLmRlZmF1bHRWYWx1ZT09PVwiXCIrbnx8KGUuZGVmYXVsdFZhbHVlPVwiXCIrbil9ZnVuY3Rpb24gdGEoZSx0LG4scil7aWYoZT1lLm9wdGlvbnMsdCl7dD17fTtmb3IodmFyIG89MDtvPG4ubGVuZ3RoO28rKyl0W1wiJFwiK25bb11dPSEwO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspbz10Lmhhc093blByb3BlcnR5KFwiJFwiK2Vbbl0udmFsdWUpLGVbbl0uc2VsZWN0ZWQhPT1vJiYoZVtuXS5zZWxlY3RlZD1vKSxvJiZyJiYoZVtuXS5kZWZhdWx0U2VsZWN0ZWQ9ITApfWVsc2V7Zm9yKG89MCxuPVwiXCIrZTMobiksdD1udWxsO288ZS5sZW5ndGg7bysrKXtpZihlW29dLnZhbHVlPT09bil7ZVtvXS5zZWxlY3RlZD0hMCxyJiYoZVtvXS5kZWZhdWx0U2VsZWN0ZWQ9ITApO3JldHVybn1udWxsIT09dHx8ZVtvXS5kaXNhYmxlZHx8KHQ9ZVtvXSl9bnVsbCE9PXQmJih0LnNlbGVjdGVkPSEwKX19ZnVuY3Rpb24gdGkoZSx0LG4pe2lmKG51bGwhPXQmJigodD1cIlwiK2UzKHQpKSE9PWUudmFsdWUmJihlLnZhbHVlPXQpLG51bGw9PW4pKXtlLmRlZmF1bHRWYWx1ZSE9PXQmJihlLmRlZmF1bHRWYWx1ZT10KTtyZXR1cm59ZS5kZWZhdWx0VmFsdWU9bnVsbCE9bj9cIlwiK2UzKG4pOlwiXCJ9ZnVuY3Rpb24gdGwoZSx0LG4scil7aWYobnVsbD09dCl7aWYobnVsbCE9cil7aWYobnVsbCE9bil0aHJvdyBFcnJvcihsKDkyKSk7aWYoUChyKSl7aWYoMTxyLmxlbmd0aCl0aHJvdyBFcnJvcihsKDkzKSk7cj1yWzBdfW49cn1udWxsPT1uJiYobj1cIlwiKSx0PW59ZS5kZWZhdWx0VmFsdWU9bj1lMyh0KSwocj1lLnRleHRDb250ZW50KT09PW4mJlwiXCIhPT1yJiZudWxsIT09ciYmKGUudmFsdWU9ciksZTkoZSl9ZnVuY3Rpb24gdHMoZSx0KXtpZih0KXt2YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09PWUubGFzdENoaWxkJiYzPT09bi5ub2RlVHlwZSl7bi5ub2RlVmFsdWU9dDtyZXR1cm59fWUudGV4dENvbnRlbnQ9dH12YXIgdGM9bmV3IFNldChcImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IGFzcGVjdFJhdGlvIGJvcmRlckltYWdlT3V0c2V0IGJvcmRlckltYWdlU2xpY2UgYm9yZGVySW1hZ2VXaWR0aCBib3hGbGV4IGJveEZsZXhHcm91cCBib3hPcmRpbmFsR3JvdXAgY29sdW1uQ291bnQgY29sdW1ucyBmbGV4IGZsZXhHcm93IGZsZXhQb3NpdGl2ZSBmbGV4U2hyaW5rIGZsZXhOZWdhdGl2ZSBmbGV4T3JkZXIgZ3JpZEFyZWEgZ3JpZFJvdyBncmlkUm93RW5kIGdyaWRSb3dTcGFuIGdyaWRSb3dTdGFydCBncmlkQ29sdW1uIGdyaWRDb2x1bW5FbmQgZ3JpZENvbHVtblNwYW4gZ3JpZENvbHVtblN0YXJ0IGZvbnRXZWlnaHQgbGluZUNsYW1wIGxpbmVIZWlnaHQgb3BhY2l0eSBvcmRlciBvcnBoYW5zIHNjYWxlIHRhYlNpemUgd2lkb3dzIHpJbmRleCB6b29tIGZpbGxPcGFjaXR5IGZsb29kT3BhY2l0eSBzdG9wT3BhY2l0eSBzdHJva2VEYXNoYXJyYXkgc3Ryb2tlRGFzaG9mZnNldCBzdHJva2VNaXRlcmxpbWl0IHN0cm9rZU9wYWNpdHkgc3Ryb2tlV2lkdGggTW96QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgTW96Qm94RmxleCBNb3pCb3hGbGV4R3JvdXAgTW96TGluZUNsYW1wIG1zQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgbXNGbGV4IG1zWm9vbSBtc0ZsZXhHcm93IG1zRmxleE5lZ2F0aXZlIG1zRmxleE9yZGVyIG1zRmxleFBvc2l0aXZlIG1zRmxleFNocmluayBtc0dyaWRDb2x1bW4gbXNHcmlkQ29sdW1uU3BhbiBtc0dyaWRSb3cgbXNHcmlkUm93U3BhbiBXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCBXZWJraXRCb3hGbGV4IFdlYktpdEJveEZsZXhHcm91cCBXZWJraXRCb3hPcmRpbmFsR3JvdXAgV2Via2l0Q29sdW1uQ291bnQgV2Via2l0Q29sdW1ucyBXZWJraXRGbGV4IFdlYmtpdEZsZXhHcm93IFdlYmtpdEZsZXhQb3NpdGl2ZSBXZWJraXRGbGV4U2hyaW5rIFdlYmtpdExpbmVDbGFtcFwiLnNwbGl0KFwiIFwiKSk7ZnVuY3Rpb24gdHUoZSx0LG4pe3ZhciByPTA9PT10LmluZGV4T2YoXCItLVwiKTtudWxsPT1ufHxcImJvb2xlYW5cIj09dHlwZW9mIG58fFwiXCI9PT1uP3I/ZS5zZXRQcm9wZXJ0eSh0LFwiXCIpOlwiZmxvYXRcIj09PXQ/ZS5jc3NGbG9hdD1cIlwiOmVbdF09XCJcIjpyP2Uuc2V0UHJvcGVydHkodCxuKTpcIm51bWJlclwiIT10eXBlb2Ygbnx8MD09PW58fHRjLmhhcyh0KT9cImZsb2F0XCI9PT10P2UuY3NzRmxvYXQ9bjplW3RdPShcIlwiK24pLnRyaW0oKTplW3RdPW4rXCJweFwifWZ1bmN0aW9uIHRkKGUsdCxuKXtpZihudWxsIT10JiZcIm9iamVjdFwiIT10eXBlb2YgdCl0aHJvdyBFcnJvcihsKDYyKSk7aWYoZT1lLnN0eWxlLG51bGwhPW4pe2Zvcih2YXIgciBpbiBuKSFuLmhhc093blByb3BlcnR5KHIpfHxudWxsIT10JiZ0Lmhhc093blByb3BlcnR5KHIpfHwoMD09PXIuaW5kZXhPZihcIi0tXCIpP2Uuc2V0UHJvcGVydHkocixcIlwiKTpcImZsb2F0XCI9PT1yP2UuY3NzRmxvYXQ9XCJcIjplW3JdPVwiXCIpO2Zvcih2YXIgbyBpbiB0KXI9dFtvXSx0Lmhhc093blByb3BlcnR5KG8pJiZuW29dIT09ciYmdHUoZSxvLHIpfWVsc2UgZm9yKHZhciBhIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShhKSYmdHUoZSxhLHRbYV0pfWZ1bmN0aW9uIHRmKGUpe2lmKC0xPT09ZS5pbmRleE9mKFwiLVwiKSlyZXR1cm4hMTtzd2l0Y2goZSl7Y2FzZVwiYW5ub3RhdGlvbi14bWxcIjpjYXNlXCJjb2xvci1wcm9maWxlXCI6Y2FzZVwiZm9udC1mYWNlXCI6Y2FzZVwiZm9udC1mYWNlLXNyY1wiOmNhc2VcImZvbnQtZmFjZS11cmlcIjpjYXNlXCJmb250LWZhY2UtZm9ybWF0XCI6Y2FzZVwiZm9udC1mYWNlLW5hbWVcIjpjYXNlXCJtaXNzaW5nLWdseXBoXCI6cmV0dXJuITE7ZGVmYXVsdDpyZXR1cm4hMH19dmFyIHRwPW5ldyBNYXAoW1tcImFjY2VwdENoYXJzZXRcIixcImFjY2VwdC1jaGFyc2V0XCJdLFtcImh0bWxGb3JcIixcImZvclwiXSxbXCJodHRwRXF1aXZcIixcImh0dHAtZXF1aXZcIl0sW1wiY3Jvc3NPcmlnaW5cIixcImNyb3Nzb3JpZ2luXCJdLFtcImFjY2VudEhlaWdodFwiLFwiYWNjZW50LWhlaWdodFwiXSxbXCJhbGlnbm1lbnRCYXNlbGluZVwiLFwiYWxpZ25tZW50LWJhc2VsaW5lXCJdLFtcImFyYWJpY0Zvcm1cIixcImFyYWJpYy1mb3JtXCJdLFtcImJhc2VsaW5lU2hpZnRcIixcImJhc2VsaW5lLXNoaWZ0XCJdLFtcImNhcEhlaWdodFwiLFwiY2FwLWhlaWdodFwiXSxbXCJjbGlwUGF0aFwiLFwiY2xpcC1wYXRoXCJdLFtcImNsaXBSdWxlXCIsXCJjbGlwLXJ1bGVcIl0sW1wiY29sb3JJbnRlcnBvbGF0aW9uXCIsXCJjb2xvci1pbnRlcnBvbGF0aW9uXCJdLFtcImNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnNcIixcImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVyc1wiXSxbXCJjb2xvclByb2ZpbGVcIixcImNvbG9yLXByb2ZpbGVcIl0sW1wiY29sb3JSZW5kZXJpbmdcIixcImNvbG9yLXJlbmRlcmluZ1wiXSxbXCJkb21pbmFudEJhc2VsaW5lXCIsXCJkb21pbmFudC1iYXNlbGluZVwiXSxbXCJlbmFibGVCYWNrZ3JvdW5kXCIsXCJlbmFibGUtYmFja2dyb3VuZFwiXSxbXCJmaWxsT3BhY2l0eVwiLFwiZmlsbC1vcGFjaXR5XCJdLFtcImZpbGxSdWxlXCIsXCJmaWxsLXJ1bGVcIl0sW1wiZmxvb2RDb2xvclwiLFwiZmxvb2QtY29sb3JcIl0sW1wiZmxvb2RPcGFjaXR5XCIsXCJmbG9vZC1vcGFjaXR5XCJdLFtcImZvbnRGYW1pbHlcIixcImZvbnQtZmFtaWx5XCJdLFtcImZvbnRTaXplXCIsXCJmb250LXNpemVcIl0sW1wiZm9udFNpemVBZGp1c3RcIixcImZvbnQtc2l6ZS1hZGp1c3RcIl0sW1wiZm9udFN0cmV0Y2hcIixcImZvbnQtc3RyZXRjaFwiXSxbXCJmb250U3R5bGVcIixcImZvbnQtc3R5bGVcIl0sW1wiZm9udFZhcmlhbnRcIixcImZvbnQtdmFyaWFudFwiXSxbXCJmb250V2VpZ2h0XCIsXCJmb250LXdlaWdodFwiXSxbXCJnbHlwaE5hbWVcIixcImdseXBoLW5hbWVcIl0sW1wiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxcIixcImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWxcIl0sW1wiZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsXCIsXCJnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbFwiXSxbXCJob3JpekFkdlhcIixcImhvcml6LWFkdi14XCJdLFtcImhvcml6T3JpZ2luWFwiLFwiaG9yaXotb3JpZ2luLXhcIl0sW1wiaW1hZ2VSZW5kZXJpbmdcIixcImltYWdlLXJlbmRlcmluZ1wiXSxbXCJsZXR0ZXJTcGFjaW5nXCIsXCJsZXR0ZXItc3BhY2luZ1wiXSxbXCJsaWdodGluZ0NvbG9yXCIsXCJsaWdodGluZy1jb2xvclwiXSxbXCJtYXJrZXJFbmRcIixcIm1hcmtlci1lbmRcIl0sW1wibWFya2VyTWlkXCIsXCJtYXJrZXItbWlkXCJdLFtcIm1hcmtlclN0YXJ0XCIsXCJtYXJrZXItc3RhcnRcIl0sW1wib3ZlcmxpbmVQb3NpdGlvblwiLFwib3ZlcmxpbmUtcG9zaXRpb25cIl0sW1wib3ZlcmxpbmVUaGlja25lc3NcIixcIm92ZXJsaW5lLXRoaWNrbmVzc1wiXSxbXCJwYWludE9yZGVyXCIsXCJwYWludC1vcmRlclwiXSxbXCJwYW5vc2UtMVwiLFwicGFub3NlLTFcIl0sW1wicG9pbnRlckV2ZW50c1wiLFwicG9pbnRlci1ldmVudHNcIl0sW1wicmVuZGVyaW5nSW50ZW50XCIsXCJyZW5kZXJpbmctaW50ZW50XCJdLFtcInNoYXBlUmVuZGVyaW5nXCIsXCJzaGFwZS1yZW5kZXJpbmdcIl0sW1wic3RvcENvbG9yXCIsXCJzdG9wLWNvbG9yXCJdLFtcInN0b3BPcGFjaXR5XCIsXCJzdG9wLW9wYWNpdHlcIl0sW1wic3RyaWtldGhyb3VnaFBvc2l0aW9uXCIsXCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uXCJdLFtcInN0cmlrZXRocm91Z2hUaGlja25lc3NcIixcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCJdLFtcInN0cm9rZURhc2hhcnJheVwiLFwic3Ryb2tlLWRhc2hhcnJheVwiXSxbXCJzdHJva2VEYXNob2Zmc2V0XCIsXCJzdHJva2UtZGFzaG9mZnNldFwiXSxbXCJzdHJva2VMaW5lY2FwXCIsXCJzdHJva2UtbGluZWNhcFwiXSxbXCJzdHJva2VMaW5lam9pblwiLFwic3Ryb2tlLWxpbmVqb2luXCJdLFtcInN0cm9rZU1pdGVybGltaXRcIixcInN0cm9rZS1taXRlcmxpbWl0XCJdLFtcInN0cm9rZU9wYWNpdHlcIixcInN0cm9rZS1vcGFjaXR5XCJdLFtcInN0cm9rZVdpZHRoXCIsXCJzdHJva2Utd2lkdGhcIl0sW1widGV4dEFuY2hvclwiLFwidGV4dC1hbmNob3JcIl0sW1widGV4dERlY29yYXRpb25cIixcInRleHQtZGVjb3JhdGlvblwiXSxbXCJ0ZXh0UmVuZGVyaW5nXCIsXCJ0ZXh0LXJlbmRlcmluZ1wiXSxbXCJ0cmFuc2Zvcm1PcmlnaW5cIixcInRyYW5zZm9ybS1vcmlnaW5cIl0sW1widW5kZXJsaW5lUG9zaXRpb25cIixcInVuZGVybGluZS1wb3NpdGlvblwiXSxbXCJ1bmRlcmxpbmVUaGlja25lc3NcIixcInVuZGVybGluZS10aGlja25lc3NcIl0sW1widW5pY29kZUJpZGlcIixcInVuaWNvZGUtYmlkaVwiXSxbXCJ1bmljb2RlUmFuZ2VcIixcInVuaWNvZGUtcmFuZ2VcIl0sW1widW5pdHNQZXJFbVwiLFwidW5pdHMtcGVyLWVtXCJdLFtcInZBbHBoYWJldGljXCIsXCJ2LWFscGhhYmV0aWNcIl0sW1widkhhbmdpbmdcIixcInYtaGFuZ2luZ1wiXSxbXCJ2SWRlb2dyYXBoaWNcIixcInYtaWRlb2dyYXBoaWNcIl0sW1widk1hdGhlbWF0aWNhbFwiLFwidi1tYXRoZW1hdGljYWxcIl0sW1widmVjdG9yRWZmZWN0XCIsXCJ2ZWN0b3ItZWZmZWN0XCJdLFtcInZlcnRBZHZZXCIsXCJ2ZXJ0LWFkdi15XCJdLFtcInZlcnRPcmlnaW5YXCIsXCJ2ZXJ0LW9yaWdpbi14XCJdLFtcInZlcnRPcmlnaW5ZXCIsXCJ2ZXJ0LW9yaWdpbi15XCJdLFtcIndvcmRTcGFjaW5nXCIsXCJ3b3JkLXNwYWNpbmdcIl0sW1wid3JpdGluZ01vZGVcIixcIndyaXRpbmctbW9kZVwiXSxbXCJ4bWxuc1hsaW5rXCIsXCJ4bWxuczp4bGlua1wiXSxbXCJ4SGVpZ2h0XCIsXCJ4LWhlaWdodFwiXV0pLHRoPS9eW1xcdTAwMDAtXFx1MDAxRiBdKmpbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qdltcXHJcXG5cXHRdKmFbXFxyXFxuXFx0XSpzW1xcclxcblxcdF0qY1tcXHJcXG5cXHRdKnJbXFxyXFxuXFx0XSppW1xcclxcblxcdF0qcFtcXHJcXG5cXHRdKnRbXFxyXFxuXFx0XSo6L2k7ZnVuY3Rpb24gdG0oZSl7cmV0dXJuIHRoLnRlc3QoXCJcIitlKT9cImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdSZWFjdCBoYXMgYmxvY2tlZCBhIGphdmFzY3JpcHQ6IFVSTCBhcyBhIHNlY3VyaXR5IHByZWNhdXRpb24uJylcIjplfWZ1bmN0aW9uIHRnKCl7fXZhciB0eT1udWxsO2Z1bmN0aW9uIHR2KGUpe3JldHVybihlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdykuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJihlPWUuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT1lLm5vZGVUeXBlP2UucGFyZW50Tm9kZTplfXZhciB0Yj1udWxsLHRBPW51bGw7ZnVuY3Rpb24gdHgoZSl7dmFyIHQ9ZVYoZSk7aWYodCYmKGU9dC5zdGF0ZU5vZGUpKXt2YXIgbj1lW2VMXXx8bnVsbDtzd2l0Y2goZT10LnN0YXRlTm9kZSx0LnR5cGUpe2Nhc2VcImlucHV0XCI6aWYodG4oZSxuLnZhbHVlLG4uZGVmYXVsdFZhbHVlLG4uZGVmYXVsdFZhbHVlLG4uY2hlY2tlZCxuLmRlZmF1bHRDaGVja2VkLG4udHlwZSxuLm5hbWUpLHQ9bi5uYW1lLFwicmFkaW9cIj09PW4udHlwZSYmbnVsbCE9dCl7Zm9yKG49ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO2ZvcihuPW4ucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT1cIicrdHQoXCJcIit0KSsnXCJdW3R5cGU9XCJyYWRpb1wiXScpLHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTtpZihyIT09ZSYmci5mb3JtPT09ZS5mb3JtKXt2YXIgbz1yW2VMXXx8bnVsbDtpZighbyl0aHJvdyBFcnJvcihsKDkwKSk7dG4ocixvLnZhbHVlLG8uZGVmYXVsdFZhbHVlLG8uZGVmYXVsdFZhbHVlLG8uY2hlY2tlZCxvLmRlZmF1bHRDaGVja2VkLG8udHlwZSxvLm5hbWUpfX1mb3IodD0wO3Q8bi5sZW5ndGg7dCsrKShyPW5bdF0pLmZvcm09PT1lLmZvcm0mJmU4KHIpfWJyZWFrO2Nhc2VcInRleHRhcmVhXCI6dGkoZSxuLnZhbHVlLG4uZGVmYXVsdFZhbHVlKTticmVhaztjYXNlXCJzZWxlY3RcIjpudWxsIT0odD1uLnZhbHVlKSYmdGEoZSwhIW4ubXVsdGlwbGUsdCwhMSl9fX12YXIgdHc9ITE7ZnVuY3Rpb24gdEMoZSx0LG4pe2lmKHR3KXJldHVybiBlKHQsbik7dHc9ITA7dHJ5e3JldHVybiBlKHQpfWZpbmFsbHl7aWYodHc9ITEsKG51bGwhPT10Ynx8bnVsbCE9PXRBKSYmKHNjKCksdGImJih0PXRiLGU9dEEsdEE9dGI9bnVsbCx0eCh0KSxlKSkpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyl0eChlW3RdKX19ZnVuY3Rpb24gdF8oZSx0KXt2YXIgbj1lLnN0YXRlTm9kZTtpZihudWxsPT09bilyZXR1cm4gbnVsbDt2YXIgcj1uW2VMXXx8bnVsbDtpZihudWxsPT09cilyZXR1cm4gbnVsbDtzd2l0Y2gobj1yW3RdLHQpe2Nhc2VcIm9uQ2xpY2tcIjpjYXNlXCJvbkNsaWNrQ2FwdHVyZVwiOmNhc2VcIm9uRG91YmxlQ2xpY2tcIjpjYXNlXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOmNhc2VcIm9uTW91c2VEb3duXCI6Y2FzZVwib25Nb3VzZURvd25DYXB0dXJlXCI6Y2FzZVwib25Nb3VzZU1vdmVcIjpjYXNlXCJvbk1vdXNlTW92ZUNhcHR1cmVcIjpjYXNlXCJvbk1vdXNlVXBcIjpjYXNlXCJvbk1vdXNlVXBDYXB0dXJlXCI6Y2FzZVwib25Nb3VzZUVudGVyXCI6KHI9IXIuZGlzYWJsZWQpfHwocj1cImJ1dHRvblwiIT09KGU9ZS50eXBlKSYmXCJpbnB1dFwiIT09ZSYmXCJzZWxlY3RcIiE9PWUmJlwidGV4dGFyZWFcIiE9PWUpLGU9IXI7YnJlYWs7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYobiYmXCJmdW5jdGlvblwiIT10eXBlb2Ygbil0aHJvdyBFcnJvcihsKDIzMSx0LHR5cGVvZiBuKSk7cmV0dXJuIG59dmFyIHRrPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJnZvaWQgMCE9PXdpbmRvdy5kb2N1bWVudCYmdm9pZCAwIT09d2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQsdEU9ITE7aWYodGspdHJ5e3ZhciB0aj17fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodGosXCJwYXNzaXZlXCIse2dldDpmdW5jdGlvbigpe3RFPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLHRqLHRqKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIix0aix0ail9Y2F0Y2goZSl7dEU9ITF9dmFyIHRTPW51bGwsdE89bnVsbCx0Qj1udWxsO2Z1bmN0aW9uIHRQKCl7aWYodEIpcmV0dXJuIHRCO3ZhciBlLHQsbj10TyxyPW4ubGVuZ3RoLG89XCJ2YWx1ZVwiaW4gdFM/dFMudmFsdWU6dFMudGV4dENvbnRlbnQsYT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgaT1yLWU7Zm9yKHQ9MTt0PD1pJiZuW3ItdF09PT1vW2EtdF07dCsrKTtyZXR1cm4gdEI9by5zbGljZShlLDE8dD8xLXQ6dm9pZCAwKX1mdW5jdGlvbiB0SShlKXt2YXIgdD1lLmtleUNvZGU7cmV0dXJuXCJjaGFyQ29kZVwiaW4gZT8wPT09KGU9ZS5jaGFyQ29kZSkmJjEzPT09dCYmKGU9MTMpOmU9dCwxMD09PWUmJihlPTEzKSwzMjw9ZXx8MTM9PT1lP2U6MH1mdW5jdGlvbiB0eigpe3JldHVybiEwfWZ1bmN0aW9uIHRUKCl7cmV0dXJuITF9ZnVuY3Rpb24gdEQoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGEpe2Zvcih2YXIgaSBpbiB0aGlzLl9yZWFjdE5hbWU9dCx0aGlzLl90YXJnZXRJbnN0PXIsdGhpcy50eXBlPW4sdGhpcy5uYXRpdmVFdmVudD1vLHRoaXMudGFyZ2V0PWEsdGhpcy5jdXJyZW50VGFyZ2V0PW51bGwsZSllLmhhc093blByb3BlcnR5KGkpJiYodD1lW2ldLHRoaXNbaV09dD90KG8pOm9baV0pO3JldHVybiB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD0obnVsbCE9by5kZWZhdWx0UHJldmVudGVkP28uZGVmYXVsdFByZXZlbnRlZDohMT09PW8ucmV0dXJuVmFsdWUpP3R6OnRULHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dFQsdGhpc31yZXR1cm4gZih0LnByb3RvdHlwZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6XCJ1bmtub3duXCIhPXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9dHopfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdhdGlvbigpOlwidW5rbm93blwiIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD10eil9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDp0en0pLHR9dmFyIHRMLHROLHRSLHRNLHRaLHRVPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LHRGPXREKHRVKSx0cT1mKHt9LHRVLHt2aWV3OjAsZGV0YWlsOjB9KSx0SD10RCh0cSksdFY9Zih7fSx0cSx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp0MixidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZS5yZWxhdGVkVGFyZ2V0P2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm5cIm1vdmVtZW50WFwiaW4gZT9lLm1vdmVtZW50WDooZSE9PXRaJiYodFomJlwibW91c2Vtb3ZlXCI9PT1lLnR5cGU/KHRSPWUuc2NyZWVuWC10Wi5zY3JlZW5YLHRNPWUuc2NyZWVuWS10Wi5zY3JlZW5ZKTp0TT10Uj0wLHRaPWUpLHRSKX0sbW92ZW1lbnRZOmZ1bmN0aW9uKGUpe3JldHVyblwibW92ZW1lbnRZXCJpbiBlP2UubW92ZW1lbnRZOnRNfX0pLHQkPXREKHRWKSx0Vz10RChmKHt9LHRWLHtkYXRhVHJhbnNmZXI6MH0pKSx0WT10RChmKHt9LHRxLHtyZWxhdGVkVGFyZ2V0OjB9KSksdEs9dEQoZih7fSx0VSx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkpLHRYPXREKGYoe30sdFUse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuXCJjbGlwYm9hcmREYXRhXCJpbiBlP2UuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19KSksdEc9dEQoZih7fSx0VSx7ZGF0YTowfSkpLHRRPXtFc2M6XCJFc2NhcGVcIixTcGFjZWJhcjpcIiBcIixMZWZ0OlwiQXJyb3dMZWZ0XCIsVXA6XCJBcnJvd1VwXCIsUmlnaHQ6XCJBcnJvd1JpZ2h0XCIsRG93bjpcIkFycm93RG93blwiLERlbDpcIkRlbGV0ZVwiLFdpbjpcIk9TXCIsTWVudTpcIkNvbnRleHRNZW51XCIsQXBwczpcIkNvbnRleHRNZW51XCIsU2Nyb2xsOlwiU2Nyb2xsTG9ja1wiLE1velByaW50YWJsZUtleTpcIlVuaWRlbnRpZmllZFwifSx0Sj17ODpcIkJhY2tzcGFjZVwiLDk6XCJUYWJcIiwxMjpcIkNsZWFyXCIsMTM6XCJFbnRlclwiLDE2OlwiU2hpZnRcIiwxNzpcIkNvbnRyb2xcIiwxODpcIkFsdFwiLDE5OlwiUGF1c2VcIiwyMDpcIkNhcHNMb2NrXCIsMjc6XCJFc2NhcGVcIiwzMjpcIiBcIiwzMzpcIlBhZ2VVcFwiLDM0OlwiUGFnZURvd25cIiwzNTpcIkVuZFwiLDM2OlwiSG9tZVwiLDM3OlwiQXJyb3dMZWZ0XCIsMzg6XCJBcnJvd1VwXCIsMzk6XCJBcnJvd1JpZ2h0XCIsNDA6XCJBcnJvd0Rvd25cIiw0NTpcIkluc2VydFwiLDQ2OlwiRGVsZXRlXCIsMTEyOlwiRjFcIiwxMTM6XCJGMlwiLDExNDpcIkYzXCIsMTE1OlwiRjRcIiwxMTY6XCJGNVwiLDExNzpcIkY2XCIsMTE4OlwiRjdcIiwxMTk6XCJGOFwiLDEyMDpcIkY5XCIsMTIxOlwiRjEwXCIsMTIyOlwiRjExXCIsMTIzOlwiRjEyXCIsMTQ0OlwiTnVtTG9ja1wiLDE0NTpcIlNjcm9sbExvY2tcIiwyMjQ6XCJNZXRhXCJ9LHQwPXtBbHQ6XCJhbHRLZXlcIixDb250cm9sOlwiY3RybEtleVwiLE1ldGE6XCJtZXRhS2V5XCIsU2hpZnQ6XCJzaGlmdEtleVwifTtmdW5jdGlvbiB0MShlKXt2YXIgdD10aGlzLm5hdGl2ZUV2ZW50O3JldHVybiB0LmdldE1vZGlmaWVyU3RhdGU/dC5nZXRNb2RpZmllclN0YXRlKGUpOiEhKGU9dDBbZV0pJiYhIXRbZV19ZnVuY3Rpb24gdDIoKXtyZXR1cm4gdDF9dmFyIHQ0PXREKGYoe30sdHEse2tleTpmdW5jdGlvbihlKXtpZihlLmtleSl7dmFyIHQ9dFFbZS5rZXldfHxlLmtleTtpZihcIlVuaWRlbnRpZmllZFwiIT09dClyZXR1cm4gdH1yZXR1cm5cImtleXByZXNzXCI9PT1lLnR5cGU/MTM9PT0oZT10SShlKSk/XCJFbnRlclwiOlN0cmluZy5mcm9tQ2hhckNvZGUoZSk6XCJrZXlkb3duXCI9PT1lLnR5cGV8fFwia2V5dXBcIj09PWUudHlwZT90SltlLmtleUNvZGVdfHxcIlVuaWRlbnRpZmllZFwiOlwiXCJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOnQyLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVyblwia2V5cHJlc3NcIj09PWUudHlwZT90SShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVyblwia2V5ZG93blwiPT09ZS50eXBlfHxcImtleXVwXCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVyblwia2V5cHJlc3NcIj09PWUudHlwZT90SShlKTpcImtleWRvd25cIj09PWUudHlwZXx8XCJrZXl1cFwiPT09ZS50eXBlP2Uua2V5Q29kZTowfX0pKSx0NT10RChmKHt9LHRWLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pKSx0Mz10RChmKHt9LHRxLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6dDJ9KSksdDY9dEQoZih7fSx0VSx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSksdDk9dEQoZih7fSx0Vix7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVyblwiZGVsdGFYXCJpbiBlP2UuZGVsdGFYOlwid2hlZWxEZWx0YVhcImluIGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGUpe3JldHVyblwiZGVsdGFZXCJpbiBlP2UuZGVsdGFZOlwid2hlZWxEZWx0YVlcImluIGU/LWUud2hlZWxEZWx0YVk6XCJ3aGVlbERlbHRhXCJpbiBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOjAsZGVsdGFNb2RlOjB9KSksdDg9dEQoZih7fSx0VSx7bmV3U3RhdGU6MCxvbGRTdGF0ZTowfSkpLHQ3PVs5LDEzLDI3LDMyXSxuZT10ayYmXCJDb21wb3NpdGlvbkV2ZW50XCJpbiB3aW5kb3csbnQ9bnVsbDt0ayYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYobnQ9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgbm49dGsmJlwiVGV4dEV2ZW50XCJpbiB3aW5kb3cmJiFudCxucj10ayYmKCFuZXx8bnQmJjg8bnQmJjExPj1udCksbm89ITE7ZnVuY3Rpb24gbmEoZSx0KXtzd2l0Y2goZSl7Y2FzZVwia2V5dXBcIjpyZXR1cm4gLTEhPT10Ny5pbmRleE9mKHQua2V5Q29kZSk7Y2FzZVwia2V5ZG93blwiOnJldHVybiAyMjkhPT10LmtleUNvZGU7Y2FzZVwia2V5cHJlc3NcIjpjYXNlXCJtb3VzZWRvd25cIjpjYXNlXCJmb2N1c291dFwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIG5pKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZihlPWUuZGV0YWlsKSYmXCJkYXRhXCJpbiBlP2UuZGF0YTpudWxsfXZhciBubD0hMSxucz17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCxcImRhdGV0aW1lLWxvY2FsXCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBuYyhlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJpbnB1dFwiPT09dD8hIW5zW2UudHlwZV06XCJ0ZXh0YXJlYVwiPT09dH1mdW5jdGlvbiBudShlLHQsbixyKXt0Yj90QT90QS5wdXNoKHIpOnRBPVtyXTp0Yj1yLDA8KHQ9Y3QodCxcIm9uQ2hhbmdlXCIpKS5sZW5ndGgmJihuPW5ldyB0RihcIm9uQ2hhbmdlXCIsXCJjaGFuZ2VcIixudWxsLG4sciksZS5wdXNoKHtldmVudDpuLGxpc3RlbmVyczp0fSkpfXZhciBuZD1udWxsLG5mPW51bGw7ZnVuY3Rpb24gbnAoZSl7czQoZSwwKX1mdW5jdGlvbiBuaChlKXtpZihlOChlJChlKSkpcmV0dXJuIGV9ZnVuY3Rpb24gbm0oZSx0KXtpZihcImNoYW5nZVwiPT09ZSlyZXR1cm4gdH12YXIgbmc9ITE7aWYodGspe2lmKHRrKXt2YXIgbnk9XCJvbmlucHV0XCJpbiBkb2N1bWVudDtpZighbnkpe3ZhciBudj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO252LnNldEF0dHJpYnV0ZShcIm9uaW5wdXRcIixcInJldHVybjtcIiksbnk9XCJmdW5jdGlvblwiPT10eXBlb2YgbnYub25pbnB1dH1yPW55fWVsc2Ugcj0hMTtuZz1yJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIG5iKCl7bmQmJihuZC5kZXRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIixuQSksbmY9bmQ9bnVsbCl9ZnVuY3Rpb24gbkEoZSl7aWYoXCJ2YWx1ZVwiPT09ZS5wcm9wZXJ0eU5hbWUmJm5oKG5mKSl7dmFyIHQ9W107bnUodCxuZixlLHR2KGUpKSx0QyhucCx0KX19ZnVuY3Rpb24gbngoZSx0LG4pe1wiZm9jdXNpblwiPT09ZT8obmIoKSxuZD10LG5mPW4sbmQuYXR0YWNoRXZlbnQoXCJvbnByb3BlcnR5Y2hhbmdlXCIsbkEpKTpcImZvY3Vzb3V0XCI9PT1lJiZuYigpfWZ1bmN0aW9uIG53KGUpe2lmKFwic2VsZWN0aW9uY2hhbmdlXCI9PT1lfHxcImtleXVwXCI9PT1lfHxcImtleWRvd25cIj09PWUpcmV0dXJuIG5oKG5mKX1mdW5jdGlvbiBuQyhlLHQpe2lmKFwiY2xpY2tcIj09PWUpcmV0dXJuIG5oKHQpfWZ1bmN0aW9uIG5fKGUsdCl7aWYoXCJpbnB1dFwiPT09ZXx8XCJjaGFuZ2VcIj09PWUpcmV0dXJuIG5oKHQpfXZhciBuaz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PT10JiYoMCE9PWV8fDEvZT09MS90KXx8ZSE9ZSYmdCE9dH07ZnVuY3Rpb24gbkUoZSx0KXtpZihuayhlLHQpKXJldHVybiEwO2lmKFwib2JqZWN0XCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8XCJvYmplY3RcIiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLHI9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1yLmxlbmd0aClyZXR1cm4hMTtmb3Iocj0wO3I8bi5sZW5ndGg7cisrKXt2YXIgbz1uW3JdO2lmKCFRLmNhbGwodCxvKXx8IW5rKGVbb10sdFtvXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gbmooZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIG5TKGUsdCl7dmFyIG4scj1uaihlKTtmb3IoZT0wO3I7KXtpZigzPT09ci5ub2RlVHlwZSl7aWYobj1lK3IudGV4dENvbnRlbnQubGVuZ3RoLGU8PXQmJm4+PXQpcmV0dXJue25vZGU6cixvZmZzZXQ6dC1lfTtlPW59ZTp7Zm9yKDtyOyl7aWYoci5uZXh0U2libGluZyl7cj1yLm5leHRTaWJsaW5nO2JyZWFrIGV9cj1yLnBhcmVudE5vZGV9cj12b2lkIDB9cj1uaihyKX19ZnVuY3Rpb24gbk8oZSl7ZT1udWxsIT1lJiZudWxsIT1lLm93bmVyRG9jdW1lbnQmJm51bGwhPWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldz9lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc6d2luZG93O2Zvcih2YXIgdD1lNyhlLmRvY3VtZW50KTt0IGluc3RhbmNlb2YgZS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgbj1cInN0cmluZ1wiPT10eXBlb2YgdC5jb250ZW50V2luZG93LmxvY2F0aW9uLmhyZWZ9Y2F0Y2goZSl7bj0hMX1pZihuKWU9dC5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7dD1lNyhlLmRvY3VtZW50KX1yZXR1cm4gdH1mdW5jdGlvbiBuQihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJihcImlucHV0XCI9PT10JiYoXCJ0ZXh0XCI9PT1lLnR5cGV8fFwic2VhcmNoXCI9PT1lLnR5cGV8fFwidGVsXCI9PT1lLnR5cGV8fFwidXJsXCI9PT1lLnR5cGV8fFwicGFzc3dvcmRcIj09PWUudHlwZSl8fFwidGV4dGFyZWFcIj09PXR8fFwidHJ1ZVwiPT09ZS5jb250ZW50RWRpdGFibGUpfXZhciBuUD10ayYmXCJkb2N1bWVudE1vZGVcImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLG5JPW51bGwsbno9bnVsbCxuVD1udWxsLG5EPSExO2Z1bmN0aW9uIG5MKGUsdCxuKXt2YXIgcj1uLndpbmRvdz09PW4/bi5kb2N1bWVudDo5PT09bi5ub2RlVHlwZT9uOm4ub3duZXJEb2N1bWVudDtuRHx8bnVsbD09bkl8fG5JIT09ZTcocil8fChyPVwic2VsZWN0aW9uU3RhcnRcImluKHI9bkkpJiZuQihyKT97c3RhcnQ6ci5zZWxlY3Rpb25TdGFydCxlbmQ6ci5zZWxlY3Rpb25FbmR9OnthbmNob3JOb2RlOihyPShyLm93bmVyRG9jdW1lbnQmJnIub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24oKSkuYW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6ci5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOnIuZm9jdXNOb2RlLGZvY3VzT2Zmc2V0OnIuZm9jdXNPZmZzZXR9LG5UJiZuRShuVCxyKXx8KG5UPXIsMDwocj1jdChueixcIm9uU2VsZWN0XCIpKS5sZW5ndGgmJih0PW5ldyB0RihcIm9uU2VsZWN0XCIsXCJzZWxlY3RcIixudWxsLHQsbiksZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczpyfSksdC50YXJnZXQ9bkkpKSl9ZnVuY3Rpb24gbk4oZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuW1wiV2Via2l0XCIrZV09XCJ3ZWJraXRcIit0LG5bXCJNb3pcIitlXT1cIm1velwiK3Qsbn12YXIgblI9e2FuaW1hdGlvbmVuZDpuTihcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uRW5kXCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpuTihcIkFuaW1hdGlvblwiLFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLGFuaW1hdGlvbnN0YXJ0Om5OKFwiQW5pbWF0aW9uXCIsXCJBbmltYXRpb25TdGFydFwiKSx0cmFuc2l0aW9ucnVuOm5OKFwiVHJhbnNpdGlvblwiLFwiVHJhbnNpdGlvblJ1blwiKSx0cmFuc2l0aW9uc3RhcnQ6bk4oXCJUcmFuc2l0aW9uXCIsXCJUcmFuc2l0aW9uU3RhcnRcIiksdHJhbnNpdGlvbmNhbmNlbDpuTihcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25DYW5jZWxcIiksdHJhbnNpdGlvbmVuZDpuTihcIlRyYW5zaXRpb25cIixcIlRyYW5zaXRpb25FbmRcIil9LG5NPXt9LG5aPXt9O2Z1bmN0aW9uIG5VKGUpe2lmKG5NW2VdKXJldHVybiBuTVtlXTtpZighblJbZV0pcmV0dXJuIGU7dmFyIHQsbj1uUltlXTtmb3IodCBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkodCkmJnQgaW4gblopcmV0dXJuIG5NW2VdPW5bdF07cmV0dXJuIGV9dGsmJihuWj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLnN0eWxlLFwiQW5pbWF0aW9uRXZlbnRcImluIHdpbmRvd3x8KGRlbGV0ZSBuUi5hbmltYXRpb25lbmQuYW5pbWF0aW9uLGRlbGV0ZSBuUi5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBuUi5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLFwiVHJhbnNpdGlvbkV2ZW50XCJpbiB3aW5kb3d8fGRlbGV0ZSBuUi50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pO3ZhciBuRj1uVShcImFuaW1hdGlvbmVuZFwiKSxucT1uVShcImFuaW1hdGlvbml0ZXJhdGlvblwiKSxuSD1uVShcImFuaW1hdGlvbnN0YXJ0XCIpLG5WPW5VKFwidHJhbnNpdGlvbnJ1blwiKSxuJD1uVShcInRyYW5zaXRpb25zdGFydFwiKSxuVz1uVShcInRyYW5zaXRpb25jYW5jZWxcIiksblk9blUoXCJ0cmFuc2l0aW9uZW5kXCIpLG5LPW5ldyBNYXAsblg9XCJhYm9ydCBhdXhDbGljayBiZWZvcmVUb2dnbGUgY2FuY2VsIGNhblBsYXkgY2FuUGxheVRocm91Z2ggY2xpY2sgY2xvc2UgY29udGV4dE1lbnUgY29weSBjdXQgZHJhZyBkcmFnRW5kIGRyYWdFbnRlciBkcmFnRXhpdCBkcmFnTGVhdmUgZHJhZ092ZXIgZHJhZ1N0YXJ0IGRyb3AgZHVyYXRpb25DaGFuZ2UgZW1wdGllZCBlbmNyeXB0ZWQgZW5kZWQgZXJyb3IgZ290UG9pbnRlckNhcHR1cmUgaW5wdXQgaW52YWxpZCBrZXlEb3duIGtleVByZXNzIGtleVVwIGxvYWQgbG9hZGVkRGF0YSBsb2FkZWRNZXRhZGF0YSBsb2FkU3RhcnQgbG9zdFBvaW50ZXJDYXB0dXJlIG1vdXNlRG93biBtb3VzZU1vdmUgbW91c2VPdXQgbW91c2VPdmVyIG1vdXNlVXAgcGFzdGUgcGF1c2UgcGxheSBwbGF5aW5nIHBvaW50ZXJDYW5jZWwgcG9pbnRlckRvd24gcG9pbnRlck1vdmUgcG9pbnRlck91dCBwb2ludGVyT3ZlciBwb2ludGVyVXAgcHJvZ3Jlc3MgcmF0ZUNoYW5nZSByZXNldCByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdWJtaXQgc3VzcGVuZCB0aW1lVXBkYXRlIHRvdWNoQ2FuY2VsIHRvdWNoRW5kIHRvdWNoU3RhcnQgdm9sdW1lQ2hhbmdlIHNjcm9sbCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcIiBcIik7ZnVuY3Rpb24gbkcoZSx0KXtuSy5zZXQoZSx0KSxlRyh0LFtlXSl9blgucHVzaChcInNjcm9sbEVuZFwiKTt2YXIgblE9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVwb3J0RXJyb3I/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LkVycm9yRXZlbnQpe3ZhciB0PW5ldyB3aW5kb3cuRXJyb3JFdmVudChcImVycm9yXCIse2J1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxtZXNzYWdlOlwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmXCJzdHJpbmdcIj09dHlwZW9mIGUubWVzc2FnZT9TdHJpbmcoZS5tZXNzYWdlKTpTdHJpbmcoZSksZXJyb3I6ZX0pO2lmKCF3aW5kb3cuZGlzcGF0Y2hFdmVudCh0KSlyZXR1cm59ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgcHJvY2VzcyYmXCJmdW5jdGlvblwiPT10eXBlb2YgcHJvY2Vzcy5lbWl0KXJldHVybiB2b2lkIHByb2Nlc3MuZW1pdChcInVuY2F1Z2h0RXhjZXB0aW9uXCIsZSk7Y29uc29sZS5lcnJvcihlKX0sbko9W10sbjA9MCxuMT0wO2Z1bmN0aW9uIG4yKCl7Zm9yKHZhciBlPW4wLHQ9bjE9bjA9MDt0PGU7KXt2YXIgbj1uSlt0XTtuSlt0KytdPW51bGw7dmFyIHI9bkpbdF07bkpbdCsrXT1udWxsO3ZhciBvPW5KW3RdO25KW3QrK109bnVsbDt2YXIgYT1uSlt0XTtpZihuSlt0KytdPW51bGwsbnVsbCE9PXImJm51bGwhPT1vKXt2YXIgaT1yLnBlbmRpbmc7bnVsbD09PWk/by5uZXh0PW86KG8ubmV4dD1pLm5leHQsaS5uZXh0PW8pLHIucGVuZGluZz1vfTAhPT1hJiZuNihuLG8sYSl9fWZ1bmN0aW9uIG40KGUsdCxuLHIpe25KW24wKytdPWUsbkpbbjArK109dCxuSltuMCsrXT1uLG5KW24wKytdPXIsbjF8PXIsZS5sYW5lc3w9cixudWxsIT09KGU9ZS5hbHRlcm5hdGUpJiYoZS5sYW5lc3w9cil9ZnVuY3Rpb24gbjUoZSx0LG4scil7cmV0dXJuIG40KGUsdCxuLHIpLG45KGUpfWZ1bmN0aW9uIG4zKGUsdCl7cmV0dXJuIG40KGUsbnVsbCxudWxsLHQpLG45KGUpfWZ1bmN0aW9uIG42KGUsdCxuKXtlLmxhbmVzfD1uO3ZhciByPWUuYWx0ZXJuYXRlO251bGwhPT1yJiYoci5sYW5lc3w9bik7Zm9yKHZhciBvPSExLGE9ZS5yZXR1cm47bnVsbCE9PWE7KWEuY2hpbGRMYW5lc3w9bixudWxsIT09KHI9YS5hbHRlcm5hdGUpJiYoci5jaGlsZExhbmVzfD1uKSwyMj09PWEudGFnJiYobnVsbD09PShlPWEuc3RhdGVOb2RlKXx8MSZlLl92aXNpYmlsaXR5fHwobz0hMCkpLGU9YSxhPWEucmV0dXJuO3JldHVybiAzPT09ZS50YWc/KGE9ZS5zdGF0ZU5vZGUsbyYmbnVsbCE9PXQmJihvPTMxLWVtKG4pLG51bGw9PT0ocj0oZT1hLmhpZGRlblVwZGF0ZXMpW29dKT9lW29dPVt0XTpyLnB1c2godCksdC5sYW5lPTB4MjAwMDAwMDB8biksYSk6bnVsbH1mdW5jdGlvbiBuOShlKXtpZig1MDxzdCl0aHJvdyBzdD0wLHNuPW51bGwsRXJyb3IobCgxODUpKTtmb3IodmFyIHQ9ZS5yZXR1cm47bnVsbCE9PXQ7KXQ9KGU9dCkucmV0dXJuO3JldHVybiAzPT09ZS50YWc/ZS5zdGF0ZU5vZGU6bnVsbH12YXIgbjg9e307ZnVuY3Rpb24gbjcoZSx0LG4scil7dGhpcy50YWc9ZSx0aGlzLmtleT1uLHRoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGwsdGhpcy5pbmRleD0wLHRoaXMucmVmQ2xlYW51cD10aGlzLnJlZj1udWxsLHRoaXMucGVuZGluZ1Byb3BzPXQsdGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGwsdGhpcy5tb2RlPXIsdGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wLHRoaXMuZGVsZXRpb25zPW51bGwsdGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIHJlKGUsdCxuLHIpe3JldHVybiBuZXcgbjcoZSx0LG4scil9ZnVuY3Rpb24gcnQoZSl7cmV0dXJuISghKGU9ZS5wcm90b3R5cGUpfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBybihlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09bj8oKG49cmUoZS50YWcsdCxlLmtleSxlLm1vZGUpKS5lbGVtZW50VHlwZT1lLmVsZW1lbnRUeXBlLG4udHlwZT1lLnR5cGUsbi5zdGF0ZU5vZGU9ZS5zdGF0ZU5vZGUsbi5hbHRlcm5hdGU9ZSxlLmFsdGVybmF0ZT1uKToobi5wZW5kaW5nUHJvcHM9dCxuLnR5cGU9ZS50eXBlLG4uZmxhZ3M9MCxuLnN1YnRyZWVGbGFncz0wLG4uZGVsZXRpb25zPW51bGwpLG4uZmxhZ3M9MHgzZTAwMDAwJmUuZmxhZ3Msbi5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyxuLmxhbmVzPWUubGFuZXMsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz1udWxsPT09dD9udWxsOntsYW5lczp0LmxhbmVzLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dH0sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbi5yZWZDbGVhbnVwPWUucmVmQ2xlYW51cCxufWZ1bmN0aW9uIHJyKGUsdCl7ZS5mbGFncyY9MHgzZTAwMDAyO3ZhciBuPWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09bj8oZS5jaGlsZExhbmVzPTAsZS5sYW5lcz10LGUuY2hpbGQ9bnVsbCxlLnN1YnRyZWVGbGFncz0wLGUubWVtb2l6ZWRQcm9wcz1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbCxlLmRlcGVuZGVuY2llcz1udWxsLGUuc3RhdGVOb2RlPW51bGwpOihlLmNoaWxkTGFuZXM9bi5jaGlsZExhbmVzLGUubGFuZXM9bi5sYW5lcyxlLmNoaWxkPW4uY2hpbGQsZS5zdWJ0cmVlRmxhZ3M9MCxlLmRlbGV0aW9ucz1udWxsLGUubWVtb2l6ZWRQcm9wcz1uLm1lbW9pemVkUHJvcHMsZS5tZW1vaXplZFN0YXRlPW4ubWVtb2l6ZWRTdGF0ZSxlLnVwZGF0ZVF1ZXVlPW4udXBkYXRlUXVldWUsZS50eXBlPW4udHlwZSxlLmRlcGVuZGVuY2llcz1udWxsPT09KHQ9bi5kZXBlbmRlbmNpZXMpP251bGw6e2xhbmVzOnQubGFuZXMsZmlyc3RDb250ZXh0OnQuZmlyc3RDb250ZXh0fSksZX1mdW5jdGlvbiBybyhlLHQsbixyLG8sYSl7dmFyIGk9MDtpZihyPWUsXCJmdW5jdGlvblwiPT10eXBlb2YgZSlydChlKSYmKGk9MSk7ZWxzZSBpZihcInN0cmluZ1wiPT10eXBlb2YgZSlpPSFmdW5jdGlvbihlLHQsbil7aWYoMT09PW58fG51bGwhPXQuaXRlbVByb3ApcmV0dXJuITE7c3dpdGNoKGUpe2Nhc2VcIm1ldGFcIjpjYXNlXCJ0aXRsZVwiOnJldHVybiEwO2Nhc2VcInN0eWxlXCI6aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQucHJlY2VkZW5jZXx8XCJzdHJpbmdcIiE9dHlwZW9mIHQuaHJlZnx8XCJcIj09PXQuaHJlZilicmVhaztyZXR1cm4hMDtjYXNlXCJsaW5rXCI6aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQucmVsfHxcInN0cmluZ1wiIT10eXBlb2YgdC5ocmVmfHxcIlwiPT09dC5ocmVmfHx0Lm9uTG9hZHx8dC5vbkVycm9yKWJyZWFrO2lmKFwic3R5bGVzaGVldFwiPT09dC5yZWwpcmV0dXJuIGU9dC5kaXNhYmxlZCxcInN0cmluZ1wiPT10eXBlb2YgdC5wcmVjZWRlbmNlJiZudWxsPT1lO3JldHVybiEwO2Nhc2VcInNjcmlwdFwiOmlmKHQuYXN5bmMmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuYXN5bmMmJlwic3ltYm9sXCIhPXR5cGVvZiB0LmFzeW5jJiYhdC5vbkxvYWQmJiF0Lm9uRXJyb3ImJnQuc3JjJiZcInN0cmluZ1wiPT10eXBlb2YgdC5zcmMpcmV0dXJuITB9cmV0dXJuITF9KGUsbixaLmN1cnJlbnQpP1wiaHRtbFwiPT09ZXx8XCJoZWFkXCI9PT1lfHxcImJvZHlcIj09PWU/Mjc6NToyNjtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgRTpyZXR1cm4oZT1yZSgzMSxuLHQsbykpLmVsZW1lbnRUeXBlPUUsZS5sYW5lcz1hLGU7Y2FzZSBnOnJldHVybiByYShuLmNoaWxkcmVuLG8sYSx0KTtjYXNlIHk6aT04LG98PTI0O2JyZWFrO2Nhc2UgdjpyZXR1cm4oZT1yZSgxMixuLHQsMnxvKSkuZWxlbWVudFR5cGU9dixlLmxhbmVzPWEsZTtjYXNlIHc6cmV0dXJuKGU9cmUoMTMsbix0LG8pKS5lbGVtZW50VHlwZT13LGUubGFuZXM9YSxlO2Nhc2UgQzpyZXR1cm4oZT1yZSgxOSxuLHQsbykpLmVsZW1lbnRUeXBlPUMsZS5sYW5lcz1hLGU7ZGVmYXVsdDppZihcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgQTppPTEwO2JyZWFrIGU7Y2FzZSBiOmk9OTticmVhayBlO2Nhc2UgeDppPTExO2JyZWFrIGU7Y2FzZSBfOmk9MTQ7YnJlYWsgZTtjYXNlIGs6aT0xNixyPW51bGw7YnJlYWsgZX1pPTI5LG49RXJyb3IobCgxMzAsbnVsbD09PWU/XCJudWxsXCI6dHlwZW9mIGUsXCJcIikpLHI9bnVsbH1yZXR1cm4odD1yZShpLG4sdCxvKSkuZWxlbWVudFR5cGU9ZSx0LnR5cGU9cix0LmxhbmVzPWEsdH1mdW5jdGlvbiByYShlLHQsbixyKXtyZXR1cm4oZT1yZSg3LGUscix0KSkubGFuZXM9bixlfWZ1bmN0aW9uIHJpKGUsdCxuKXtyZXR1cm4oZT1yZSg2LGUsbnVsbCx0KSkubGFuZXM9bixlfWZ1bmN0aW9uIHJsKGUpe3ZhciB0PXJlKDE4LG51bGwsbnVsbCwwKTtyZXR1cm4gdC5zdGF0ZU5vZGU9ZSx0fWZ1bmN0aW9uIHJzKGUsdCxuKXtyZXR1cm4odD1yZSg0LG51bGwhPT1lLmNoaWxkcmVuP2UuY2hpbGRyZW46W10sZS5rZXksdCkpLmxhbmVzPW4sdC5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86ZS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmUuaW1wbGVtZW50YXRpb259LHR9dmFyIHJjPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHJ1KGUsdCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJm51bGwhPT1lKXt2YXIgbj1yYy5nZXQoZSk7cmV0dXJuIHZvaWQgMCE9PW4/bjoodD17dmFsdWU6ZSxzb3VyY2U6dCxzdGFjazpHKHQpfSxyYy5zZXQoZSx0KSx0KX1yZXR1cm57dmFsdWU6ZSxzb3VyY2U6dCxzdGFjazpHKHQpfX12YXIgcmQ9W10scmY9MCxycD1udWxsLHJoPTAscm09W10scmc9MCxyeT1udWxsLHJ2PTEscmI9XCJcIjtmdW5jdGlvbiByQShlLHQpe3JkW3JmKytdPXJoLHJkW3JmKytdPXJwLHJwPWUscmg9dH1mdW5jdGlvbiByeChlLHQsbil7cm1bcmcrK109cnYscm1bcmcrK109cmIscm1bcmcrK109cnkscnk9ZTt2YXIgcj1ydjtlPXJiO3ZhciBvPTMyLWVtKHIpLTE7ciY9figxPDxvKSxuKz0xO3ZhciBhPTMyLWVtKHQpK287aWYoMzA8YSl7dmFyIGk9by1vJTU7YT0ociYoMTw8aSktMSkudG9TdHJpbmcoMzIpLHI+Pj1pLG8tPWkscnY9MTw8MzItZW0odCkrb3xuPDxvfHIscmI9YStlfWVsc2UgcnY9MTw8YXxuPDxvfHIscmI9ZX1mdW5jdGlvbiBydyhlKXtudWxsIT09ZS5yZXR1cm4mJihyQShlLDEpLHJ4KGUsMSwwKSl9ZnVuY3Rpb24gckMoZSl7Zm9yKDtlPT09cnA7KXJwPXJkWy0tcmZdLHJkW3JmXT1udWxsLHJoPXJkWy0tcmZdLHJkW3JmXT1udWxsO2Zvcig7ZT09PXJ5OylyeT1ybVstLXJnXSxybVtyZ109bnVsbCxyYj1ybVstLXJnXSxybVtyZ109bnVsbCxydj1ybVstLXJnXSxybVtyZ109bnVsbH1mdW5jdGlvbiByXyhlLHQpe3JtW3JnKytdPXJ2LHJtW3JnKytdPXJiLHJtW3JnKytdPXJ5LHJ2PXQuaWQscmI9dC5vdmVyZmxvdyxyeT1lfXZhciByaz1udWxsLHJFPW51bGwscmo9ITEsclM9bnVsbCxyTz0hMSxyQj1FcnJvcihsKDUxOSkpO2Z1bmN0aW9uIHJQKGUpe3ZhciB0PUVycm9yKGwoNDE4LDE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0/XCJ0ZXh0XCI6XCJIVE1MXCIsXCJcIikpO3Rocm93IHJOKHJ1KHQsZSkpLHJCfWZ1bmN0aW9uIHJJKGUpe3ZhciB0PWUuc3RhdGVOb2RlLG49ZS50eXBlLHI9ZS5tZW1vaXplZFByb3BzO3N3aXRjaCh0W2VEXT1lLHRbZUxdPXIsbil7Y2FzZVwiZGlhbG9nXCI6czUoXCJjYW5jZWxcIix0KSxzNShcImNsb3NlXCIsdCk7YnJlYWs7Y2FzZVwiaWZyYW1lXCI6Y2FzZVwib2JqZWN0XCI6Y2FzZVwiZW1iZWRcIjpzNShcImxvYWRcIix0KTticmVhaztjYXNlXCJ2aWRlb1wiOmNhc2VcImF1ZGlvXCI6Zm9yKG49MDtuPHMxLmxlbmd0aDtuKyspczUoczFbbl0sdCk7YnJlYWs7Y2FzZVwic291cmNlXCI6czUoXCJlcnJvclwiLHQpO2JyZWFrO2Nhc2VcImltZ1wiOmNhc2VcImltYWdlXCI6Y2FzZVwibGlua1wiOnM1KFwiZXJyb3JcIix0KSxzNShcImxvYWRcIix0KTticmVhaztjYXNlXCJkZXRhaWxzXCI6czUoXCJ0b2dnbGVcIix0KTticmVhaztjYXNlXCJpbnB1dFwiOnM1KFwiaW52YWxpZFwiLHQpLHRyKHQsci52YWx1ZSxyLmRlZmF1bHRWYWx1ZSxyLmNoZWNrZWQsci5kZWZhdWx0Q2hlY2tlZCxyLnR5cGUsci5uYW1lLCEwKTticmVhaztjYXNlXCJzZWxlY3RcIjpzNShcImludmFsaWRcIix0KTticmVhaztjYXNlXCJ0ZXh0YXJlYVwiOnM1KFwiaW52YWxpZFwiLHQpLHRsKHQsci52YWx1ZSxyLmRlZmF1bHRWYWx1ZSxyLmNoaWxkcmVuKX1cInN0cmluZ1wiIT10eXBlb2Yobj1yLmNoaWxkcmVuKSYmXCJudW1iZXJcIiE9dHlwZW9mIG4mJlwiYmlnaW50XCIhPXR5cGVvZiBufHx0LnRleHRDb250ZW50PT09XCJcIitufHwhMD09PXIuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nfHxjbCh0LnRleHRDb250ZW50LG4pPyhudWxsIT1yLnBvcG92ZXImJihzNShcImJlZm9yZXRvZ2dsZVwiLHQpLHM1KFwidG9nZ2xlXCIsdCkpLG51bGwhPXIub25TY3JvbGwmJnM1KFwic2Nyb2xsXCIsdCksbnVsbCE9ci5vblNjcm9sbEVuZCYmczUoXCJzY3JvbGxlbmRcIix0KSxudWxsIT1yLm9uQ2xpY2smJih0Lm9uY2xpY2s9dGcpLHQ9ITApOnQ9ITEsdHx8clAoZSwhMCl9ZnVuY3Rpb24gcnooZSl7Zm9yKHJrPWUucmV0dXJuO3JrOylzd2l0Y2gocmsudGFnKXtjYXNlIDU6Y2FzZSAzMTpjYXNlIDEzOnJPPSExO3JldHVybjtjYXNlIDI3OmNhc2UgMzpyTz0hMDtyZXR1cm47ZGVmYXVsdDpyaz1yay5yZXR1cm59fWZ1bmN0aW9uIHJUKGUpe2lmKGUhPT1yaylyZXR1cm4hMTtpZighcmopcmV0dXJuIHJ6KGUpLHJqPSEwLCExO3ZhciB0LG49ZS50YWc7aWYoKHQ9MyE9PW4mJjI3IT09bikmJigodD01PT09bikmJih0PVwiZm9ybVwiPT09KHQ9ZS50eXBlKXx8XCJidXR0b25cIj09PXR8fGNnKGUudHlwZSxlLm1lbW9pemVkUHJvcHMpKSx0PSF0KSx0JiZyRSYmclAoZSkscnooZSksMTM9PT1uKXtpZighKGU9bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGwoMzE3KSk7ckU9Y0koZSl9ZWxzZSBpZigzMT09PW4pe2lmKCEoZT1udWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKT9lLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IobCgzMTcpKTtyRT1jSShlKX1lbHNlIDI3PT09bj8obj1yRSxjQyhlLnR5cGUpPyhlPWNQLGNQPW51bGwsckU9ZSk6ckU9bik6ckU9cms/Y0IoZS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gckQoKXtyRT1yaz1udWxsLHJqPSExfWZ1bmN0aW9uIHJMKCl7dmFyIGU9clM7cmV0dXJuIG51bGwhPT1lJiYobnVsbD09PWxRP2xRPWU6bFEucHVzaC5hcHBseShsUSxlKSxyUz1udWxsKSxlfWZ1bmN0aW9uIHJOKGUpe251bGw9PT1yUz9yUz1bZV06clMucHVzaChlKX12YXIgclI9TihudWxsKSxyTT1udWxsLHJaPW51bGw7ZnVuY3Rpb24gclUoZSx0LG4pe00oclIsdC5fY3VycmVudFZhbHVlKSx0Ll9jdXJyZW50VmFsdWU9bn1mdW5jdGlvbiByRihlKXtlLl9jdXJyZW50VmFsdWU9clIuY3VycmVudCxSKHJSKX1mdW5jdGlvbiBycShlLHQsbil7Zm9yKDtudWxsIT09ZTspe3ZhciByPWUuYWx0ZXJuYXRlO2lmKChlLmNoaWxkTGFuZXMmdCkhPT10PyhlLmNoaWxkTGFuZXN8PXQsbnVsbCE9PXImJihyLmNoaWxkTGFuZXN8PXQpKTpudWxsIT09ciYmKHIuY2hpbGRMYW5lcyZ0KSE9PXQmJihyLmNoaWxkTGFuZXN8PXQpLGU9PT1uKWJyZWFrO2U9ZS5yZXR1cm59fWZ1bmN0aW9uIHJIKGUsdCxuLHIpe3ZhciBvPWUuY2hpbGQ7Zm9yKG51bGwhPT1vJiYoby5yZXR1cm49ZSk7bnVsbCE9PW87KXt2YXIgYT1vLmRlcGVuZGVuY2llcztpZihudWxsIT09YSl7dmFyIGk9by5jaGlsZDthPWEuZmlyc3RDb250ZXh0O2U6Zm9yKDtudWxsIT09YTspe3ZhciBzPWE7YT1vO2Zvcih2YXIgYz0wO2M8dC5sZW5ndGg7YysrKWlmKHMuY29udGV4dD09PXRbY10pe2EubGFuZXN8PW4sbnVsbCE9PShzPWEuYWx0ZXJuYXRlKSYmKHMubGFuZXN8PW4pLHJxKGEucmV0dXJuLG4sZSkscnx8KGk9bnVsbCk7YnJlYWsgZX1hPXMubmV4dH19ZWxzZSBpZigxOD09PW8udGFnKXtpZihudWxsPT09KGk9by5yZXR1cm4pKXRocm93IEVycm9yKGwoMzQxKSk7aS5sYW5lc3w9bixudWxsIT09KGE9aS5hbHRlcm5hdGUpJiYoYS5sYW5lc3w9bikscnEoaSxuLGUpLGk9bnVsbH1lbHNlIGk9by5jaGlsZDtpZihudWxsIT09aSlpLnJldHVybj1vO2Vsc2UgZm9yKGk9bztudWxsIT09aTspe2lmKGk9PT1lKXtpPW51bGw7YnJlYWt9aWYobnVsbCE9PShvPWkuc2libGluZykpe28ucmV0dXJuPWkucmV0dXJuLGk9bzticmVha31pPWkucmV0dXJufW89aX19ZnVuY3Rpb24gclYoZSx0LG4scil7ZT1udWxsO2Zvcih2YXIgbz10LGE9ITE7bnVsbCE9PW87KXtpZighYSl7aWYoMCE9KDUyNDI4OCZvLmZsYWdzKSlhPSEwO2Vsc2UgaWYoMCE9KDI2MjE0NCZvLmZsYWdzKSlicmVha31pZigxMD09PW8udGFnKXt2YXIgaT1vLmFsdGVybmF0ZTtpZihudWxsPT09aSl0aHJvdyBFcnJvcihsKDM4NykpO2lmKG51bGwhPT0oaT1pLm1lbW9pemVkUHJvcHMpKXt2YXIgcz1vLnR5cGU7bmsoby5wZW5kaW5nUHJvcHMudmFsdWUsaS52YWx1ZSl8fChudWxsIT09ZT9lLnB1c2gocyk6ZT1bc10pfX1lbHNlIGlmKG89PT1xLmN1cnJlbnQpe2lmKG51bGw9PT0oaT1vLmFsdGVybmF0ZSkpdGhyb3cgRXJyb3IobCgzODcpKTtpLm1lbW9pemVkU3RhdGUubWVtb2l6ZWRTdGF0ZSE9PW8ubWVtb2l6ZWRTdGF0ZS5tZW1vaXplZFN0YXRlJiYobnVsbCE9PWU/ZS5wdXNoKGM5KTplPVtjOV0pfW89by5yZXR1cm59bnVsbCE9PWUmJnJIKHQsZSxuLHIpLHQuZmxhZ3N8PTI2MjE0NH1mdW5jdGlvbiByJChlKXtmb3IoZT1lLmZpcnN0Q29udGV4dDtudWxsIT09ZTspe2lmKCFuayhlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZSxlLm1lbW9pemVkVmFsdWUpKXJldHVybiEwO2U9ZS5uZXh0fXJldHVybiExfWZ1bmN0aW9uIHJXKGUpe3JNPWUsclo9bnVsbCxudWxsIT09KGU9ZS5kZXBlbmRlbmNpZXMpJiYoZS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gclkoZSl7cmV0dXJuIHJYKHJNLGUpfWZ1bmN0aW9uIHJLKGUsdCl7cmV0dXJuIG51bGw9PT1yTSYmclcoZSksclgoZSx0KX1mdW5jdGlvbiByWChlLHQpe3ZhciBuPXQuX2N1cnJlbnRWYWx1ZTtpZih0PXtjb250ZXh0OnQsbWVtb2l6ZWRWYWx1ZTpuLG5leHQ6bnVsbH0sbnVsbD09PXJaKXtpZihudWxsPT09ZSl0aHJvdyBFcnJvcihsKDMwOCkpO3JaPXQsZS5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0OnR9LGUuZmxhZ3N8PTUyNDI4OH1lbHNlIHJaPXJaLm5leHQ9dDtyZXR1cm4gbn12YXIgckc9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEFib3J0Q29udHJvbGxlcj9BYm9ydENvbnRyb2xsZXI6ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PXRoaXMuc2lnbmFsPXthYm9ydGVkOiExLGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxuKXtlLnB1c2gobil9fTt0aGlzLmFib3J0PWZ1bmN0aW9uKCl7dC5hYm9ydGVkPSEwLGUuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSl9fSxyUT1vLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2sscko9by51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxyMD17JCR0eXBlb2Y6QSxDb25zdW1lcjpudWxsLFByb3ZpZGVyOm51bGwsX2N1cnJlbnRWYWx1ZTpudWxsLF9jdXJyZW50VmFsdWUyOm51bGwsX3RocmVhZENvdW50OjB9O2Z1bmN0aW9uIHIxKCl7cmV0dXJue2NvbnRyb2xsZXI6bmV3IHJHLGRhdGE6bmV3IE1hcCxyZWZDb3VudDowfX1mdW5jdGlvbiByMihlKXtlLnJlZkNvdW50LS0sMD09PWUucmVmQ291bnQmJnJRKHJKLGZ1bmN0aW9uKCl7ZS5jb250cm9sbGVyLmFib3J0KCl9KX12YXIgcjQ9bnVsbCxyNT0wLHIzPTAscjY9bnVsbDtmdW5jdGlvbiByOSgpe2lmKDA9PS0tcjUmJm51bGwhPT1yNCl7bnVsbCE9PXI2JiYocjYuc3RhdHVzPVwiZnVsZmlsbGVkXCIpO3ZhciBlPXI0O3I0PW51bGwscjM9MCxyNj1udWxsO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKSgwLGVbdF0pKCl9fXZhciByOD1JLlM7SS5TPWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4mJmZ1bmN0aW9uKGUsdCl7aWYobnVsbD09PXI0KXt2YXIgbj1yND1bXTtyNT0wLHIzPXNYKCkscjY9e3N0YXR1czpcInBlbmRpbmdcIix2YWx1ZTp2b2lkIDAsdGhlbjpmdW5jdGlvbihlKXtuLnB1c2goZSl9fX1yNSsrLHQudGhlbihyOSxyOSl9KDAsdCksbnVsbCE9PXI4JiZyOChlLHQpfTt2YXIgcjc9TihudWxsKTtmdW5jdGlvbiBvZSgpe3ZhciBlPXI3LmN1cnJlbnQ7cmV0dXJuIG51bGwhPT1lP2U6bEwucG9vbGVkQ2FjaGV9ZnVuY3Rpb24gb3QoZSx0KXtudWxsPT09dD9NKHI3LHI3LmN1cnJlbnQpOk0ocjcsdC5wb29sKX1mdW5jdGlvbiBvbigpe3ZhciBlPW9lKCk7cmV0dXJuIG51bGw9PT1lP251bGw6e3BhcmVudDpyMC5fY3VycmVudFZhbHVlLHBvb2w6ZX19dmFyIG9yPUVycm9yKGwoNDYwKSksb289RXJyb3IobCg0NzQpKSxvYT1FcnJvcihsKDU0MikpLG9pPXt0aGVuOmZ1bmN0aW9uKCl7fX07ZnVuY3Rpb24gb2woZSl7cmV0dXJuXCJmdWxmaWxsZWRcIj09PShlPWUuc3RhdHVzKXx8XCJyZWplY3RlZFwiPT09ZX1mdW5jdGlvbiBvcyhlLHQsbil7c3dpdGNoKHZvaWQgMD09PShuPWVbbl0pP2UucHVzaCh0KTpuIT09dCYmKHQudGhlbih0Zyx0ZyksdD1uKSx0LnN0YXR1cyl7Y2FzZVwiZnVsZmlsbGVkXCI6cmV0dXJuIHQudmFsdWU7Y2FzZVwicmVqZWN0ZWRcIjp0aHJvdyBvZihlPXQucmVhc29uKSxlO2RlZmF1bHQ6aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQuc3RhdHVzKXQudGhlbih0Zyx0Zyk7ZWxzZXtpZihudWxsIT09KGU9bEwpJiYxMDA8ZS5zaGVsbFN1c3BlbmRDb3VudGVyKXRocm93IEVycm9yKGwoNDgyKSk7KGU9dCkuc3RhdHVzPVwicGVuZGluZ1wiLGUudGhlbihmdW5jdGlvbihlKXtpZihcInBlbmRpbmdcIj09PXQuc3RhdHVzKXt2YXIgbj10O24uc3RhdHVzPVwiZnVsZmlsbGVkXCIsbi52YWx1ZT1lfX0sZnVuY3Rpb24oZSl7aWYoXCJwZW5kaW5nXCI9PT10LnN0YXR1cyl7dmFyIG49dDtuLnN0YXR1cz1cInJlamVjdGVkXCIsbi5yZWFzb249ZX19KX1zd2l0Y2godC5zdGF0dXMpe2Nhc2VcImZ1bGZpbGxlZFwiOnJldHVybiB0LnZhbHVlO2Nhc2VcInJlamVjdGVkXCI6dGhyb3cgb2YoZT10LnJlYXNvbiksZX10aHJvdyBvdT10LG9yfX1mdW5jdGlvbiBvYyhlKXt0cnl7cmV0dXJuKDAsZS5faW5pdCkoZS5fcGF5bG9hZCl9Y2F0Y2goZSl7aWYobnVsbCE9PWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnRoZW4pdGhyb3cgb3U9ZSxvcjt0aHJvdyBlfX12YXIgb3U9bnVsbDtmdW5jdGlvbiBvZCgpe2lmKG51bGw9PT1vdSl0aHJvdyBFcnJvcihsKDQ1OSkpO3ZhciBlPW91O3JldHVybiBvdT1udWxsLGV9ZnVuY3Rpb24gb2YoZSl7aWYoZT09PW9yfHxlPT09b2EpdGhyb3cgRXJyb3IobCg0ODMpKX12YXIgb3A9bnVsbCxvaD0wO2Z1bmN0aW9uIG9tKGUpe3ZhciB0PW9oO3JldHVybiBvaCs9MSxudWxsPT09b3AmJihvcD1bXSksb3Mob3AsZSx0KX1mdW5jdGlvbiBvZyhlLHQpe2UucmVmPXZvaWQgMCE9PSh0PXQucHJvcHMucmVmKT90Om51bGx9ZnVuY3Rpb24gb3koZSx0KXtpZih0LiQkdHlwZW9mPT09cCl0aHJvdyBFcnJvcihsKDUyNSkpO3Rocm93IEVycm9yKGwoMzEsXCJbb2JqZWN0IE9iamVjdF1cIj09PShlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSk/XCJvYmplY3Qgd2l0aCBrZXlzIHtcIitPYmplY3Qua2V5cyh0KS5qb2luKFwiLCBcIikrXCJ9XCI6ZSkpfWZ1bmN0aW9uIG92KGUpe2Z1bmN0aW9uIHQodCxuKXtpZihlKXt2YXIgcj10LmRlbGV0aW9ucztudWxsPT09cj8odC5kZWxldGlvbnM9W25dLHQuZmxhZ3N8PTE2KTpyLnB1c2gobil9fWZ1bmN0aW9uIG4obixyKXtpZighZSlyZXR1cm4gbnVsbDtmb3IoO251bGwhPT1yOyl0KG4scikscj1yLnNpYmxpbmc7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ9bmV3IE1hcDtudWxsIT09ZTspbnVsbCE9PWUua2V5P3Quc2V0KGUua2V5LGUpOnQuc2V0KGUuaW5kZXgsZSksZT1lLnNpYmxpbmc7cmV0dXJuIHR9ZnVuY3Rpb24gbyhlLHQpe3JldHVybihlPXJuKGUsdCkpLmluZGV4PTAsZS5zaWJsaW5nPW51bGwsZX1mdW5jdGlvbiBhKHQsbixyKXtyZXR1cm4odC5pbmRleD1yLGUpP251bGwhPT0ocj10LmFsdGVybmF0ZSk/KHI9ci5pbmRleCk8bj8odC5mbGFnc3w9MHg0MDAwMDAyLG4pOnI6KHQuZmxhZ3N8PTB4NDAwMDAwMixuKToodC5mbGFnc3w9MTA0ODU3NixuKX1mdW5jdGlvbiBpKHQpe3JldHVybiBlJiZudWxsPT09dC5hbHRlcm5hdGUmJih0LmZsYWdzfD0weDQwMDAwMDIpLHR9ZnVuY3Rpb24gcyhlLHQsbixyKXtyZXR1cm4gbnVsbD09PXR8fDYhPT10LnRhZz8odD1yaShuLGUubW9kZSxyKSkucmV0dXJuPWU6KHQ9byh0LG4pKS5yZXR1cm49ZSx0fWZ1bmN0aW9uIGMoZSx0LG4scil7dmFyIGE9bi50eXBlO3JldHVybiBhPT09Zz9kKGUsdCxuLnByb3BzLmNoaWxkcmVuLHIsbi5rZXkpOihudWxsIT09dCYmKHQuZWxlbWVudFR5cGU9PT1hfHxcIm9iamVjdFwiPT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1rJiZvYyhhKT09PXQudHlwZSk/b2codD1vKHQsbi5wcm9wcyksbik6b2codD1ybyhuLnR5cGUsbi5rZXksbi5wcm9wcyxudWxsLGUubW9kZSxyKSxuKSx0LnJldHVybj1lLHQpfWZ1bmN0aW9uIHUoZSx0LG4scil7cmV0dXJuIG51bGw9PT10fHw0IT09dC50YWd8fHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1uLmNvbnRhaW5lckluZm98fHQuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09bi5pbXBsZW1lbnRhdGlvbj8odD1ycyhuLGUubW9kZSxyKSkucmV0dXJuPWU6KHQ9byh0LG4uY2hpbGRyZW58fFtdKSkucmV0dXJuPWUsdH1mdW5jdGlvbiBkKGUsdCxuLHIsYSl7cmV0dXJuIG51bGw9PT10fHw3IT09dC50YWc/KHQ9cmEobixlLm1vZGUscixhKSkucmV0dXJuPWU6KHQ9byh0LG4pKS5yZXR1cm49ZSx0fWZ1bmN0aW9uIGYoZSx0LG4pe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiZcIlwiIT09dHx8XCJudW1iZXJcIj09dHlwZW9mIHR8fFwiYmlnaW50XCI9PXR5cGVvZiB0KXJldHVybih0PXJpKFwiXCIrdCxlLm1vZGUsbikpLnJldHVybj1lLHQ7aWYoXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBoOnJldHVybiBvZyhuPXJvKHQudHlwZSx0LmtleSx0LnByb3BzLG51bGwsZS5tb2RlLG4pLHQpLG4ucmV0dXJuPWUsbjtjYXNlIG06cmV0dXJuKHQ9cnModCxlLm1vZGUsbikpLnJldHVybj1lLHQ7Y2FzZSBrOnJldHVybiBmKGUsdD1vYyh0KSxuKX1pZihQKHQpfHxPKHQpKXJldHVybih0PXJhKHQsZS5tb2RlLG4sbnVsbCkpLnJldHVybj1lLHQ7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC50aGVuKXJldHVybiBmKGUsb20odCksbik7aWYodC4kJHR5cGVvZj09PUEpcmV0dXJuIGYoZSxySyhlLHQpLG4pO295KGUsdCl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gcChlLHQsbixyKXt2YXIgbz1udWxsIT09dD90LmtleTpudWxsO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiZcIlwiIT09bnx8XCJudW1iZXJcIj09dHlwZW9mIG58fFwiYmlnaW50XCI9PXR5cGVvZiBuKXJldHVybiBudWxsIT09bz9udWxsOnMoZSx0LFwiXCIrbixyKTtpZihcIm9iamVjdFwiPT10eXBlb2YgbiYmbnVsbCE9PW4pe3N3aXRjaChuLiQkdHlwZW9mKXtjYXNlIGg6cmV0dXJuIG4ua2V5PT09bz9jKGUsdCxuLHIpOm51bGw7Y2FzZSBtOnJldHVybiBuLmtleT09PW8/dShlLHQsbixyKTpudWxsO2Nhc2UgazpyZXR1cm4gcChlLHQsbj1vYyhuKSxyKX1pZihQKG4pfHxPKG4pKXJldHVybiBudWxsIT09bz9udWxsOmQoZSx0LG4scixudWxsKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnRoZW4pcmV0dXJuIHAoZSx0LG9tKG4pLHIpO2lmKG4uJCR0eXBlb2Y9PT1BKXJldHVybiBwKGUsdCxySyhlLG4pLHIpO295KGUsbil9cmV0dXJuIG51bGx9ZnVuY3Rpb24geShlLHQsbixyLG8pe2lmKFwic3RyaW5nXCI9PXR5cGVvZiByJiZcIlwiIT09cnx8XCJudW1iZXJcIj09dHlwZW9mIHJ8fFwiYmlnaW50XCI9PXR5cGVvZiByKXJldHVybiBzKHQsZT1lLmdldChuKXx8bnVsbCxcIlwiK3Isbyk7aWYoXCJvYmplY3RcIj09dHlwZW9mIHImJm51bGwhPT1yKXtzd2l0Y2goci4kJHR5cGVvZil7Y2FzZSBoOnJldHVybiBjKHQsZT1lLmdldChudWxsPT09ci5rZXk/bjpyLmtleSl8fG51bGwscixvKTtjYXNlIG06cmV0dXJuIHUodCxlPWUuZ2V0KG51bGw9PT1yLmtleT9uOnIua2V5KXx8bnVsbCxyLG8pO2Nhc2UgazpyZXR1cm4geShlLHQsbixyPW9jKHIpLG8pfWlmKFAocil8fE8ocikpcmV0dXJuIGQodCxlPWUuZ2V0KG4pfHxudWxsLHIsbyxudWxsKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByLnRoZW4pcmV0dXJuIHkoZSx0LG4sb20ociksbyk7aWYoci4kJHR5cGVvZj09PUEpcmV0dXJuIHkoZSx0LG4scksodCxyKSxvKTtveSh0LHIpfXJldHVybiBudWxsfXJldHVybiBmdW5jdGlvbihzLGMsdSxkKXt0cnl7b2g9MDt2YXIgdj1mdW5jdGlvbiBzKGMsdSxkLHYpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBkJiZudWxsIT09ZCYmZC50eXBlPT09ZyYmbnVsbD09PWQua2V5JiYoZD1kLnByb3BzLmNoaWxkcmVuKSxcIm9iamVjdFwiPT10eXBlb2YgZCYmbnVsbCE9PWQpe3N3aXRjaChkLiQkdHlwZW9mKXtjYXNlIGg6ZTp7Zm9yKHZhciBiPWQua2V5O251bGwhPT11Oyl7aWYodS5rZXk9PT1iKXtpZigoYj1kLnR5cGUpPT09Zyl7aWYoNz09PXUudGFnKXtuKGMsdS5zaWJsaW5nKSwodj1vKHUsZC5wcm9wcy5jaGlsZHJlbikpLnJldHVybj1jLGM9djticmVhayBlfX1lbHNlIGlmKHUuZWxlbWVudFR5cGU9PT1ifHxcIm9iamVjdFwiPT10eXBlb2YgYiYmbnVsbCE9PWImJmIuJCR0eXBlb2Y9PT1rJiZvYyhiKT09PXUudHlwZSl7bihjLHUuc2libGluZyksb2codj1vKHUsZC5wcm9wcyksZCksdi5yZXR1cm49YyxjPXY7YnJlYWsgZX1uKGMsdSk7YnJlYWt9dChjLHUpLHU9dS5zaWJsaW5nfWQudHlwZT09PWc/KHY9cmEoZC5wcm9wcy5jaGlsZHJlbixjLm1vZGUsdixkLmtleSkpLnJldHVybj1jOihvZyh2PXJvKGQudHlwZSxkLmtleSxkLnByb3BzLG51bGwsYy5tb2RlLHYpLGQpLHYucmV0dXJuPWMpLGM9dn1yZXR1cm4gaShjKTtjYXNlIG06ZTp7Zm9yKGI9ZC5rZXk7bnVsbCE9PXU7KXtpZih1LmtleT09PWIpaWYoND09PXUudGFnJiZ1LnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09ZC5jb250YWluZXJJbmZvJiZ1LnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWQuaW1wbGVtZW50YXRpb24pe24oYyx1LnNpYmxpbmcpLCh2PW8odSxkLmNoaWxkcmVufHxbXSkpLnJldHVybj1jLGM9djticmVhayBlfWVsc2V7bihjLHUpO2JyZWFrfXQoYyx1KSx1PXUuc2libGluZ30odj1ycyhkLGMubW9kZSx2KSkucmV0dXJuPWMsYz12fXJldHVybiBpKGMpO2Nhc2UgazpyZXR1cm4gcyhjLHUsZD1vYyhkKSx2KX1pZihQKGQpKXJldHVybiBmdW5jdGlvbihvLGksbCxzKXtmb3IodmFyIGM9bnVsbCx1PW51bGwsZD1pLGg9aT0wLG09bnVsbDtudWxsIT09ZCYmaDxsLmxlbmd0aDtoKyspe2QuaW5kZXg+aD8obT1kLGQ9bnVsbCk6bT1kLnNpYmxpbmc7dmFyIGc9cChvLGQsbFtoXSxzKTtpZihudWxsPT09Zyl7bnVsbD09PWQmJihkPW0pO2JyZWFrfWUmJmQmJm51bGw9PT1nLmFsdGVybmF0ZSYmdChvLGQpLGk9YShnLGksaCksbnVsbD09PXU/Yz1nOnUuc2libGluZz1nLHU9ZyxkPW19aWYoaD09PWwubGVuZ3RoKXJldHVybiBuKG8sZCkscmomJnJBKG8saCksYztpZihudWxsPT09ZCl7Zm9yKDtoPGwubGVuZ3RoO2grKyludWxsIT09KGQ9ZihvLGxbaF0scykpJiYoaT1hKGQsaSxoKSxudWxsPT09dT9jPWQ6dS5zaWJsaW5nPWQsdT1kKTtyZXR1cm4gcmomJnJBKG8saCksY31mb3IoZD1yKGQpO2g8bC5sZW5ndGg7aCsrKW51bGwhPT0obT15KGQsbyxoLGxbaF0scykpJiYoZSYmbnVsbCE9PW0uYWx0ZXJuYXRlJiZkLmRlbGV0ZShudWxsPT09bS5rZXk/aDptLmtleSksaT1hKG0saSxoKSxudWxsPT09dT9jPW06dS5zaWJsaW5nPW0sdT1tKTtyZXR1cm4gZSYmZC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiB0KG8sZSl9KSxyaiYmckEobyxoKSxjfShjLHUsZCx2KTtpZihPKGQpKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZihiPU8oZCkpKXRocm93IEVycm9yKGwoMTUwKSk7cmV0dXJuIGZ1bmN0aW9uKG8saSxzLGMpe2lmKG51bGw9PXMpdGhyb3cgRXJyb3IobCgxNTEpKTtmb3IodmFyIHU9bnVsbCxkPW51bGwsaD1pLG09aT0wLGc9bnVsbCx2PXMubmV4dCgpO251bGwhPT1oJiYhdi5kb25lO20rKyx2PXMubmV4dCgpKXtoLmluZGV4Pm0/KGc9aCxoPW51bGwpOmc9aC5zaWJsaW5nO3ZhciBiPXAobyxoLHYudmFsdWUsYyk7aWYobnVsbD09PWIpe251bGw9PT1oJiYoaD1nKTticmVha31lJiZoJiZudWxsPT09Yi5hbHRlcm5hdGUmJnQobyxoKSxpPWEoYixpLG0pLG51bGw9PT1kP3U9YjpkLnNpYmxpbmc9YixkPWIsaD1nfWlmKHYuZG9uZSlyZXR1cm4gbihvLGgpLHJqJiZyQShvLG0pLHU7aWYobnVsbD09PWgpe2Zvcig7IXYuZG9uZTttKyssdj1zLm5leHQoKSludWxsIT09KHY9ZihvLHYudmFsdWUsYykpJiYoaT1hKHYsaSxtKSxudWxsPT09ZD91PXY6ZC5zaWJsaW5nPXYsZD12KTtyZXR1cm4gcmomJnJBKG8sbSksdX1mb3IoaD1yKGgpOyF2LmRvbmU7bSsrLHY9cy5uZXh0KCkpbnVsbCE9PSh2PXkoaCxvLG0sdi52YWx1ZSxjKSkmJihlJiZudWxsIT09di5hbHRlcm5hdGUmJmguZGVsZXRlKG51bGw9PT12LmtleT9tOnYua2V5KSxpPWEodixpLG0pLG51bGw9PT1kP3U9djpkLnNpYmxpbmc9dixkPXYpO3JldHVybiBlJiZoLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIHQobyxlKX0pLHJqJiZyQShvLG0pLHV9KGMsdSxkPWIuY2FsbChkKSx2KX1pZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBkLnRoZW4pcmV0dXJuIHMoYyx1LG9tKGQpLHYpO2lmKGQuJCR0eXBlb2Y9PT1BKXJldHVybiBzKGMsdSxySyhjLGQpLHYpO295KGMsZCl9cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGQmJlwiXCIhPT1kfHxcIm51bWJlclwiPT10eXBlb2YgZHx8XCJiaWdpbnRcIj09dHlwZW9mIGQ/KGQ9XCJcIitkLG51bGwhPT11JiY2PT09dS50YWc/KG4oYyx1LnNpYmxpbmcpLCh2PW8odSxkKSkucmV0dXJuPWMpOihuKGMsdSksKHY9cmkoZCxjLm1vZGUsdikpLnJldHVybj1jKSxpKGM9dikpOm4oYyx1KX0ocyxjLHUsZCk7cmV0dXJuIG9wPW51bGwsdn1jYXRjaChlKXtpZihlPT09b3J8fGU9PT1vYSl0aHJvdyBlO3ZhciBiPXJlKDI5LGUsbnVsbCxzLm1vZGUpO3JldHVybiBiLmxhbmVzPWQsYi5yZXR1cm49cyxifWZpbmFsbHl7fX19dmFyIG9iPW92KCEwKSxvQT1vdighMSksb3g9ITE7ZnVuY3Rpb24gb3coZSl7ZS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGxhbmVzOjAsaGlkZGVuQ2FsbGJhY2tzOm51bGx9LGNhbGxiYWNrczpudWxsfX1mdW5jdGlvbiBvQyhlLHQpe2U9ZS51cGRhdGVRdWV1ZSx0LnVwZGF0ZVF1ZXVlPT09ZSYmKHQudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6ZS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6ZS5zaGFyZWQsY2FsbGJhY2tzOm51bGx9KX1mdW5jdGlvbiBvXyhlKXtyZXR1cm57bGFuZTplLHRhZzowLHBheWxvYWQ6bnVsbCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH19ZnVuY3Rpb24gb2soZSx0LG4pe3ZhciByPWUudXBkYXRlUXVldWU7aWYobnVsbD09PXIpcmV0dXJuIG51bGw7aWYocj1yLnNoYXJlZCwwIT0oMiZsRCkpe3ZhciBvPXIucGVuZGluZztyZXR1cm4gbnVsbD09PW8/dC5uZXh0PXQ6KHQubmV4dD1vLm5leHQsby5uZXh0PXQpLHIucGVuZGluZz10LHQ9bjkoZSksbjYoZSxudWxsLG4pLHR9cmV0dXJuIG40KGUscix0LG4pLG45KGUpfWZ1bmN0aW9uIG9FKGUsdCxuKXtpZihudWxsIT09KHQ9dC51cGRhdGVRdWV1ZSkmJih0PXQuc2hhcmVkLDAhPSg0MTk0MDQ4Jm4pKSl7dmFyIHI9dC5sYW5lcztyJj1lLnBlbmRpbmdMYW5lcyxufD1yLHQubGFuZXM9bixlUyhlLG4pfX1mdW5jdGlvbiBvaihlLHQpe3ZhciBuPWUudXBkYXRlUXVldWUscj1lLmFsdGVybmF0ZTtpZihudWxsIT09ciYmbj09PShyPXIudXBkYXRlUXVldWUpKXt2YXIgbz1udWxsLGE9bnVsbDtpZihudWxsIT09KG49bi5maXJzdEJhc2VVcGRhdGUpKXtkb3t2YXIgaT17bGFuZTpuLmxhbmUsdGFnOm4udGFnLHBheWxvYWQ6bi5wYXlsb2FkLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfTtudWxsPT09YT9vPWE9aTphPWEubmV4dD1pLG49bi5uZXh0fXdoaWxlKG51bGwhPT1uKTtudWxsPT09YT9vPWE9dDphPWEubmV4dD10fWVsc2Ugbz1hPXQ7bj17YmFzZVN0YXRlOnIuYmFzZVN0YXRlLGZpcnN0QmFzZVVwZGF0ZTpvLGxhc3RCYXNlVXBkYXRlOmEsc2hhcmVkOnIuc2hhcmVkLGNhbGxiYWNrczpyLmNhbGxiYWNrc30sZS51cGRhdGVRdWV1ZT1uO3JldHVybn1udWxsPT09KGU9bi5sYXN0QmFzZVVwZGF0ZSk/bi5maXJzdEJhc2VVcGRhdGU9dDplLm5leHQ9dCxuLmxhc3RCYXNlVXBkYXRlPXR9dmFyIG9TPSExO2Z1bmN0aW9uIG9PKCl7aWYob1Mpe3ZhciBlPXI2O2lmKG51bGwhPT1lKXRocm93IGV9fWZ1bmN0aW9uIG9CKGUsdCxuLHIpe29TPSExO3ZhciBvPWUudXBkYXRlUXVldWU7b3g9ITE7dmFyIGE9by5maXJzdEJhc2VVcGRhdGUsaT1vLmxhc3RCYXNlVXBkYXRlLGw9by5zaGFyZWQucGVuZGluZztpZihudWxsIT09bCl7by5zaGFyZWQucGVuZGluZz1udWxsO3ZhciBzPWwsYz1zLm5leHQ7cy5uZXh0PW51bGwsbnVsbD09PWk/YT1jOmkubmV4dD1jLGk9czt2YXIgdT1lLmFsdGVybmF0ZTtudWxsIT09dSYmKGw9KHU9dS51cGRhdGVRdWV1ZSkubGFzdEJhc2VVcGRhdGUpIT09aSYmKG51bGw9PT1sP3UuZmlyc3RCYXNlVXBkYXRlPWM6bC5uZXh0PWMsdS5sYXN0QmFzZVVwZGF0ZT1zKX1pZihudWxsIT09YSl7dmFyIGQ9by5iYXNlU3RhdGU7Zm9yKGk9MCx1PWM9cz1udWxsLGw9YTs7KXt2YXIgcD0tMHgyMDAwMDAwMSZsLmxhbmUsaD1wIT09bC5sYW5lO2lmKGg/KGxSJnApPT09cDoociZwKT09PXApezAhPT1wJiZwPT09cjMmJihvUz0hMCksbnVsbCE9PXUmJih1PXUubmV4dD17bGFuZTowLHRhZzpsLnRhZyxwYXlsb2FkOmwucGF5bG9hZCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH0pO2U6e3ZhciBtPWUsZz1sO3N3aXRjaChwPXQsZy50YWcpe2Nhc2UgMTppZihcImZ1bmN0aW9uXCI9PXR5cGVvZihtPWcucGF5bG9hZCkpe2Q9bS5jYWxsKG4sZCxwKTticmVhayBlfWQ9bTticmVhayBlO2Nhc2UgMzptLmZsYWdzPS02NTUzNyZtLmZsYWdzfDEyODtjYXNlIDA6aWYobnVsbD09KHA9XCJmdW5jdGlvblwiPT10eXBlb2YobT1nLnBheWxvYWQpP20uY2FsbChuLGQscCk6bSkpYnJlYWsgZTtkPWYoe30sZCxwKTticmVhayBlO2Nhc2UgMjpveD0hMH19bnVsbCE9PShwPWwuY2FsbGJhY2spJiYoZS5mbGFnc3w9NjQsaCYmKGUuZmxhZ3N8PTgxOTIpLG51bGw9PT0oaD1vLmNhbGxiYWNrcyk/by5jYWxsYmFja3M9W3BdOmgucHVzaChwKSl9ZWxzZSBoPXtsYW5lOnAsdGFnOmwudGFnLHBheWxvYWQ6bC5wYXlsb2FkLGNhbGxiYWNrOmwuY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09dT8oYz11PWgscz1kKTp1PXUubmV4dD1oLGl8PXA7aWYobnVsbD09PShsPWwubmV4dCkpaWYobnVsbD09PShsPW8uc2hhcmVkLnBlbmRpbmcpKWJyZWFrO2Vsc2UgbD0oaD1sKS5uZXh0LGgubmV4dD1udWxsLG8ubGFzdEJhc2VVcGRhdGU9aCxvLnNoYXJlZC5wZW5kaW5nPW51bGx9bnVsbD09PXUmJihzPWQpLG8uYmFzZVN0YXRlPXMsby5maXJzdEJhc2VVcGRhdGU9YyxvLmxhc3RCYXNlVXBkYXRlPXUsbnVsbD09PWEmJihvLnNoYXJlZC5sYW5lcz0wKSxsJHw9aSxlLmxhbmVzPWksZS5tZW1vaXplZFN0YXRlPWR9fWZ1bmN0aW9uIG9QKGUsdCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZSl0aHJvdyBFcnJvcihsKDE5MSxlKSk7ZS5jYWxsKHQpfWZ1bmN0aW9uIG9JKGUsdCl7dmFyIG49ZS5jYWxsYmFja3M7aWYobnVsbCE9PW4pZm9yKGUuY2FsbGJhY2tzPW51bGwsZT0wO2U8bi5sZW5ndGg7ZSsrKW9QKG5bZV0sdCl9dmFyIG96PU4obnVsbCksb1Q9TigwKTtmdW5jdGlvbiBvRChlLHQpe00ob1QsZT1sSCksTShveix0KSxsSD1lfHQuYmFzZUxhbmVzfWZ1bmN0aW9uIG9MKCl7TShvVCxsSCksTShveixvei5jdXJyZW50KX1mdW5jdGlvbiBvTigpe2xIPW9ULmN1cnJlbnQsUihveiksUihvVCl9dmFyIG9SPU4obnVsbCksb009bnVsbDtmdW5jdGlvbiBvWihlKXt2YXIgdD1lLmFsdGVybmF0ZTtNKG9WLDEmb1YuY3VycmVudCksTShvUixlKSxudWxsPT09b00mJihudWxsPT09dHx8bnVsbCE9PW96LmN1cnJlbnQ/b009ZTpudWxsIT09dC5tZW1vaXplZFN0YXRlJiYob009ZSkpfWZ1bmN0aW9uIG9VKGUpe00ob1Ysb1YuY3VycmVudCksTShvUixlKSxudWxsPT09b00mJihvTT1lKX1mdW5jdGlvbiBvRihlKXsyMj09PWUudGFnPyhNKG9WLG9WLmN1cnJlbnQpLE0ob1IsZSksbnVsbD09PW9NJiYob009ZSkpOm9xKGUpfWZ1bmN0aW9uIG9xKCl7TShvVixvVi5jdXJyZW50KSxNKG9SLG9SLmN1cnJlbnQpfWZ1bmN0aW9uIG9IKGUpe1Iob1IpLG9NPT09ZSYmKG9NPW51bGwpLFIob1YpfXZhciBvVj1OKDApO2Z1bmN0aW9uIG8kKGUpe2Zvcih2YXIgdD1lO251bGwhPT10Oyl7aWYoMTM9PT10LnRhZyl7dmFyIG49dC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1uJiYobnVsbD09PShuPW4uZGVoeWRyYXRlZCl8fGNTKG4pfHxjTyhuKSkpcmV0dXJuIHR9ZWxzZSBpZigxOT09PXQudGFnJiYoXCJmb3J3YXJkc1wiPT09dC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyfHxcImJhY2t3YXJkc1wiPT09dC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyfHxcInVuc3RhYmxlX2xlZ2FjeS1iYWNrd2FyZHNcIj09PXQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlcnx8XCJ0b2dldGhlclwiPT09dC5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKSl7aWYoMCE9KDEyOCZ0LmZsYWdzKSlyZXR1cm4gdH1lbHNlIGlmKG51bGwhPT10LmNoaWxkKXt0LmNoaWxkLnJldHVybj10LHQ9dC5jaGlsZDtjb250aW51ZX1pZih0PT09ZSlicmVhaztmb3IoO251bGw9PT10LnNpYmxpbmc7KXtpZihudWxsPT09dC5yZXR1cm58fHQucmV0dXJuPT09ZSlyZXR1cm4gbnVsbDt0PXQucmV0dXJufXQuc2libGluZy5yZXR1cm49dC5yZXR1cm4sdD10LnNpYmxpbmd9cmV0dXJuIG51bGx9dmFyIG9XPTAsb1k9bnVsbCxvSz1udWxsLG9YPW51bGwsb0c9ITEsb1E9ITEsb0o9ITEsbzA9MCxvMT0wLG8yPW51bGwsbzQ9MDtmdW5jdGlvbiBvNSgpe3Rocm93IEVycm9yKGwoMzIxKSl9ZnVuY3Rpb24gbzMoZSx0KXtpZihudWxsPT09dClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoJiZuPGUubGVuZ3RoO24rKylpZighbmsoZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBvNihlLHQsbixyLG8sYSl7cmV0dXJuIG9XPWEsb1k9dCx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LnVwZGF0ZVF1ZXVlPW51bGwsdC5sYW5lcz0wLEkuSD1udWxsPT09ZXx8bnVsbD09PWUubWVtb2l6ZWRTdGF0ZT9pdDppcixvSj0hMSxhPW4ocixvKSxvSj0hMSxvUSYmKGE9bzgodCxuLHIsbykpLG85KGUpLGF9ZnVuY3Rpb24gbzkoZSl7SS5IPWllO3ZhciB0PW51bGwhPT1vSyYmbnVsbCE9PW9LLm5leHQ7aWYob1c9MCxvWD1vSz1vWT1udWxsLG9HPSExLG8xPTAsbzI9bnVsbCx0KXRocm93IEVycm9yKGwoMzAwKSk7bnVsbD09PWV8fGlBfHxudWxsIT09KGU9ZS5kZXBlbmRlbmNpZXMpJiZyJChlKSYmKGlBPSEwKX1mdW5jdGlvbiBvOChlLHQsbixyKXtvWT1lO3ZhciBvPTA7ZG97aWYob1EmJihvMj1udWxsKSxvMT0wLG9RPSExLDI1PD1vKXRocm93IEVycm9yKGwoMzAxKSk7aWYobys9MSxvWD1vSz1udWxsLG51bGwhPWUudXBkYXRlUXVldWUpe3ZhciBhPWUudXBkYXRlUXVldWU7YS5sYXN0RWZmZWN0PW51bGwsYS5ldmVudHM9bnVsbCxhLnN0b3Jlcz1udWxsLG51bGwhPWEubWVtb0NhY2hlJiYoYS5tZW1vQ2FjaGUuaW5kZXg9MCl9SS5IPWlvLGE9dChuLHIpfXdoaWxlKG9RKTtyZXR1cm4gYX1mdW5jdGlvbiBvNygpe3ZhciBlPUkuSCx0PWUudXNlU3RhdGUoKVswXTtyZXR1cm4gdD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4/YWkodCk6dCxlPWUudXNlU3RhdGUoKVswXSwobnVsbCE9PW9LP29LLm1lbW9pemVkU3RhdGU6bnVsbCkhPT1lJiYob1kuZmxhZ3N8PTEwMjQpLHR9ZnVuY3Rpb24gYWUoKXt2YXIgZT0wIT09bzA7cmV0dXJuIG8wPTAsZX1mdW5jdGlvbiBhdChlLHQsbil7dC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZmxhZ3MmPS0yMDUzLGUubGFuZXMmPX5ufWZ1bmN0aW9uIGFuKGUpe2lmKG9HKXtmb3IoZT1lLm1lbW9pemVkU3RhdGU7bnVsbCE9PWU7KXt2YXIgdD1lLnF1ZXVlO251bGwhPT10JiYodC5wZW5kaW5nPW51bGwpLGU9ZS5uZXh0fW9HPSExfW9XPTAsb1g9b0s9b1k9bnVsbCxvUT0hMSxvMT1vMD0wLG8yPW51bGx9ZnVuY3Rpb24gYXIoKXt2YXIgZT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtyZXR1cm4gbnVsbD09PW9YP29ZLm1lbW9pemVkU3RhdGU9b1g9ZTpvWD1vWC5uZXh0PWUsb1h9ZnVuY3Rpb24gYW8oKXtpZihudWxsPT09b0spe3ZhciBlPW9ZLmFsdGVybmF0ZTtlPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgZT1vSy5uZXh0O3ZhciB0PW51bGw9PT1vWD9vWS5tZW1vaXplZFN0YXRlOm9YLm5leHQ7aWYobnVsbCE9PXQpb1g9dCxvSz1lO2Vsc2V7aWYobnVsbD09PWUpe2lmKG51bGw9PT1vWS5hbHRlcm5hdGUpdGhyb3cgRXJyb3IobCg0NjcpKTt0aHJvdyBFcnJvcihsKDMxMCkpfWU9e21lbW9pemVkU3RhdGU6KG9LPWUpLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOm9LLmJhc2VTdGF0ZSxiYXNlUXVldWU6b0suYmFzZVF1ZXVlLHF1ZXVlOm9LLnF1ZXVlLG5leHQ6bnVsbH0sbnVsbD09PW9YP29ZLm1lbW9pemVkU3RhdGU9b1g9ZTpvWD1vWC5uZXh0PWV9cmV0dXJuIG9YfWZ1bmN0aW9uIGFhKCl7cmV0dXJue2xhc3RFZmZlY3Q6bnVsbCxldmVudHM6bnVsbCxzdG9yZXM6bnVsbCxtZW1vQ2FjaGU6bnVsbH19ZnVuY3Rpb24gYWkoZSl7dmFyIHQ9bzE7cmV0dXJuIG8xKz0xLG51bGw9PT1vMiYmKG8yPVtdKSxlPW9zKG8yLGUsdCksdD1vWSxudWxsPT09KG51bGw9PT1vWD90Lm1lbW9pemVkU3RhdGU6b1gubmV4dCkmJihJLkg9bnVsbD09PSh0PXQuYWx0ZXJuYXRlKXx8bnVsbD09PXQubWVtb2l6ZWRTdGF0ZT9pdDppciksZX1mdW5jdGlvbiBhbChlKXtpZihudWxsIT09ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUudGhlbilyZXR1cm4gYWkoZSk7aWYoZS4kJHR5cGVvZj09PUEpcmV0dXJuIHJZKGUpfXRocm93IEVycm9yKGwoNDM4LFN0cmluZyhlKSkpfWZ1bmN0aW9uIGFzKGUpe3ZhciB0PW51bGwsbj1vWS51cGRhdGVRdWV1ZTtpZihudWxsIT09biYmKHQ9bi5tZW1vQ2FjaGUpLG51bGw9PXQpe3ZhciByPW9ZLmFsdGVybmF0ZTtudWxsIT09ciYmbnVsbCE9PShyPXIudXBkYXRlUXVldWUpJiZudWxsIT0ocj1yLm1lbW9DYWNoZSkmJih0PXtkYXRhOnIuZGF0YS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoKX0pLGluZGV4OjB9KX1pZihudWxsPT10JiYodD17ZGF0YTpbXSxpbmRleDowfSksbnVsbD09PW4mJihuPWFhKCksb1kudXBkYXRlUXVldWU9biksbi5tZW1vQ2FjaGU9dCx2b2lkIDA9PT0obj10LmRhdGFbdC5pbmRleF0pKWZvcihuPXQuZGF0YVt0LmluZGV4XT1BcnJheShlKSxyPTA7cjxlO3IrKyluW3JdPWo7cmV0dXJuIHQuaW5kZXgrKyxufWZ1bmN0aW9uIGFjKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KGUpOnR9ZnVuY3Rpb24gYXUoZSl7cmV0dXJuIGFkKGFvKCksb0ssZSl9ZnVuY3Rpb24gYWQoZSx0LG4pe3ZhciByPWUucXVldWU7aWYobnVsbD09PXIpdGhyb3cgRXJyb3IobCgzMTEpKTtyLmxhc3RSZW5kZXJlZFJlZHVjZXI9bjt2YXIgbz1lLmJhc2VRdWV1ZSxhPXIucGVuZGluZztpZihudWxsIT09YSl7aWYobnVsbCE9PW8pe3ZhciBpPW8ubmV4dDtvLm5leHQ9YS5uZXh0LGEubmV4dD1pfXQuYmFzZVF1ZXVlPW89YSxyLnBlbmRpbmc9bnVsbH1pZihhPWUuYmFzZVN0YXRlLG51bGw9PT1vKWUubWVtb2l6ZWRTdGF0ZT1hO2Vsc2V7dD1vLm5leHQ7dmFyIHM9aT1udWxsLGM9bnVsbCx1PXQsZD0hMTtkb3t2YXIgZj0tMHgyMDAwMDAwMSZ1LmxhbmU7aWYoZiE9PXUubGFuZT8obFImZik9PT1mOihvVyZmKT09PWYpe3ZhciBwPXUucmV2ZXJ0TGFuZTtpZigwPT09cCludWxsIT09YyYmKGM9Yy5uZXh0PXtsYW5lOjAscmV2ZXJ0TGFuZTowLGdlc3R1cmU6bnVsbCxhY3Rpb246dS5hY3Rpb24saGFzRWFnZXJTdGF0ZTp1Lmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTp1LmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZj09PXIzJiYoZD0hMCk7ZWxzZSBpZigob1cmcCk9PT1wKXt1PXUubmV4dCxwPT09cjMmJihkPSEwKTtjb250aW51ZX1lbHNlIGY9e2xhbmU6MCxyZXZlcnRMYW5lOnUucmV2ZXJ0TGFuZSxnZXN0dXJlOm51bGwsYWN0aW9uOnUuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6dS5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6dS5lYWdlclN0YXRlLG5leHQ6bnVsbH0sbnVsbD09PWM/KHM9Yz1mLGk9YSk6Yz1jLm5leHQ9ZixvWS5sYW5lc3w9cCxsJHw9cDtmPXUuYWN0aW9uLG9KJiZuKGEsZiksYT11Lmhhc0VhZ2VyU3RhdGU/dS5lYWdlclN0YXRlOm4oYSxmKX1lbHNlIHA9e2xhbmU6ZixyZXZlcnRMYW5lOnUucmV2ZXJ0TGFuZSxnZXN0dXJlOnUuZ2VzdHVyZSxhY3Rpb246dS5hY3Rpb24saGFzRWFnZXJTdGF0ZTp1Lmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTp1LmVhZ2VyU3RhdGUsbmV4dDpudWxsfSxudWxsPT09Yz8ocz1jPXAsaT1hKTpjPWMubmV4dD1wLG9ZLmxhbmVzfD1mLGwkfD1mO3U9dS5uZXh0fXdoaWxlKG51bGwhPT11JiZ1IT09dCk7aWYobnVsbD09PWM/aT1hOmMubmV4dD1zLCFuayhhLGUubWVtb2l6ZWRTdGF0ZSkmJihpQT0hMCxkJiZudWxsIT09KG49cjYpKSl0aHJvdyBuO2UubWVtb2l6ZWRTdGF0ZT1hLGUuYmFzZVN0YXRlPWksZS5iYXNlUXVldWU9YyxyLmxhc3RSZW5kZXJlZFN0YXRlPWF9cmV0dXJuIG51bGw9PT1vJiYoci5sYW5lcz0wKSxbZS5tZW1vaXplZFN0YXRlLHIuZGlzcGF0Y2hdfWZ1bmN0aW9uIGFmKGUpe3ZhciB0PWFvKCksbj10LnF1ZXVlO2lmKG51bGw9PT1uKXRocm93IEVycm9yKGwoMzExKSk7bi5sYXN0UmVuZGVyZWRSZWR1Y2VyPWU7dmFyIHI9bi5kaXNwYXRjaCxvPW4ucGVuZGluZyxhPXQubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09byl7bi5wZW5kaW5nPW51bGw7dmFyIGk9bz1vLm5leHQ7ZG8gYT1lKGEsaS5hY3Rpb24pLGk9aS5uZXh0O3doaWxlKGkhPT1vKTtuayhhLHQubWVtb2l6ZWRTdGF0ZSl8fChpQT0hMCksdC5tZW1vaXplZFN0YXRlPWEsbnVsbD09PXQuYmFzZVF1ZXVlJiYodC5iYXNlU3RhdGU9YSksbi5sYXN0UmVuZGVyZWRTdGF0ZT1hfXJldHVyblthLHJdfWZ1bmN0aW9uIGFwKGUsdCxuKXt2YXIgcj1vWSxvPWFvKCksYT1yajtpZihhKXtpZih2b2lkIDA9PT1uKXRocm93IEVycm9yKGwoNDA3KSk7bj1uKCl9ZWxzZSBuPXQoKTt2YXIgaT0hbmsoKG9LfHxvKS5tZW1vaXplZFN0YXRlLG4pO2lmKGkmJihvLm1lbW9pemVkU3RhdGU9bixpQT0hMCksbz1vLnF1ZXVlLGFSKGFnLmJpbmQobnVsbCxyLG8sZSksW2VdKSxvLmdldFNuYXBzaG90IT09dHx8aXx8bnVsbCE9PW9YJiYxJm9YLm1lbW9pemVkU3RhdGUudGFnKXtpZihyLmZsYWdzfD0yMDQ4LGF6KDkse2Rlc3Ryb3k6dm9pZCAwfSxhbS5iaW5kKG51bGwscixvLG4sdCksbnVsbCksbnVsbD09PWxMKXRocm93IEVycm9yKGwoMzQ5KSk7YXx8MCE9KDEyNCZvVyl8fGFoKHIsdCxuKX1yZXR1cm4gbn1mdW5jdGlvbiBhaChlLHQsbil7ZS5mbGFnc3w9MTYzODQsZT17Z2V0U25hcHNob3Q6dCx2YWx1ZTpufSxudWxsPT09KHQ9b1kudXBkYXRlUXVldWUpPyh0PWFhKCksb1kudXBkYXRlUXVldWU9dCx0LnN0b3Jlcz1bZV0pOm51bGw9PT0obj10LnN0b3Jlcyk/dC5zdG9yZXM9W2VdOm4ucHVzaChlKX1mdW5jdGlvbiBhbShlLHQsbixyKXt0LnZhbHVlPW4sdC5nZXRTbmFwc2hvdD1yLGF5KHQpJiZhdihlKX1mdW5jdGlvbiBhZyhlLHQsbil7cmV0dXJuIG4oZnVuY3Rpb24oKXtheSh0KSYmYXYoZSl9KX1mdW5jdGlvbiBheShlKXt2YXIgdD1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7dmFyIG49dCgpO3JldHVybiFuayhlLG4pfWNhdGNoKGUpe3JldHVybiEwfX1mdW5jdGlvbiBhdihlKXt2YXIgdD1uMyhlLDIpO251bGwhPT10JiZzYSh0LGUsMil9ZnVuY3Rpb24gYWIoZSl7dmFyIHQ9YXIoKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXt2YXIgbj1lO2lmKGU9bigpLG9KKXtlaCghMCk7dHJ5e24oKX1maW5hbGx5e2VoKCExKX19fXJldHVybiB0Lm1lbW9pemVkU3RhdGU9dC5iYXNlU3RhdGU9ZSx0LnF1ZXVlPXtwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YWMsbGFzdFJlbmRlcmVkU3RhdGU6ZX0sdH1mdW5jdGlvbiBhQShlLHQsbixyKXtyZXR1cm4gZS5iYXNlU3RhdGU9bixhZChlLG9LLFwiZnVuY3Rpb25cIj09dHlwZW9mIHI/cjphYyl9ZnVuY3Rpb24gYXgoZSx0LG4scixvKXtpZihhOShlKSl0aHJvdyBFcnJvcihsKDQ4NSkpO2lmKG51bGwhPT0oZT10LmFjdGlvbikpe3ZhciBhPXtwYXlsb2FkOm8sYWN0aW9uOmUsbmV4dDpudWxsLGlzVHJhbnNpdGlvbjohMCxzdGF0dXM6XCJwZW5kaW5nXCIsdmFsdWU6bnVsbCxyZWFzb246bnVsbCxsaXN0ZW5lcnM6W10sdGhlbjpmdW5jdGlvbihlKXthLmxpc3RlbmVycy5wdXNoKGUpfX07bnVsbCE9PUkuVD9uKCEwKTphLmlzVHJhbnNpdGlvbj0hMSxyKGEpLG51bGw9PT0obj10LnBlbmRpbmcpPyhhLm5leHQ9dC5wZW5kaW5nPWEsYXcodCxhKSk6KGEubmV4dD1uLm5leHQsdC5wZW5kaW5nPW4ubmV4dD1hKX19ZnVuY3Rpb24gYXcoZSx0KXt2YXIgbj10LmFjdGlvbixyPXQucGF5bG9hZCxvPWUuc3RhdGU7aWYodC5pc1RyYW5zaXRpb24pe3ZhciBhPUkuVCxpPXt9O0kuVD1pO3RyeXt2YXIgbD1uKG8scikscz1JLlM7bnVsbCE9PXMmJnMoaSxsKSxhQyhlLHQsbCl9Y2F0Y2gobil7YWsoZSx0LG4pfWZpbmFsbHl7bnVsbCE9PWEmJm51bGwhPT1pLnR5cGVzJiYoYS50eXBlcz1pLnR5cGVzKSxJLlQ9YX19ZWxzZSB0cnl7YT1uKG8sciksYUMoZSx0LGEpfWNhdGNoKG4pe2FrKGUsdCxuKX19ZnVuY3Rpb24gYUMoZSx0LG4pe251bGwhPT1uJiZcIm9iamVjdFwiPT10eXBlb2YgbiYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi50aGVuP24udGhlbihmdW5jdGlvbihuKXthXyhlLHQsbil9LGZ1bmN0aW9uKG4pe3JldHVybiBhayhlLHQsbil9KTphXyhlLHQsbil9ZnVuY3Rpb24gYV8oZSx0LG4pe3Quc3RhdHVzPVwiZnVsZmlsbGVkXCIsdC52YWx1ZT1uLGFFKHQpLGUuc3RhdGU9bixudWxsIT09KHQ9ZS5wZW5kaW5nKSYmKChuPXQubmV4dCk9PT10P2UucGVuZGluZz1udWxsOihuPW4ubmV4dCx0Lm5leHQ9bixhdyhlLG4pKSl9ZnVuY3Rpb24gYWsoZSx0LG4pe3ZhciByPWUucGVuZGluZztpZihlLnBlbmRpbmc9bnVsbCxudWxsIT09cil7cj1yLm5leHQ7ZG8gdC5zdGF0dXM9XCJyZWplY3RlZFwiLHQucmVhc29uPW4sYUUodCksdD10Lm5leHQ7d2hpbGUodCE9PXIpfWUuYWN0aW9uPW51bGx9ZnVuY3Rpb24gYUUoZSl7ZT1lLmxpc3RlbmVycztmb3IodmFyIHQ9MDt0PGUubGVuZ3RoO3QrKykoMCxlW3RdKSgpfWZ1bmN0aW9uIGFqKGUsdCl7cmV0dXJuIHR9ZnVuY3Rpb24gYVMoZSx0KXtpZihyail7dmFyIG49bEwuZm9ybVN0YXRlO2lmKG51bGwhPT1uKXtlOnt2YXIgcj1vWTtpZihyail7aWYockUpe3Q6e2Zvcih2YXIgbz1yRSxhPXJPOzghPT1vLm5vZGVUeXBlOylpZighYXx8bnVsbD09PShvPWNCKG8ubmV4dFNpYmxpbmcpKSl7bz1udWxsO2JyZWFrIHR9bz1cIkYhXCI9PT0oYT1vLmRhdGEpfHxcIkZcIj09PWE/bzpudWxsfWlmKG8pe3JFPWNCKG8ubmV4dFNpYmxpbmcpLHI9XCJGIVwiPT09by5kYXRhO2JyZWFrIGV9fXJQKHIpfXI9ITF9ciYmKHQ9blswXSl9fXJldHVybihuPWFyKCkpLm1lbW9pemVkU3RhdGU9bi5iYXNlU3RhdGU9dCxyPXtwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YWosbGFzdFJlbmRlcmVkU3RhdGU6dH0sbi5xdWV1ZT1yLG49YTUuYmluZChudWxsLG9ZLHIpLHIuZGlzcGF0Y2g9bixyPWFiKCExKSxhPWE2LmJpbmQobnVsbCxvWSwhMSxyLnF1ZXVlKSxyPWFyKCksbz17c3RhdGU6dCxkaXNwYXRjaDpudWxsLGFjdGlvbjplLHBlbmRpbmc6bnVsbH0sci5xdWV1ZT1vLG49YXguYmluZChudWxsLG9ZLG8sYSxuKSxvLmRpc3BhdGNoPW4sci5tZW1vaXplZFN0YXRlPWUsW3QsbiwhMV19ZnVuY3Rpb24gYU8oZSl7cmV0dXJuIGFCKGFvKCksb0ssZSl9ZnVuY3Rpb24gYUIoZSx0LG4pe2lmKHQ9YWQoZSx0LGFqKVswXSxlPWF1KGFjKVswXSxcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbil0cnl7dmFyIHI9YWkodCl9Y2F0Y2goZSl7aWYoZT09PW9yKXRocm93IG9hO3Rocm93IGV9ZWxzZSByPXQ7dmFyIG89KHQ9YW8oKSkucXVldWUsYT1vLmRpc3BhdGNoO3JldHVybiBuIT09dC5tZW1vaXplZFN0YXRlJiYob1kuZmxhZ3N8PTIwNDgsYXooOSx7ZGVzdHJveTp2b2lkIDB9LGFQLmJpbmQobnVsbCxvLG4pLG51bGwpKSxbcixhLGVdfWZ1bmN0aW9uIGFQKGUsdCl7ZS5hY3Rpb249dH1mdW5jdGlvbiBhSShlKXt2YXIgdD1hbygpLG49b0s7aWYobnVsbCE9PW4pcmV0dXJuIGFCKHQsbixlKTthbygpLHQ9dC5tZW1vaXplZFN0YXRlO3ZhciByPShuPWFvKCkpLnF1ZXVlLmRpc3BhdGNoO3JldHVybiBuLm1lbW9pemVkU3RhdGU9ZSxbdCxyLCExXX1mdW5jdGlvbiBheihlLHQsbixyKXtyZXR1cm4gZT17dGFnOmUsY3JlYXRlOm4sZGVwczpyLGluc3Q6dCxuZXh0Om51bGx9LG51bGw9PT0odD1vWS51cGRhdGVRdWV1ZSkmJih0PWFhKCksb1kudXBkYXRlUXVldWU9dCksbnVsbD09PShuPXQubGFzdEVmZmVjdCk/dC5sYXN0RWZmZWN0PWUubmV4dD1lOihyPW4ubmV4dCxuLm5leHQ9ZSxlLm5leHQ9cix0Lmxhc3RFZmZlY3Q9ZSksZX1mdW5jdGlvbiBhVCgpe3JldHVybiBhbygpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gYUQoZSx0LG4scil7dmFyIG89YXIoKTtvWS5mbGFnc3w9ZSxvLm1lbW9pemVkU3RhdGU9YXooMXx0LHtkZXN0cm95OnZvaWQgMH0sbix2b2lkIDA9PT1yP251bGw6cil9ZnVuY3Rpb24gYUwoZSx0LG4scil7dmFyIG89YW8oKTtyPXZvaWQgMD09PXI/bnVsbDpyO3ZhciBhPW8ubWVtb2l6ZWRTdGF0ZS5pbnN0O251bGwhPT1vSyYmbnVsbCE9PXImJm8zKHIsb0subWVtb2l6ZWRTdGF0ZS5kZXBzKT9vLm1lbW9pemVkU3RhdGU9YXoodCxhLG4scik6KG9ZLmZsYWdzfD1lLG8ubWVtb2l6ZWRTdGF0ZT1heigxfHQsYSxuLHIpKX1mdW5jdGlvbiBhTihlLHQpe2FEKDgzOTA2NTYsOCxlLHQpfWZ1bmN0aW9uIGFSKGUsdCl7YUwoMjA0OCw4LGUsdCl9ZnVuY3Rpb24gYU0oZSx0KXtyZXR1cm4gYUwoNCwyLGUsdCl9ZnVuY3Rpb24gYVooZSx0KXtyZXR1cm4gYUwoNCw0LGUsdCl9ZnVuY3Rpb24gYVUoZSx0KXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0KXt2YXIgbj10KGU9ZSgpKTtyZXR1cm4gZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBuP24oKTp0KG51bGwpfX1pZihudWxsIT10KXJldHVybiB0LmN1cnJlbnQ9ZT1lKCksZnVuY3Rpb24oKXt0LmN1cnJlbnQ9bnVsbH19ZnVuY3Rpb24gYUYoZSx0LG4pe249bnVsbCE9bj9uLmNvbmNhdChbZV0pOm51bGwsYUwoNCw0LGFVLmJpbmQobnVsbCx0LGUpLG4pfWZ1bmN0aW9uIGFxKCl7fWZ1bmN0aW9uIGFIKGUsdCl7dmFyIG49YW8oKTt0PXZvaWQgMD09PXQ/bnVsbDp0O3ZhciByPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gbnVsbCE9PXQmJm8zKHQsclsxXSk/clswXToobi5tZW1vaXplZFN0YXRlPVtlLHRdLGUpfWZ1bmN0aW9uIGFWKGUsdCl7dmFyIG49YW8oKTt0PXZvaWQgMD09PXQ/bnVsbDp0O3ZhciByPW4ubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09dCYmbzModCxyWzFdKSlyZXR1cm4gclswXTtpZihyPWUoKSxvSil7ZWgoITApO3RyeXtlKCl9ZmluYWxseXtlaCghMSl9fXJldHVybiBuLm1lbW9pemVkU3RhdGU9W3IsdF0scn1mdW5jdGlvbiBhJChlLHQsbil7cmV0dXJuIHZvaWQgMD09PW58fDAhPSgweDQwMDAwMDAwJm9XKT9lLm1lbW9pemVkU3RhdGU9dDooZS5tZW1vaXplZFN0YXRlPW4sZT1zbygpLG9ZLmxhbmVzfD1lLGwkfD1lLG4pfWZ1bmN0aW9uIGFXKGUsdCxuLHIpe3JldHVybiBuayhuLHQpP246bnVsbCE9PW96LmN1cnJlbnQ/KG5rKGU9YSQoZSxuLHIpLHQpfHwoaUE9ITApLGUpOjA9PSg0MiZvVyl8fDAhPSgweDQwMDAwMDAwJm9XKT8oaUE9ITAsZS5tZW1vaXplZFN0YXRlPW4pOihlPXNvKCksb1kubGFuZXN8PWUsbCR8PWUsdCl9ZnVuY3Rpb24gYVkoZSx0LG4scixvKXt2YXIgYT16LnA7ei5wPTAhPT1hJiY4PmE/YTo4O3ZhciBpPUkuVCxsPXt9O0kuVD1sLGE2KGUsITEsdCxuKTt0cnl7dmFyIHM9bygpLGM9SS5TO2lmKG51bGwhPT1jJiZjKGwscyksbnVsbCE9PXMmJlwib2JqZWN0XCI9PXR5cGVvZiBzJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnRoZW4pe3ZhciB1LGQsZj0odT1bXSxkPXtzdGF0dXM6XCJwZW5kaW5nXCIsdmFsdWU6bnVsbCxyZWFzb246bnVsbCx0aGVuOmZ1bmN0aW9uKGUpe3UucHVzaChlKX19LHMudGhlbihmdW5jdGlvbigpe2Quc3RhdHVzPVwiZnVsZmlsbGVkXCIsZC52YWx1ZT1yO2Zvcih2YXIgZT0wO2U8dS5sZW5ndGg7ZSsrKSgwLHVbZV0pKHIpfSxmdW5jdGlvbihlKXtmb3IoZC5zdGF0dXM9XCJyZWplY3RlZFwiLGQucmVhc29uPWUsZT0wO2U8dS5sZW5ndGg7ZSsrKSgwLHVbZV0pKHZvaWQgMCl9KSxkKTthMyhlLHQsZixzcihlKSl9ZWxzZSBhMyhlLHQscixzcihlKSl9Y2F0Y2gobil7YTMoZSx0LHt0aGVuOmZ1bmN0aW9uKCl7fSxzdGF0dXM6XCJyZWplY3RlZFwiLHJlYXNvbjpufSxzcigpKX1maW5hbGx5e3oucD1hLG51bGwhPT1pJiZudWxsIT09bC50eXBlcyYmKGkudHlwZXM9bC50eXBlcyksSS5UPWl9fWZ1bmN0aW9uIGFLKCl7fWZ1bmN0aW9uIGFYKGUsdCxuLHIpe2lmKDUhPT1lLnRhZyl0aHJvdyBFcnJvcihsKDQ3NikpO3ZhciBvPWFHKGUpLnF1ZXVlO2FZKGUsbyx0LFQsbnVsbD09PW4/YUs6ZnVuY3Rpb24oKXtyZXR1cm4gYVEoZSksbihyKX0pfWZ1bmN0aW9uIGFHKGUpe3ZhciB0PWUubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09dClyZXR1cm4gdDt2YXIgbj17fTtyZXR1cm4odD17bWVtb2l6ZWRTdGF0ZTpULGJhc2VTdGF0ZTpULGJhc2VRdWV1ZTpudWxsLHF1ZXVlOntwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YWMsbGFzdFJlbmRlcmVkU3RhdGU6VH0sbmV4dDpudWxsfSkubmV4dD17bWVtb2l6ZWRTdGF0ZTpuLGJhc2VTdGF0ZTpuLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOntwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6YWMsbGFzdFJlbmRlcmVkU3RhdGU6bn0sbmV4dDpudWxsfSxlLm1lbW9pemVkU3RhdGU9dCxudWxsIT09KGU9ZS5hbHRlcm5hdGUpJiYoZS5tZW1vaXplZFN0YXRlPXQpLHR9ZnVuY3Rpb24gYVEoZSl7dmFyIHQ9YUcoZSk7bnVsbD09PXQubmV4dCYmKHQ9ZS5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSksYTMoZSx0Lm5leHQucXVldWUse30sc3IoKSl9ZnVuY3Rpb24gYUooKXtyZXR1cm4gclkoYzkpfWZ1bmN0aW9uIGEwKCl7cmV0dXJuIGFvKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBhMSgpe3JldHVybiBhbygpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gYTIoZSl7Zm9yKHZhciB0PWUucmV0dXJuO251bGwhPT10Oyl7c3dpdGNoKHQudGFnKXtjYXNlIDI0OmNhc2UgMzp2YXIgbj1zcigpLHI9b2sodCxlPW9fKG4pLG4pO251bGwhPT1yJiYoc2Eocix0LG4pLG9FKHIsdCxuKSksdD17Y2FjaGU6cjEoKX0sZS5wYXlsb2FkPXQ7cmV0dXJufXQ9dC5yZXR1cm59fWZ1bmN0aW9uIGE0KGUsdCxuKXt2YXIgcj1zcigpO249e2xhbmU6cixyZXZlcnRMYW5lOjAsZ2VzdHVyZTpudWxsLGFjdGlvbjpuLGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH0sYTkoZSk/YTgodCxuKTpudWxsIT09KG49bjUoZSx0LG4scikpJiYoc2EobixlLHIpLGE3KG4sdCxyKSl9ZnVuY3Rpb24gYTUoZSx0LG4pe2EzKGUsdCxuLHNyKCkpfWZ1bmN0aW9uIGEzKGUsdCxuLHIpe3ZhciBvPXtsYW5lOnIscmV2ZXJ0TGFuZTowLGdlc3R1cmU6bnVsbCxhY3Rpb246bixoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9O2lmKGE5KGUpKWE4KHQsbyk7ZWxzZXt2YXIgYT1lLmFsdGVybmF0ZTtpZigwPT09ZS5sYW5lcyYmKG51bGw9PT1hfHwwPT09YS5sYW5lcykmJm51bGwhPT0oYT10Lmxhc3RSZW5kZXJlZFJlZHVjZXIpKXRyeXt2YXIgaT10Lmxhc3RSZW5kZXJlZFN0YXRlLGw9YShpLG4pO2lmKG8uaGFzRWFnZXJTdGF0ZT0hMCxvLmVhZ2VyU3RhdGU9bCxuayhsLGkpKXJldHVybiBuNChlLHQsbywwKSxudWxsPT09bEwmJm4yKCksITF9Y2F0Y2goZSl7fWZpbmFsbHl7fWlmKG51bGwhPT0obj1uNShlLHQsbyxyKSkpcmV0dXJuIHNhKG4sZSxyKSxhNyhuLHQsciksITB9cmV0dXJuITF9ZnVuY3Rpb24gYTYoZSx0LG4scil7aWYocj17bGFuZToyLHJldmVydExhbmU6c1goKSxnZXN0dXJlOm51bGwsYWN0aW9uOnIsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxhOShlKSl7aWYodCl0aHJvdyBFcnJvcihsKDQ3OSkpfWVsc2UgbnVsbCE9PSh0PW41KGUsbixyLDIpKSYmc2EodCxlLDIpfWZ1bmN0aW9uIGE5KGUpe3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBlPT09b1l8fG51bGwhPT10JiZ0PT09b1l9ZnVuY3Rpb24gYTgoZSx0KXtvUT1vRz0hMDt2YXIgbj1lLnBlbmRpbmc7bnVsbD09PW4/dC5uZXh0PXQ6KHQubmV4dD1uLm5leHQsbi5uZXh0PXQpLGUucGVuZGluZz10fWZ1bmN0aW9uIGE3KGUsdCxuKXtpZigwIT0oNDE5NDA0OCZuKSl7dmFyIHI9dC5sYW5lcztyJj1lLnBlbmRpbmdMYW5lcyx0LmxhbmVzPW58PXIsZVMoZSxuKX19dmFyIGllPXtyZWFkQ29udGV4dDpyWSx1c2U6YWwsdXNlQ2FsbGJhY2s6bzUsdXNlQ29udGV4dDpvNSx1c2VFZmZlY3Q6bzUsdXNlSW1wZXJhdGl2ZUhhbmRsZTpvNSx1c2VMYXlvdXRFZmZlY3Q6bzUsdXNlSW5zZXJ0aW9uRWZmZWN0Om81LHVzZU1lbW86bzUsdXNlUmVkdWNlcjpvNSx1c2VSZWY6bzUsdXNlU3RhdGU6bzUsdXNlRGVidWdWYWx1ZTpvNSx1c2VEZWZlcnJlZFZhbHVlOm81LHVzZVRyYW5zaXRpb246bzUsdXNlU3luY0V4dGVybmFsU3RvcmU6bzUsdXNlSWQ6bzUsdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6bzUsdXNlRm9ybVN0YXRlOm81LHVzZUFjdGlvblN0YXRlOm81LHVzZU9wdGltaXN0aWM6bzUsdXNlTWVtb0NhY2hlOm81LHVzZUNhY2hlUmVmcmVzaDpvNX0saXQ9e3JlYWRDb250ZXh0OnJZLHVzZTphbCx1c2VDYWxsYmFjazpmdW5jdGlvbihlLHQpe3JldHVybiBhcigpLm1lbW9pemVkU3RhdGU9W2Usdm9pZCAwPT09dD9udWxsOnRdLGV9LHVzZUNvbnRleHQ6clksdXNlRWZmZWN0OmFOLHVzZUltcGVyYXRpdmVIYW5kbGU6ZnVuY3Rpb24oZSx0LG4pe249bnVsbCE9bj9uLmNvbmNhdChbZV0pOm51bGwsYUQoNDE5NDMwOCw0LGFVLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYUQoNDE5NDMwOCw0LGUsdCl9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihlLHQpe2FEKDQsMixlLHQpfSx1c2VNZW1vOmZ1bmN0aW9uKGUsdCl7dmFyIG49YXIoKTt0PXZvaWQgMD09PXQ/bnVsbDp0O3ZhciByPWUoKTtpZihvSil7ZWgoITApO3RyeXtlKCl9ZmluYWxseXtlaCghMSl9fXJldHVybiBuLm1lbW9pemVkU3RhdGU9W3IsdF0scn0sdXNlUmVkdWNlcjpmdW5jdGlvbihlLHQsbil7dmFyIHI9YXIoKTtpZih2b2lkIDAhPT1uKXt2YXIgbz1uKHQpO2lmKG9KKXtlaCghMCk7dHJ5e24odCl9ZmluYWxseXtlaCghMSl9fX1lbHNlIG89dDtyZXR1cm4gci5tZW1vaXplZFN0YXRlPXIuYmFzZVN0YXRlPW8sci5xdWV1ZT1lPXtwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZSxsYXN0UmVuZGVyZWRTdGF0ZTpvfSxlPWUuZGlzcGF0Y2g9YTQuYmluZChudWxsLG9ZLGUpLFtyLm1lbW9pemVkU3RhdGUsZV19LHVzZVJlZjpmdW5jdGlvbihlKXtyZXR1cm4gYXIoKS5tZW1vaXplZFN0YXRlPWU9e2N1cnJlbnQ6ZX19LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3ZhciB0PShlPWFiKGUpKS5xdWV1ZSxuPWE1LmJpbmQobnVsbCxvWSx0KTtyZXR1cm4gdC5kaXNwYXRjaD1uLFtlLm1lbW9pemVkU3RhdGUsbl19LHVzZURlYnVnVmFsdWU6YXEsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiBhJChhcigpLGUsdCl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1hYighMSk7cmV0dXJuIGU9YVkuYmluZChudWxsLG9ZLGUucXVldWUsITAsITEpLGFyKCkubWVtb2l6ZWRTdGF0ZT1lLFshMSxlXX0sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPW9ZLG89YXIoKTtpZihyail7aWYodm9pZCAwPT09bil0aHJvdyBFcnJvcihsKDQwNykpO249bigpfWVsc2V7aWYobj10KCksbnVsbD09PWxMKXRocm93IEVycm9yKGwoMzQ5KSk7MCE9KDEyNCZsUil8fGFoKHIsdCxuKX1vLm1lbW9pemVkU3RhdGU9bjt2YXIgYT17dmFsdWU6bixnZXRTbmFwc2hvdDp0fTtyZXR1cm4gby5xdWV1ZT1hLGFOKGFnLmJpbmQobnVsbCxyLGEsZSksW2VdKSxyLmZsYWdzfD0yMDQ4LGF6KDkse2Rlc3Ryb3k6dm9pZCAwfSxhbS5iaW5kKG51bGwscixhLG4sdCksbnVsbCksbn0sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgZT1hcigpLHQ9bEwuaWRlbnRpZmllclByZWZpeDtpZihyail7dmFyIG49cmIscj1ydjt0PVwiX1wiK3QrXCJSX1wiKyhuPShyJn4oMTw8MzItZW0ociktMSkpLnRvU3RyaW5nKDMyKStuKSwwPChuPW8wKyspJiYodCs9XCJIXCIrbi50b1N0cmluZygzMikpLHQrPVwiX1wifWVsc2UgdD1cIl9cIit0K1wicl9cIisobj1vNCsrKS50b1N0cmluZygzMikrXCJfXCI7cmV0dXJuIGUubWVtb2l6ZWRTdGF0ZT10fSx1c2VIb3N0VHJhbnNpdGlvblN0YXR1czphSix1c2VGb3JtU3RhdGU6YVMsdXNlQWN0aW9uU3RhdGU6YVMsdXNlT3B0aW1pc3RpYzpmdW5jdGlvbihlKXt2YXIgdD1hcigpO3QubWVtb2l6ZWRTdGF0ZT10LmJhc2VTdGF0ZT1lO3ZhciBuPXtwZW5kaW5nOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6bnVsbCxsYXN0UmVuZGVyZWRTdGF0ZTpudWxsfTtyZXR1cm4gdC5xdWV1ZT1uLHQ9YTYuYmluZChudWxsLG9ZLCEwLG4pLG4uZGlzcGF0Y2g9dCxbZSx0XX0sdXNlTWVtb0NhY2hlOmFzLHVzZUNhY2hlUmVmcmVzaDpmdW5jdGlvbigpe3JldHVybiBhcigpLm1lbW9pemVkU3RhdGU9YTIuYmluZChudWxsLG9ZKX19LGlyPXtyZWFkQ29udGV4dDpyWSx1c2U6YWwsdXNlQ2FsbGJhY2s6YUgsdXNlQ29udGV4dDpyWSx1c2VFZmZlY3Q6YVIsdXNlSW1wZXJhdGl2ZUhhbmRsZTphRix1c2VJbnNlcnRpb25FZmZlY3Q6YU0sdXNlTGF5b3V0RWZmZWN0OmFaLHVzZU1lbW86YVYsdXNlUmVkdWNlcjphdSx1c2VSZWY6YVQsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gYXUoYWMpfSx1c2VEZWJ1Z1ZhbHVlOmFxLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYVcoYW8oKSxvSy5tZW1vaXplZFN0YXRlLGUsdCl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1hdShhYylbMF0sdD1hbygpLm1lbW9pemVkU3RhdGU7cmV0dXJuW1wiYm9vbGVhblwiPT10eXBlb2YgZT9lOmFpKGUpLHRdfSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTphcCx1c2VJZDphMCx1c2VIb3N0VHJhbnNpdGlvblN0YXR1czphSix1c2VGb3JtU3RhdGU6YU8sdXNlQWN0aW9uU3RhdGU6YU8sdXNlT3B0aW1pc3RpYzpmdW5jdGlvbihlLHQpe3JldHVybiBhQShhbygpLG9LLGUsdCl9LHVzZU1lbW9DYWNoZTphcyx1c2VDYWNoZVJlZnJlc2g6YTF9LGlvPXtyZWFkQ29udGV4dDpyWSx1c2U6YWwsdXNlQ2FsbGJhY2s6YUgsdXNlQ29udGV4dDpyWSx1c2VFZmZlY3Q6YVIsdXNlSW1wZXJhdGl2ZUhhbmRsZTphRix1c2VJbnNlcnRpb25FZmZlY3Q6YU0sdXNlTGF5b3V0RWZmZWN0OmFaLHVzZU1lbW86YVYsdXNlUmVkdWNlcjphZix1c2VSZWY6YVQsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gYWYoYWMpfSx1c2VEZWJ1Z1ZhbHVlOmFxLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hbygpO3JldHVybiBudWxsPT09b0s/YSQobixlLHQpOmFXKG4sb0subWVtb2l6ZWRTdGF0ZSxlLHQpfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9YWYoYWMpWzBdLHQ9YW8oKS5tZW1vaXplZFN0YXRlO3JldHVybltcImJvb2xlYW5cIj09dHlwZW9mIGU/ZTphaShlKSx0XX0sdXNlU3luY0V4dGVybmFsU3RvcmU6YXAsdXNlSWQ6YTAsdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6YUosdXNlRm9ybVN0YXRlOmFJLHVzZUFjdGlvblN0YXRlOmFJLHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hbygpO3JldHVybiBudWxsIT09b0s/YUEobixvSyxlLHQpOihuLmJhc2VTdGF0ZT1lLFtlLG4ucXVldWUuZGlzcGF0Y2hdKX0sdXNlTWVtb0NhY2hlOmFzLHVzZUNhY2hlUmVmcmVzaDphMX07ZnVuY3Rpb24gaWEoZSx0LG4scil7bj1udWxsPT0obj1uKHIsdD1lLm1lbW9pemVkU3RhdGUpKT90OmYoe30sdCxuKSxlLm1lbW9pemVkU3RhdGU9biwwPT09ZS5sYW5lcyYmKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPW4pfXZhciBpaT17ZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPXNyKCksbz1vXyhyKTtvLnBheWxvYWQ9dCxudWxsIT1uJiYoby5jYWxsYmFjaz1uKSxudWxsIT09KHQ9b2soZSxvLHIpKSYmKHNhKHQsZSxyKSxvRSh0LGUscikpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCxuKXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPXNyKCksbz1vXyhyKTtvLnRhZz0xLG8ucGF5bG9hZD10LG51bGwhPW4mJihvLmNhbGxiYWNrPW4pLG51bGwhPT0odD1vayhlLG8scikpJiYoc2EodCxlLHIpLG9FKHQsZSxyKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlLHQpe2U9ZS5fcmVhY3RJbnRlcm5hbHM7dmFyIG49c3IoKSxyPW9fKG4pO3IudGFnPTIsbnVsbCE9dCYmKHIuY2FsbGJhY2s9dCksbnVsbCE9PSh0PW9rKGUscixuKSkmJihzYSh0LGUsbiksb0UodCxlLG4pKX19O2Z1bmN0aW9uIGlsKGUsdCxuLHIsbyxhLGkpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mKGU9ZS5zdGF0ZU5vZGUpLnNob3VsZENvbXBvbmVudFVwZGF0ZT9lLnNob3VsZENvbXBvbmVudFVwZGF0ZShyLGEsaSk6IXQucHJvdG90eXBlfHwhdC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnR8fCFuRShuLHIpfHwhbkUobyxhKX1mdW5jdGlvbiBpcyhlLHQsbixyKXtlPXQuc3RhdGUsXCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZ0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobixyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZ0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4sciksdC5zdGF0ZSE9PWUmJmlpLmVucXVldWVSZXBsYWNlU3RhdGUodCx0LnN0YXRlLG51bGwpfWZ1bmN0aW9uIGljKGUsdCl7dmFyIG49dDtpZihcInJlZlwiaW4gdClmb3IodmFyIHIgaW4gbj17fSx0KVwicmVmXCIhPT1yJiYobltyXT10W3JdKTtpZihlPWUuZGVmYXVsdFByb3BzKWZvcih2YXIgbyBpbiBuPT09dCYmKG49Zih7fSxuKSksZSl2b2lkIDA9PT1uW29dJiYobltvXT1lW29dKTtyZXR1cm4gbn1mdW5jdGlvbiBpdShlKXtuUShlKX1mdW5jdGlvbiBpZChlKXtjb25zb2xlLmVycm9yKGUpfWZ1bmN0aW9uIGlwKGUpe25RKGUpfWZ1bmN0aW9uIGloKGUsdCl7dHJ5eygwLGUub25VbmNhdWdodEVycm9yKSh0LnZhbHVlLHtjb21wb25lbnRTdGFjazp0LnN0YWNrfSl9Y2F0Y2goZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX19ZnVuY3Rpb24gaW0oZSx0LG4pe3RyeXsoMCxlLm9uQ2F1Z2h0RXJyb3IpKG4udmFsdWUse2NvbXBvbmVudFN0YWNrOm4uc3RhY2ssZXJyb3JCb3VuZGFyeToxPT09dC50YWc/dC5zdGF0ZU5vZGU6bnVsbH0pfWNhdGNoKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9fWZ1bmN0aW9uIGlnKGUsdCxuKXtyZXR1cm4obj1vXyhuKSkudGFnPTMsbi5wYXlsb2FkPXtlbGVtZW50Om51bGx9LG4uY2FsbGJhY2s9ZnVuY3Rpb24oKXtpaChlLHQpfSxufWZ1bmN0aW9uIGl5KGUpe3JldHVybihlPW9fKGUpKS50YWc9MyxlfWZ1bmN0aW9uIGl2KGUsdCxuLHIpe3ZhciBvPW4udHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygbyl7dmFyIGE9ci52YWx1ZTtlLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbyhhKX0sZS5jYWxsYmFjaz1mdW5jdGlvbigpe2ltKHQsbixyKX19dmFyIGk9bi5zdGF0ZU5vZGU7bnVsbCE9PWkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGkuY29tcG9uZW50RGlkQ2F0Y2gmJihlLmNhbGxiYWNrPWZ1bmN0aW9uKCl7aW0odCxuLHIpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIG8mJihudWxsPT09bDQ/bDQ9bmV3IFNldChbdGhpc10pOmw0LmFkZCh0aGlzKSk7dmFyIGU9ci5zdGFjazt0aGlzLmNvbXBvbmVudERpZENhdGNoKHIudmFsdWUse2NvbXBvbmVudFN0YWNrOm51bGwhPT1lP2U6XCJcIn0pfSl9dmFyIGliPUVycm9yKGwoNDYxKSksaUE9ITE7ZnVuY3Rpb24gaXgoZSx0LG4scil7dC5jaGlsZD1udWxsPT09ZT9vQSh0LG51bGwsbixyKTpvYih0LGUuY2hpbGQsbixyKX1mdW5jdGlvbiBpdyhlLHQsbixyLG8pe249bi5yZW5kZXI7dmFyIGE9dC5yZWY7aWYoXCJyZWZcImluIHIpe3ZhciBpPXt9O2Zvcih2YXIgbCBpbiByKVwicmVmXCIhPT1sJiYoaVtsXT1yW2xdKX1lbHNlIGk9cjtyZXR1cm4oclcodCkscj1vNihlLHQsbixpLGEsbyksbD1hZSgpLG51bGw9PT1lfHxpQSk/KHJqJiZsJiZydyh0KSx0LmZsYWdzfD0xLGl4KGUsdCxyLG8pLHQuY2hpbGQpOihhdChlLHQsbyksaVYoZSx0LG8pKX1mdW5jdGlvbiBpQyhlLHQsbixyLG8pe2lmKG51bGw9PT1lKXt2YXIgYT1uLnR5cGU7cmV0dXJuXCJmdW5jdGlvblwiIT10eXBlb2YgYXx8cnQoYSl8fHZvaWQgMCE9PWEuZGVmYXVsdFByb3BzfHxudWxsIT09bi5jb21wYXJlPygoZT1ybyhuLnR5cGUsbnVsbCxyLHQsdC5tb2RlLG8pKS5yZWY9dC5yZWYsZS5yZXR1cm49dCx0LmNoaWxkPWUpOih0LnRhZz0xNSx0LnR5cGU9YSxpXyhlLHQsYSxyLG8pKX1pZihhPWUuY2hpbGQsIWkkKGUsbykpe3ZhciBpPWEubWVtb2l6ZWRQcm9wcztpZigobj1udWxsIT09KG49bi5jb21wYXJlKT9uOm5FKShpLHIpJiZlLnJlZj09PXQucmVmKXJldHVybiBpVihlLHQsbyl9cmV0dXJuIHQuZmxhZ3N8PTEsKGU9cm4oYSxyKSkucmVmPXQucmVmLGUucmV0dXJuPXQsdC5jaGlsZD1lfWZ1bmN0aW9uIGlfKGUsdCxuLHIsbyl7aWYobnVsbCE9PWUpe3ZhciBhPWUubWVtb2l6ZWRQcm9wcztpZihuRShhLHIpJiZlLnJlZj09PXQucmVmKWlmKGlBPSExLHQucGVuZGluZ1Byb3BzPXI9YSwhaSQoZSxvKSlyZXR1cm4gdC5sYW5lcz1lLmxhbmVzLGlWKGUsdCxvKTtlbHNlIDAhPSgxMzEwNzImZS5mbGFncykmJihpQT0hMCl9cmV0dXJuIGlQKGUsdCxuLHIsbyl9ZnVuY3Rpb24gaWsoZSx0LG4scil7dmFyIG89ci5jaGlsZHJlbixhPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKG51bGw9PT1lJiZudWxsPT09dC5zdGF0ZU5vZGUmJih0LnN0YXRlTm9kZT17X3Zpc2liaWxpdHk6MSxfcGVuZGluZ01hcmtlcnM6bnVsbCxfcmV0cnlDYWNoZTpudWxsLF90cmFuc2l0aW9uczpudWxsfSksXCJoaWRkZW5cIj09PXIubW9kZSl7aWYoMCE9KDEyOCZ0LmZsYWdzKSl7aWYocj1udWxsIT09YT9hLmJhc2VMYW5lc3xuOm4sbnVsbCE9PWUpe2ZvcihhPTAsbz10LmNoaWxkPWUuY2hpbGQ7bnVsbCE9PW87KWE9YXxvLmxhbmVzfG8uY2hpbGRMYW5lcyxvPW8uc2libGluZzt0LmNoaWxkTGFuZXM9YSZ+cn1lbHNlIHQuY2hpbGRMYW5lcz0wLHQuY2hpbGQ9bnVsbDtyZXR1cm4gaWooZSx0LHIsbil9aWYoMD09KDB4MjAwMDAwMDAmbikpcmV0dXJuIHQubGFuZXM9dC5jaGlsZExhbmVzPTB4MjAwMDAwMDAsaWooZSx0LG51bGwhPT1hP2EuYmFzZUxhbmVzfG46bixuKTt0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsfSxudWxsIT09ZSYmb3QodCxudWxsIT09YT9hLmNhY2hlUG9vbDpudWxsKSxudWxsIT09YT9vRCh0LGEpOm9MKCksb0YodCl9ZWxzZSBudWxsIT09YT8ob3QodCxhLmNhY2hlUG9vbCksb0QodCxhKSxvcSh0KSx0Lm1lbW9pemVkU3RhdGU9bnVsbCk6KG51bGwhPT1lJiZvdCh0LG51bGwpLG9MKCksb3EodCkpO3JldHVybiBpeChlLHQsbyxuKSx0LmNoaWxkfWZ1bmN0aW9uIGlFKGUsdCl7cmV0dXJuIG51bGwhPT1lJiYyMj09PWUudGFnfHxudWxsIT09dC5zdGF0ZU5vZGV8fCh0LnN0YXRlTm9kZT17X3Zpc2liaWxpdHk6MSxfcGVuZGluZ01hcmtlcnM6bnVsbCxfcmV0cnlDYWNoZTpudWxsLF90cmFuc2l0aW9uczpudWxsfSksdC5zaWJsaW5nfWZ1bmN0aW9uIGlqKGUsdCxuLHIpe3ZhciBvPW9lKCk7cmV0dXJuIHQubWVtb2l6ZWRTdGF0ZT17YmFzZUxhbmVzOm4sY2FjaGVQb29sOm89bnVsbD09PW8/bnVsbDp7cGFyZW50OnIwLl9jdXJyZW50VmFsdWUscG9vbDpvfX0sbnVsbCE9PWUmJm90KHQsbnVsbCksb0woKSxvRih0KSxudWxsIT09ZSYmclYoZSx0LHIsITApLG51bGx9ZnVuY3Rpb24gaVMoZSx0KXtyZXR1cm4odD1pWih7bW9kZTp0Lm1vZGUsY2hpbGRyZW46dC5jaGlsZHJlbn0sZS5tb2RlKSkucmVmPWUucmVmLGUuY2hpbGQ9dCx0LnJldHVybj1lLHR9ZnVuY3Rpb24gaU8oZSx0LG4pe3JldHVybiBvYih0LGUuY2hpbGQsbnVsbCxuKSxlPWlTKHQsdC5wZW5kaW5nUHJvcHMpLGUuZmxhZ3N8PTIsb0godCksdC5tZW1vaXplZFN0YXRlPW51bGwsZX1mdW5jdGlvbiBpQihlLHQpe3ZhciBuPXQucmVmO2lmKG51bGw9PT1uKW51bGwhPT1lJiZudWxsIT09ZS5yZWYmJih0LmZsYWdzfD00MTk0ODE2KTtlbHNle2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJlwib2JqZWN0XCIhPXR5cGVvZiBuKXRocm93IEVycm9yKGwoMjg0KSk7KG51bGw9PT1lfHxlLnJlZiE9PW4pJiYodC5mbGFnc3w9NDE5NDgxNil9fWZ1bmN0aW9uIGlQKGUsdCxuLHIsbyl7cmV0dXJuKHJXKHQpLG49bzYoZSx0LG4scix2b2lkIDAsbykscj1hZSgpLG51bGw9PT1lfHxpQSk/KHJqJiZyJiZydyh0KSx0LmZsYWdzfD0xLGl4KGUsdCxuLG8pLHQuY2hpbGQpOihhdChlLHQsbyksaVYoZSx0LG8pKX1mdW5jdGlvbiBpSShlLHQsbixyLG8sYSl7cmV0dXJuKHJXKHQpLHQudXBkYXRlUXVldWU9bnVsbCxuPW84KHQscixuLG8pLG85KGUpLHI9YWUoKSxudWxsPT09ZXx8aUEpPyhyaiYmciYmcncodCksdC5mbGFnc3w9MSxpeChlLHQsbixhKSx0LmNoaWxkKTooYXQoZSx0LGEpLGlWKGUsdCxhKSl9ZnVuY3Rpb24gaXooZSx0LG4scixvKXtpZihyVyh0KSxudWxsPT09dC5zdGF0ZU5vZGUpe3ZhciBhPW44LGk9bi5jb250ZXh0VHlwZTtcIm9iamVjdFwiPT10eXBlb2YgaSYmbnVsbCE9PWkmJihhPXJZKGkpKSx0Lm1lbW9pemVkU3RhdGU9bnVsbCE9PShhPW5ldyBuKHIsYSkpLnN0YXRlJiZ2b2lkIDAhPT1hLnN0YXRlP2Euc3RhdGU6bnVsbCxhLnVwZGF0ZXI9aWksdC5zdGF0ZU5vZGU9YSxhLl9yZWFjdEludGVybmFscz10LChhPXQuc3RhdGVOb2RlKS5wcm9wcz1yLGEuc3RhdGU9dC5tZW1vaXplZFN0YXRlLGEucmVmcz17fSxvdyh0KSxpPW4uY29udGV4dFR5cGUsYS5jb250ZXh0PVwib2JqZWN0XCI9PXR5cGVvZiBpJiZudWxsIT09aT9yWShpKTpuOCxhLnN0YXRlPXQubWVtb2l6ZWRTdGF0ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZihpPW4uZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSYmKGlhKHQsbixpLHIpLGEuc3RhdGU9dC5tZW1vaXplZFN0YXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc3x8XCJmdW5jdGlvblwiPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8XCJmdW5jdGlvblwiIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudFdpbGxNb3VudHx8KGk9YS5zdGF0ZSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudFdpbGxNb3VudCYmYS5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLGkhPT1hLnN0YXRlJiZpaS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGEsYS5zdGF0ZSxudWxsKSxvQih0LHIsYSxvKSxvTygpLGEuc3RhdGU9dC5tZW1vaXplZFN0YXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYodC5mbGFnc3w9NDE5NDMwOCkscj0hMH1lbHNlIGlmKG51bGw9PT1lKXthPXQuc3RhdGVOb2RlO3ZhciBsPXQubWVtb2l6ZWRQcm9wcyxzPWljKG4sbCk7YS5wcm9wcz1zO3ZhciBjPWEuY29udGV4dCx1PW4uY29udGV4dFR5cGU7aT1uOCxcIm9iamVjdFwiPT10eXBlb2YgdSYmbnVsbCE9PXUmJihpPXJZKHUpKTt2YXIgZD1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wczt1PVwiZnVuY3Rpb25cIj09dHlwZW9mIGR8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUsbD10LnBlbmRpbmdQcm9wcyE9PWwsdXx8XCJmdW5jdGlvblwiIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwobHx8YyE9PWkpJiZpcyh0LGEscixpKSxveD0hMTt2YXIgZj10Lm1lbW9pemVkU3RhdGU7YS5zdGF0ZT1mLG9CKHQscixhLG8pLG9PKCksYz10Lm1lbW9pemVkU3RhdGUsbHx8ZiE9PWN8fG94PyhcImZ1bmN0aW9uXCI9PXR5cGVvZiBkJiYoaWEodCxuLGQsciksYz10Lm1lbW9pemVkU3RhdGUpLChzPW94fHxpbCh0LG4scyxyLGYsYyxpKSk/KHV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnR8fChcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudFdpbGxNb3VudCYmYS5jb21wb25lbnRXaWxsTW91bnQoKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYodC5mbGFnc3w9NDE5NDMwOCkpOihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYodC5mbGFnc3w9NDE5NDMwOCksdC5tZW1vaXplZFByb3BzPXIsdC5tZW1vaXplZFN0YXRlPWMpLGEucHJvcHM9cixhLnN0YXRlPWMsYS5jb250ZXh0PWkscj1zKTooXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKHQuZmxhZ3N8PTQxOTQzMDgpLHI9ITEpfWVsc2V7YT10LnN0YXRlTm9kZSxvQyhlLHQpLHU9aWMobixpPXQubWVtb2l6ZWRQcm9wcyksYS5wcm9wcz11LGQ9dC5wZW5kaW5nUHJvcHMsZj1hLmNvbnRleHQsYz1uLmNvbnRleHRUeXBlLHM9bjgsXCJvYmplY3RcIj09dHlwZW9mIGMmJm51bGwhPT1jJiYocz1yWShjKSksKGM9XCJmdW5jdGlvblwiPT10eXBlb2YobD1uLmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyl8fFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiBhLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHN8fChpIT09ZHx8ZiE9PXMpJiZpcyh0LGEscixzKSxveD0hMSxmPXQubWVtb2l6ZWRTdGF0ZSxhLnN0YXRlPWYsb0IodCxyLGEsbyksb08oKTt2YXIgcD10Lm1lbW9pemVkU3RhdGU7aSE9PWR8fGYhPT1wfHxveHx8bnVsbCE9PWUmJm51bGwhPT1lLmRlcGVuZGVuY2llcyYmciQoZS5kZXBlbmRlbmNpZXMpPyhcImZ1bmN0aW9uXCI9PXR5cGVvZiBsJiYoaWEodCxuLGwscikscD10Lm1lbW9pemVkU3RhdGUpLCh1PW94fHxpbCh0LG4sdSxyLGYscCxzKXx8bnVsbCE9PWUmJm51bGwhPT1lLmRlcGVuZGVuY2llcyYmciQoZS5kZXBlbmRlbmNpZXMpKT8oY3x8XCJmdW5jdGlvblwiIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYS5jb21wb25lbnRXaWxsVXBkYXRlfHwoXCJmdW5jdGlvblwiPT10eXBlb2YgYS5jb21wb25lbnRXaWxsVXBkYXRlJiZhLmNvbXBvbmVudFdpbGxVcGRhdGUocixwLHMpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJmEuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUocixwLHMpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmNvbXBvbmVudERpZFVwZGF0ZSYmKHQuZmxhZ3N8PTQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUmJih0LmZsYWdzfD0xMDI0KSk6KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50RGlkVXBkYXRlfHxpPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aT09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTEwMjQpLHQubWVtb2l6ZWRQcm9wcz1yLHQubWVtb2l6ZWRTdGF0ZT1wKSxhLnByb3BzPXIsYS5zdGF0ZT1wLGEuY29udGV4dD1zLHI9dSk6KFwiZnVuY3Rpb25cIiE9dHlwZW9mIGEuY29tcG9uZW50RGlkVXBkYXRlfHxpPT09ZS5tZW1vaXplZFByb3BzJiZmPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9NCksXCJmdW5jdGlvblwiIT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8aT09PWUubWVtb2l6ZWRQcm9wcyYmZj09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTEwMjQpLHI9ITEpfXJldHVybiBhPXIsaUIoZSx0KSxyPTAhPSgxMjgmdC5mbGFncyksYXx8cj8oYT10LnN0YXRlTm9kZSxuPXImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIG4uZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yP251bGw6YS5yZW5kZXIoKSx0LmZsYWdzfD0xLG51bGwhPT1lJiZyPyh0LmNoaWxkPW9iKHQsZS5jaGlsZCxudWxsLG8pLHQuY2hpbGQ9b2IodCxudWxsLG4sbykpOml4KGUsdCxuLG8pLHQubWVtb2l6ZWRTdGF0ZT1hLnN0YXRlLGU9dC5jaGlsZCk6ZT1pVihlLHQsbyksZX1mdW5jdGlvbiBpVChlLHQsbixyKXtyZXR1cm4gckQoKSx0LmZsYWdzfD0yNTYsaXgoZSx0LG4sciksdC5jaGlsZH12YXIgaUQ9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowLGh5ZHJhdGlvbkVycm9yczpudWxsfTtmdW5jdGlvbiBpTChlKXtyZXR1cm57YmFzZUxhbmVzOmUsY2FjaGVQb29sOm9uKCl9fWZ1bmN0aW9uIGlOKGUsdCxuKXtyZXR1cm4gZT1udWxsIT09ZT9lLmNoaWxkTGFuZXMmfm46MCx0JiYoZXw9bEspLGV9ZnVuY3Rpb24gaVIoZSx0LG4pe3ZhciByLG89dC5wZW5kaW5nUHJvcHMsYT0hMSxpPTAhPSgxMjgmdC5mbGFncyk7aWYoKHI9aSl8fChyPShudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSkmJjAhPSgyJm9WLmN1cnJlbnQpKSxyJiYoYT0hMCx0LmZsYWdzJj0tMTI5KSxyPTAhPSgzMiZ0LmZsYWdzKSx0LmZsYWdzJj0tMzMsbnVsbD09PWUpe2lmKHJqKXtpZihhP29aKHQpOm9xKHQpLChlPXJFKT9udWxsIT09KGU9bnVsbCE9PShlPWNqKGUsck8pKSYmXCImXCIhPT1lLmRhdGE/ZTpudWxsKSYmKHQubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDplLHRyZWVDb250ZXh0Om51bGwhPT1yeT97aWQ6cnYsb3ZlcmZsb3c6cmJ9Om51bGwscmV0cnlMYW5lOjB4MjAwMDAwMDAsaHlkcmF0aW9uRXJyb3JzOm51bGx9LChuPXJsKGUpKS5yZXR1cm49dCx0LmNoaWxkPW4scms9dCxyRT1udWxsKTplPW51bGwsbnVsbD09PWUpdGhyb3cgclAodCk7cmV0dXJuIGNPKGUpP3QubGFuZXM9MzI6dC5sYW5lcz0weDIwMDAwMDAwLG51bGx9dmFyIHM9by5jaGlsZHJlbjtyZXR1cm4obz1vLmZhbGxiYWNrLGEpPyhvcSh0KSxzPWlaKHttb2RlOlwiaGlkZGVuXCIsY2hpbGRyZW46c30sYT10Lm1vZGUpLG89cmEobyxhLG4sbnVsbCkscy5yZXR1cm49dCxvLnJldHVybj10LHMuc2libGluZz1vLHQuY2hpbGQ9cywobz10LmNoaWxkKS5tZW1vaXplZFN0YXRlPWlMKG4pLG8uY2hpbGRMYW5lcz1pTihlLHIsbiksdC5tZW1vaXplZFN0YXRlPWlELGlFKG51bGwsbykpOihvWih0KSxpTSh0LHMpKX12YXIgYz1lLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PWMmJm51bGwhPT0ocz1jLmRlaHlkcmF0ZWQpKXtpZihpKTI1NiZ0LmZsYWdzPyhvWih0KSx0LmZsYWdzJj0tMjU3LHQ9aVUoZSx0LG4pKTpudWxsIT09dC5tZW1vaXplZFN0YXRlPyhvcSh0KSx0LmNoaWxkPWUuY2hpbGQsdC5mbGFnc3w9MTI4LHQ9bnVsbCk6KG9xKHQpLHM9by5mYWxsYmFjayxhPXQubW9kZSxvPWlaKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOm8uY2hpbGRyZW59LGEpLHM9cmEocyxhLG4sbnVsbCkscy5mbGFnc3w9MixvLnJldHVybj10LHMucmV0dXJuPXQsby5zaWJsaW5nPXMsdC5jaGlsZD1vLG9iKHQsZS5jaGlsZCxudWxsLG4pLChvPXQuY2hpbGQpLm1lbW9pemVkU3RhdGU9aUwobiksby5jaGlsZExhbmVzPWlOKGUscixuKSx0Lm1lbW9pemVkU3RhdGU9aUQsdD1pRShudWxsLG8pKTtlbHNlIGlmKG9aKHQpLGNPKHMpKXtpZihyPXMubmV4dFNpYmxpbmcmJnMubmV4dFNpYmxpbmcuZGF0YXNldCl2YXIgdT1yLmRnc3Q7cj11LChvPUVycm9yKGwoNDE5KSkpLnN0YWNrPVwiXCIsby5kaWdlc3Q9cixyTih7dmFsdWU6byxzb3VyY2U6bnVsbCxzdGFjazpudWxsfSksdD1pVShlLHQsbil9ZWxzZSBpZihpQXx8clYoZSx0LG4sITEpLHI9MCE9KG4mZS5jaGlsZExhbmVzKSxpQXx8cil7aWYobnVsbCE9PShyPWxMKSYmMCE9PShvPWVPKHIsbikpJiZvIT09Yy5yZXRyeUxhbmUpdGhyb3cgYy5yZXRyeUxhbmU9byxuMyhlLG8pLHNhKHIsZSxvKSxpYjtjUyhzKXx8c2coKSx0PWlVKGUsdCxuKX1lbHNlIGNTKHMpPyh0LmZsYWdzfD0xOTIsdC5jaGlsZD1lLmNoaWxkLHQ9bnVsbCk6KGU9Yy50cmVlQ29udGV4dCxyRT1jQihzLm5leHRTaWJsaW5nKSxyaz10LHJqPSEwLHJTPW51bGwsck89ITEsbnVsbCE9PWUmJnJfKHQsZSksdD1pTSh0LG8uY2hpbGRyZW4pLHQuZmxhZ3N8PTQwOTYpO3JldHVybiB0fXJldHVybiBhPyhvcSh0KSxzPW8uZmFsbGJhY2ssYT10Lm1vZGUsdT0oYz1lLmNoaWxkKS5zaWJsaW5nLChvPXJuKGMse21vZGU6XCJoaWRkZW5cIixjaGlsZHJlbjpvLmNoaWxkcmVufSkpLnN1YnRyZWVGbGFncz0weDNlMDAwMDAmYy5zdWJ0cmVlRmxhZ3MsbnVsbCE9PXU/cz1ybih1LHMpOihzPXJhKHMsYSxuLG51bGwpLHMuZmxhZ3N8PTIpLHMucmV0dXJuPXQsby5yZXR1cm49dCxvLnNpYmxpbmc9cyx0LmNoaWxkPW8saUUobnVsbCxvKSxvPXQuY2hpbGQsbnVsbD09PShzPWUuY2hpbGQubWVtb2l6ZWRTdGF0ZSk/cz1pTChuKToobnVsbCE9PShhPXMuY2FjaGVQb29sKT8oYz1yMC5fY3VycmVudFZhbHVlLGE9YS5wYXJlbnQhPT1jP3twYXJlbnQ6Yyxwb29sOmN9OmEpOmE9b24oKSxzPXtiYXNlTGFuZXM6cy5iYXNlTGFuZXN8bixjYWNoZVBvb2w6YX0pLG8ubWVtb2l6ZWRTdGF0ZT1zLG8uY2hpbGRMYW5lcz1pTihlLHIsbiksdC5tZW1vaXplZFN0YXRlPWlELGlFKGUuY2hpbGQsbykpOihvWih0KSxlPShuPWUuY2hpbGQpLnNpYmxpbmcsKG49cm4obix7bW9kZTpcInZpc2libGVcIixjaGlsZHJlbjpvLmNoaWxkcmVufSkpLnJldHVybj10LG4uc2libGluZz1udWxsLG51bGwhPT1lJiYobnVsbD09PShyPXQuZGVsZXRpb25zKT8odC5kZWxldGlvbnM9W2VdLHQuZmxhZ3N8PTE2KTpyLnB1c2goZSkpLHQuY2hpbGQ9bix0Lm1lbW9pemVkU3RhdGU9bnVsbCxuKX1mdW5jdGlvbiBpTShlLHQpe3JldHVybih0PWlaKHttb2RlOlwidmlzaWJsZVwiLGNoaWxkcmVuOnR9LGUubW9kZSkpLnJldHVybj1lLGUuY2hpbGQ9dH1mdW5jdGlvbiBpWihlLHQpe3JldHVybihlPXJlKDIyLGUsbnVsbCx0KSkubGFuZXM9MCxlfWZ1bmN0aW9uIGlVKGUsdCxuKXtyZXR1cm4gb2IodCxlLmNoaWxkLG51bGwsbiksZT1pTSh0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuKSxlLmZsYWdzfD0yLHQubWVtb2l6ZWRTdGF0ZT1udWxsLGV9ZnVuY3Rpb24gaUYoZSx0LG4pe2UubGFuZXN8PXQ7dmFyIHI9ZS5hbHRlcm5hdGU7bnVsbCE9PXImJihyLmxhbmVzfD10KSxycShlLnJldHVybix0LG4pfWZ1bmN0aW9uIGlxKGUsdCxuLHIsbyxhKXt2YXIgaT1lLm1lbW9pemVkU3RhdGU7bnVsbD09PWk/ZS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczp0LHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6cix0YWlsOm4sdGFpbE1vZGU6byx0cmVlRm9ya0NvdW50OmF9OihpLmlzQmFja3dhcmRzPXQsaS5yZW5kZXJpbmc9bnVsbCxpLnJlbmRlcmluZ1N0YXJ0VGltZT0wLGkubGFzdD1yLGkudGFpbD1uLGkudGFpbE1vZGU9byxpLnRyZWVGb3JrQ291bnQ9YSl9ZnVuY3Rpb24gaUgoZSx0LG4pe3ZhciByPXQucGVuZGluZ1Byb3BzLG89ci5yZXZlYWxPcmRlcixhPXIudGFpbDtyPXIuY2hpbGRyZW47dmFyIGk9b1YuY3VycmVudCxsPTAhPSgyJmkpO2lmKGw/KGk9MSZpfDIsdC5mbGFnc3w9MTI4KTppJj0xLE0ob1YsaSksaXgoZSx0LHIsbikscj1yaj9yaDowLCFsJiZudWxsIT09ZSYmMCE9KDEyOCZlLmZsYWdzKSllOmZvcihlPXQuY2hpbGQ7bnVsbCE9PWU7KXtpZigxMz09PWUudGFnKW51bGwhPT1lLm1lbW9pemVkU3RhdGUmJmlGKGUsbix0KTtlbHNlIGlmKDE5PT09ZS50YWcpaUYoZSxuLHQpO2Vsc2UgaWYobnVsbCE9PWUuY2hpbGQpe2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkO2NvbnRpbnVlfWlmKGU9PT10KWJyZWFrO2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8ZS5yZXR1cm49PT10KWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfXN3aXRjaChvKXtjYXNlXCJmb3J3YXJkc1wiOmZvcihvPW51bGwsbj10LmNoaWxkO251bGwhPT1uOyludWxsIT09KGU9bi5hbHRlcm5hdGUpJiZudWxsPT09byQoZSkmJihvPW4pLG49bi5zaWJsaW5nO251bGw9PT0obj1vKT8obz10LmNoaWxkLHQuY2hpbGQ9bnVsbCk6KG89bi5zaWJsaW5nLG4uc2libGluZz1udWxsKSxpcSh0LCExLG8sbixhLHIpO2JyZWFrO2Nhc2VcImJhY2t3YXJkc1wiOmNhc2VcInVuc3RhYmxlX2xlZ2FjeS1iYWNrd2FyZHNcIjpmb3Iobj1udWxsLG89dC5jaGlsZCx0LmNoaWxkPW51bGw7bnVsbCE9PW87KXtpZihudWxsIT09KGU9by5hbHRlcm5hdGUpJiZudWxsPT09byQoZSkpe3QuY2hpbGQ9bzticmVha31lPW8uc2libGluZyxvLnNpYmxpbmc9bixuPW8sbz1lfWlxKHQsITAsbixudWxsLGEscik7YnJlYWs7Y2FzZVwidG9nZXRoZXJcIjppcSh0LCExLG51bGwsbnVsbCx2b2lkIDAscik7YnJlYWs7ZGVmYXVsdDp0Lm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBpVihlLHQsbil7aWYobnVsbCE9PWUmJih0LmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcyksbCR8PXQubGFuZXMsMD09KG4mdC5jaGlsZExhbmVzKSl7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7ZWxzZSBpZihyVihlLHQsbiwhMSksMD09KG4mdC5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbH1pZihudWxsIT09ZSYmdC5jaGlsZCE9PWUuY2hpbGQpdGhyb3cgRXJyb3IobCgxNTMpKTtpZihudWxsIT09dC5jaGlsZCl7Zm9yKG49cm4oZT10LmNoaWxkLGUucGVuZGluZ1Byb3BzKSx0LmNoaWxkPW4sbi5yZXR1cm49dDtudWxsIT09ZS5zaWJsaW5nOyllPWUuc2libGluZywobj1uLnNpYmxpbmc9cm4oZSxlLnBlbmRpbmdQcm9wcykpLnJldHVybj10O24uc2libGluZz1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIGkkKGUsdCl7cmV0dXJuIDAhPShlLmxhbmVzJnQpfHwhIShudWxsIT09KGU9ZS5kZXBlbmRlbmNpZXMpJiZyJChlKSl9ZnVuY3Rpb24gaVcoZSx0LG4pe2lmKG51bGwhPT1lKWlmKGUubWVtb2l6ZWRQcm9wcyE9PXQucGVuZGluZ1Byb3BzKWlBPSEwO2Vsc2V7aWYoIWkkKGUsbikmJjA9PSgxMjgmdC5mbGFncykpcmV0dXJuIGlBPSExLGZ1bmN0aW9uKGUsdCxuKXtzd2l0Y2godC50YWcpe2Nhc2UgMzpIKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksclUodCxyMCxlLm1lbW9pemVkU3RhdGUuY2FjaGUpLHJEKCk7YnJlYWs7Y2FzZSAyNzpjYXNlIDU6JCh0KTticmVhaztjYXNlIDQ6SCh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6clUodCx0LnR5cGUsdC5tZW1vaXplZFByb3BzLnZhbHVlKTticmVhaztjYXNlIDMxOmlmKG51bGwhPT10Lm1lbW9pemVkU3RhdGUpcmV0dXJuIHQuZmxhZ3N8PTEyOCxvVSh0KSxudWxsO2JyZWFrO2Nhc2UgMTM6dmFyIHI9dC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1yKXtpZihudWxsIT09ci5kZWh5ZHJhdGVkKXJldHVybiBvWih0KSx0LmZsYWdzfD0xMjgsbnVsbDtpZigwIT0obiZ0LmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBpUihlLHQsbik7cmV0dXJuIG9aKHQpLG51bGwhPT0oZT1pVihlLHQsbikpP2Uuc2libGluZzpudWxsfW9aKHQpO2JyZWFrO2Nhc2UgMTk6dmFyIG89MCE9KDEyOCZlLmZsYWdzKTtpZigocj0wIT0obiZ0LmNoaWxkTGFuZXMpKXx8KHJWKGUsdCxuLCExKSxyPTAhPShuJnQuY2hpbGRMYW5lcykpLG8pe2lmKHIpcmV0dXJuIGlIKGUsdCxuKTt0LmZsYWdzfD0xMjh9aWYobnVsbCE9PShvPXQubWVtb2l6ZWRTdGF0ZSkmJihvLnJlbmRlcmluZz1udWxsLG8udGFpbD1udWxsLG8ubGFzdEVmZmVjdD1udWxsKSxNKG9WLG9WLmN1cnJlbnQpLCFyKXJldHVybiBudWxsO2JyZWFrO2Nhc2UgMjI6cmV0dXJuIHQubGFuZXM9MCxpayhlLHQsbix0LnBlbmRpbmdQcm9wcyk7Y2FzZSAyNDpyVSh0LHIwLGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSl9cmV0dXJuIGlWKGUsdCxuKX0oZSx0LG4pO2lBPTAhPSgxMzEwNzImZS5mbGFncyl9ZWxzZSBpQT0hMSxyaiYmMCE9KDEwNDg1NzYmdC5mbGFncykmJnJ4KHQscmgsdC5pbmRleCk7c3dpdGNoKHQubGFuZXM9MCx0LnRhZyl7Y2FzZSAxNjplOnt2YXIgcj10LnBlbmRpbmdQcm9wcztpZihlPW9jKHQuZWxlbWVudFR5cGUpLHQudHlwZT1lLFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpcnQoZSk/KHI9aWMoZSxyKSx0LnRhZz0xLHQ9aXoobnVsbCx0LGUscixuKSk6KHQudGFnPTAsdD1pUChudWxsLHQsZSxyLG4pKTtlbHNle2lmKG51bGwhPWUpe3ZhciBvPWUuJCR0eXBlb2Y7aWYobz09PXgpe3QudGFnPTExLHQ9aXcobnVsbCx0LGUscixuKTticmVhayBlfWlmKG89PT1fKXt0LnRhZz0xNCx0PWlDKG51bGwsdCxlLHIsbik7YnJlYWsgZX19dGhyb3cgRXJyb3IobCgzMDYsdD1mdW5jdGlvbiBlKHQpe2lmKG51bGw9PXQpcmV0dXJuIG51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdClyZXR1cm4gdC4kJHR5cGVvZj09PUI/bnVsbDp0LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fG51bGw7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIHQ7c3dpdGNoKHQpe2Nhc2UgZzpyZXR1cm5cIkZyYWdtZW50XCI7Y2FzZSB2OnJldHVyblwiUHJvZmlsZXJcIjtjYXNlIHk6cmV0dXJuXCJTdHJpY3RNb2RlXCI7Y2FzZSB3OnJldHVyblwiU3VzcGVuc2VcIjtjYXNlIEM6cmV0dXJuXCJTdXNwZW5zZUxpc3RcIjtjYXNlIEU6cmV0dXJuXCJBY3Rpdml0eVwifWlmKFwib2JqZWN0XCI9PXR5cGVvZiB0KXN3aXRjaCh0LiQkdHlwZW9mKXtjYXNlIG06cmV0dXJuXCJQb3J0YWxcIjtjYXNlIEE6cmV0dXJuIHQuZGlzcGxheU5hbWV8fFwiQ29udGV4dFwiO2Nhc2UgYjpyZXR1cm4odC5fY29udGV4dC5kaXNwbGF5TmFtZXx8XCJDb250ZXh0XCIpK1wiLkNvbnN1bWVyXCI7Y2FzZSB4OnZhciBuPXQucmVuZGVyO3JldHVybih0PXQuZGlzcGxheU5hbWUpfHwodD1cIlwiIT09KHQ9bi5kaXNwbGF5TmFtZXx8bi5uYW1lfHxcIlwiKT9cIkZvcndhcmRSZWYoXCIrdCtcIilcIjpcIkZvcndhcmRSZWZcIiksdDtjYXNlIF86cmV0dXJuIG51bGwhPT0obj10LmRpc3BsYXlOYW1lfHxudWxsKT9uOmUodC50eXBlKXx8XCJNZW1vXCI7Y2FzZSBrOm49dC5fcGF5bG9hZCx0PXQuX2luaXQ7dHJ5e3JldHVybiBlKHQobikpfWNhdGNoKGUpe319cmV0dXJuIG51bGx9KGUpfHxlLFwiXCIpKX19cmV0dXJuIHQ7Y2FzZSAwOnJldHVybiBpUChlLHQsdC50eXBlLHQucGVuZGluZ1Byb3BzLG4pO2Nhc2UgMTpyZXR1cm4gbz1pYyhyPXQudHlwZSx0LnBlbmRpbmdQcm9wcyksaXooZSx0LHIsbyxuKTtjYXNlIDM6ZTp7aWYoSCh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLG51bGw9PT1lKXRocm93IEVycm9yKGwoMzg3KSk7cj10LnBlbmRpbmdQcm9wczt2YXIgYT10Lm1lbW9pemVkU3RhdGU7bz1hLmVsZW1lbnQsb0MoZSx0KSxvQih0LHIsbnVsbCxuKTt2YXIgaT10Lm1lbW9pemVkU3RhdGU7aWYoclUodCxyMCxyPWkuY2FjaGUpLHIhPT1hLmNhY2hlJiZySCh0LFtyMF0sbiwhMCksb08oKSxyPWkuZWxlbWVudCxhLmlzRGVoeWRyYXRlZClpZihhPXtlbGVtZW50OnIsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOmkuY2FjaGV9LHQudXBkYXRlUXVldWUuYmFzZVN0YXRlPWEsdC5tZW1vaXplZFN0YXRlPWEsMjU2JnQuZmxhZ3Mpe3Q9aVQoZSx0LHIsbik7YnJlYWsgZX1lbHNlIGlmKHIhPT1vKXtyTihvPXJ1KEVycm9yKGwoNDI0KSksdCkpLHQ9aVQoZSx0LHIsbik7YnJlYWsgZX1lbHNlIGZvcihyRT1jQigoZT05PT09KGU9dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykubm9kZVR5cGU/ZS5ib2R5OlwiSFRNTFwiPT09ZS5ub2RlTmFtZT9lLm93bmVyRG9jdW1lbnQuYm9keTplKS5maXJzdENoaWxkKSxyaz10LHJqPSEwLHJTPW51bGwsck89ITAsbj1vQSh0LG51bGwscixuKSx0LmNoaWxkPW47bjspbi5mbGFncz0tMyZuLmZsYWdzfDQwOTYsbj1uLnNpYmxpbmc7ZWxzZXtpZihyRCgpLHI9PT1vKXt0PWlWKGUsdCxuKTticmVhayBlfWl4KGUsdCxyLG4pfXQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDI2OnJldHVybiBpQihlLHQpLG51bGw9PT1lPyhuPWNGKHQudHlwZSxudWxsLHQucGVuZGluZ1Byb3BzLG51bGwpKT90Lm1lbW9pemVkU3RhdGU9bjpyanx8KG49dC50eXBlLGU9dC5wZW5kaW5nUHJvcHMsKHI9Y3AoRi5jdXJyZW50KS5jcmVhdGVFbGVtZW50KG4pKVtlRF09dCxyW2VMXT1lLGN1KHIsbixlKSxlWShyKSx0LnN0YXRlTm9kZT1yKTp0Lm1lbW9pemVkU3RhdGU9Y0YodC50eXBlLGUubWVtb2l6ZWRQcm9wcyx0LnBlbmRpbmdQcm9wcyxlLm1lbW9pemVkU3RhdGUpLG51bGw7Y2FzZSAyNzpyZXR1cm4gJCh0KSxudWxsPT09ZSYmcmomJihyPXQuc3RhdGVOb2RlPWNUKHQudHlwZSx0LnBlbmRpbmdQcm9wcyxGLmN1cnJlbnQpLHJrPXQsck89ITAsbz1yRSxjQyh0LnR5cGUpPyhjUD1vLHJFPWNCKHIuZmlyc3RDaGlsZCkpOnJFPW8pLGl4KGUsdCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbixuKSxpQihlLHQpLG51bGw9PT1lJiYodC5mbGFnc3w9NDE5NDMwNCksdC5jaGlsZDtjYXNlIDU6cmV0dXJuIG51bGw9PT1lJiZyaiYmKChvPXI9ckUpJiYobnVsbCE9PShyPWZ1bmN0aW9uKGUsdCxuLHIpe2Zvcig7MT09PWUubm9kZVR5cGU7KXtpZihlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT10LnRvTG93ZXJDYXNlKCkpe2lmKCFyJiYoXCJJTlBVVFwiIT09ZS5ub2RlTmFtZXx8XCJoaWRkZW5cIiE9PWUudHlwZSkpYnJlYWt9ZWxzZSBpZihyKXtpZighZVtlRl0pc3dpdGNoKHQpe2Nhc2VcIm1ldGFcIjppZighZS5oYXNBdHRyaWJ1dGUoXCJpdGVtcHJvcFwiKSlicmVhaztyZXR1cm4gZTtjYXNlXCJsaW5rXCI6aWYoXCJzdHlsZXNoZWV0XCI9PT0obz1lLmdldEF0dHJpYnV0ZShcInJlbFwiKSkmJmUuaGFzQXR0cmlidXRlKFwiZGF0YS1wcmVjZWRlbmNlXCIpfHxvIT09bi5yZWx8fGUuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSE9PShudWxsPT1uLmhyZWZ8fFwiXCI9PT1uLmhyZWY/bnVsbDpuLmhyZWYpfHxlLmdldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIpIT09KG51bGw9PW4uY3Jvc3NPcmlnaW4/bnVsbDpuLmNyb3NzT3JpZ2luKXx8ZS5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKSE9PShudWxsPT1uLnRpdGxlP251bGw6bi50aXRsZSkpYnJlYWs7cmV0dXJuIGU7Y2FzZVwic3R5bGVcIjppZihlLmhhc0F0dHJpYnV0ZShcImRhdGEtcHJlY2VkZW5jZVwiKSlicmVhaztyZXR1cm4gZTtjYXNlXCJzY3JpcHRcIjppZigoKG89ZS5nZXRBdHRyaWJ1dGUoXCJzcmNcIikpIT09KG51bGw9PW4uc3JjP251bGw6bi5zcmMpfHxlLmdldEF0dHJpYnV0ZShcInR5cGVcIikhPT0obnVsbD09bi50eXBlP251bGw6bi50eXBlKXx8ZS5nZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiKSE9PShudWxsPT1uLmNyb3NzT3JpZ2luP251bGw6bi5jcm9zc09yaWdpbikpJiZvJiZlLmhhc0F0dHJpYnV0ZShcImFzeW5jXCIpJiYhZS5oYXNBdHRyaWJ1dGUoXCJpdGVtcHJvcFwiKSlicmVhaztyZXR1cm4gZTtkZWZhdWx0OnJldHVybiBlfX1lbHNle2lmKFwiaW5wdXRcIiE9PXR8fFwiaGlkZGVuXCIhPT1lLnR5cGUpcmV0dXJuIGU7dmFyIG89bnVsbD09bi5uYW1lP251bGw6XCJcIituLm5hbWU7aWYoXCJoaWRkZW5cIj09PW4udHlwZSYmZS5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpPT09bylyZXR1cm4gZX1pZihudWxsPT09KGU9Y0IoZS5uZXh0U2libGluZykpKWJyZWFrfXJldHVybiBudWxsfShyLHQudHlwZSx0LnBlbmRpbmdQcm9wcyxyTykpPyh0LnN0YXRlTm9kZT1yLHJrPXQsckU9Y0Ioci5maXJzdENoaWxkKSxyTz0hMSxvPSEwKTpvPSExKSxvfHxyUCh0KSksJCh0KSxvPXQudHlwZSxhPXQucGVuZGluZ1Byb3BzLGk9bnVsbCE9PWU/ZS5tZW1vaXplZFByb3BzOm51bGwscj1hLmNoaWxkcmVuLGNnKG8sYSk/cj1udWxsOm51bGwhPT1pJiZjZyhvLGkpJiYodC5mbGFnc3w9MzIpLG51bGwhPT10Lm1lbW9pemVkU3RhdGUmJihjOS5fY3VycmVudFZhbHVlPW89bzYoZSx0LG83LG51bGwsbnVsbCxuKSksaUIoZSx0KSxpeChlLHQscixuKSx0LmNoaWxkO2Nhc2UgNjpyZXR1cm4gbnVsbD09PWUmJnJqJiYoKGU9bj1yRSkmJihudWxsIT09KG49ZnVuY3Rpb24oZSx0LG4pe2lmKFwiXCI9PT10KXJldHVybiBudWxsO2Zvcig7MyE9PWUubm9kZVR5cGU7KWlmKCgxIT09ZS5ub2RlVHlwZXx8XCJJTlBVVFwiIT09ZS5ub2RlTmFtZXx8XCJoaWRkZW5cIiE9PWUudHlwZSkmJiFufHxudWxsPT09KGU9Y0IoZS5uZXh0U2libGluZykpKXJldHVybiBudWxsO3JldHVybiBlfShuLHQucGVuZGluZ1Byb3BzLHJPKSk/KHQuc3RhdGVOb2RlPW4scms9dCxyRT1udWxsLGU9ITApOmU9ITEpLGV8fHJQKHQpKSxudWxsO2Nhc2UgMTM6cmV0dXJuIGlSKGUsdCxuKTtjYXNlIDQ6cmV0dXJuIEgodCx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxyPXQucGVuZGluZ1Byb3BzLG51bGw9PT1lP3QuY2hpbGQ9b2IodCxudWxsLHIsbik6aXgoZSx0LHIsbiksdC5jaGlsZDtjYXNlIDExOnJldHVybiBpdyhlLHQsdC50eXBlLHQucGVuZGluZ1Byb3BzLG4pO2Nhc2UgNzpyZXR1cm4gaXgoZSx0LHQucGVuZGluZ1Byb3BzLG4pLHQuY2hpbGQ7Y2FzZSA4OmNhc2UgMTI6cmV0dXJuIGl4KGUsdCx0LnBlbmRpbmdQcm9wcy5jaGlsZHJlbixuKSx0LmNoaWxkO2Nhc2UgMTA6cmV0dXJuIHI9dC5wZW5kaW5nUHJvcHMsclUodCx0LnR5cGUsci52YWx1ZSksaXgoZSx0LHIuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDk6cmV0dXJuIG89dC50eXBlLl9jb250ZXh0LHI9dC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sclcodCkscj1yKG89clkobykpLHQuZmxhZ3N8PTEsaXgoZSx0LHIsbiksdC5jaGlsZDtjYXNlIDE0OnJldHVybiBpQyhlLHQsdC50eXBlLHQucGVuZGluZ1Byb3BzLG4pO2Nhc2UgMTU6cmV0dXJuIGlfKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxOTpyZXR1cm4gaUgoZSx0LG4pO2Nhc2UgMzE6dmFyIHM9ZSxjPXQsdT1uLGQ9Yy5wZW5kaW5nUHJvcHMsZj0wIT0oMTI4JmMuZmxhZ3MpO2lmKGMuZmxhZ3MmPS0xMjksbnVsbD09PXMpe2lmKHJqKXtpZihcImhpZGRlblwiPT09ZC5tb2RlKXJldHVybiBzPWlTKGMsZCksYy5sYW5lcz0weDIwMDAwMDAwLGlFKG51bGwscyk7aWYob1UoYyksKHM9ckUpP251bGwhPT0ocz1udWxsIT09KHM9Y2oocyxyTykpJiZcIiZcIj09PXMuZGF0YT9zOm51bGwpJiYoYy5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOnMsdHJlZUNvbnRleHQ6bnVsbCE9PXJ5P3tpZDpydixvdmVyZmxvdzpyYn06bnVsbCxyZXRyeUxhbmU6MHgyMDAwMDAwMCxoeWRyYXRpb25FcnJvcnM6bnVsbH0sKHU9cmwocykpLnJldHVybj1jLGMuY2hpbGQ9dSxyaz1jLHJFPW51bGwpOnM9bnVsbCxudWxsPT09cyl0aHJvdyByUChjKTtyZXR1cm4gYy5sYW5lcz0weDIwMDAwMDAwLG51bGx9cmV0dXJuIGlTKGMsZCl9dmFyIHA9cy5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1wKXt2YXIgaD1wLmRlaHlkcmF0ZWQ7aWYob1UoYyksZilpZigyNTYmYy5mbGFncyljLmZsYWdzJj0tMjU3LGM9aU8ocyxjLHUpO2Vsc2UgaWYobnVsbCE9PWMubWVtb2l6ZWRTdGF0ZSljLmNoaWxkPXMuY2hpbGQsYy5mbGFnc3w9MTI4LGM9bnVsbDtlbHNlIHRocm93IEVycm9yKGwoNTU4KSk7ZWxzZSBpZihpQXx8clYocyxjLHUsITEpLGY9MCE9KHUmcy5jaGlsZExhbmVzKSxpQXx8Zil7aWYobnVsbCE9PShkPWxMKSYmMCE9PShoPWVPKGQsdSkpJiZoIT09cC5yZXRyeUxhbmUpdGhyb3cgcC5yZXRyeUxhbmU9aCxuMyhzLGgpLHNhKGQscyxoKSxpYjtzZygpLGM9aU8ocyxjLHUpfWVsc2Ugcz1wLnRyZWVDb250ZXh0LHJFPWNCKGgubmV4dFNpYmxpbmcpLHJrPWMscmo9ITAsclM9bnVsbCxyTz0hMSxudWxsIT09cyYmcl8oYyxzKSxjPWlTKGMsZCksYy5mbGFnc3w9NDA5NjtyZXR1cm4gY31yZXR1cm4ocz1ybihzLmNoaWxkLHttb2RlOmQubW9kZSxjaGlsZHJlbjpkLmNoaWxkcmVufSkpLnJlZj1jLnJlZixjLmNoaWxkPXMscy5yZXR1cm49YyxzO2Nhc2UgMjI6cmV0dXJuIGlrKGUsdCxuLHQucGVuZGluZ1Byb3BzKTtjYXNlIDI0OnJldHVybiByVyh0KSxyPXJZKHIwKSxudWxsPT09ZT8obnVsbD09PShvPW9lKCkpJiYobz1sTCxhPXIxKCksby5wb29sZWRDYWNoZT1hLGEucmVmQ291bnQrKyxudWxsIT09YSYmKG8ucG9vbGVkQ2FjaGVMYW5lc3w9biksbz1hKSx0Lm1lbW9pemVkU3RhdGU9e3BhcmVudDpyLGNhY2hlOm99LG93KHQpLHJVKHQscjAsbykpOigwIT0oZS5sYW5lcyZuKSYmKG9DKGUsdCksb0IodCxudWxsLG51bGwsbiksb08oKSksbz1lLm1lbW9pemVkU3RhdGUsYT10Lm1lbW9pemVkU3RhdGUsby5wYXJlbnQhPT1yPyhvPXtwYXJlbnQ6cixjYWNoZTpyfSx0Lm1lbW9pemVkU3RhdGU9bywwPT09dC5sYW5lcyYmKHQubWVtb2l6ZWRTdGF0ZT10LnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1vKSxyVSh0LHIwLHIpKTooclUodCxyMCxyPWEuY2FjaGUpLHIhPT1vLmNhY2hlJiZySCh0LFtyMF0sbiwhMCkpKSxpeChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDI5OnRocm93IHQucGVuZGluZ1Byb3BzfXRocm93IEVycm9yKGwoMTU2LHQudGFnKSl9ZnVuY3Rpb24gaVkoZSl7ZS5mbGFnc3w9NH1mdW5jdGlvbiBpSyhlLHQsbixyLG8pe2lmKCh0PTAhPSgzMiZlLm1vZGUpKSYmKHQ9ITEpLHQpe2lmKGUuZmxhZ3N8PTB4MTAwMDAwMCwoMHgxM2ZmZmY0MCZvKT09PW8paWYoZS5zdGF0ZU5vZGUuY29tcGxldGUpZS5mbGFnc3w9ODE5MjtlbHNlIGlmKHNwKCkpZS5mbGFnc3w9ODE5MjtlbHNlIHRocm93IG91PW9pLG9vfWVsc2UgZS5mbGFncyY9LTB4MTAwMDAwMX1mdW5jdGlvbiBpWChlLHQpe2lmKFwic3R5bGVzaGVldFwiIT09dC50eXBlfHwwIT0oNCZ0LnN0YXRlLmxvYWRpbmcpKWUuZmxhZ3MmPS0weDEwMDAwMDE7ZWxzZSBpZihlLmZsYWdzfD0weDEwMDAwMDAsIWMxKHQpKWlmKHNwKCkpZS5mbGFnc3w9ODE5MjtlbHNlIHRocm93IG91PW9pLG9vfWZ1bmN0aW9uIGlHKGUsdCl7bnVsbCE9PXQmJihlLmZsYWdzfD00KSwxNjM4NCZlLmZsYWdzJiYodD0yMiE9PWUudGFnP2VfKCk6MHgyMDAwMDAwMCxlLmxhbmVzfD10LGxYfD10KX1mdW5jdGlvbiBpUShlLHQpe2lmKCFyailzd2l0Y2goZS50YWlsTW9kZSl7Y2FzZVwiaGlkZGVuXCI6dD1lLnRhaWw7Zm9yKHZhciBuPW51bGw7bnVsbCE9PXQ7KW51bGwhPT10LmFsdGVybmF0ZSYmKG49dCksdD10LnNpYmxpbmc7bnVsbD09PW4/ZS50YWlsPW51bGw6bi5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZVwiY29sbGFwc2VkXCI6bj1lLnRhaWw7Zm9yKHZhciByPW51bGw7bnVsbCE9PW47KW51bGwhPT1uLmFsdGVybmF0ZSYmKHI9biksbj1uLnNpYmxpbmc7bnVsbD09PXI/dHx8bnVsbD09PWUudGFpbD9lLnRhaWw9bnVsbDplLnRhaWwuc2libGluZz1udWxsOnIuc2libGluZz1udWxsfX1mdW5jdGlvbiBpSihlKXt2YXIgdD1udWxsIT09ZS5hbHRlcm5hdGUmJmUuYWx0ZXJuYXRlLmNoaWxkPT09ZS5jaGlsZCxuPTAscj0wO2lmKHQpZm9yKHZhciBvPWUuY2hpbGQ7bnVsbCE9PW87KW58PW8ubGFuZXN8by5jaGlsZExhbmVzLHJ8PTB4M2UwMDAwMCZvLnN1YnRyZWVGbGFncyxyfD0weDNlMDAwMDAmby5mbGFncyxvLnJldHVybj1lLG89by5zaWJsaW5nO2Vsc2UgZm9yKG89ZS5jaGlsZDtudWxsIT09bzspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMscnw9by5zdWJ0cmVlRmxhZ3Mscnw9by5mbGFncyxvLnJldHVybj1lLG89by5zaWJsaW5nO3JldHVybiBlLnN1YnRyZWVGbGFnc3w9cixlLmNoaWxkTGFuZXM9bix0fWZ1bmN0aW9uIGkwKGUsdCl7c3dpdGNoKHJDKHQpLHQudGFnKXtjYXNlIDM6ckYocjApLFYoKTticmVhaztjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OlcodCk7YnJlYWs7Y2FzZSA0OlYoKTticmVhaztjYXNlIDMxOm51bGwhPT10Lm1lbW9pemVkU3RhdGUmJm9IKHQpO2JyZWFrO2Nhc2UgMTM6b0godCk7YnJlYWs7Y2FzZSAxOTpSKG9WKTticmVhaztjYXNlIDEwOnJGKHQudHlwZSk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOm9IKHQpLG9OKCksbnVsbCE9PWUmJlIocjcpO2JyZWFrO2Nhc2UgMjQ6ckYocjApfX1mdW5jdGlvbiBpMShlLHQpe3RyeXt2YXIgbj10LnVwZGF0ZVF1ZXVlLHI9bnVsbCE9PW4/bi5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PXIpe3ZhciBvPXIubmV4dDtuPW87ZG97aWYoKG4udGFnJmUpPT09ZSl7cj12b2lkIDA7dmFyIGE9bi5jcmVhdGU7bi5pbnN0LmRlc3Ryb3k9cj1hKCl9bj1uLm5leHR9d2hpbGUobiE9PW8pfX1jYXRjaChlKXtzUCh0LHQucmV0dXJuLGUpfX1mdW5jdGlvbiBpMihlLHQsbil7dHJ5e3ZhciByPXQudXBkYXRlUXVldWUsbz1udWxsIT09cj9yLmxhc3RFZmZlY3Q6bnVsbDtpZihudWxsIT09byl7dmFyIGE9by5uZXh0O3I9YTtkb3tpZigoci50YWcmZSk9PT1lKXt2YXIgaT1yLmluc3QsbD1pLmRlc3Ryb3k7aWYodm9pZCAwIT09bCl7aS5kZXN0cm95PXZvaWQgMCxvPXQ7dHJ5e2woKX1jYXRjaChlKXtzUChvLG4sZSl9fX1yPXIubmV4dH13aGlsZShyIT09YSl9fWNhdGNoKGUpe3NQKHQsdC5yZXR1cm4sZSl9fWZ1bmN0aW9uIGk0KGUpe3ZhciB0PWUudXBkYXRlUXVldWU7aWYobnVsbCE9PXQpe3ZhciBuPWUuc3RhdGVOb2RlO3RyeXtvSSh0LG4pfWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9fX1mdW5jdGlvbiBpNShlLHQsbil7bi5wcm9wcz1pYyhlLnR5cGUsZS5tZW1vaXplZFByb3BzKSxuLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZTt0cnl7bi5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKG4pe3NQKGUsdCxuKX19ZnVuY3Rpb24gaTMoZSx0KXt0cnl7dmFyIG49ZS5yZWY7aWYobnVsbCE9PW4pe3N3aXRjaChlLnRhZyl7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTp2YXIgcj1lLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnI9ZS5zdGF0ZU5vZGV9XCJmdW5jdGlvblwiPT10eXBlb2Ygbj9lLnJlZkNsZWFudXA9bihyKTpuLmN1cnJlbnQ9cn19Y2F0Y2gobil7c1AoZSx0LG4pfX1mdW5jdGlvbiBpNihlLHQpe3ZhciBuPWUucmVmLHI9ZS5yZWZDbGVhbnVwO2lmKG51bGwhPT1uKWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpdHJ5e3IoKX1jYXRjaChuKXtzUChlLHQsbil9ZmluYWxseXtlLnJlZkNsZWFudXA9bnVsbCxudWxsIT0oZT1lLmFsdGVybmF0ZSkmJihlLnJlZkNsZWFudXA9bnVsbCl9ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXRyeXtuKG51bGwpfWNhdGNoKG4pe3NQKGUsdCxuKX1lbHNlIG4uY3VycmVudD1udWxsfWZ1bmN0aW9uIGk5KGUpe3ZhciB0PWUudHlwZSxuPWUubWVtb2l6ZWRQcm9wcyxyPWUuc3RhdGVOb2RlO3RyeXtzd2l0Y2godCl7Y2FzZVwiYnV0dG9uXCI6Y2FzZVwiaW5wdXRcIjpjYXNlXCJzZWxlY3RcIjpjYXNlXCJ0ZXh0YXJlYVwiOm4uYXV0b0ZvY3VzJiZyLmZvY3VzKCk7YnJlYWs7Y2FzZVwiaW1nXCI6bi5zcmM/ci5zcmM9bi5zcmM6bi5zcmNTZXQmJihyLnNyY3NldD1uLnNyY1NldCl9fWNhdGNoKHQpe3NQKGUsZS5yZXR1cm4sdCl9fWZ1bmN0aW9uIGk4KGUsdCxuKXt0cnl7dmFyIHI9ZS5zdGF0ZU5vZGU7KGZ1bmN0aW9uKGUsdCxuLHIpe3N3aXRjaCh0KXtjYXNlXCJkaXZcIjpjYXNlXCJzcGFuXCI6Y2FzZVwic3ZnXCI6Y2FzZVwicGF0aFwiOmNhc2VcImFcIjpjYXNlXCJnXCI6Y2FzZVwicFwiOmNhc2VcImxpXCI6YnJlYWs7Y2FzZVwiaW5wdXRcIjp2YXIgbz1udWxsLGE9bnVsbCxpPW51bGwscz1udWxsLGM9bnVsbCx1PW51bGwsZD1udWxsO2ZvcihoIGluIG4pe3ZhciBmPW5baF07aWYobi5oYXNPd25Qcm9wZXJ0eShoKSYmbnVsbCE9Zilzd2l0Y2goaCl7Y2FzZVwiY2hlY2tlZFwiOmNhc2VcInZhbHVlXCI6YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6Yz1mO2RlZmF1bHQ6ci5oYXNPd25Qcm9wZXJ0eShoKXx8Y3MoZSx0LGgsbnVsbCxyLGYpfX1mb3IodmFyIHAgaW4gcil7dmFyIGg9cltwXTtpZihmPW5bcF0sci5oYXNPd25Qcm9wZXJ0eShwKSYmKG51bGwhPWh8fG51bGwhPWYpKXN3aXRjaChwKXtjYXNlXCJ0eXBlXCI6YT1oO2JyZWFrO2Nhc2VcIm5hbWVcIjpvPWg7YnJlYWs7Y2FzZVwiY2hlY2tlZFwiOnU9aDticmVhaztjYXNlXCJkZWZhdWx0Q2hlY2tlZFwiOmQ9aDticmVhaztjYXNlXCJ2YWx1ZVwiOmk9aDticmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjpzPWg7YnJlYWs7Y2FzZVwiY2hpbGRyZW5cIjpjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPWgpdGhyb3cgRXJyb3IobCgxMzcsdCkpO2JyZWFrO2RlZmF1bHQ6aCE9PWYmJmNzKGUsdCxwLGgscixmKX19dG4oZSxpLHMsYyx1LGQsYSxvKTtyZXR1cm47Y2FzZVwic2VsZWN0XCI6Zm9yKGEgaW4gaD1pPXM9cD1udWxsLG4paWYoYz1uW2FdLG4uaGFzT3duUHJvcGVydHkoYSkmJm51bGwhPWMpc3dpdGNoKGEpe2Nhc2VcInZhbHVlXCI6YnJlYWs7Y2FzZVwibXVsdGlwbGVcIjpoPWM7ZGVmYXVsdDpyLmhhc093blByb3BlcnR5KGEpfHxjcyhlLHQsYSxudWxsLHIsYyl9Zm9yKG8gaW4gcilpZihhPXJbb10sYz1uW29dLHIuaGFzT3duUHJvcGVydHkobykmJihudWxsIT1hfHxudWxsIT1jKSlzd2l0Y2gobyl7Y2FzZVwidmFsdWVcIjpwPWE7YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6cz1hO2JyZWFrO2Nhc2VcIm11bHRpcGxlXCI6aT1hO2RlZmF1bHQ6YSE9PWMmJmNzKGUsdCxvLGEscixjKX10PXMsbj1pLHI9aCxudWxsIT1wP3RhKGUsISFuLHAsITEpOiEhciE9ISFuJiYobnVsbCE9dD90YShlLCEhbix0LCEwKTp0YShlLCEhbixuP1tdOlwiXCIsITEpKTtyZXR1cm47Y2FzZVwidGV4dGFyZWFcIjpmb3IocyBpbiBoPXA9bnVsbCxuKWlmKG89bltzXSxuLmhhc093blByb3BlcnR5KHMpJiZudWxsIT1vJiYhci5oYXNPd25Qcm9wZXJ0eShzKSlzd2l0Y2gocyl7Y2FzZVwidmFsdWVcIjpjYXNlXCJjaGlsZHJlblwiOmJyZWFrO2RlZmF1bHQ6Y3MoZSx0LHMsbnVsbCxyLG8pfWZvcihpIGluIHIpaWYobz1yW2ldLGE9bltpXSxyLmhhc093blByb3BlcnR5KGkpJiYobnVsbCE9b3x8bnVsbCE9YSkpc3dpdGNoKGkpe2Nhc2VcInZhbHVlXCI6cD1vO2JyZWFrO2Nhc2VcImRlZmF1bHRWYWx1ZVwiOmg9bzticmVhaztjYXNlXCJjaGlsZHJlblwiOmJyZWFrO2Nhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9byl0aHJvdyBFcnJvcihsKDkxKSk7YnJlYWs7ZGVmYXVsdDpvIT09YSYmY3MoZSx0LGksbyxyLGEpfXRpKGUscCxoKTtyZXR1cm47Y2FzZVwib3B0aW9uXCI6Zm9yKHZhciBtIGluIG4pcD1uW21dLG4uaGFzT3duUHJvcGVydHkobSkmJm51bGwhPXAmJiFyLmhhc093blByb3BlcnR5KG0pJiYoXCJzZWxlY3RlZFwiPT09bT9lLnNlbGVjdGVkPSExOmNzKGUsdCxtLG51bGwscixwKSk7Zm9yKGMgaW4gcilwPXJbY10saD1uW2NdLHIuaGFzT3duUHJvcGVydHkoYykmJnAhPT1oJiYobnVsbCE9cHx8bnVsbCE9aCkmJihcInNlbGVjdGVkXCI9PT1jP2Uuc2VsZWN0ZWQ9cCYmXCJmdW5jdGlvblwiIT10eXBlb2YgcCYmXCJzeW1ib2xcIiE9dHlwZW9mIHA6Y3MoZSx0LGMscCxyLGgpKTtyZXR1cm47Y2FzZVwiaW1nXCI6Y2FzZVwibGlua1wiOmNhc2VcImFyZWFcIjpjYXNlXCJiYXNlXCI6Y2FzZVwiYnJcIjpjYXNlXCJjb2xcIjpjYXNlXCJlbWJlZFwiOmNhc2VcImhyXCI6Y2FzZVwia2V5Z2VuXCI6Y2FzZVwibWV0YVwiOmNhc2VcInBhcmFtXCI6Y2FzZVwic291cmNlXCI6Y2FzZVwidHJhY2tcIjpjYXNlXCJ3YnJcIjpjYXNlXCJtZW51aXRlbVwiOmZvcih2YXIgZyBpbiBuKXA9bltnXSxuLmhhc093blByb3BlcnR5KGcpJiZudWxsIT1wJiYhci5oYXNPd25Qcm9wZXJ0eShnKSYmY3MoZSx0LGcsbnVsbCxyLHApO2Zvcih1IGluIHIpaWYocD1yW3VdLGg9blt1XSxyLmhhc093blByb3BlcnR5KHUpJiZwIT09aCYmKG51bGwhPXB8fG51bGwhPWgpKXN3aXRjaCh1KXtjYXNlXCJjaGlsZHJlblwiOmNhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9cCl0aHJvdyBFcnJvcihsKDEzNyx0KSk7YnJlYWs7ZGVmYXVsdDpjcyhlLHQsdSxwLHIsaCl9cmV0dXJuO2RlZmF1bHQ6aWYodGYodCkpe2Zvcih2YXIgeSBpbiBuKXA9blt5XSxuLmhhc093blByb3BlcnR5KHkpJiZ2b2lkIDAhPT1wJiYhci5oYXNPd25Qcm9wZXJ0eSh5KSYmY2MoZSx0LHksdm9pZCAwLHIscCk7Zm9yKGQgaW4gcilwPXJbZF0saD1uW2RdLHIuaGFzT3duUHJvcGVydHkoZCkmJnAhPT1oJiYodm9pZCAwIT09cHx8dm9pZCAwIT09aCkmJmNjKGUsdCxkLHAscixoKTtyZXR1cm59fWZvcih2YXIgdiBpbiBuKXA9blt2XSxuLmhhc093blByb3BlcnR5KHYpJiZudWxsIT1wJiYhci5oYXNPd25Qcm9wZXJ0eSh2KSYmY3MoZSx0LHYsbnVsbCxyLHApO2ZvcihmIGluIHIpcD1yW2ZdLGg9bltmXSxyLmhhc093blByb3BlcnR5KGYpJiZwIT09aCYmKG51bGwhPXB8fG51bGwhPWgpJiZjcyhlLHQsZixwLHIsaCl9KShyLGUudHlwZSxuLHQpLHJbZUxdPXR9Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX19ZnVuY3Rpb24gaTcoZSl7cmV0dXJuIDU9PT1lLnRhZ3x8Mz09PWUudGFnfHwyNj09PWUudGFnfHwyNz09PWUudGFnJiZjQyhlLnR5cGUpfHw0PT09ZS50YWd9ZnVuY3Rpb24gbGUoZSl7ZTpmb3IoOzspe2Zvcig7bnVsbD09PWUuc2libGluZzspe2lmKG51bGw9PT1lLnJldHVybnx8aTcoZS5yZXR1cm4pKXJldHVybiBudWxsO2U9ZS5yZXR1cm59Zm9yKGUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmc7NSE9PWUudGFnJiY2IT09ZS50YWcmJjE4IT09ZS50YWc7KXtpZigyNz09PWUudGFnJiZjQyhlLnR5cGUpfHwyJmUuZmxhZ3N8fG51bGw9PT1lLmNoaWxkfHw0PT09ZS50YWcpY29udGludWUgZTtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZH1pZighKDImZS5mbGFncykpcmV0dXJuIGUuc3RhdGVOb2RlfX1mdW5jdGlvbiBsdChlLHQsbil7dmFyIHI9ZS50YWc7aWYoNT09PXJ8fDY9PT1yKWU9ZS5zdGF0ZU5vZGUsdD9uLmluc2VydEJlZm9yZShlLHQpOm4uYXBwZW5kQ2hpbGQoZSk7ZWxzZSBpZig0IT09ciYmKDI3PT09ciYmY0MoZS50eXBlKSYmKG49ZS5zdGF0ZU5vZGUpLG51bGwhPT0oZT1lLmNoaWxkKSkpZm9yKGx0KGUsdCxuKSxlPWUuc2libGluZztudWxsIT09ZTspbHQoZSx0LG4pLGU9ZS5zaWJsaW5nfWZ1bmN0aW9uIGxuKGUpe3ZhciB0PWUuc3RhdGVOb2RlLG49ZS5tZW1vaXplZFByb3BzO3RyeXtmb3IodmFyIHI9ZS50eXBlLG89dC5hdHRyaWJ1dGVzO28ubGVuZ3RoOyl0LnJlbW92ZUF0dHJpYnV0ZU5vZGUob1swXSk7Y3UodCxyLG4pLHRbZURdPWUsdFtlTF09bn1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfX12YXIgbHI9ITEsbG89ITEsbGE9ITEsbGk9XCJmdW5jdGlvblwiPT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCxsbD1udWxsO2Z1bmN0aW9uIGxzKGUsdCxuKXt2YXIgcj1uLmZsYWdzO3N3aXRjaChuLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpsQShlLG4pLDQmciYmaTEoNSxuKTticmVhaztjYXNlIDE6aWYobEEoZSxuKSw0JnIpaWYoZT1uLnN0YXRlTm9kZSxudWxsPT09dCl0cnl7ZS5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGUpe3NQKG4sbi5yZXR1cm4sZSl9ZWxzZXt2YXIgbz1pYyhuLnR5cGUsdC5tZW1vaXplZFByb3BzKTt0PXQubWVtb2l6ZWRTdGF0ZTt0cnl7ZS5jb21wb25lbnREaWRVcGRhdGUobyx0LGUuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfWNhdGNoKGUpe3NQKG4sbi5yZXR1cm4sZSl9fTY0JnImJmk0KG4pLDUxMiZyJiZpMyhuLG4ucmV0dXJuKTticmVhaztjYXNlIDM6aWYobEEoZSxuKSw2NCZyJiZudWxsIT09KGU9bi51cGRhdGVRdWV1ZSkpe2lmKHQ9bnVsbCxudWxsIT09bi5jaGlsZClzd2l0Y2gobi5jaGlsZC50YWcpe2Nhc2UgMjc6Y2FzZSA1OmNhc2UgMTp0PW4uY2hpbGQuc3RhdGVOb2RlfXRyeXtvSShlLHQpfWNhdGNoKGUpe3NQKG4sbi5yZXR1cm4sZSl9fWJyZWFrO2Nhc2UgMjc6bnVsbD09PXQmJjQmciYmbG4obik7Y2FzZSAyNjpjYXNlIDU6bEEoZSxuKSxudWxsPT09dCYmNCZyJiZpOShuKSw1MTImciYmaTMobixuLnJldHVybik7YnJlYWs7Y2FzZSAxMjpkZWZhdWx0OmxBKGUsbik7YnJlYWs7Y2FzZSAzMTpsQShlLG4pLDQmciYmbHAoZSxuKTticmVhaztjYXNlIDEzOmxBKGUsbiksNCZyJiZsaChlLG4pLDY0JnImJm51bGwhPT0oZT1uLm1lbW9pemVkU3RhdGUpJiZudWxsIT09KGU9ZS5kZWh5ZHJhdGVkKSYmZnVuY3Rpb24oZSx0KXt2YXIgbj1lLm93bmVyRG9jdW1lbnQ7aWYoXCIkflwiPT09ZS5kYXRhKWUuX3JlYWN0UmV0cnk9dDtlbHNlIGlmKFwiJD9cIiE9PWUuZGF0YXx8XCJsb2FkaW5nXCIhPT1uLnJlYWR5U3RhdGUpdCgpO2Vsc2V7dmFyIHI9ZnVuY3Rpb24oKXt0KCksbi5yZW1vdmVFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLHIpfTtuLmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsciksZS5fcmVhY3RSZXRyeT1yfX0oZSxuPXNELmJpbmQobnVsbCxuKSk7YnJlYWs7Y2FzZSAyMjppZighKHI9bnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZXx8bHIpKXt0PW51bGwhPT10JiZudWxsIT09dC5tZW1vaXplZFN0YXRlfHxsbyxvPWxyO3ZhciBhPWxvO2xyPXIsKGxvPXQpJiYhYT9mdW5jdGlvbiBlKHQsbixyKXtmb3Iocj1yJiYwIT0oODc3MiZuLnN1YnRyZWVGbGFncyksbj1uLmNoaWxkO251bGwhPT1uOyl7dmFyIG89bi5hbHRlcm5hdGUsYT10LGk9bixsPWkuZmxhZ3M7c3dpdGNoKGkudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmUoYSxpLHIpLGkxKDQsaSk7YnJlYWs7Y2FzZSAxOmlmKGUoYSxpLHIpLFwiZnVuY3Rpb25cIj09dHlwZW9mKGE9KG89aSkuc3RhdGVOb2RlKS5jb21wb25lbnREaWRNb3VudCl0cnl7YS5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGUpe3NQKG8sby5yZXR1cm4sZSl9aWYobnVsbCE9PShhPShvPWkpLnVwZGF0ZVF1ZXVlKSl7dmFyIHM9by5zdGF0ZU5vZGU7dHJ5e3ZhciBjPWEuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcztpZihudWxsIT09Yylmb3IoYS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzPW51bGwsYT0wO2E8Yy5sZW5ndGg7YSsrKW9QKGNbYV0scyl9Y2F0Y2goZSl7c1AobyxvLnJldHVybixlKX19ciYmNjQmbCYmaTQoaSksaTMoaSxpLnJldHVybik7YnJlYWs7Y2FzZSAyNzpsbihpKTtjYXNlIDI2OmNhc2UgNTplKGEsaSxyKSxyJiZudWxsPT09byYmNCZsJiZpOShpKSxpMyhpLGkucmV0dXJuKTticmVhaztjYXNlIDEyOmRlZmF1bHQ6ZShhLGkscik7YnJlYWs7Y2FzZSAzMTplKGEsaSxyKSxyJiY0JmwmJmxwKGEsaSk7YnJlYWs7Y2FzZSAxMzplKGEsaSxyKSxyJiY0JmwmJmxoKGEsaSk7YnJlYWs7Y2FzZSAyMjpudWxsPT09aS5tZW1vaXplZFN0YXRlJiZlKGEsaSxyKSxpMyhpLGkucmV0dXJuKTtjYXNlIDMwOn1uPW4uc2libGluZ319KGUsbiwwIT0oODc3MiZuLnN1YnRyZWVGbGFncykpOmxBKGUsbiksbHI9byxsbz1hfWNhc2UgMzA6fX12YXIgbGM9bnVsbCxsdT0hMTtmdW5jdGlvbiBsZChlLHQsbil7Zm9yKG49bi5jaGlsZDtudWxsIT09bjspbGYoZSx0LG4pLG49bi5zaWJsaW5nfWZ1bmN0aW9uIGxmKGUsdCxuKXtpZihlcCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZXAub25Db21taXRGaWJlclVubW91bnQpdHJ5e2VwLm9uQ29tbWl0RmliZXJVbm1vdW50KGVmLG4pfWNhdGNoKGUpe31zd2l0Y2gobi50YWcpe2Nhc2UgMjY6bG98fGk2KG4sdCksbGQoZSx0LG4pLG4ubWVtb2l6ZWRTdGF0ZT9uLm1lbW9pemVkU3RhdGUuY291bnQtLTpuLnN0YXRlTm9kZSYmKG49bi5zdGF0ZU5vZGUpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobik7YnJlYWs7Y2FzZSAyNzpsb3x8aTYobix0KTt2YXIgcj1sYyxvPWx1O2NDKG4udHlwZSkmJihsYz1uLnN0YXRlTm9kZSxsdT0hMSksbGQoZSx0LG4pLGNEKG4uc3RhdGVOb2RlKSxsYz1yLGx1PW87YnJlYWs7Y2FzZSA1OmxvfHxpNihuLHQpO2Nhc2UgNjppZihyPWxjLG89bHUsbGM9bnVsbCxsZChlLHQsbiksbGM9cixsdT1vLG51bGwhPT1sYylpZihsdSl0cnl7KDk9PT1sYy5ub2RlVHlwZT9sYy5ib2R5OlwiSFRNTFwiPT09bGMubm9kZU5hbWU/bGMub3duZXJEb2N1bWVudC5ib2R5OmxjKS5yZW1vdmVDaGlsZChuLnN0YXRlTm9kZSl9Y2F0Y2goZSl7c1Aobix0LGUpfWVsc2UgdHJ5e2xjLnJlbW92ZUNoaWxkKG4uc3RhdGVOb2RlKX1jYXRjaChlKXtzUChuLHQsZSl9YnJlYWs7Y2FzZSAxODpudWxsIT09bGMmJihsdT8oY18oOT09PShlPWxjKS5ub2RlVHlwZT9lLmJvZHk6XCJIVE1MXCI9PT1lLm5vZGVOYW1lP2Uub3duZXJEb2N1bWVudC5ib2R5OmUsbi5zdGF0ZU5vZGUpLHVPKGUpKTpjXyhsYyxuLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpyPWxjLG89bHUsbGM9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxsdT0hMCxsZChlLHQsbiksbGM9cixsdT1vO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpsb3x8aTIoMixuLHQpLGxvfHxpMig0LG4sdCksbGQoZSx0LG4pO2JyZWFrO2Nhc2UgMTpsb3x8KGk2KG4sdCksXCJmdW5jdGlvblwiPT10eXBlb2Yocj1uLnN0YXRlTm9kZSkuY29tcG9uZW50V2lsbFVubW91bnQmJmk1KG4sdCxyKSksbGQoZSx0LG4pO2JyZWFrO2Nhc2UgMjE6ZGVmYXVsdDpsZChlLHQsbik7YnJlYWs7Y2FzZSAyMjpsbz0ocj1sbyl8fG51bGwhPT1uLm1lbW9pemVkU3RhdGUsbGQoZSx0LG4pLGxvPXJ9fWZ1bmN0aW9uIGxwKGUsdCl7aWYobnVsbD09PXQubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PShlPXQuYWx0ZXJuYXRlKSYmbnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSkpe2U9ZS5kZWh5ZHJhdGVkO3RyeXt1TyhlKX1jYXRjaChlKXtzUCh0LHQucmV0dXJuLGUpfX19ZnVuY3Rpb24gbGgoZSx0KXtpZihudWxsPT09dC5tZW1vaXplZFN0YXRlJiZudWxsIT09KGU9dC5hbHRlcm5hdGUpJiZudWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PShlPWUuZGVoeWRyYXRlZCkpdHJ5e3VPKGUpfWNhdGNoKGUpe3NQKHQsdC5yZXR1cm4sZSl9fWZ1bmN0aW9uIGxtKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7c3dpdGNoKGUudGFnKXtjYXNlIDMxOmNhc2UgMTM6Y2FzZSAxOTp2YXIgdD1lLnN0YXRlTm9kZTtyZXR1cm4gbnVsbD09PXQmJih0PWUuc3RhdGVOb2RlPW5ldyBsaSksdDtjYXNlIDIyOnJldHVybiBudWxsPT09KHQ9KGU9ZS5zdGF0ZU5vZGUpLl9yZXRyeUNhY2hlKSYmKHQ9ZS5fcmV0cnlDYWNoZT1uZXcgbGkpLHQ7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDQzNSxlLnRhZykpfX0oZSk7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2lmKCFuLmhhcyh0KSl7bi5hZGQodCk7dmFyIHI9c0wuYmluZChudWxsLGUsdCk7dC50aGVuKHIscil9fSl9ZnVuY3Rpb24gbGcoZSx0KXt2YXIgbj10LmRlbGV0aW9ucztpZihudWxsIT09bilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXSxhPWUsaT10LHM9aTtlOmZvcig7bnVsbCE9PXM7KXtzd2l0Y2gocy50YWcpe2Nhc2UgMjc6aWYoY0Mocy50eXBlKSl7bGM9cy5zdGF0ZU5vZGUsbHU9ITE7YnJlYWsgZX1icmVhaztjYXNlIDU6bGM9cy5zdGF0ZU5vZGUsbHU9ITE7YnJlYWsgZTtjYXNlIDM6Y2FzZSA0OmxjPXMuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sbHU9ITA7YnJlYWsgZX1zPXMucmV0dXJufWlmKG51bGw9PT1sYyl0aHJvdyBFcnJvcihsKDE2MCkpO2xmKGEsaSxvKSxsYz1udWxsLGx1PSExLG51bGwhPT0oYT1vLmFsdGVybmF0ZSkmJihhLnJldHVybj1udWxsKSxvLnJldHVybj1udWxsfWlmKDEzODc4JnQuc3VidHJlZUZsYWdzKWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KWx2KHQsZSksdD10LnNpYmxpbmd9dmFyIGx5PW51bGw7ZnVuY3Rpb24gbHYoZSx0KXt2YXIgbj1lLmFsdGVybmF0ZSxyPWUuZmxhZ3M7c3dpdGNoKGUudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6bGcodCxlKSxsYihlKSw0JnImJihpMigzLGUsZS5yZXR1cm4pLGkxKDMsZSksaTIoNSxlLGUucmV0dXJuKSk7YnJlYWs7Y2FzZSAxOmxnKHQsZSksbGIoZSksNTEyJnImJihsb3x8bnVsbD09PW58fGk2KG4sbi5yZXR1cm4pKSw2NCZyJiZsciYmbnVsbCE9PShlPWUudXBkYXRlUXVldWUpJiZudWxsIT09KHI9ZS5jYWxsYmFja3MpJiYobj1lLnNoYXJlZC5oaWRkZW5DYWxsYmFja3MsZS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzPW51bGw9PT1uP3I6bi5jb25jYXQocikpO2JyZWFrO2Nhc2UgMjY6dmFyIG89bHk7aWYobGcodCxlKSxsYihlKSw1MTImciYmKGxvfHxudWxsPT09bnx8aTYobixuLnJldHVybikpLDQmcil7dmFyIGE9bnVsbCE9PW4/bi5tZW1vaXplZFN0YXRlOm51bGw7aWYocj1lLm1lbW9pemVkU3RhdGUsbnVsbD09PW4paWYobnVsbD09PXIpaWYobnVsbD09PWUuc3RhdGVOb2RlKXtlOntyPWUudHlwZSxuPWUubWVtb2l6ZWRQcm9wcyxvPW8ub3duZXJEb2N1bWVudHx8bzt0OnN3aXRjaChyKXtjYXNlXCJ0aXRsZVwiOighKGE9by5nZXRFbGVtZW50c0J5VGFnTmFtZShcInRpdGxlXCIpWzBdKXx8YVtlRl18fGFbZURdfHxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI9PT1hLm5hbWVzcGFjZVVSSXx8YS5oYXNBdHRyaWJ1dGUoXCJpdGVtcHJvcFwiKSkmJihhPW8uY3JlYXRlRWxlbWVudChyKSxvLmhlYWQuaW5zZXJ0QmVmb3JlKGEsby5xdWVyeVNlbGVjdG9yKFwiaGVhZCA+IHRpdGxlXCIpKSksY3UoYSxyLG4pLGFbZURdPWUsZVkoYSkscj1hO2JyZWFrIGU7Y2FzZVwibGlua1wiOnZhciBpPWNKKFwibGlua1wiLFwiaHJlZlwiLG8pLmdldChyKyhuLmhyZWZ8fFwiXCIpKTtpZihpKXtmb3IodmFyIHM9MDtzPGkubGVuZ3RoO3MrKylpZigoYT1pW3NdKS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpPT09KG51bGw9PW4uaHJlZnx8XCJcIj09PW4uaHJlZj9udWxsOm4uaHJlZikmJmEuZ2V0QXR0cmlidXRlKFwicmVsXCIpPT09KG51bGw9PW4ucmVsP251bGw6bi5yZWwpJiZhLmdldEF0dHJpYnV0ZShcInRpdGxlXCIpPT09KG51bGw9PW4udGl0bGU/bnVsbDpuLnRpdGxlKSYmYS5nZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiKT09PShudWxsPT1uLmNyb3NzT3JpZ2luP251bGw6bi5jcm9zc09yaWdpbikpe2kuc3BsaWNlKHMsMSk7YnJlYWsgdH19Y3UoYT1vLmNyZWF0ZUVsZW1lbnQocikscixuKSxvLmhlYWQuYXBwZW5kQ2hpbGQoYSk7YnJlYWs7Y2FzZVwibWV0YVwiOmlmKGk9Y0ooXCJtZXRhXCIsXCJjb250ZW50XCIsbykuZ2V0KHIrKG4uY29udGVudHx8XCJcIikpKXtmb3Iocz0wO3M8aS5sZW5ndGg7cysrKWlmKChhPWlbc10pLmdldEF0dHJpYnV0ZShcImNvbnRlbnRcIik9PT0obnVsbD09bi5jb250ZW50P251bGw6XCJcIituLmNvbnRlbnQpJiZhLmdldEF0dHJpYnV0ZShcIm5hbWVcIik9PT0obnVsbD09bi5uYW1lP251bGw6bi5uYW1lKSYmYS5nZXRBdHRyaWJ1dGUoXCJwcm9wZXJ0eVwiKT09PShudWxsPT1uLnByb3BlcnR5P251bGw6bi5wcm9wZXJ0eSkmJmEuZ2V0QXR0cmlidXRlKFwiaHR0cC1lcXVpdlwiKT09PShudWxsPT1uLmh0dHBFcXVpdj9udWxsOm4uaHR0cEVxdWl2KSYmYS5nZXRBdHRyaWJ1dGUoXCJjaGFyc2V0XCIpPT09KG51bGw9PW4uY2hhclNldD9udWxsOm4uY2hhclNldCkpe2kuc3BsaWNlKHMsMSk7YnJlYWsgdH19Y3UoYT1vLmNyZWF0ZUVsZW1lbnQocikscixuKSxvLmhlYWQuYXBwZW5kQ2hpbGQoYSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDQ2OCxyKSl9YVtlRF09ZSxlWShhKSxyPWF9ZS5zdGF0ZU5vZGU9cn1lbHNlIGMwKG8sZS50eXBlLGUuc3RhdGVOb2RlKTtlbHNlIGUuc3RhdGVOb2RlPWNZKG8scixlLm1lbW9pemVkUHJvcHMpO2Vsc2UgYSE9PXI/KG51bGw9PT1hP251bGwhPT1uLnN0YXRlTm9kZSYmKG49bi5zdGF0ZU5vZGUpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobik6YS5jb3VudC0tLG51bGw9PT1yP2MwKG8sZS50eXBlLGUuc3RhdGVOb2RlKTpjWShvLHIsZS5tZW1vaXplZFByb3BzKSk6bnVsbD09PXImJm51bGwhPT1lLnN0YXRlTm9kZSYmaTgoZSxlLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFByb3BzKX1icmVhaztjYXNlIDI3OmxnKHQsZSksbGIoZSksNTEyJnImJihsb3x8bnVsbD09PW58fGk2KG4sbi5yZXR1cm4pKSxudWxsIT09biYmNCZyJiZpOChlLGUubWVtb2l6ZWRQcm9wcyxuLm1lbW9pemVkUHJvcHMpO2JyZWFrO2Nhc2UgNTppZihsZyh0LGUpLGxiKGUpLDUxMiZyJiYobG98fG51bGw9PT1ufHxpNihuLG4ucmV0dXJuKSksMzImZS5mbGFncyl7bz1lLnN0YXRlTm9kZTt0cnl7dHMobyxcIlwiKX1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfX00JnImJm51bGwhPWUuc3RhdGVOb2RlJiYobz1lLm1lbW9pemVkUHJvcHMsaTgoZSxvLG51bGwhPT1uP24ubWVtb2l6ZWRQcm9wczpvKSksMTAyNCZyJiYobGE9ITApO2JyZWFrO2Nhc2UgNjppZihsZyh0LGUpLGxiKGUpLDQmcil7aWYobnVsbD09PWUuc3RhdGVOb2RlKXRocm93IEVycm9yKGwoMTYyKSk7cj1lLm1lbW9pemVkUHJvcHMsbj1lLnN0YXRlTm9kZTt0cnl7bi5ub2RlVmFsdWU9cn1jYXRjaCh0KXtzUChlLGUucmV0dXJuLHQpfX1icmVhaztjYXNlIDM6aWYoY1E9bnVsbCxvPWx5LGx5PWNSKHQuY29udGFpbmVySW5mbyksbGcodCxlKSxseT1vLGxiKGUpLDQmciYmbnVsbCE9PW4mJm4ubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpdHJ5e3VPKHQuY29udGFpbmVySW5mbyl9Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX1sYSYmKGxhPSExLGZ1bmN0aW9uIGUodCl7aWYoMTAyNCZ0LnN1YnRyZWVGbGFncylmb3IodD10LmNoaWxkO251bGwhPT10Oyl7dmFyIG49dDtlKG4pLDU9PT1uLnRhZyYmMTAyNCZuLmZsYWdzJiZuLnN0YXRlTm9kZS5yZXNldCgpLHQ9dC5zaWJsaW5nfX0oZSkpO2JyZWFrO2Nhc2UgNDpyPWx5LGx5PWNSKGUuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGxnKHQsZSksbGIoZSksbHk9cjticmVhaztjYXNlIDEyOmRlZmF1bHQ6bGcodCxlKSxsYihlKTticmVhaztjYXNlIDMxOmNhc2UgMTk6bGcodCxlKSxsYihlKSw0JnImJm51bGwhPT0ocj1lLnVwZGF0ZVF1ZXVlKSYmKGUudXBkYXRlUXVldWU9bnVsbCxsbShlLHIpKTticmVhaztjYXNlIDEzOmxnKHQsZSksbGIoZSksODE5MiZlLmNoaWxkLmZsYWdzJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlIT0obnVsbCE9PW4mJm51bGwhPT1uLm1lbW9pemVkU3RhdGUpJiYobDA9ZXIoKSksNCZyJiZudWxsIT09KHI9ZS51cGRhdGVRdWV1ZSkmJihlLnVwZGF0ZVF1ZXVlPW51bGwsbG0oZSxyKSk7YnJlYWs7Y2FzZSAyMjpvPW51bGwhPT1lLm1lbW9pemVkU3RhdGU7dmFyIGM9bnVsbCE9PW4mJm51bGwhPT1uLm1lbW9pemVkU3RhdGUsdT1scixkPWxvO2lmKGxyPXV8fG8sbG89ZHx8YyxsZyh0LGUpLGxvPWQsbHI9dSxsYihlKSw4MTkyJnIpZTpmb3IoKHQ9ZS5zdGF0ZU5vZGUpLl92aXNpYmlsaXR5PW8/LTImdC5fdmlzaWJpbGl0eToxfHQuX3Zpc2liaWxpdHksbyYmKG51bGw9PT1ufHxjfHxscnx8bG98fGZ1bmN0aW9uIGUodCl7Zm9yKHQ9dC5jaGlsZDtudWxsIT09dDspe3ZhciBuPXQ7c3dpdGNoKG4udGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE0OmNhc2UgMTU6aTIoNCxuLG4ucmV0dXJuKSxlKG4pO2JyZWFrO2Nhc2UgMTppNihuLG4ucmV0dXJuKTt2YXIgcj1uLnN0YXRlTm9kZTtcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmNvbXBvbmVudFdpbGxVbm1vdW50JiZpNShuLG4ucmV0dXJuLHIpLGUobik7YnJlYWs7Y2FzZSAyNzpjRChuLnN0YXRlTm9kZSk7Y2FzZSAyNjpjYXNlIDU6aTYobixuLnJldHVybiksZShuKTticmVhaztjYXNlIDIyOm51bGw9PT1uLm1lbW9pemVkU3RhdGUmJmUobik7YnJlYWs7ZGVmYXVsdDplKG4pfXQ9dC5zaWJsaW5nfX0oZSkpLG49bnVsbCx0PWU7Oyl7aWYoNT09PXQudGFnfHwyNj09PXQudGFnKXtpZihudWxsPT09bil7Yz1uPXQ7dHJ5e2lmKGE9Yy5zdGF0ZU5vZGUsbylpPWEuc3R5bGUsXCJmdW5jdGlvblwiPT10eXBlb2YgaS5zZXRQcm9wZXJ0eT9pLnNldFByb3BlcnR5KFwiZGlzcGxheVwiLFwibm9uZVwiLFwiaW1wb3J0YW50XCIpOmkuZGlzcGxheT1cIm5vbmVcIjtlbHNle3M9Yy5zdGF0ZU5vZGU7dmFyIGY9Yy5tZW1vaXplZFByb3BzLnN0eWxlLHA9bnVsbCE9ZiYmZi5oYXNPd25Qcm9wZXJ0eShcImRpc3BsYXlcIik/Zi5kaXNwbGF5Om51bGw7cy5zdHlsZS5kaXNwbGF5PW51bGw9PXB8fFwiYm9vbGVhblwiPT10eXBlb2YgcD9cIlwiOihcIlwiK3ApLnRyaW0oKX19Y2F0Y2goZSl7c1AoYyxjLnJldHVybixlKX19fWVsc2UgaWYoNj09PXQudGFnKXtpZihudWxsPT09bil7Yz10O3RyeXtjLnN0YXRlTm9kZS5ub2RlVmFsdWU9bz9cIlwiOmMubWVtb2l6ZWRQcm9wc31jYXRjaChlKXtzUChjLGMucmV0dXJuLGUpfX19ZWxzZSBpZigxOD09PXQudGFnKXtpZihudWxsPT09bil7Yz10O3RyeXt2YXIgaD1jLnN0YXRlTm9kZTtvP2NrKGgsITApOmNrKGMuc3RhdGVOb2RlLCExKX1jYXRjaChlKXtzUChjLGMucmV0dXJuLGUpfX19ZWxzZSBpZigoMjIhPT10LnRhZyYmMjMhPT10LnRhZ3x8bnVsbD09PXQubWVtb2l6ZWRTdGF0ZXx8dD09PWUpJiZudWxsIT09dC5jaGlsZCl7dC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9aWYodD09PWUpYnJlYWs7Zm9yKDtudWxsPT09dC5zaWJsaW5nOyl7aWYobnVsbD09PXQucmV0dXJufHx0LnJldHVybj09PWUpYnJlYWsgZTtuPT09dCYmKG49bnVsbCksdD10LnJldHVybn1uPT09dCYmKG49bnVsbCksdC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ300JnImJm51bGwhPT0ocj1lLnVwZGF0ZVF1ZXVlKSYmbnVsbCE9PShuPXIucmV0cnlRdWV1ZSkmJihyLnJldHJ5UXVldWU9bnVsbCxsbShlLG4pKTtjYXNlIDMwOmNhc2UgMjE6fX1mdW5jdGlvbiBsYihlKXt2YXIgdD1lLmZsYWdzO2lmKDImdCl7dHJ5e2Zvcih2YXIgbixyPWUucmV0dXJuO251bGwhPT1yOyl7aWYoaTcocikpe249cjticmVha31yPXIucmV0dXJufWlmKG51bGw9PW4pdGhyb3cgRXJyb3IobCgxNjApKTtzd2l0Y2gobi50YWcpe2Nhc2UgMjc6dmFyIG89bi5zdGF0ZU5vZGUsYT1sZShlKTtsdChlLGEsbyk7YnJlYWs7Y2FzZSA1OnZhciBpPW4uc3RhdGVOb2RlOzMyJm4uZmxhZ3MmJih0cyhpLFwiXCIpLG4uZmxhZ3MmPS0zMyk7dmFyIHM9bGUoZSk7bHQoZSxzLGkpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6dmFyIGM9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyx1PWxlKGUpOyFmdW5jdGlvbiBlKHQsbixyKXt2YXIgbz10LnRhZztpZig1PT09b3x8Nj09PW8pdD10LnN0YXRlTm9kZSxuPyg5PT09ci5ub2RlVHlwZT9yLmJvZHk6XCJIVE1MXCI9PT1yLm5vZGVOYW1lP3Iub3duZXJEb2N1bWVudC5ib2R5OnIpLmluc2VydEJlZm9yZSh0LG4pOigobj05PT09ci5ub2RlVHlwZT9yLmJvZHk6XCJIVE1MXCI9PT1yLm5vZGVOYW1lP3Iub3duZXJEb2N1bWVudC5ib2R5OnIpLmFwcGVuZENoaWxkKHQpLG51bGwhPShyPXIuX3JlYWN0Um9vdENvbnRhaW5lcil8fG51bGwhPT1uLm9uY2xpY2t8fChuLm9uY2xpY2s9dGcpKTtlbHNlIGlmKDQhPT1vJiYoMjc9PT1vJiZjQyh0LnR5cGUpJiYocj10LnN0YXRlTm9kZSxuPW51bGwpLG51bGwhPT0odD10LmNoaWxkKSkpZm9yKGUodCxuLHIpLHQ9dC5zaWJsaW5nO251bGwhPT10OyllKHQsbixyKSx0PXQuc2libGluZ30oZSx1LGMpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgxNjEpKX19Y2F0Y2godCl7c1AoZSxlLnJldHVybix0KX1lLmZsYWdzJj0tM300MDk2JnQmJihlLmZsYWdzJj0tNDA5Nyl9ZnVuY3Rpb24gbEEoZSx0KXtpZig4NzcyJnQuc3VidHJlZUZsYWdzKWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KWxzKGUsdC5hbHRlcm5hdGUsdCksdD10LnNpYmxpbmd9ZnVuY3Rpb24gbHgoZSx0KXt2YXIgbj1udWxsO251bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCYmKG49ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxlPW51bGwsbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihlPXQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksZSE9PW4mJihudWxsIT1lJiZlLnJlZkNvdW50KyssbnVsbCE9biYmcjIobikpfWZ1bmN0aW9uIGx3KGUsdCl7ZT1udWxsLG51bGwhPT10LmFsdGVybmF0ZSYmKGU9dC5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSksKHQ9dC5tZW1vaXplZFN0YXRlLmNhY2hlKSE9PWUmJih0LnJlZkNvdW50KyssbnVsbCE9ZSYmcjIoZSkpfWZ1bmN0aW9uIGxDKGUsdCxuLHIpe2lmKDEwMjU2JnQuc3VidHJlZUZsYWdzKWZvcih0PXQuY2hpbGQ7bnVsbCE9PXQ7KWxfKGUsdCxuLHIpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIGxfKGUsdCxuLHIpe3ZhciBvPXQuZmxhZ3M7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmxDKGUsdCxuLHIpLDIwNDgmbyYmaTEoOSx0KTticmVhaztjYXNlIDE6Y2FzZSAzMTpjYXNlIDEzOmRlZmF1bHQ6bEMoZSx0LG4scik7YnJlYWs7Y2FzZSAzOmxDKGUsdCxuLHIpLDIwNDgmbyYmKGU9bnVsbCxudWxsIT09dC5hbHRlcm5hdGUmJihlPXQuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGUpLCh0PXQubWVtb2l6ZWRTdGF0ZS5jYWNoZSkhPT1lJiYodC5yZWZDb3VudCsrLG51bGwhPWUmJnIyKGUpKSk7YnJlYWs7Y2FzZSAxMjppZigyMDQ4Jm8pe2xDKGUsdCxuLHIpLGU9dC5zdGF0ZU5vZGU7dHJ5e3ZhciBhPXQubWVtb2l6ZWRQcm9wcyxpPWEuaWQsbD1hLm9uUG9zdENvbW1pdDtcImZ1bmN0aW9uXCI9PXR5cGVvZiBsJiZsKGksbnVsbD09PXQuYWx0ZXJuYXRlP1wibW91bnRcIjpcInVwZGF0ZVwiLGUucGFzc2l2ZUVmZmVjdER1cmF0aW9uLC0wKX1jYXRjaChlKXtzUCh0LHQucmV0dXJuLGUpfX1lbHNlIGxDKGUsdCxuLHIpO2JyZWFrO2Nhc2UgMjM6YnJlYWs7Y2FzZSAyMjphPXQuc3RhdGVOb2RlLGk9dC5hbHRlcm5hdGUsbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZT8yJmEuX3Zpc2liaWxpdHk/bEMoZSx0LG4scik6bGsoZSx0KToyJmEuX3Zpc2liaWxpdHk/bEMoZSx0LG4scik6KGEuX3Zpc2liaWxpdHl8PTIsZnVuY3Rpb24gZSh0LG4scixvLGEpe2ZvcihhPWEmJjAhPSgxMDI1NiZuLnN1YnRyZWVGbGFncyksbj1uLmNoaWxkO251bGwhPT1uOyl7dmFyIGk9bixsPWkuZmxhZ3M7c3dpdGNoKGkudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmUodCxpLHIsbyxhKSxpMSg4LGkpO2JyZWFrO2Nhc2UgMjM6YnJlYWs7Y2FzZSAyMjp2YXIgcz1pLnN0YXRlTm9kZTtudWxsIT09aS5tZW1vaXplZFN0YXRlPzImcy5fdmlzaWJpbGl0eT9lKHQsaSxyLG8sYSk6bGsodCxpKToocy5fdmlzaWJpbGl0eXw9MixlKHQsaSxyLG8sYSkpLGEmJjIwNDgmbCYmbHgoaS5hbHRlcm5hdGUsaSk7YnJlYWs7Y2FzZSAyNDplKHQsaSxyLG8sYSksYSYmMjA0OCZsJiZsdyhpLmFsdGVybmF0ZSxpKTticmVhaztkZWZhdWx0OmUodCxpLHIsbyxhKX1uPW4uc2libGluZ319KGUsdCxuLHIsMCE9KDEwMjU2JnQuc3VidHJlZUZsYWdzKSkpLDIwNDgmbyYmbHgoaSx0KTticmVhaztjYXNlIDI0OmxDKGUsdCxuLHIpLDIwNDgmbyYmbHcodC5hbHRlcm5hdGUsdCl9fWZ1bmN0aW9uIGxrKGUsdCl7aWYoMTAyNTYmdC5zdWJ0cmVlRmxhZ3MpZm9yKHQ9dC5jaGlsZDtudWxsIT09dDspe3ZhciBuPXQscj1uLmZsYWdzO3N3aXRjaChuLnRhZyl7Y2FzZSAyMjpsayhlLG4pLDIwNDgmciYmbHgobi5hbHRlcm5hdGUsbik7YnJlYWs7Y2FzZSAyNDpsayhlLG4pLDIwNDgmciYmbHcobi5hbHRlcm5hdGUsbik7YnJlYWs7ZGVmYXVsdDpsayhlLG4pfXQ9dC5zaWJsaW5nfX12YXIgbEU9ODE5MjtmdW5jdGlvbiBsaihlKXtpZihlLnN1YnRyZWVGbGFncyZsRSlmb3IoZT1lLmNoaWxkO251bGwhPT1lOylsUyhlKSxlPWUuc2libGluZ31mdW5jdGlvbiBsUyhlKXtzd2l0Y2goZS50YWcpe2Nhc2UgMjY6bGooZSksZS5mbGFncyZsRSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmZnVuY3Rpb24oZSx0LG4pe2lmKG51bGw9PT1jMil0aHJvdyBFcnJvcihsKDQ3NSkpO3ZhciByPWMyO2lmKFwic3R5bGVzaGVldFwiPT09dC50eXBlJiYoXCJzdHJpbmdcIiE9dHlwZW9mIG4ubWVkaWF8fCExIT09bWF0Y2hNZWRpYShuLm1lZGlhKS5tYXRjaGVzKSYmMD09KDQmdC5zdGF0ZS5sb2FkaW5nKSl7aWYobnVsbD09PXQuaW5zdGFuY2Upe3ZhciBvPWNxKG4uaHJlZiksYT1lLnF1ZXJ5U2VsZWN0b3IoY0gobykpO2lmKGEpe251bGwhPT0oZT1hLl9wKSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUudGhlbiYmKHIuY291bnQrKyxyPWM0LmJpbmQociksZS50aGVuKHIscikpLHQuc3RhdGUubG9hZGluZ3w9NCx0Lmluc3RhbmNlPWEsZVkoYSk7cmV0dXJufWE9ZS5vd25lckRvY3VtZW50fHxlLG49Y1YobiksKG89Y0wuZ2V0KG8pKSYmY1gobixvKSxlWShhPWEuY3JlYXRlRWxlbWVudChcImxpbmtcIikpO3ZhciBpPWE7aS5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2kub25sb2FkPWUsaS5vbmVycm9yPXR9KSxjdShhLFwibGlua1wiLG4pLHQuaW5zdGFuY2U9YX1udWxsPT09ci5zdHlsZXNoZWV0cyYmKHIuc3R5bGVzaGVldHM9bmV3IE1hcCksci5zdHlsZXNoZWV0cy5zZXQodCxlKSwoZT10LnN0YXRlLnByZWxvYWQpJiYwPT0oMyZ0LnN0YXRlLmxvYWRpbmcpJiYoci5jb3VudCsrLHQ9YzQuYmluZChyKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsdCksZS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIix0KSl9fShseSxlLm1lbW9pemVkU3RhdGUsZS5tZW1vaXplZFByb3BzKTticmVhaztjYXNlIDU6ZGVmYXVsdDpsaihlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciB0PWx5O2x5PWNSKGUuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGxqKGUpLGx5PXQ7YnJlYWs7Y2FzZSAyMjpudWxsPT09ZS5tZW1vaXplZFN0YXRlJiYobnVsbCE9PSh0PWUuYWx0ZXJuYXRlKSYmbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZT8odD1sRSxsRT0weDEwMDAwMDAsbGooZSksbEU9dCk6bGooZSkpfX1mdW5jdGlvbiBsTyhlKXt2YXIgdD1lLmFsdGVybmF0ZTtpZihudWxsIT09dCYmbnVsbCE9PShlPXQuY2hpbGQpKXt0LmNoaWxkPW51bGw7ZG8gdD1lLnNpYmxpbmcsZS5zaWJsaW5nPW51bGwsZT10O3doaWxlKG51bGwhPT1lKX19ZnVuY3Rpb24gbEIoZSl7dmFyIHQ9ZS5kZWxldGlvbnM7aWYoMCE9KDE2JmUuZmxhZ3MpKXtpZihudWxsIT09dClmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtsbD1yLGxJKHIsZSl9bE8oZSl9aWYoMTAyNTYmZS5zdWJ0cmVlRmxhZ3MpZm9yKGU9ZS5jaGlsZDtudWxsIT09ZTspbFAoZSksZT1lLnNpYmxpbmd9ZnVuY3Rpb24gbFAoZSl7c3dpdGNoKGUudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmxCKGUpLDIwNDgmZS5mbGFncyYmaTIoOSxlLGUucmV0dXJuKTticmVhaztjYXNlIDM6Y2FzZSAxMjpkZWZhdWx0OmxCKGUpO2JyZWFrO2Nhc2UgMjI6dmFyIHQ9ZS5zdGF0ZU5vZGU7bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmMiZ0Ll92aXNpYmlsaXR5JiYobnVsbD09PWUucmV0dXJufHwxMyE9PWUucmV0dXJuLnRhZyk/KHQuX3Zpc2liaWxpdHkmPS0zLGZ1bmN0aW9uIGUodCl7dmFyIG49dC5kZWxldGlvbnM7aWYoMCE9KDE2JnQuZmxhZ3MpKXtpZihudWxsIT09bilmb3IodmFyIHI9MDtyPG4ubGVuZ3RoO3IrKyl7dmFyIG89bltyXTtsbD1vLGxJKG8sdCl9bE8odCl9Zm9yKHQ9dC5jaGlsZDtudWxsIT09dDspe3N3aXRjaCgobj10KS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6aTIoOCxuLG4ucmV0dXJuKSxlKG4pO2JyZWFrO2Nhc2UgMjI6MiYocj1uLnN0YXRlTm9kZSkuX3Zpc2liaWxpdHkmJihyLl92aXNpYmlsaXR5Jj0tMyxlKG4pKTticmVhaztkZWZhdWx0OmUobil9dD10LnNpYmxpbmd9fShlKSk6bEIoZSl9fWZ1bmN0aW9uIGxJKGUsdCl7Zm9yKDtudWxsIT09bGw7KXt2YXIgbj1sbDtzd2l0Y2gobi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6aTIoOCxuLHQpO2JyZWFrO2Nhc2UgMjM6Y2FzZSAyMjppZihudWxsIT09bi5tZW1vaXplZFN0YXRlJiZudWxsIT09bi5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCl7dmFyIHI9bi5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sO251bGwhPXImJnIucmVmQ291bnQrK31icmVhaztjYXNlIDI0OnIyKG4ubWVtb2l6ZWRTdGF0ZS5jYWNoZSl9aWYobnVsbCE9PShyPW4uY2hpbGQpKXIucmV0dXJuPW4sbGw9cjtlbHNlIGZvcihuPWU7bnVsbCE9PWxsOyl7dmFyIG89KHI9bGwpLnNpYmxpbmcsYT1yLnJldHVybjtpZighZnVuY3Rpb24gZSh0KXt2YXIgbj10LmFsdGVybmF0ZTtudWxsIT09biYmKHQuYWx0ZXJuYXRlPW51bGwsZShuKSksdC5jaGlsZD1udWxsLHQuZGVsZXRpb25zPW51bGwsdC5zaWJsaW5nPW51bGwsNT09PXQudGFnJiZudWxsIT09KG49dC5zdGF0ZU5vZGUpJiZlcShuKSx0LnN0YXRlTm9kZT1udWxsLHQucmV0dXJuPW51bGwsdC5kZXBlbmRlbmNpZXM9bnVsbCx0Lm1lbW9pemVkUHJvcHM9bnVsbCx0Lm1lbW9pemVkU3RhdGU9bnVsbCx0LnBlbmRpbmdQcm9wcz1udWxsLHQuc3RhdGVOb2RlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsfShyKSxyPT09bil7bGw9bnVsbDticmVha31pZihudWxsIT09byl7by5yZXR1cm49YSxsbD1vO2JyZWFrfWxsPWF9fX12YXIgbHo9e2dldENhY2hlRm9yVHlwZTpmdW5jdGlvbihlKXt2YXIgdD1yWShyMCksbj10LmRhdGEuZ2V0KGUpO3JldHVybiB2b2lkIDA9PT1uJiYobj1lKCksdC5kYXRhLnNldChlLG4pKSxufSxjYWNoZVNpZ25hbDpmdW5jdGlvbigpe3JldHVybiByWShyMCkuY29udHJvbGxlci5zaWduYWx9fSxsVD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBXZWFrTWFwP1dlYWtNYXA6TWFwLGxEPTAsbEw9bnVsbCxsTj1udWxsLGxSPTAsbE09MCxsWj1udWxsLGxVPSExLGxGPSExLGxxPSExLGxIPTAsbFY9MCxsJD0wLGxXPTAsbFk9MCxsSz0wLGxYPTAsbEc9bnVsbCxsUT1udWxsLGxKPSExLGwwPTAsbDE9MS8wLGwyPW51bGwsbDQ9bnVsbCxsNT0wLGwzPW51bGwsbDY9bnVsbCxsOT0wLGw4PTAsbDc9bnVsbCxzZT1udWxsLHN0PTAsc249bnVsbDtmdW5jdGlvbiBzcigpe3JldHVybiAwIT0oMiZsRCkmJjAhPT1sUj9sUiYtbFI6bnVsbCE9PUkuVD9zWCgpOmVJKCl9ZnVuY3Rpb24gc28oKXswPT09bEsmJihsSz0wPT0oMHgyMDAwMDAwMCZsUil8fHJqP2VDKCk6MHgyMDAwMDAwMCk7dmFyIGU9b1IuY3VycmVudDtyZXR1cm4gbnVsbCE9PWUmJihlLmZsYWdzfD0zMiksbEt9ZnVuY3Rpb24gc2EoZSx0LG4peyhlPT09bEwmJigyPT09bE18fDk9PT1sTSl8fG51bGwhPT1lLmNhbmNlbFBlbmRpbmdDb21taXQpJiYoc2QoZSwwKSxzcyhlLGxSLGxLLCExKSksZUUoZSxuKSwoMD09KDImbEQpfHxlIT09bEwpJiYoZT09PWxMJiYoMD09KDImbEQpJiYobFd8PW4pLDQ9PT1sViYmc3MoZSxsUixsSywhMSkpLHNxKGUpKX1mdW5jdGlvbiBzaShlLHQsbil7aWYoMCE9KDYmbEQpKXRocm93IEVycm9yKGwoMzI3KSk7Zm9yKHZhciByPSFuJiYwPT0oMTI0JnQpJiYwPT0odCZlLmV4cGlyZWRMYW5lcyl8fGV3KGUsdCksbz1yP2Z1bmN0aW9uKGUsdCl7dmFyIG49bEQ7bER8PTI7dmFyIHI9c2goKSxvPXNtKCk7bEwhPT1lfHxsUiE9PXQ/KGwyPW51bGwsbDE9ZXIoKSs1MDAsc2QoZSx0KSk6bEY9ZXcoZSx0KTtlOmZvcig7Oyl0cnl7aWYoMCE9PWxNJiZudWxsIT09bE4pe3Q9bE47dmFyIGE9bFo7dDpzd2l0Y2gobE0pe2Nhc2UgMTpsTT0wLGxaPW51bGwsc0EoZSx0LGEsMSk7YnJlYWs7Y2FzZSAyOmNhc2UgOTppZihvbChhKSl7bE09MCxsWj1udWxsLHNiKHQpO2JyZWFrfXQ9ZnVuY3Rpb24oKXsyIT09bE0mJjkhPT1sTXx8bEwhPT1lfHwobE09Nyksc3EoZSl9LGEudGhlbih0LHQpO2JyZWFrIGU7Y2FzZSAzOmxNPTc7YnJlYWsgZTtjYXNlIDQ6bE09NTticmVhayBlO2Nhc2UgNzpvbChhKT8obE09MCxsWj1udWxsLHNiKHQpKToobE09MCxsWj1udWxsLHNBKGUsdCxhLDcpKTticmVhaztjYXNlIDU6dmFyIGk9bnVsbDtzd2l0Y2gobE4udGFnKXtjYXNlIDI2Omk9bE4ubWVtb2l6ZWRTdGF0ZTtjYXNlIDU6Y2FzZSAyNzp2YXIgcz1sTjtpZihpP2MxKGkpOnMuc3RhdGVOb2RlLmNvbXBsZXRlKXtsTT0wLGxaPW51bGw7dmFyIGM9cy5zaWJsaW5nO2lmKG51bGwhPT1jKWxOPWM7ZWxzZXt2YXIgdT1zLnJldHVybjtudWxsIT09dT8obE49dSxzeCh1KSk6bE49bnVsbH1icmVhayB0fX1sTT0wLGxaPW51bGwsc0EoZSx0LGEsNSk7YnJlYWs7Y2FzZSA2OmxNPTAsbFo9bnVsbCxzQShlLHQsYSw2KTticmVhaztjYXNlIDg6c3UoKSxsVj02O2JyZWFrIGU7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDQ2MikpfX1mb3IoO251bGwhPT1sTiYmIWV0KCk7KXN2KGxOKTticmVha31jYXRjaCh0KXtzZihlLHQpfXJldHVybihyWj1yTT1udWxsLEkuSD1yLEkuQT1vLGxEPW4sbnVsbCE9PWxOKT8wOihsTD1udWxsLGxSPTAsbjIoKSxsVil9KGUsdCk6c3koZSx0LCEwKSxhPXI7Oyl7aWYoMD09PW8pbEYmJiFyJiZzcyhlLHQsMCwhMSk7ZWxzZXtpZihuPWUuY3VycmVudC5hbHRlcm5hdGUsYSYmIWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lOzspe3ZhciBuPXQudGFnO2lmKCgwPT09bnx8MTE9PT1ufHwxNT09PW4pJiYxNjM4NCZ0LmZsYWdzJiZudWxsIT09KG49dC51cGRhdGVRdWV1ZSkmJm51bGwhPT0obj1uLnN0b3JlcykpZm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl0sYT1vLmdldFNuYXBzaG90O289by52YWx1ZTt0cnl7aWYoIW5rKGEoKSxvKSlyZXR1cm4hMX1jYXRjaChlKXtyZXR1cm4hMX19aWYobj10LmNoaWxkLDE2Mzg0JnQuc3VidHJlZUZsYWdzJiZudWxsIT09biluLnJldHVybj10LHQ9bjtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7bnVsbD09PXQuc2libGluZzspe2lmKG51bGw9PT10LnJldHVybnx8dC5yZXR1cm49PT1lKXJldHVybiEwO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuITB9KG4pKXtvPXN5KGUsdCwhMSksYT0hMTtjb250aW51ZX1pZigyPT09byl7aWYoYT10LGUuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXMmYSl2YXIgaT0wO2Vsc2UgaT0wIT0oaT0tMHgyMDAwMDAwMSZlLnBlbmRpbmdMYW5lcyk/aToweDIwMDAwMDAwJmk/MHgyMDAwMDAwMDowO2lmKDAhPT1pKXt0PWk7ZTp7bz1sRzt2YXIgcz1lLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQ7aWYocyYmKHNkKGUsaSkuZmxhZ3N8PTI1NiksMiE9PShpPXN5KGUsaSwhMSkpKXtpZihscSYmIXMpe2UuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXN8PWEsbFd8PWEsbz00O2JyZWFrIGV9YT1sUSxsUT1vLG51bGwhPT1hJiYobnVsbD09PWxRP2xRPWE6bFEucHVzaC5hcHBseShsUSxhKSl9bz1pfWlmKGE9ITEsMiE9PW8pY29udGludWV9fWlmKDE9PT1vKXtzZChlLDApLHNzKGUsdCwwLCEwKTticmVha31lOntzd2l0Y2gocj1lLGE9byl7Y2FzZSAwOmNhc2UgMTp0aHJvdyBFcnJvcihsKDM0NSkpO2Nhc2UgNDppZigoNDE5NDA0OCZ0KSE9PXQpYnJlYWs7Y2FzZSA2OnNzKHIsdCxsSywhbFUpO2JyZWFrIGU7Y2FzZSAyOmxRPW51bGw7YnJlYWs7Y2FzZSAzOmNhc2UgNTpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMzI5KSl9aWYoKDB4M2MwMDAwMCZ0KT09PXQmJjEwPChvPWwwKzMwMC1lcigpKSl7aWYoc3Mocix0LGxLLCFsVSksMCE9PWV4KHIsMCwhMCkpYnJlYWsgZTtyLnRpbWVvdXRIYW5kbGU9Y3Yoc2wuYmluZChudWxsLHIsbixsUSxsMixsSix0LGxLLGxXLGxYLGxVLGEsMiwtMCwwKSxvKTticmVhayBlfXNsKHIsbixsUSxsMixsSix0LGxLLGxXLGxYLGxVLGEsMCwtMCwwKX19YnJlYWt9c3EoZSl9ZnVuY3Rpb24gc2woZSx0LG4scixvLGEsaSxzLGMsdSxkLGYscCxoKXtpZihlLnRpbWVvdXRIYW5kbGU9LTEsKDgxOTImKGY9dC5zdWJ0cmVlRmxhZ3MpfHwweDEwMDIwMDA9PSgweDEwMDIwMDAmZikpJiYoYzI9e3N0eWxlc2hlZXRzOm51bGwsY291bnQ6MCx1bnN1c3BlbmQ6dGd9LGxTKHQpLG51bGwhPT0oZj1mdW5jdGlvbigpe2lmKG51bGw9PT1jMil0aHJvdyBFcnJvcihsKDQ3NSkpO3ZhciBlPWMyO3JldHVybiBlLnN0eWxlc2hlZXRzJiYwPT09ZS5jb3VudCYmYzMoZSxlLnN0eWxlc2hlZXRzKSwwPGUuY291bnQ/ZnVuY3Rpb24odCl7dmFyIG49c2V0VGltZW91dChmdW5jdGlvbigpe2lmKGUuc3R5bGVzaGVldHMmJmMzKGUsZS5zdHlsZXNoZWV0cyksZS51bnN1c3BlbmQpe3ZhciB0PWUudW5zdXNwZW5kO2UudW5zdXNwZW5kPW51bGwsdCgpfX0sNmU0KTtyZXR1cm4gZS51bnN1c3BlbmQ9dCxmdW5jdGlvbigpe2UudW5zdXNwZW5kPW51bGwsY2xlYXJUaW1lb3V0KG4pfX06bnVsbH0oKSkpKXtlLmNhbmNlbFBlbmRpbmdDb21taXQ9ZihzQy5iaW5kKG51bGwsZSx0LGEsbixyLG8saSxzLGMsZCwxLHAsaCkpLHNzKGUsYSxpLCF1KTtyZXR1cm59c0MoZSx0LGEsbixyLG8saSxzLGMpfWZ1bmN0aW9uIHNzKGUsdCxuLHIpe3QmPX5sWSx0Jj1+bFcsZS5zdXNwZW5kZWRMYW5lc3w9dCxlLnBpbmdlZExhbmVzJj1+dCxyJiYoZS53YXJtTGFuZXN8PXQpLHI9ZS5leHBpcmF0aW9uVGltZXM7Zm9yKHZhciBvPXQ7MDxvOyl7dmFyIGE9MzEtZW0obyksaT0xPDxhO3JbYV09LTEsbyY9fml9MCE9PW4mJmVqKGUsbix0KX1mdW5jdGlvbiBzYygpe3JldHVybiAwIT0oNiZsRCl8fChzSCgwLCExKSwhMSl9ZnVuY3Rpb24gc3UoKXtpZihudWxsIT09bE4pe2lmKDA9PT1sTSl2YXIgZT1sTi5yZXR1cm47ZWxzZSBlPWxOLHJaPXJNPW51bGwsYW4oZSksb3A9bnVsbCxvaD0wLGU9bE47Zm9yKDtudWxsIT09ZTspaTAoZS5hbHRlcm5hdGUsZSksZT1lLnJldHVybjtsTj1udWxsfX1mdW5jdGlvbiBzZChlLHQpe3ZhciBuPWUudGltZW91dEhhbmRsZTstMSE9PW4mJihlLnRpbWVvdXRIYW5kbGU9LTEsY2IobikpLG51bGwhPT0obj1lLmNhbmNlbFBlbmRpbmdDb21taXQpJiYoZS5jYW5jZWxQZW5kaW5nQ29tbWl0PW51bGwsbigpKSxzdSgpLGxMPWUsbE49bj1ybihlLmN1cnJlbnQsbnVsbCksbFI9dCxsTT0wLGxaPW51bGwsbFU9ITEsbEY9ZXcoZSx0KSxscT0hMSxsWD1sSz1sWT1sVz1sJD1sVj0wLGxRPWxHPW51bGwsbEo9ITEsMCE9KDgmdCkmJih0fD0zMiZ0KTt2YXIgcj1lLmVudGFuZ2xlZExhbmVzO2lmKDAhPT1yKWZvcihlPWUuZW50YW5nbGVtZW50cyxyJj10OzA8cjspe3ZhciBvPTMxLWVtKHIpLGE9MTw8bzt0fD1lW29dLHImPX5hfXJldHVybiBsSD10LG4yKCksbn1mdW5jdGlvbiBzZihlLHQpe29ZPW51bGwsSS5IPWllLHQ9PT1vcnx8dD09PW9hPyh0PW9kKCksbE09Myk6dD09PW9vPyh0PW9kKCksbE09NCk6bE09dD09PWliPzg6bnVsbCE9PXQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnRoZW4/NjoxLGxaPXQsbnVsbD09PWxOJiYobFY9MSxpaChlLHJ1KHQsZS5jdXJyZW50KSkpfWZ1bmN0aW9uIHNwKCl7dmFyIGU9b1IuY3VycmVudDtyZXR1cm4gbnVsbD09PWV8fCgoNDE5NDA0OCZsUik9PT1sUj9udWxsPT09b006KCgweDNjMDAwMDAmbFIpPT09bFJ8fDAhPSgweDIwMDAwMDAwJmxSKSkmJmU9PT1vTSl9ZnVuY3Rpb24gc2goKXt2YXIgZT1JLkg7cmV0dXJuIEkuSD1pZSxudWxsPT09ZT9pZTplfWZ1bmN0aW9uIHNtKCl7dmFyIGU9SS5BO3JldHVybiBJLkE9bHosZX1mdW5jdGlvbiBzZygpe2xWPTQsbFV8fCg0MTk0MDQ4JmxSKSE9PWxSJiZudWxsIT09b1IuY3VycmVudHx8KGxGPSEwKSwwPT0oMHg3ZmZmZmZmJmwkKSYmMD09KDB4N2ZmZmZmZiZsVyl8fG51bGw9PT1sTHx8c3MobEwsbFIsbEssITEpfWZ1bmN0aW9uIHN5KGUsdCxuKXt2YXIgcj1sRDtsRHw9Mjt2YXIgbz1zaCgpLGE9c20oKTsobEwhPT1lfHxsUiE9PXQpJiYobDI9bnVsbCxzZChlLHQpKSx0PSExO3ZhciBpPWxWO2U6Zm9yKDs7KXRyeXtpZigwIT09bE0mJm51bGwhPT1sTil7dmFyIGw9bE4scz1sWjtzd2l0Y2gobE0pe2Nhc2UgODpzdSgpLGk9NjticmVhayBlO2Nhc2UgMzpjYXNlIDI6Y2FzZSA5OmNhc2UgNjpudWxsPT09b1IuY3VycmVudCYmKHQ9ITApO3ZhciBjPWxNO2lmKGxNPTAsbFo9bnVsbCxzQShlLGwscyxjKSxuJiZsRil7aT0wO2JyZWFrIGV9YnJlYWs7ZGVmYXVsdDpjPWxNLGxNPTAsbFo9bnVsbCxzQShlLGwscyxjKX19KGZ1bmN0aW9uKCl7Zm9yKDtudWxsIT09bE47KXN2KGxOKX0pKCksaT1sVjticmVha31jYXRjaCh0KXtzZihlLHQpfXJldHVybiB0JiZlLnNoZWxsU3VzcGVuZENvdW50ZXIrKyxyWj1yTT1udWxsLGxEPXIsSS5IPW8sSS5BPWEsbnVsbD09PWxOJiYobEw9bnVsbCxsUj0wLG4yKCkpLGl9ZnVuY3Rpb24gc3YoZSl7dmFyIHQ9aVcoZS5hbHRlcm5hdGUsZSxsSCk7ZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT10P3N4KGUpOmxOPXR9ZnVuY3Rpb24gc2IoZSl7dmFyIHQ9ZSxuPXQuYWx0ZXJuYXRlO3N3aXRjaCh0LnRhZyl7Y2FzZSAxNTpjYXNlIDA6dD1pSShuLHQsdC5wZW5kaW5nUHJvcHMsdC50eXBlLHZvaWQgMCxsUik7YnJlYWs7Y2FzZSAxMTp0PWlJKG4sdCx0LnBlbmRpbmdQcm9wcyx0LnR5cGUucmVuZGVyLHQucmVmLGxSKTticmVhaztjYXNlIDU6YW4odCk7ZGVmYXVsdDppMChuLHQpLHQ9aVcobix0PWxOPXJyKHQsbEgpLGxIKX1lLm1lbW9pemVkUHJvcHM9ZS5wZW5kaW5nUHJvcHMsbnVsbD09PXQ/c3goZSk6bE49dH1mdW5jdGlvbiBzQShlLHQsbixyKXtyWj1yTT1udWxsLGFuKHQpLG9wPW51bGwsb2g9MDt2YXIgbz10LnJldHVybjt0cnl7aWYoZnVuY3Rpb24oZSx0LG4scixvKXtpZihuLmZsYWdzfD0zMjc2OCxudWxsIT09ciYmXCJvYmplY3RcIj09dHlwZW9mIHImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIudGhlbil7aWYobnVsbCE9PSh0PW4uYWx0ZXJuYXRlKSYmclYodCxuLG8sITApLG51bGwhPT0obj1vUi5jdXJyZW50KSl7c3dpdGNoKG4udGFnKXtjYXNlIDMxOmNhc2UgMTM6cmV0dXJuIG51bGw9PT1vTT9zZygpOm51bGw9PT1uLmFsdGVybmF0ZSYmMD09PWxWJiYobFY9Myksbi5mbGFncyY9LTI1NyxuLmZsYWdzfD02NTUzNixuLmxhbmVzPW8scj09PW9pP24uZmxhZ3N8PTE2Mzg0OihudWxsPT09KHQ9bi51cGRhdGVRdWV1ZSk/bi51cGRhdGVRdWV1ZT1uZXcgU2V0KFtyXSk6dC5hZGQociksc0koZSxyLG8pKSwhMTtjYXNlIDIyOnJldHVybiBuLmZsYWdzfD02NTUzNixyPT09b2k/bi5mbGFnc3w9MTYzODQ6KG51bGw9PT0odD1uLnVwZGF0ZVF1ZXVlKT8odD17dHJhbnNpdGlvbnM6bnVsbCxtYXJrZXJJbnN0YW5jZXM6bnVsbCxyZXRyeVF1ZXVlOm5ldyBTZXQoW3JdKX0sbi51cGRhdGVRdWV1ZT10KTpudWxsPT09KG49dC5yZXRyeVF1ZXVlKT90LnJldHJ5UXVldWU9bmV3IFNldChbcl0pOm4uYWRkKHIpLHNJKGUscixvKSksITF9dGhyb3cgRXJyb3IobCg0MzUsbi50YWcpKX1yZXR1cm4gc0koZSxyLG8pLHNnKCksITF9aWYocmopcmV0dXJuIG51bGwhPT0odD1vUi5jdXJyZW50KT8oMD09KDY1NTM2JnQuZmxhZ3MpJiYodC5mbGFnc3w9MjU2KSx0LmZsYWdzfD02NTUzNix0LmxhbmVzPW8sciE9PXJCJiZyTihydShlPUVycm9yKGwoNDIyKSx7Y2F1c2U6cn0pLG4pKSk6KHIhPT1yQiYmck4ocnUodD1FcnJvcihsKDQyMykse2NhdXNlOnJ9KSxuKSksZT1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmxhZ3N8PTY1NTM2LG8mPS1vLGUubGFuZXN8PW8scj1ydShyLG4pLG89aWcoZS5zdGF0ZU5vZGUscixvKSxvaihlLG8pLDQhPT1sViYmKGxWPTIpKSwhMTt2YXIgYT1FcnJvcihsKDUyMCkse2NhdXNlOnJ9KTtpZihhPXJ1KGEsbiksbnVsbD09PWxHP2xHPVthXTpsRy5wdXNoKGEpLDQhPT1sViYmKGxWPTIpLG51bGw9PT10KXJldHVybiEwO3I9cnUocixuKSxuPXQ7ZG97c3dpdGNoKG4udGFnKXtjYXNlIDM6cmV0dXJuIG4uZmxhZ3N8PTY1NTM2LGU9byYtbyxuLmxhbmVzfD1lLGU9aWcobi5zdGF0ZU5vZGUscixlKSxvaihuLGUpLCExO2Nhc2UgMTppZih0PW4udHlwZSxhPW4uc3RhdGVOb2RlLDA9PSgxMjgmbi5mbGFncykmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PWEmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGEuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09bDR8fCFsNC5oYXMoYSkpKSlyZXR1cm4gbi5mbGFnc3w9NjU1MzYsbyY9LW8sbi5sYW5lc3w9byxpdihvPWl5KG8pLGUsbixyKSxvaihuLG8pLCExfW49bi5yZXR1cm59d2hpbGUobnVsbCE9PW4pO3JldHVybiExfShlLG8sdCxuLGxSKSl7bFY9MSxpaChlLHJ1KG4sZS5jdXJyZW50KSksbE49bnVsbDtyZXR1cm59fWNhdGNoKHQpe2lmKG51bGwhPT1vKXRocm93IGxOPW8sdDtsVj0xLGloKGUscnUobixlLmN1cnJlbnQpKSxsTj1udWxsO3JldHVybn0zMjc2OCZ0LmZsYWdzPyhyanx8MT09PXI/ZT0hMDpsRnx8MCE9KDB4MjAwMDAwMDAmbFIpP2U9ITE6KGxVPWU9ITAsKDI9PT1yfHw5PT09cnx8Mz09PXJ8fDY9PT1yKSYmbnVsbCE9PShyPW9SLmN1cnJlbnQpJiYxMz09PXIudGFnJiYoci5mbGFnc3w9MTYzODQpKSxzdyh0LGUpKTpzeCh0KX1mdW5jdGlvbiBzeChlKXt2YXIgdD1lO2Rve2lmKDAhPSgzMjc2OCZ0LmZsYWdzKSlyZXR1cm4gdm9pZCBzdyh0LGxVKTtlPXQucmV0dXJuO3ZhciBuPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10LnBlbmRpbmdQcm9wcztzd2l0Y2gockModCksdC50YWcpe2Nhc2UgMTY6Y2FzZSAxNTpjYXNlIDA6Y2FzZSAxMTpjYXNlIDc6Y2FzZSA4OmNhc2UgMTI6Y2FzZSA5OmNhc2UgMTQ6Y2FzZSAxOnJldHVybiBpSih0KSxudWxsO2Nhc2UgMzpyZXR1cm4gbj10LnN0YXRlTm9kZSxyPW51bGwsbnVsbCE9PWUmJihyPWUubWVtb2l6ZWRTdGF0ZS5jYWNoZSksdC5tZW1vaXplZFN0YXRlLmNhY2hlIT09ciYmKHQuZmxhZ3N8PTIwNDgpLHJGKHIwKSxWKCksbi5wZW5kaW5nQ29udGV4dCYmKG4uY29udGV4dD1uLnBlbmRpbmdDb250ZXh0LG4ucGVuZGluZ0NvbnRleHQ9bnVsbCksKG51bGw9PT1lfHxudWxsPT09ZS5jaGlsZCkmJihyVCh0KT9pWSh0KTpudWxsPT09ZXx8ZS5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmMD09KDI1NiZ0LmZsYWdzKXx8KHQuZmxhZ3N8PTEwMjQsckwoKSkpLGlKKHQpLG51bGw7Y2FzZSAyNjp2YXIgbz10LnR5cGUsYT10Lm1lbW9pemVkU3RhdGU7cmV0dXJuIG51bGw9PT1lPyhpWSh0KSxudWxsIT09YT8oaUoodCksaVgodCxhKSk6KGlKKHQpLGlLKHQsbyxudWxsLHIsbikpKTphP2EhPT1lLm1lbW9pemVkU3RhdGU/KGlZKHQpLGlKKHQpLGlYKHQsYSkpOihpSih0KSx0LmZsYWdzJj0tMHgxMDAwMDAxKTooKGU9ZS5tZW1vaXplZFByb3BzKSE9PXImJmlZKHQpLGlKKHQpLGlLKHQsbyxlLHIsbikpLG51bGw7Y2FzZSAyNzppZihXKHQpLG49Ri5jdXJyZW50LG89dC50eXBlLG51bGwhPT1lJiZudWxsIT10LnN0YXRlTm9kZSllLm1lbW9pemVkUHJvcHMhPT1yJiZpWSh0KTtlbHNle2lmKCFyKXtpZihudWxsPT09dC5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IobCgxNjYpKTtyZXR1cm4gaUoodCksbnVsbH1lPVouY3VycmVudCxyVCh0KT9ySSh0LGUpOih0LnN0YXRlTm9kZT1lPWNUKG8scixuKSxpWSh0KSl9cmV0dXJuIGlKKHQpLG51bGw7Y2FzZSA1OmlmKFcodCksbz10LnR5cGUsbnVsbCE9PWUmJm51bGwhPXQuc3RhdGVOb2RlKWUubWVtb2l6ZWRQcm9wcyE9PXImJmlZKHQpO2Vsc2V7aWYoIXIpe2lmKG51bGw9PT10LnN0YXRlTm9kZSl0aHJvdyBFcnJvcihsKDE2NikpO3JldHVybiBpSih0KSxudWxsfWlmKGE9Wi5jdXJyZW50LHJUKHQpKXJJKHQsYSk7ZWxzZXt2YXIgaT1jcChGLmN1cnJlbnQpO3N3aXRjaChhKXtjYXNlIDE6YT1pLmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsbyk7YnJlYWs7Y2FzZSAyOmE9aS5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsbyk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2gobyl7Y2FzZVwic3ZnXCI6YT1pLmNyZWF0ZUVsZW1lbnROUyhcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsbyk7YnJlYWs7Y2FzZVwibWF0aFwiOmE9aS5jcmVhdGVFbGVtZW50TlMoXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsbyk7YnJlYWs7Y2FzZVwic2NyaXB0XCI6KGE9aS5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKS5pbm5lckhUTUw9XCI8c2NyaXB0PjxcXC9zY3JpcHQ+XCIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7YnJlYWs7Y2FzZVwic2VsZWN0XCI6YT1cInN0cmluZ1wiPT10eXBlb2Ygci5pcz9pLmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIix7aXM6ci5pc30pOmkuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiKSxyLm11bHRpcGxlP2EubXVsdGlwbGU9ITA6ci5zaXplJiYoYS5zaXplPXIuc2l6ZSk7YnJlYWs7ZGVmYXVsdDphPVwic3RyaW5nXCI9PXR5cGVvZiByLmlzP2kuY3JlYXRlRWxlbWVudChvLHtpczpyLmlzfSk6aS5jcmVhdGVFbGVtZW50KG8pfX1hW2VEXT10LGFbZUxdPXI7ZTpmb3IoaT10LmNoaWxkO251bGwhPT1pOyl7aWYoNT09PWkudGFnfHw2PT09aS50YWcpYS5hcHBlbmRDaGlsZChpLnN0YXRlTm9kZSk7ZWxzZSBpZig0IT09aS50YWcmJjI3IT09aS50YWcmJm51bGwhPT1pLmNoaWxkKXtpLmNoaWxkLnJldHVybj1pLGk9aS5jaGlsZDtjb250aW51ZX1pZihpPT09dClicmVhaztmb3IoO251bGw9PT1pLnNpYmxpbmc7KXtpZihudWxsPT09aS5yZXR1cm58fGkucmV0dXJuPT09dClicmVhayBlO2k9aS5yZXR1cm59aS5zaWJsaW5nLnJldHVybj1pLnJldHVybixpPWkuc2libGluZ31zd2l0Y2godC5zdGF0ZU5vZGU9YSxjdShhLG8sciksbyl7Y2FzZVwiYnV0dG9uXCI6Y2FzZVwiaW5wdXRcIjpjYXNlXCJzZWxlY3RcIjpjYXNlXCJ0ZXh0YXJlYVwiOnI9ISFyLmF1dG9Gb2N1czticmVhaztjYXNlXCJpbWdcIjpyPSEwO2JyZWFrO2RlZmF1bHQ6cj0hMX1yJiZpWSh0KX19cmV0dXJuIGlKKHQpLGlLKHQsdC50eXBlLG51bGw9PT1lP251bGw6ZS5tZW1vaXplZFByb3BzLHQucGVuZGluZ1Byb3BzLG4pLG51bGw7Y2FzZSA2OmlmKGUmJm51bGwhPXQuc3RhdGVOb2RlKWUubWVtb2l6ZWRQcm9wcyE9PXImJmlZKHQpO2Vsc2V7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHImJm51bGw9PT10LnN0YXRlTm9kZSl0aHJvdyBFcnJvcihsKDE2NikpO2lmKGU9Ri5jdXJyZW50LHJUKHQpKXtpZihlPXQuc3RhdGVOb2RlLG49dC5tZW1vaXplZFByb3BzLHI9bnVsbCxudWxsIT09KG89cmspKXN3aXRjaChvLnRhZyl7Y2FzZSAyNzpjYXNlIDU6cj1vLm1lbW9pemVkUHJvcHN9ZVtlRF09dCwoZT0hIShlLm5vZGVWYWx1ZT09PW58fG51bGwhPT1yJiYhMD09PXIuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nfHxjbChlLm5vZGVWYWx1ZSxuKSkpfHxyUCh0LCEwKX1lbHNlKGU9Y3AoZSkuY3JlYXRlVGV4dE5vZGUocikpW2VEXT10LHQuc3RhdGVOb2RlPWV9cmV0dXJuIGlKKHQpLG51bGw7Y2FzZSAzMTppZihuPXQubWVtb2l6ZWRTdGF0ZSxudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSl7aWYocj1yVCh0KSxudWxsIT09bil7aWYobnVsbD09PWUpe2lmKCFyKXRocm93IEVycm9yKGwoMzE4KSk7aWYoIShlPW51bGwhPT0oZT10Lm1lbW9pemVkU3RhdGUpP2UuZGVoeWRyYXRlZDpudWxsKSl0aHJvdyBFcnJvcihsKDU1NykpO2VbZURdPXR9ZWxzZSByRCgpLDA9PSgxMjgmdC5mbGFncykmJih0Lm1lbW9pemVkU3RhdGU9bnVsbCksdC5mbGFnc3w9NDtpSih0KSxlPSExfWVsc2Ugbj1yTCgpLG51bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlJiYoZS5tZW1vaXplZFN0YXRlLmh5ZHJhdGlvbkVycm9ycz1uKSxlPSEwO2lmKCFlKXtpZigyNTYmdC5mbGFncylyZXR1cm4gb0godCksdDtyZXR1cm4gb0godCksbnVsbH1pZigwIT0oMTI4JnQuZmxhZ3MpKXRocm93IEVycm9yKGwoNTU4KSl9cmV0dXJuIGlKKHQpLG51bGw7Y2FzZSAxMzppZihyPXQubWVtb2l6ZWRTdGF0ZSxudWxsPT09ZXx8bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKXtpZihvPXJUKHQpLG51bGwhPT1yJiZudWxsIT09ci5kZWh5ZHJhdGVkKXtpZihudWxsPT09ZSl7aWYoIW8pdGhyb3cgRXJyb3IobCgzMTgpKTtpZighKG89bnVsbCE9PShvPXQubWVtb2l6ZWRTdGF0ZSk/by5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGwoMzE3KSk7b1tlRF09dH1lbHNlIHJEKCksMD09KDEyOCZ0LmZsYWdzKSYmKHQubWVtb2l6ZWRTdGF0ZT1udWxsKSx0LmZsYWdzfD00O2lKKHQpLG89ITF9ZWxzZSBvPXJMKCksbnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJihlLm1lbW9pemVkU3RhdGUuaHlkcmF0aW9uRXJyb3JzPW8pLG89ITA7aWYoIW8pe2lmKDI1NiZ0LmZsYWdzKXJldHVybiBvSCh0KSx0O3JldHVybiBvSCh0KSxudWxsfX1pZihvSCh0KSwwIT0oMTI4JnQuZmxhZ3MpKXJldHVybiB0LmxhbmVzPW4sdDtyZXR1cm4gbj1udWxsIT09cixlPW51bGwhPT1lJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlLG4mJihyPXQuY2hpbGQsbz1udWxsLG51bGwhPT1yLmFsdGVybmF0ZSYmbnVsbCE9PXIuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUmJm51bGwhPT1yLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCYmKG89ci5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksYT1udWxsLG51bGwhPT1yLm1lbW9pemVkU3RhdGUmJm51bGwhPT1yLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYoYT1yLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGEhPT1vJiYoci5mbGFnc3w9MjA0OCkpLG4hPT1lJiZuJiYodC5jaGlsZC5mbGFnc3w9ODE5MiksaUcodCx0LnVwZGF0ZVF1ZXVlKSxpSih0KSxudWxsO2Nhc2UgNDpyZXR1cm4gVigpLG51bGw9PT1lJiZzOSh0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvKSxpSih0KSxudWxsO2Nhc2UgMTA6cmV0dXJuIHJGKHQudHlwZSksaUoodCksbnVsbDtjYXNlIDE5OmlmKFIob1YpLG51bGw9PT0ocj10Lm1lbW9pemVkU3RhdGUpKXJldHVybiBpSih0KSxudWxsO2lmKG89MCE9KDEyOCZ0LmZsYWdzKSxudWxsPT09KGE9ci5yZW5kZXJpbmcpKWlmKG8paVEociwhMSk7ZWxzZXtpZigwIT09bFZ8fG51bGwhPT1lJiYwIT0oMTI4JmUuZmxhZ3MpKWZvcihlPXQuY2hpbGQ7bnVsbCE9PWU7KXtpZihudWxsIT09KGE9byQoZSkpKXtmb3IodC5mbGFnc3w9MTI4LGlRKHIsITEpLHQudXBkYXRlUXVldWU9ZT1hLnVwZGF0ZVF1ZXVlLGlHKHQsZSksdC5zdWJ0cmVlRmxhZ3M9MCxlPW4sbj10LmNoaWxkO251bGwhPT1uOylycihuLGUpLG49bi5zaWJsaW5nO3JldHVybiBNKG9WLDEmb1YuY3VycmVudHwyKSxyaiYmckEodCxyLnRyZWVGb3JrQ291bnQpLHQuY2hpbGR9ZT1lLnNpYmxpbmd9bnVsbCE9PXIudGFpbCYmZXIoKT5sMSYmKHQuZmxhZ3N8PTEyOCxvPSEwLGlRKHIsITEpLHQubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighbylpZihudWxsIT09KGU9byQoYSkpKXtpZih0LmZsYWdzfD0xMjgsbz0hMCx0LnVwZGF0ZVF1ZXVlPWU9ZS51cGRhdGVRdWV1ZSxpRyh0LGUpLGlRKHIsITApLG51bGw9PT1yLnRhaWwmJlwiaGlkZGVuXCI9PT1yLnRhaWxNb2RlJiYhYS5hbHRlcm5hdGUmJiFyailyZXR1cm4gaUoodCksbnVsbH1lbHNlIDIqZXIoKS1yLnJlbmRlcmluZ1N0YXJ0VGltZT5sMSYmMHgyMDAwMDAwMCE9PW4mJih0LmZsYWdzfD0xMjgsbz0hMCxpUShyLCExKSx0LmxhbmVzPTQxOTQzMDQpO3IuaXNCYWNrd2FyZHM/KGEuc2libGluZz10LmNoaWxkLHQuY2hpbGQ9YSk6KG51bGwhPT0oZT1yLmxhc3QpP2Uuc2libGluZz1hOnQuY2hpbGQ9YSxyLmxhc3Q9YSl9aWYobnVsbCE9PXIudGFpbClyZXR1cm4gZT1yLnRhaWwsci5yZW5kZXJpbmc9ZSxyLnRhaWw9ZS5zaWJsaW5nLHIucmVuZGVyaW5nU3RhcnRUaW1lPWVyKCksZS5zaWJsaW5nPW51bGwsbj1vVi5jdXJyZW50LE0ob1Ysbz8xJm58MjoxJm4pLHJqJiZyQSh0LHIudHJlZUZvcmtDb3VudCksZTtyZXR1cm4gaUoodCksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIG9IKHQpLG9OKCkscj1udWxsIT09dC5tZW1vaXplZFN0YXRlLG51bGwhPT1lP251bGwhPT1lLm1lbW9pemVkU3RhdGUhPT1yJiYodC5mbGFnc3w9ODE5Mik6ciYmKHQuZmxhZ3N8PTgxOTIpLHI/MCE9KDB4MjAwMDAwMDAmbikmJjA9PSgxMjgmdC5mbGFncykmJihpSih0KSw2JnQuc3VidHJlZUZsYWdzJiYodC5mbGFnc3w9ODE5MikpOmlKKHQpLG51bGwhPT0obj10LnVwZGF0ZVF1ZXVlKSYmaUcodCxuLnJldHJ5UXVldWUpLG49bnVsbCxudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihuPWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCkscj1udWxsLG51bGwhPT10Lm1lbW9pemVkU3RhdGUmJm51bGwhPT10Lm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYocj10Lm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLHIhPT1uJiYodC5mbGFnc3w9MjA0OCksbnVsbCE9PWUmJlIocjcpLG51bGw7Y2FzZSAyNDpyZXR1cm4gbj1udWxsLG51bGwhPT1lJiYobj1lLm1lbW9pemVkU3RhdGUuY2FjaGUpLHQubWVtb2l6ZWRTdGF0ZS5jYWNoZSE9PW4mJih0LmZsYWdzfD0yMDQ4KSxyRihyMCksaUoodCksbnVsbDtjYXNlIDI1OmNhc2UgMzA6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IobCgxNTYsdC50YWcpKX0odC5hbHRlcm5hdGUsdCxsSCk7aWYobnVsbCE9PW4pe2xOPW47cmV0dXJufWlmKG51bGwhPT0odD10LnNpYmxpbmcpKXtsTj10O3JldHVybn1sTj10PWV9d2hpbGUobnVsbCE9PXQpOzA9PT1sViYmKGxWPTUpfWZ1bmN0aW9uIHN3KGUsdCl7ZG97dmFyIG49ZnVuY3Rpb24oZSx0KXtzd2l0Y2gockModCksdC50YWcpe2Nhc2UgMTpyZXR1cm4gNjU1MzYmKGU9dC5mbGFncyk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSAzOnJldHVybiByRihyMCksVigpLDAhPSg2NTUzNiYoZT10LmZsYWdzKSkmJjA9PSgxMjgmZSk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpyZXR1cm4gVyh0KSxudWxsO2Nhc2UgMzE6aWYobnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSl7aWYob0godCksbnVsbD09PXQuYWx0ZXJuYXRlKXRocm93IEVycm9yKGwoMzQwKSk7ckQoKX1yZXR1cm4gNjU1MzYmKGU9dC5mbGFncyk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSAxMzppZihvSCh0KSxudWxsIT09KGU9dC5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PWUuZGVoeWRyYXRlZCl7aWYobnVsbD09PXQuYWx0ZXJuYXRlKXRocm93IEVycm9yKGwoMzQwKSk7ckQoKX1yZXR1cm4gNjU1MzYmKGU9dC5mbGFncyk/KHQuZmxhZ3M9LTY1NTM3JmV8MTI4LHQpOm51bGw7Y2FzZSAxOTpyZXR1cm4gUihvViksbnVsbDtjYXNlIDQ6cmV0dXJuIFYoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIHJGKHQudHlwZSksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIG9IKHQpLG9OKCksbnVsbCE9PWUmJlIocjcpLDY1NTM2JihlPXQuZmxhZ3MpPyh0LmZsYWdzPS02NTUzNyZlfDEyOCx0KTpudWxsO2Nhc2UgMjQ6cmV0dXJuIHJGKHIwKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLmFsdGVybmF0ZSxlKTtpZihudWxsIT09bil7bi5mbGFncyY9MzI3NjcsbE49bjtyZXR1cm59aWYobnVsbCE9PShuPWUucmV0dXJuKSYmKG4uZmxhZ3N8PTMyNzY4LG4uc3VidHJlZUZsYWdzPTAsbi5kZWxldGlvbnM9bnVsbCksIXQmJm51bGwhPT0oZT1lLnNpYmxpbmcpKXtsTj1lO3JldHVybn1sTj1lPW59d2hpbGUobnVsbCE9PWUpO2xWPTYsbE49bnVsbH1mdW5jdGlvbiBzQyhlLHQsbixyLG8sYSxpLHMsYyl7ZS5jYW5jZWxQZW5kaW5nQ29tbWl0PW51bGw7ZG8gc1MoKTt3aGlsZSgwIT09bDUpO2lmKDAhPSg2JmxEKSl0aHJvdyBFcnJvcihsKDMyNykpO2lmKG51bGwhPT10KXtpZih0PT09ZS5jdXJyZW50KXRocm93IEVycm9yKGwoMTc3KSk7aWYoIWZ1bmN0aW9uKGUsdCxuLHIsbyxhKXt2YXIgaT1lLnBlbmRpbmdMYW5lcztlLnBlbmRpbmdMYW5lcz1uLGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTAsZS53YXJtTGFuZXM9MCxlLmV4cGlyZWRMYW5lcyY9bixlLmVudGFuZ2xlZExhbmVzJj1uLGUuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXMmPW4sZS5zaGVsbFN1c3BlbmRDb3VudGVyPTA7dmFyIGw9ZS5lbnRhbmdsZW1lbnRzLHM9ZS5leHBpcmF0aW9uVGltZXMsYz1lLmhpZGRlblVwZGF0ZXM7Zm9yKG49aSZ+bjswPG47KXt2YXIgdT0zMS1lbShuKSxkPTE8PHU7bFt1XT0wLHNbdV09LTE7dmFyIGY9Y1t1XTtpZihudWxsIT09Zilmb3IoY1t1XT1udWxsLHU9MDt1PGYubGVuZ3RoO3UrKyl7dmFyIHA9Zlt1XTtudWxsIT09cCYmKHAubGFuZSY9LTB4MjAwMDAwMDEpfW4mPX5kfTAhPT1yJiZlaihlLHIsMCksMCE9PWEmJjA9PT1vJiYwIT09ZS50YWcmJihlLnN1c3BlbmRlZExhbmVzfD1hJn4oaSZ+dCkpfShlLG4sYT10LmxhbmVzfHQuY2hpbGRMYW5lc3xuMSxpLHMsYyksZT09PWxMJiYobE49bEw9bnVsbCxsUj0wKSxsNj10LGwzPWUsbDk9bixsOD1hLGw3PW8sc2U9ciwwIT0oMTAyNTYmdC5zdWJ0cmVlRmxhZ3MpfHwwIT0oMTAyNTYmdC5mbGFncyk/KGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTAsSihlbCxmdW5jdGlvbigpe3JldHVybiBzTyghMCksbnVsbH0pKTooZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MCkscj0wIT0oMTM4NzgmdC5mbGFncyksMCE9KDEzODc4JnQuc3VidHJlZUZsYWdzKXx8cil7cj1JLlQsSS5UPW51bGwsbz16LnAsei5wPTIsaT1sRCxsRHw9NDt0cnl7IWZ1bmN0aW9uKGUsdCl7aWYoZT1lLmNvbnRhaW5lckluZm8sY2Q9dW8sbkIoZT1uTyhlKSkpe2lmKFwic2VsZWN0aW9uU3RhcnRcImluIGUpdmFyIG49e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGU6e3ZhciByPShuPShuPWUub3duZXJEb2N1bWVudCkmJm4uZGVmYXVsdFZpZXd8fHdpbmRvdykuZ2V0U2VsZWN0aW9uJiZuLmdldFNlbGVjdGlvbigpO2lmKHImJjAhPT1yLnJhbmdlQ291bnQpe249ci5hbmNob3JOb2RlO3ZhciBvLGE9ci5hbmNob3JPZmZzZXQsaT1yLmZvY3VzTm9kZTtyPXIuZm9jdXNPZmZzZXQ7dHJ5e24ubm9kZVR5cGUsaS5ub2RlVHlwZX1jYXRjaChlKXtuPW51bGw7YnJlYWsgZX12YXIgcz0wLGM9LTEsdT0tMSxkPTAsZj0wLHA9ZSxoPW51bGw7dDpmb3IoOzspe2Zvcig7cCE9PW58fDAhPT1hJiYzIT09cC5ub2RlVHlwZXx8KGM9cythKSxwIT09aXx8MCE9PXImJjMhPT1wLm5vZGVUeXBlfHwodT1zK3IpLDM9PT1wLm5vZGVUeXBlJiYocys9cC5ub2RlVmFsdWUubGVuZ3RoKSxudWxsIT09KG89cC5maXJzdENoaWxkKTspaD1wLHA9bztmb3IoOzspe2lmKHA9PT1lKWJyZWFrIHQ7aWYoaD09PW4mJisrZD09PWEmJihjPXMpLGg9PT1pJiYrK2Y9PT1yJiYodT1zKSxudWxsIT09KG89cC5uZXh0U2libGluZykpYnJlYWs7aD0ocD1oKS5wYXJlbnROb2RlfXA9b31uPS0xPT09Y3x8LTE9PT11P251bGw6e3N0YXJ0OmMsZW5kOnV9fWVsc2Ugbj1udWxsfW49bnx8e3N0YXJ0OjAsZW5kOjB9fWVsc2Ugbj1udWxsO2ZvcihjZj17Zm9jdXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTpufSx1bz0hMSxsbD10O251bGwhPT1sbDspaWYoZT0odD1sbCkuY2hpbGQsMCE9KDEwMjQmdC5zdWJ0cmVlRmxhZ3MpJiZudWxsIT09ZSllLnJldHVybj10LGxsPWU7ZWxzZSBmb3IoO251bGwhPT1sbDspe3N3aXRjaChpPSh0PWxsKS5hbHRlcm5hdGUsZT10LmZsYWdzLHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmNhc2UgNTpjYXNlIDI2OmNhc2UgMjc6Y2FzZSA2OmNhc2UgNDpjYXNlIDE3OmJyZWFrO2Nhc2UgMTppZigwIT0oMTAyNCZlKSYmbnVsbCE9PWkpe2U9dm9pZCAwLG49dCxhPWkubWVtb2l6ZWRQcm9wcyxpPWkubWVtb2l6ZWRTdGF0ZSxyPW4uc3RhdGVOb2RlO3RyeXt2YXIgbT1pYyhuLnR5cGUsYSk7ZT1yLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKG0saSksci5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZT1lfWNhdGNoKGUpe3NQKG4sbi5yZXR1cm4sZSl9fWJyZWFrO2Nhc2UgMzppZigwIT0oMTAyNCZlKSl7aWYoOT09PShuPShlPXQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLm5vZGVUeXBlKSljRShlKTtlbHNlIGlmKDE9PT1uKXN3aXRjaChlLm5vZGVOYW1lKXtjYXNlXCJIRUFEXCI6Y2FzZVwiSFRNTFwiOmNhc2VcIkJPRFlcIjpjRShlKTticmVhaztkZWZhdWx0OmUudGV4dENvbnRlbnQ9XCJcIn19YnJlYWs7ZGVmYXVsdDppZigwIT0oMTAyNCZlKSl0aHJvdyBFcnJvcihsKDE2MykpfWlmKG51bGwhPT0oZT10LnNpYmxpbmcpKXtlLnJldHVybj10LnJldHVybixsbD1lO2JyZWFrfWxsPXQucmV0dXJufX0oZSx0LG4pfWZpbmFsbHl7bEQ9aSx6LnA9byxJLlQ9cn19bDU9MSxzXygpLHNrKCksc0UoKX19ZnVuY3Rpb24gc18oKXtpZigxPT09bDUpe2w1PTA7dmFyIGU9bDMsdD1sNixuPTAhPSgxMzg3OCZ0LmZsYWdzKTtpZigwIT0oMTM4NzgmdC5zdWJ0cmVlRmxhZ3MpfHxuKXtuPUkuVCxJLlQ9bnVsbDt2YXIgcj16LnA7ei5wPTI7dmFyIG89bEQ7bER8PTQ7dHJ5e2x2KHQsZSk7dmFyIGE9Y2YsaT1uTyhlLmNvbnRhaW5lckluZm8pLGw9YS5mb2N1c2VkRWxlbSxzPWEuc2VsZWN0aW9uUmFuZ2U7aWYoaSE9PWwmJmwmJmwub3duZXJEb2N1bWVudCYmZnVuY3Rpb24gZSh0LG4pe3JldHVybiEhdCYmISFuJiYodD09PW58fCghdHx8MyE9PXQubm9kZVR5cGUpJiYobiYmMz09PW4ubm9kZVR5cGU/ZSh0LG4ucGFyZW50Tm9kZSk6XCJjb250YWluc1wiaW4gdD90LmNvbnRhaW5zKG4pOiEhdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuKSkpKX0obC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxsKSl7aWYobnVsbCE9PXMmJm5CKGwpKXt2YXIgYz1zLnN0YXJ0LHU9cy5lbmQ7aWYodm9pZCAwPT09dSYmKHU9YyksXCJzZWxlY3Rpb25TdGFydFwiaW4gbClsLnNlbGVjdGlvblN0YXJ0PWMsbC5zZWxlY3Rpb25FbmQ9TWF0aC5taW4odSxsLnZhbHVlLmxlbmd0aCk7ZWxzZXt2YXIgZD1sLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50LGY9ZCYmZC5kZWZhdWx0Vmlld3x8d2luZG93O2lmKGYuZ2V0U2VsZWN0aW9uKXt2YXIgcD1mLmdldFNlbGVjdGlvbigpLGg9bC50ZXh0Q29udGVudC5sZW5ndGgsbT1NYXRoLm1pbihzLnN0YXJ0LGgpLGc9dm9pZCAwPT09cy5lbmQ/bTpNYXRoLm1pbihzLmVuZCxoKTshcC5leHRlbmQmJm0+ZyYmKGk9ZyxnPW0sbT1pKTt2YXIgeT1uUyhsLG0pLHY9blMobCxnKTtpZih5JiZ2JiYoMSE9PXAucmFuZ2VDb3VudHx8cC5hbmNob3JOb2RlIT09eS5ub2RlfHxwLmFuY2hvck9mZnNldCE9PXkub2Zmc2V0fHxwLmZvY3VzTm9kZSE9PXYubm9kZXx8cC5mb2N1c09mZnNldCE9PXYub2Zmc2V0KSl7dmFyIGI9ZC5jcmVhdGVSYW5nZSgpO2Iuc2V0U3RhcnQoeS5ub2RlLHkub2Zmc2V0KSxwLnJlbW92ZUFsbFJhbmdlcygpLG0+Zz8ocC5hZGRSYW5nZShiKSxwLmV4dGVuZCh2Lm5vZGUsdi5vZmZzZXQpKTooYi5zZXRFbmQodi5ub2RlLHYub2Zmc2V0KSxwLmFkZFJhbmdlKGIpKX19fX1mb3IoZD1bXSxwPWw7cD1wLnBhcmVudE5vZGU7KTE9PT1wLm5vZGVUeXBlJiZkLnB1c2goe2VsZW1lbnQ6cCxsZWZ0OnAuc2Nyb2xsTGVmdCx0b3A6cC5zY3JvbGxUb3B9KTtmb3IoXCJmdW5jdGlvblwiPT10eXBlb2YgbC5mb2N1cyYmbC5mb2N1cygpLGw9MDtsPGQubGVuZ3RoO2wrKyl7dmFyIEE9ZFtsXTtBLmVsZW1lbnQuc2Nyb2xsTGVmdD1BLmxlZnQsQS5lbGVtZW50LnNjcm9sbFRvcD1BLnRvcH19dW89ISFjZCxjZj1jZD1udWxsfWZpbmFsbHl7bEQ9byx6LnA9cixJLlQ9bn19ZS5jdXJyZW50PXQsbDU9Mn19ZnVuY3Rpb24gc2soKXtpZigyPT09bDUpe2w1PTA7dmFyIGU9bDMsdD1sNixuPTAhPSg4NzcyJnQuZmxhZ3MpO2lmKDAhPSg4NzcyJnQuc3VidHJlZUZsYWdzKXx8bil7bj1JLlQsSS5UPW51bGw7dmFyIHI9ei5wO3oucD0yO3ZhciBvPWxEO2xEfD00O3RyeXtscyhlLHQuYWx0ZXJuYXRlLHQpfWZpbmFsbHl7bEQ9byx6LnA9cixJLlQ9bn19bDU9M319ZnVuY3Rpb24gc0UoKXtpZig0PT09bDV8fDM9PT1sNSl7bDU9MCxlbigpO3ZhciBlPWwzLHQ9bDYsbj1sOSxyPXNlOzAhPSgxMDI1NiZ0LnN1YnRyZWVGbGFncyl8fDAhPSgxMDI1NiZ0LmZsYWdzKT9sNT01OihsNT0wLGw2PWwzPW51bGwsc2ooZSxlLnBlbmRpbmdMYW5lcykpO3ZhciBvPWUucGVuZGluZ0xhbmVzO2lmKDA9PT1vJiYobDQ9bnVsbCksZVAobiksdD10LnN0YXRlTm9kZSxlcCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZXAub25Db21taXRGaWJlclJvb3QpdHJ5e2VwLm9uQ29tbWl0RmliZXJSb290KGVmLHQsdm9pZCAwLDEyOD09KDEyOCZ0LmN1cnJlbnQuZmxhZ3MpKX1jYXRjaChlKXt9aWYobnVsbCE9PXIpe3Q9SS5ULG89ei5wLHoucD0yLEkuVD1udWxsO3RyeXtmb3IodmFyIGE9ZS5vblJlY292ZXJhYmxlRXJyb3IsaT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgbD1yW2ldO2EobC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bC5zdGFja30pfX1maW5hbGx5e0kuVD10LHoucD1vfX0wIT0oMyZsOSkmJnNTKCksc3EoZSksbz1lLnBlbmRpbmdMYW5lcywwIT0oNDE5NDA5MCZuKSYmMCE9KDQyJm8pP2U9PT1zbj9zdCsrOihzdD0wLHNuPWUpOnN0PTAsc0goMCwhMSl9fWZ1bmN0aW9uIHNqKGUsdCl7MD09KGUucG9vbGVkQ2FjaGVMYW5lcyY9dCkmJm51bGwhPSh0PWUucG9vbGVkQ2FjaGUpJiYoZS5wb29sZWRDYWNoZT1udWxsLHIyKHQpKX1mdW5jdGlvbiBzUyhlKXtyZXR1cm4gc18oKSxzaygpLHNFKCksc08oZSl9ZnVuY3Rpb24gc08oKXtpZig1IT09bDUpcmV0dXJuITE7dmFyIGU9bDMsdD1sODtsOD0wO3ZhciBuPWVQKGw5KSxyPUkuVCxvPXoucDt0cnl7ei5wPTMyPm4/MzI6bixJLlQ9bnVsbCxuPWw3LGw3PW51bGw7dmFyIGE9bDMsaT1sOTtpZihsNT0wLGw2PWwzPW51bGwsbDk9MCwwIT0oNiZsRCkpdGhyb3cgRXJyb3IobCgzMzEpKTt2YXIgcz1sRDtpZihsRHw9NCxsUChhLmN1cnJlbnQpLGxfKGEsYS5jdXJyZW50LGksbiksbEQ9cyxzSCgwLCExKSxlcCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZXAub25Qb3N0Q29tbWl0RmliZXJSb290KXRyeXtlcC5vblBvc3RDb21taXRGaWJlclJvb3QoZWYsYSl9Y2F0Y2goZSl7fXJldHVybiEwfWZpbmFsbHl7ei5wPW8sSS5UPXIsc2ooZSx0KX19ZnVuY3Rpb24gc0IoZSx0LG4pe3Q9cnUobix0KSx0PWlnKGUuc3RhdGVOb2RlLHQsMiksbnVsbCE9PShlPW9rKGUsdCwyKSkmJihlRShlLDIpLHNxKGUpKX1mdW5jdGlvbiBzUChlLHQsbil7aWYoMz09PWUudGFnKXNCKGUsZSxuKTtlbHNlIGZvcig7bnVsbCE9PXQ7KXtpZigzPT09dC50YWcpe3NCKHQsZSxuKTticmVha31pZigxPT09dC50YWcpe3ZhciByPXQuc3RhdGVOb2RlO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHIuY29tcG9uZW50RGlkQ2F0Y2gmJihudWxsPT09bDR8fCFsNC5oYXMocikpKXtlPXJ1KG4sZSksbnVsbCE9PShyPW9rKHQsbj1peSgyKSwyKSkmJihpdihuLHIsdCxlKSxlRShyLDIpLHNxKHIpKTticmVha319dD10LnJldHVybn19ZnVuY3Rpb24gc0koZSx0LG4pe3ZhciByPWUucGluZ0NhY2hlO2lmKG51bGw9PT1yKXtyPWUucGluZ0NhY2hlPW5ldyBsVDt2YXIgbz1uZXcgU2V0O3Iuc2V0KHQsbyl9ZWxzZSB2b2lkIDA9PT0obz1yLmdldCh0KSkmJihvPW5ldyBTZXQsci5zZXQodCxvKSk7by5oYXMobil8fChscT0hMCxvLmFkZChuKSxlPXN6LmJpbmQobnVsbCxlLHQsbiksdC50aGVuKGUsZSkpfWZ1bmN0aW9uIHN6KGUsdCxuKXt2YXIgcj1lLnBpbmdDYWNoZTtudWxsIT09ciYmci5kZWxldGUodCksZS5waW5nZWRMYW5lc3w9ZS5zdXNwZW5kZWRMYW5lcyZuLGUud2FybUxhbmVzJj1+bixsTD09PWUmJihsUiZuKT09PW4mJig0PT09bFZ8fDM9PT1sViYmKDB4M2MwMDAwMCZsUik9PT1sUiYmMzAwPmVyKCktbDA/MD09KDImbEQpJiZzZChlLDApOmxZfD1uLGxYPT09bFImJihsWD0wKSksc3EoZSl9ZnVuY3Rpb24gc1QoZSx0KXswPT09dCYmKHQ9ZV8oKSksbnVsbCE9PShlPW4zKGUsdCkpJiYoZUUoZSx0KSxzcShlKSl9ZnVuY3Rpb24gc0QoZSl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlLG49MDtudWxsIT09dCYmKG49dC5yZXRyeUxhbmUpLHNUKGUsbil9ZnVuY3Rpb24gc0woZSx0KXt2YXIgbj0wO3N3aXRjaChlLnRhZyl7Y2FzZSAzMTpjYXNlIDEzOnZhciByPWUuc3RhdGVOb2RlLG89ZS5tZW1vaXplZFN0YXRlO251bGwhPT1vJiYobj1vLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTpyPWUuc3RhdGVOb2RlO2JyZWFrO2Nhc2UgMjI6cj1lLnN0YXRlTm9kZS5fcmV0cnlDYWNoZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMzE0KSl9bnVsbCE9PXImJnIuZGVsZXRlKHQpLHNUKGUsbil9dmFyIHNOPW51bGwsc1I9bnVsbCxzTT0hMSxzWj0hMSxzVT0hMSxzRj0wO2Z1bmN0aW9uIHNxKGUpe2UhPT1zUiYmbnVsbD09PWUubmV4dCYmKG51bGw9PT1zUj9zTj1zUj1lOnNSPXNSLm5leHQ9ZSksc1o9ITAsc018fChzTT0hMCxjeChmdW5jdGlvbigpezAhPSg2JmxEKT9KKGVhLHNWKTpzJCgpfSkpfWZ1bmN0aW9uIHNIKGUsdCl7aWYoIXNVJiZzWil7c1U9ITA7ZG8gZm9yKHZhciBuPSExLHI9c047bnVsbCE9PXI7KXtpZighdClpZigwIT09ZSl7dmFyIG89ci5wZW5kaW5nTGFuZXM7aWYoMD09PW8pdmFyIGE9MDtlbHNle3ZhciBpPXIuc3VzcGVuZGVkTGFuZXMsbD1yLnBpbmdlZExhbmVzO2E9MHhjMDAwMDk1JihhPSgxPDwzMS1lbSg0MnxlKSsxKS0xJihvJn4oaSZ+bCkpKT8weGMwMDAwOTUmYXwxOmE/MnxhOjB9MCE9PWEmJihuPSEwLHNLKHIsYSkpfWVsc2UgYT1sUiwwPT0oMyYoYT1leChyLHI9PT1sTD9hOjAsbnVsbCE9PXIuY2FuY2VsUGVuZGluZ0NvbW1pdHx8LTEhPT1yLnRpbWVvdXRIYW5kbGUpKSl8fGV3KHIsYSl8fChuPSEwLHNLKHIsYSkpO3I9ci5uZXh0fXdoaWxlKG4pO3NVPSExfX1mdW5jdGlvbiBzVigpe3MkKCl9ZnVuY3Rpb24gcyQoKXtzWj1zTT0hMTt2YXIgZSx0PTA7MD09PXNGfHwoKGU9d2luZG93LmV2ZW50KSYmXCJwb3BzdGF0ZVwiPT09ZS50eXBlP2U9PT1jeXx8KGN5PWUsMCk6KGN5PW51bGwsMSkpfHwodD1zRik7Zm9yKHZhciBuPWVyKCkscj1udWxsLG89c047bnVsbCE9PW87KXt2YXIgYT1vLm5leHQsaT1zVyhvLG4pOzA9PT1pPyhvLm5leHQ9bnVsbCxudWxsPT09cj9zTj1hOnIubmV4dD1hLG51bGw9PT1hJiYoc1I9cikpOihyPW8sKDAhPT10fHwwIT0oMyZpKSkmJihzWj0hMCkpLG89YX0wIT09bDUmJjUhPT1sNXx8c0godCwhMSksMCE9PXNGJiYoc0Y9MCl9ZnVuY3Rpb24gc1coZSx0KXtmb3IodmFyIG49ZS5zdXNwZW5kZWRMYW5lcyxyPWUucGluZ2VkTGFuZXMsbz1lLmV4cGlyYXRpb25UaW1lcyxhPS0weDNjMDAwMDEmZS5wZW5kaW5nTGFuZXM7MDxhOyl7dmFyIGk9MzEtZW0oYSksbD0xPDxpLHM9b1tpXTstMT09PXM/KDA9PShsJm4pfHwwIT0obCZyKSkmJihvW2ldPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgODpjYXNlIDY0OnJldHVybiB0KzI1MDtjYXNlIDE2OmNhc2UgMzI6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIHQrNWUzO2RlZmF1bHQ6cmV0dXJuIC0xfX0obCx0KSk6czw9dCYmKGUuZXhwaXJlZExhbmVzfD1sKSxhJj1+bH1pZih0PWxMLG49bFIsbj1leChlLGU9PT10P246MCxudWxsIT09ZS5jYW5jZWxQZW5kaW5nQ29tbWl0fHwtMSE9PWUudGltZW91dEhhbmRsZSkscj1lLmNhbGxiYWNrTm9kZSwwPT09bnx8ZT09PXQmJigyPT09bE18fDk9PT1sTSl8fG51bGwhPT1lLmNhbmNlbFBlbmRpbmdDb21taXQpcmV0dXJuIG51bGwhPT1yJiZudWxsIT09ciYmZWUociksZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MDtpZigwPT0oMyZuKXx8ZXcoZSxuKSl7aWYoKHQ9biYtbik9PT1lLmNhbGxiYWNrUHJpb3JpdHkpcmV0dXJuIHQ7c3dpdGNoKG51bGwhPT1yJiZlZShyKSxlUChuKSl7Y2FzZSAyOmNhc2UgODpuPWVpO2JyZWFrO2Nhc2UgMzI6ZGVmYXVsdDpuPWVsO2JyZWFrO2Nhc2UgMHgxMDAwMDAwMDpuPWVjfXJldHVybiBuPUoobixyPXNZLmJpbmQobnVsbCxlKSksZS5jYWxsYmFja1ByaW9yaXR5PXQsZS5jYWxsYmFja05vZGU9bix0fXJldHVybiBudWxsIT09ciYmbnVsbCE9PXImJmVlKHIpLGUuY2FsbGJhY2tQcmlvcml0eT0yLGUuY2FsbGJhY2tOb2RlPW51bGwsMn1mdW5jdGlvbiBzWShlLHQpe2lmKDAhPT1sNSYmNSE9PWw1KXJldHVybiBlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wLG51bGw7dmFyIG49ZS5jYWxsYmFja05vZGU7aWYoc1MoITApJiZlLmNhbGxiYWNrTm9kZSE9PW4pcmV0dXJuIG51bGw7dmFyIHI9bFI7cmV0dXJuIDA9PT0ocj1leChlLGU9PT1sTD9yOjAsbnVsbCE9PWUuY2FuY2VsUGVuZGluZ0NvbW1pdHx8LTEhPT1lLnRpbWVvdXRIYW5kbGUpKT9udWxsOihzaShlLHIsdCksc1coZSxlcigpKSxudWxsIT1lLmNhbGxiYWNrTm9kZSYmZS5jYWxsYmFja05vZGU9PT1uP3NZLmJpbmQobnVsbCxlKTpudWxsKX1mdW5jdGlvbiBzSyhlLHQpe2lmKHNTKCkpcmV0dXJuIG51bGw7c2koZSx0LCEwKX1mdW5jdGlvbiBzWCgpe2lmKDA9PT1zRil7dmFyIGU9cjM7c0Y9MCE9PWU/ZTplQygpfXJldHVybiBzRn1mdW5jdGlvbiBzRyhlKXtyZXR1cm4gbnVsbD09ZXx8XCJzeW1ib2xcIj09dHlwZW9mIGV8fFwiYm9vbGVhblwiPT10eXBlb2YgZT9udWxsOlwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTp0bShcIlwiK2UpfWZ1bmN0aW9uIHNRKGUsdCl7dmFyIG49dC5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtyZXR1cm4gbi5uYW1lPXQubmFtZSxuLnZhbHVlPXQudmFsdWUsZS5pZCYmbi5zZXRBdHRyaWJ1dGUoXCJmb3JtXCIsZS5pZCksdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLHQpLGU9bmV3IEZvcm1EYXRhKGUpLG4ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChuKSxlfWZvcih2YXIgc0o9MDtzSjxuWC5sZW5ndGg7c0orKyl7dmFyIHMwPW5YW3NKXTtuRyhzMC50b0xvd2VyQ2FzZSgpLFwib25cIisoczBbMF0udG9VcHBlckNhc2UoKStzMC5zbGljZSgxKSkpfW5HKG5GLFwib25BbmltYXRpb25FbmRcIiksbkcobnEsXCJvbkFuaW1hdGlvbkl0ZXJhdGlvblwiKSxuRyhuSCxcIm9uQW5pbWF0aW9uU3RhcnRcIiksbkcoXCJkYmxjbGlja1wiLFwib25Eb3VibGVDbGlja1wiKSxuRyhcImZvY3VzaW5cIixcIm9uRm9jdXNcIiksbkcoXCJmb2N1c291dFwiLFwib25CbHVyXCIpLG5HKG5WLFwib25UcmFuc2l0aW9uUnVuXCIpLG5HKG4kLFwib25UcmFuc2l0aW9uU3RhcnRcIiksbkcoblcsXCJvblRyYW5zaXRpb25DYW5jZWxcIiksbkcoblksXCJvblRyYW5zaXRpb25FbmRcIiksZVEoXCJvbk1vdXNlRW50ZXJcIixbXCJtb3VzZW91dFwiLFwibW91c2VvdmVyXCJdKSxlUShcIm9uTW91c2VMZWF2ZVwiLFtcIm1vdXNlb3V0XCIsXCJtb3VzZW92ZXJcIl0pLGVRKFwib25Qb2ludGVyRW50ZXJcIixbXCJwb2ludGVyb3V0XCIsXCJwb2ludGVyb3ZlclwiXSksZVEoXCJvblBvaW50ZXJMZWF2ZVwiLFtcInBvaW50ZXJvdXRcIixcInBvaW50ZXJvdmVyXCJdKSxlRyhcIm9uQ2hhbmdlXCIsXCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKSksZUcoXCJvblNlbGVjdFwiLFwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlXCIuc3BsaXQoXCIgXCIpKSxlRyhcIm9uQmVmb3JlSW5wdXRcIixbXCJjb21wb3NpdGlvbmVuZFwiLFwia2V5cHJlc3NcIixcInRleHRJbnB1dFwiLFwicGFzdGVcIl0pLGVHKFwib25Db21wb3NpdGlvbkVuZFwiLFwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIikpLGVHKFwib25Db21wb3NpdGlvblN0YXJ0XCIsXCJjb21wb3NpdGlvbnN0YXJ0IGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKSxlRyhcIm9uQ29tcG9zaXRpb25VcGRhdGVcIixcImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpKTt2YXIgczE9XCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFwiIFwiKSxzMj1uZXcgU2V0KFwiYmVmb3JldG9nZ2xlIGNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHNjcm9sbGVuZCB0b2dnbGVcIi5zcGxpdChcIiBcIikuY29uY2F0KHMxKSk7ZnVuY3Rpb24gczQoZSx0KXt0PTAhPSg0JnQpO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dLG89ci5ldmVudDtyPXIubGlzdGVuZXJzO2U6e3ZhciBhPXZvaWQgMDtpZih0KWZvcih2YXIgaT1yLmxlbmd0aC0xOzA8PWk7aS0tKXt2YXIgbD1yW2ldLHM9bC5pbnN0YW5jZSxjPWwuY3VycmVudFRhcmdldDtpZihsPWwubGlzdGVuZXIscyE9PWEmJm8uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO2E9bCxvLmN1cnJlbnRUYXJnZXQ9Yzt0cnl7YShvKX1jYXRjaChlKXtuUShlKX1vLmN1cnJlbnRUYXJnZXQ9bnVsbCxhPXN9ZWxzZSBmb3IoaT0wO2k8ci5sZW5ndGg7aSsrKXtpZihzPShsPXJbaV0pLmluc3RhbmNlLGM9bC5jdXJyZW50VGFyZ2V0LGw9bC5saXN0ZW5lcixzIT09YSYmby5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7YT1sLG8uY3VycmVudFRhcmdldD1jO3RyeXthKG8pfWNhdGNoKGUpe25RKGUpfW8uY3VycmVudFRhcmdldD1udWxsLGE9c319fX1mdW5jdGlvbiBzNShlLHQpe3ZhciBuPXRbZVJdO3ZvaWQgMD09PW4mJihuPXRbZVJdPW5ldyBTZXQpO3ZhciByPWUrXCJfX2J1YmJsZVwiO24uaGFzKHIpfHwoczgodCxlLDIsITEpLG4uYWRkKHIpKX1mdW5jdGlvbiBzMyhlLHQsbil7dmFyIHI9MDt0JiYocnw9NCksczgobixlLHIsdCl9dmFyIHM2PVwiX3JlYWN0TGlzdGVuaW5nXCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gczkoZSl7aWYoIWVbczZdKXtlW3M2XT0hMCxlSy5mb3JFYWNoKGZ1bmN0aW9uKHQpe1wic2VsZWN0aW9uY2hhbmdlXCIhPT10JiYoczIuaGFzKHQpfHxzMyh0LCExLGUpLHMzKHQsITAsZSkpfSk7dmFyIHQ9OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7bnVsbD09PXR8fHRbczZdfHwodFtzNl09ITAsczMoXCJzZWxlY3Rpb25jaGFuZ2VcIiwhMSx0KSl9fWZ1bmN0aW9uIHM4KGUsdCxuLHIpe3N3aXRjaCh1ZCh0KSl7Y2FzZSAyOnZhciBvPXVhO2JyZWFrO2Nhc2UgODpvPXVpO2JyZWFrO2RlZmF1bHQ6bz11bH1uPW8uYmluZChudWxsLHQsbixlKSxvPXZvaWQgMCx0RSYmKFwidG91Y2hzdGFydFwiPT09dHx8XCJ0b3VjaG1vdmVcIj09PXR8fFwid2hlZWxcIj09PXQpJiYobz0hMCkscj92b2lkIDAhPT1vP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4se2NhcHR1cmU6ITAscGFzc2l2ZTpvfSk6ZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCk6dm9pZCAwIT09bz9lLmFkZEV2ZW50TGlzdGVuZXIodCxuLHtwYXNzaXZlOm99KTplLmFkZEV2ZW50TGlzdGVuZXIodCxuLCExKX1mdW5jdGlvbiBzNyhlLHQsbixyLG8pe3ZhciBhPXI7aWYoMD09KDEmdCkmJjA9PSgyJnQpJiZudWxsIT09cillOmZvcig7Oyl7aWYobnVsbD09PXIpcmV0dXJuO3ZhciBpPXIudGFnO2lmKDM9PT1pfHw0PT09aSl7dmFyIGw9ci5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztpZihsPT09bylicmVhaztpZig0PT09aSlmb3IoaT1yLnJldHVybjtudWxsIT09aTspe3ZhciBjPWkudGFnO2lmKCgzPT09Y3x8ND09PWMpJiZpLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09bylyZXR1cm47aT1pLnJldHVybn1mb3IoO251bGwhPT1sOyl7aWYobnVsbD09PShpPWVIKGwpKSlyZXR1cm47aWYoNT09PShjPWkudGFnKXx8Nj09PWN8fDI2PT09Y3x8Mjc9PT1jKXtyPWE9aTtjb250aW51ZSBlfWw9bC5wYXJlbnROb2RlfX1yPXIucmV0dXJufXRDKGZ1bmN0aW9uKCl7dmFyIHI9YSxvPXR2KG4pLGk9W107ZTp7dmFyIGw9bksuZ2V0KGUpO2lmKHZvaWQgMCE9PWwpe3ZhciBjPXRGLHU9ZTtzd2l0Y2goZSl7Y2FzZVwia2V5cHJlc3NcIjppZigwPT09dEkobikpYnJlYWsgZTtjYXNlXCJrZXlkb3duXCI6Y2FzZVwia2V5dXBcIjpjPXQ0O2JyZWFrO2Nhc2VcImZvY3VzaW5cIjp1PVwiZm9jdXNcIixjPXRZO2JyZWFrO2Nhc2VcImZvY3Vzb3V0XCI6dT1cImJsdXJcIixjPXRZO2JyZWFrO2Nhc2VcImJlZm9yZWJsdXJcIjpjYXNlXCJhZnRlcmJsdXJcIjpjPXRZO2JyZWFrO2Nhc2VcImNsaWNrXCI6aWYoMj09PW4uYnV0dG9uKWJyZWFrIGU7Y2FzZVwiYXV4Y2xpY2tcIjpjYXNlXCJkYmxjbGlja1wiOmNhc2VcIm1vdXNlZG93blwiOmNhc2VcIm1vdXNlbW92ZVwiOmNhc2VcIm1vdXNldXBcIjpjYXNlXCJtb3VzZW91dFwiOmNhc2VcIm1vdXNlb3ZlclwiOmNhc2VcImNvbnRleHRtZW51XCI6Yz10JDticmVhaztjYXNlXCJkcmFnXCI6Y2FzZVwiZHJhZ2VuZFwiOmNhc2VcImRyYWdlbnRlclwiOmNhc2VcImRyYWdleGl0XCI6Y2FzZVwiZHJhZ2xlYXZlXCI6Y2FzZVwiZHJhZ292ZXJcIjpjYXNlXCJkcmFnc3RhcnRcIjpjYXNlXCJkcm9wXCI6Yz10VzticmVhaztjYXNlXCJ0b3VjaGNhbmNlbFwiOmNhc2VcInRvdWNoZW5kXCI6Y2FzZVwidG91Y2htb3ZlXCI6Y2FzZVwidG91Y2hzdGFydFwiOmM9dDM7YnJlYWs7Y2FzZSBuRjpjYXNlIG5xOmNhc2Ugbkg6Yz10SzticmVhaztjYXNlIG5ZOmM9dDY7YnJlYWs7Y2FzZVwic2Nyb2xsXCI6Y2FzZVwic2Nyb2xsZW5kXCI6Yz10SDticmVhaztjYXNlXCJ3aGVlbFwiOmM9dDk7YnJlYWs7Y2FzZVwiY29weVwiOmNhc2VcImN1dFwiOmNhc2VcInBhc3RlXCI6Yz10WDticmVhaztjYXNlXCJnb3Rwb2ludGVyY2FwdHVyZVwiOmNhc2VcImxvc3Rwb2ludGVyY2FwdHVyZVwiOmNhc2VcInBvaW50ZXJjYW5jZWxcIjpjYXNlXCJwb2ludGVyZG93blwiOmNhc2VcInBvaW50ZXJtb3ZlXCI6Y2FzZVwicG9pbnRlcm91dFwiOmNhc2VcInBvaW50ZXJvdmVyXCI6Y2FzZVwicG9pbnRlcnVwXCI6Yz10NTticmVhaztjYXNlXCJ0b2dnbGVcIjpjYXNlXCJiZWZvcmV0b2dnbGVcIjpjPXQ4fXZhciBkPTAhPSg0JnQpLGY9IWQmJihcInNjcm9sbFwiPT09ZXx8XCJzY3JvbGxlbmRcIj09PWUpLHA9ZD9udWxsIT09bD9sK1wiQ2FwdHVyZVwiOm51bGw6bDtkPVtdO2Zvcih2YXIgaCxtPXI7bnVsbCE9PW07KXt2YXIgZz1tO2lmKGg9Zy5zdGF0ZU5vZGUsNSE9PShnPWcudGFnKSYmMjYhPT1nJiYyNyE9PWd8fG51bGw9PT1ofHxudWxsPT09cHx8bnVsbCE9KGc9dF8obSxwKSkmJmQucHVzaChjZShtLGcsaCkpLGYpYnJlYWs7bT1tLnJldHVybn0wPGQubGVuZ3RoJiYobD1uZXcgYyhsLHUsbnVsbCxuLG8pLGkucHVzaCh7ZXZlbnQ6bCxsaXN0ZW5lcnM6ZH0pKX19aWYoMD09KDcmdCkpe2lmKChsPVwibW91c2VvdmVyXCI9PT1lfHxcInBvaW50ZXJvdmVyXCI9PT1lLGM9XCJtb3VzZW91dFwiPT09ZXx8XCJwb2ludGVyb3V0XCI9PT1lLCEobCYmbiE9PXR5JiYodT1uLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpJiYoZUgodSl8fHVbZU5dKSkpJiYoY3x8bCkmJihsPW8ud2luZG93PT09bz9vOihsPW8ub3duZXJEb2N1bWVudCk/bC5kZWZhdWx0Vmlld3x8bC5wYXJlbnRXaW5kb3c6d2luZG93LGM/KHU9bi5yZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudCxjPXIsbnVsbCE9PSh1PXU/ZUgodSk6bnVsbCkmJihmPXModSksZD11LnRhZyx1IT09Znx8NSE9PWQmJjI3IT09ZCYmNiE9PWQpJiYodT1udWxsKSk6KGM9bnVsbCx1PXIpLGMhPT11KSl7aWYoZD10JCxnPVwib25Nb3VzZUxlYXZlXCIscD1cIm9uTW91c2VFbnRlclwiLG09XCJtb3VzZVwiLChcInBvaW50ZXJvdXRcIj09PWV8fFwicG9pbnRlcm92ZXJcIj09PWUpJiYoZD10NSxnPVwib25Qb2ludGVyTGVhdmVcIixwPVwib25Qb2ludGVyRW50ZXJcIixtPVwicG9pbnRlclwiKSxmPW51bGw9PWM/bDplJChjKSxoPW51bGw9PXU/bDplJCh1KSwobD1uZXcgZChnLG0rXCJsZWF2ZVwiLGMsbixvKSkudGFyZ2V0PWYsbC5yZWxhdGVkVGFyZ2V0PWgsZz1udWxsLGVIKG8pPT09ciYmKChkPW5ldyBkKHAsbStcImVudGVyXCIsdSxuLG8pKS50YXJnZXQ9aCxkLnJlbGF0ZWRUYXJnZXQ9ZixnPWQpLGY9ZyxjJiZ1KXQ6e2ZvcihkPWNuLHA9YyxtPXUsaD0wLGc9cDtnO2c9ZChnKSloKys7Zz0wO2Zvcih2YXIgeSx2PW07djt2PWQodikpZysrO2Zvcig7MDxoLWc7KXA9ZChwKSxoLS07Zm9yKDswPGctaDspbT1kKG0pLGctLTtmb3IoO2gtLTspe2lmKHA9PT1tfHxudWxsIT09bSYmcD09PW0uYWx0ZXJuYXRlKXtkPXA7YnJlYWsgdH1wPWQocCksbT1kKG0pfWQ9bnVsbH1lbHNlIGQ9bnVsbDtudWxsIT09YyYmY3IoaSxsLGMsZCwhMSksbnVsbCE9PXUmJm51bGwhPT1mJiZjcihpLGYsdSxkLCEwKX1lOntpZihcInNlbGVjdFwiPT09KGM9KGw9cj9lJChyKTp3aW5kb3cpLm5vZGVOYW1lJiZsLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpfHxcImlucHV0XCI9PT1jJiZcImZpbGVcIj09PWwudHlwZSl2YXIgYj1ubTtlbHNlIGlmKG5jKGwpKWlmKG5nKWI9bl87ZWxzZXtiPW53O3ZhciBBPW54fWVsc2UoYz1sLm5vZGVOYW1lKSYmXCJpbnB1dFwiPT09Yy50b0xvd2VyQ2FzZSgpJiYoXCJjaGVja2JveFwiPT09bC50eXBlfHxcInJhZGlvXCI9PT1sLnR5cGUpP2I9bkM6ciYmdGYoci5lbGVtZW50VHlwZSkmJihiPW5tKTtpZihiJiYoYj1iKGUscikpKXtudShpLGIsbixvKTticmVhayBlfUEmJkEoZSxsLHIpLFwiZm9jdXNvdXRcIj09PWUmJnImJlwibnVtYmVyXCI9PT1sLnR5cGUmJm51bGwhPXIubWVtb2l6ZWRQcm9wcy52YWx1ZSYmdG8obCxcIm51bWJlclwiLGwudmFsdWUpfXN3aXRjaChBPXI/ZSQocik6d2luZG93LGUpe2Nhc2VcImZvY3VzaW5cIjoobmMoQSl8fFwidHJ1ZVwiPT09QS5jb250ZW50RWRpdGFibGUpJiYobkk9QSxuej1yLG5UPW51bGwpO2JyZWFrO2Nhc2VcImZvY3Vzb3V0XCI6blQ9bno9bkk9bnVsbDticmVhaztjYXNlXCJtb3VzZWRvd25cIjpuRD0hMDticmVhaztjYXNlXCJjb250ZXh0bWVudVwiOmNhc2VcIm1vdXNldXBcIjpjYXNlXCJkcmFnZW5kXCI6bkQ9ITEsbkwoaSxuLG8pO2JyZWFrO2Nhc2VcInNlbGVjdGlvbmNoYW5nZVwiOmlmKG5QKWJyZWFrO2Nhc2VcImtleWRvd25cIjpjYXNlXCJrZXl1cFwiOm5MKGksbixvKX1pZihuZSl0Ontzd2l0Y2goZSl7Y2FzZVwiY29tcG9zaXRpb25zdGFydFwiOnZhciB4PVwib25Db21wb3NpdGlvblN0YXJ0XCI7YnJlYWsgdDtjYXNlXCJjb21wb3NpdGlvbmVuZFwiOng9XCJvbkNvbXBvc2l0aW9uRW5kXCI7YnJlYWsgdDtjYXNlXCJjb21wb3NpdGlvbnVwZGF0ZVwiOng9XCJvbkNvbXBvc2l0aW9uVXBkYXRlXCI7YnJlYWsgdH14PXZvaWQgMH1lbHNlIG5sP25hKGUsbikmJih4PVwib25Db21wb3NpdGlvbkVuZFwiKTpcImtleWRvd25cIj09PWUmJjIyOT09PW4ua2V5Q29kZSYmKHg9XCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7eCYmKG5yJiZcImtvXCIhPT1uLmxvY2FsZSYmKG5sfHxcIm9uQ29tcG9zaXRpb25TdGFydFwiIT09eD9cIm9uQ29tcG9zaXRpb25FbmRcIj09PXgmJm5sJiYoeT10UCgpKToodE89XCJ2YWx1ZVwiaW4odFM9byk/dFMudmFsdWU6dFMudGV4dENvbnRlbnQsbmw9ITApKSwwPChBPWN0KHIseCkpLmxlbmd0aCYmKHg9bmV3IHRHKHgsZSxudWxsLG4sbyksaS5wdXNoKHtldmVudDp4LGxpc3RlbmVyczpBfSkseT94LmRhdGE9eTpudWxsIT09KHk9bmkobikpJiYoeC5kYXRhPXkpKSksKHk9bm4/ZnVuY3Rpb24oZSx0KXtzd2l0Y2goZSl7Y2FzZVwiY29tcG9zaXRpb25lbmRcIjpyZXR1cm4gbmkodCk7Y2FzZVwia2V5cHJlc3NcIjppZigzMiE9PXQud2hpY2gpcmV0dXJuIG51bGw7cmV0dXJuIG5vPSEwLFwiIFwiO2Nhc2VcInRleHRJbnB1dFwiOnJldHVyblwiIFwiPT09KGU9dC5kYXRhKSYmbm8/bnVsbDplO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLG4pOmZ1bmN0aW9uKGUsdCl7aWYobmwpcmV0dXJuXCJjb21wb3NpdGlvbmVuZFwiPT09ZXx8IW5lJiZuYShlLHQpPyhlPXRQKCksdEI9dE89dFM9bnVsbCxubD0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlXCJwYXN0ZVwiOmRlZmF1bHQ6cmV0dXJuIG51bGw7Y2FzZVwia2V5cHJlc3NcIjppZighKHQuY3RybEtleXx8dC5hbHRLZXl8fHQubWV0YUtleSl8fHQuY3RybEtleSYmdC5hbHRLZXkpe2lmKHQuY2hhciYmMTx0LmNoYXIubGVuZ3RoKXJldHVybiB0LmNoYXI7aWYodC53aGljaClyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSh0LndoaWNoKX1yZXR1cm4gbnVsbDtjYXNlXCJjb21wb3NpdGlvbmVuZFwiOnJldHVybiBuciYmXCJrb1wiIT09dC5sb2NhbGU/bnVsbDp0LmRhdGF9fShlLG4pKSYmMDwoeD1jdChyLFwib25CZWZvcmVJbnB1dFwiKSkubGVuZ3RoJiYoQT1uZXcgdEcoXCJvbkJlZm9yZUlucHV0XCIsXCJiZWZvcmVpbnB1dFwiLG51bGwsbixvKSxpLnB1c2goe2V2ZW50OkEsbGlzdGVuZXJzOnh9KSxBLmRhdGE9eSk7dmFyIHc9ZTtpZihcInN1Ym1pdFwiPT09dyYmciYmci5zdGF0ZU5vZGU9PT1vKXt2YXIgQz1zRygob1tlTF18fG51bGwpLmFjdGlvbiksXz1uLnN1Ym1pdHRlcjtfJiZudWxsIT09KHc9KHc9X1tlTF18fG51bGwpP3NHKHcuZm9ybUFjdGlvbik6Xy5nZXRBdHRyaWJ1dGUoXCJmb3JtQWN0aW9uXCIpKSYmKEM9dyxfPW51bGwpO3ZhciBrPW5ldyB0RihcImFjdGlvblwiLFwiYWN0aW9uXCIsbnVsbCxuLG8pO2kucHVzaCh7ZXZlbnQ6ayxsaXN0ZW5lcnM6W3tpbnN0YW5jZTpudWxsLGxpc3RlbmVyOmZ1bmN0aW9uKCl7aWYobi5kZWZhdWx0UHJldmVudGVkKXtpZigwIT09c0Ype3ZhciBlPV8/c1EobyxfKTpuZXcgRm9ybURhdGEobyk7YVgocix7cGVuZGluZzohMCxkYXRhOmUsbWV0aG9kOm8ubWV0aG9kLGFjdGlvbjpDfSxudWxsLGUpfX1lbHNlXCJmdW5jdGlvblwiPT10eXBlb2YgQyYmKGsucHJldmVudERlZmF1bHQoKSxhWChyLHtwZW5kaW5nOiEwLGRhdGE6ZT1fP3NRKG8sXyk6bmV3IEZvcm1EYXRhKG8pLG1ldGhvZDpvLm1ldGhvZCxhY3Rpb246Q30sQyxlKSl9LGN1cnJlbnRUYXJnZXQ6b31dfSl9fXM0KGksdCl9KX1mdW5jdGlvbiBjZShlLHQsbil7cmV0dXJue2luc3RhbmNlOmUsbGlzdGVuZXI6dCxjdXJyZW50VGFyZ2V0Om59fWZ1bmN0aW9uIGN0KGUsdCl7Zm9yKHZhciBuPXQrXCJDYXB0dXJlXCIscj1bXTtudWxsIT09ZTspe3ZhciBvPWUsYT1vLnN0YXRlTm9kZTtpZig1IT09KG89by50YWcpJiYyNiE9PW8mJjI3IT09b3x8bnVsbD09PWF8fChudWxsIT0obz10XyhlLG4pKSYmci51bnNoaWZ0KGNlKGUsbyxhKSksbnVsbCE9KG89dF8oZSx0KSkmJnIucHVzaChjZShlLG8sYSkpKSwzPT09ZS50YWcpcmV0dXJuIHI7ZT1lLnJldHVybn1yZXR1cm5bXX1mdW5jdGlvbiBjbihlKXtpZihudWxsPT09ZSlyZXR1cm4gbnVsbDtkbyBlPWUucmV0dXJuO3doaWxlKGUmJjUhPT1lLnRhZyYmMjchPT1lLnRhZyk7cmV0dXJuIGV8fG51bGx9ZnVuY3Rpb24gY3IoZSx0LG4scixvKXtmb3IodmFyIGE9dC5fcmVhY3ROYW1lLGk9W107bnVsbCE9PW4mJm4hPT1yOyl7dmFyIGw9bixzPWwuYWx0ZXJuYXRlLGM9bC5zdGF0ZU5vZGU7aWYobD1sLnRhZyxudWxsIT09cyYmcz09PXIpYnJlYWs7NSE9PWwmJjI2IT09bCYmMjchPT1sfHxudWxsPT09Y3x8KHM9YyxvP251bGwhPShjPXRfKG4sYSkpJiZpLnVuc2hpZnQoY2UobixjLHMpKTpvfHxudWxsIT0oYz10XyhuLGEpKSYmaS5wdXNoKGNlKG4sYyxzKSkpLG49bi5yZXR1cm59MCE9PWkubGVuZ3RoJiZlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOml9KX12YXIgY289L1xcclxcbj8vZyxjYT0vXFx1MDAwMHxcXHVGRkZEL2c7ZnVuY3Rpb24gY2koZSl7cmV0dXJuKFwic3RyaW5nXCI9PXR5cGVvZiBlP2U6XCJcIitlKS5yZXBsYWNlKGNvLFwiXFxuXCIpLnJlcGxhY2UoY2EsXCJcIil9ZnVuY3Rpb24gY2woZSx0KXtyZXR1cm4gdD1jaSh0KSxjaShlKT09PXR9ZnVuY3Rpb24gY3MoZSx0LG4scixvLGEpe3N3aXRjaChuKXtjYXNlXCJjaGlsZHJlblwiOlwic3RyaW5nXCI9PXR5cGVvZiByP1wiYm9keVwiPT09dHx8XCJ0ZXh0YXJlYVwiPT09dCYmXCJcIj09PXJ8fHRzKGUscik6KFwibnVtYmVyXCI9PXR5cGVvZiByfHxcImJpZ2ludFwiPT10eXBlb2YgcikmJlwiYm9keVwiIT09dCYmdHMoZSxcIlwiK3IpO2JyZWFrO2Nhc2VcImNsYXNzTmFtZVwiOmU0KGUsXCJjbGFzc1wiLHIpO2JyZWFrO2Nhc2VcInRhYkluZGV4XCI6ZTQoZSxcInRhYmluZGV4XCIscik7YnJlYWs7Y2FzZVwiZGlyXCI6Y2FzZVwicm9sZVwiOmNhc2VcInZpZXdCb3hcIjpjYXNlXCJ3aWR0aFwiOmNhc2VcImhlaWdodFwiOmU0KGUsbixyKTticmVhaztjYXNlXCJzdHlsZVwiOnRkKGUscixhKTticmVhaztjYXNlXCJkYXRhXCI6aWYoXCJvYmplY3RcIiE9PXQpe2U0KGUsXCJkYXRhXCIscik7YnJlYWt9Y2FzZVwic3JjXCI6Y2FzZVwiaHJlZlwiOmlmKFwiXCI9PT1yJiYoXCJhXCIhPT10fHxcImhyZWZcIiE9PW4pfHxudWxsPT1yfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByfHxcInN5bWJvbFwiPT10eXBlb2Ygcnx8XCJib29sZWFuXCI9PXR5cGVvZiByKXtlLnJlbW92ZUF0dHJpYnV0ZShuKTticmVha31yPXRtKFwiXCIrciksZS5zZXRBdHRyaWJ1dGUobixyKTticmVhaztjYXNlXCJhY3Rpb25cIjpjYXNlXCJmb3JtQWN0aW9uXCI6aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcil7ZS5zZXRBdHRyaWJ1dGUobixcImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdBIFJlYWN0IGZvcm0gd2FzIHVuZXhwZWN0ZWRseSBzdWJtaXR0ZWQuIElmIHlvdSBjYWxsZWQgZm9ybS5zdWJtaXQoKSBtYW51YWxseSwgY29uc2lkZXIgdXNpbmcgZm9ybS5yZXF1ZXN0U3VibWl0KCkgaW5zdGVhZC4gSWYgeW91XFxcXCdyZSB0cnlpbmcgdG8gdXNlIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIGluIGEgc3VibWl0IGV2ZW50IGhhbmRsZXIsIGNvbnNpZGVyIGFsc28gY2FsbGluZyBldmVudC5wcmV2ZW50RGVmYXVsdCgpLicpXCIpO2JyZWFrfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGEmJihcImZvcm1BY3Rpb25cIj09PW4/KFwiaW5wdXRcIiE9PXQmJmNzKGUsdCxcIm5hbWVcIixvLm5hbWUsbyxudWxsKSxjcyhlLHQsXCJmb3JtRW5jVHlwZVwiLG8uZm9ybUVuY1R5cGUsbyxudWxsKSxjcyhlLHQsXCJmb3JtTWV0aG9kXCIsby5mb3JtTWV0aG9kLG8sbnVsbCksY3MoZSx0LFwiZm9ybVRhcmdldFwiLG8uZm9ybVRhcmdldCxvLG51bGwpKTooY3MoZSx0LFwiZW5jVHlwZVwiLG8uZW5jVHlwZSxvLG51bGwpLGNzKGUsdCxcIm1ldGhvZFwiLG8ubWV0aG9kLG8sbnVsbCksY3MoZSx0LFwidGFyZ2V0XCIsby50YXJnZXQsbyxudWxsKSkpLG51bGw9PXJ8fFwic3ltYm9sXCI9PXR5cGVvZiByfHxcImJvb2xlYW5cIj09dHlwZW9mIHIpe2UucmVtb3ZlQXR0cmlidXRlKG4pO2JyZWFrfXI9dG0oXCJcIityKSxlLnNldEF0dHJpYnV0ZShuLHIpO2JyZWFrO2Nhc2VcIm9uQ2xpY2tcIjpudWxsIT1yJiYoZS5vbmNsaWNrPXRnKTticmVhaztjYXNlXCJvblNjcm9sbFwiOm51bGwhPXImJnM1KFwic2Nyb2xsXCIsZSk7YnJlYWs7Y2FzZVwib25TY3JvbGxFbmRcIjpudWxsIT1yJiZzNShcInNjcm9sbGVuZFwiLGUpO2JyZWFrO2Nhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9cil7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHJ8fCEoXCJfX2h0bWxcImluIHIpKXRocm93IEVycm9yKGwoNjEpKTtpZihudWxsIT0obj1yLl9faHRtbCkpe2lmKG51bGwhPW8uY2hpbGRyZW4pdGhyb3cgRXJyb3IobCg2MCkpO2UuaW5uZXJIVE1MPW59fWJyZWFrO2Nhc2VcIm11bHRpcGxlXCI6ZS5tdWx0aXBsZT1yJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZcInN5bWJvbFwiIT10eXBlb2YgcjticmVhaztjYXNlXCJtdXRlZFwiOmUubXV0ZWQ9ciYmXCJmdW5jdGlvblwiIT10eXBlb2YgciYmXCJzeW1ib2xcIiE9dHlwZW9mIHI7YnJlYWs7Y2FzZVwic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nXCI6Y2FzZVwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6Y2FzZVwiZGVmYXVsdFZhbHVlXCI6Y2FzZVwiZGVmYXVsdENoZWNrZWRcIjpjYXNlXCJpbm5lckhUTUxcIjpjYXNlXCJyZWZcIjpjYXNlXCJhdXRvRm9jdXNcIjpjYXNlXCJpbm5lclRleHRcIjpjYXNlXCJ0ZXh0Q29udGVudFwiOmJyZWFrO2Nhc2VcInhsaW5rSHJlZlwiOmlmKG51bGw9PXJ8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHJ8fFwiYm9vbGVhblwiPT10eXBlb2Ygcnx8XCJzeW1ib2xcIj09dHlwZW9mIHIpe2UucmVtb3ZlQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKTticmVha31uPXRtKFwiXCIrciksZS5zZXRBdHRyaWJ1dGVOUyhcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmhyZWZcIixuKTticmVhaztjYXNlXCJjb250ZW50RWRpdGFibGVcIjpjYXNlXCJzcGVsbENoZWNrXCI6Y2FzZVwiZHJhZ2dhYmxlXCI6Y2FzZVwidmFsdWVcIjpjYXNlXCJhdXRvUmV2ZXJzZVwiOmNhc2VcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIjpjYXNlXCJmb2N1c2FibGVcIjpjYXNlXCJwcmVzZXJ2ZUFscGhhXCI6bnVsbCE9ciYmXCJmdW5jdGlvblwiIT10eXBlb2YgciYmXCJzeW1ib2xcIiE9dHlwZW9mIHI/ZS5zZXRBdHRyaWJ1dGUobixcIlwiK3IpOmUucmVtb3ZlQXR0cmlidXRlKG4pO2JyZWFrO2Nhc2VcImluZXJ0XCI6Y2FzZVwiYWxsb3dGdWxsU2NyZWVuXCI6Y2FzZVwiYXN5bmNcIjpjYXNlXCJhdXRvUGxheVwiOmNhc2VcImNvbnRyb2xzXCI6Y2FzZVwiZGVmYXVsdFwiOmNhc2VcImRlZmVyXCI6Y2FzZVwiZGlzYWJsZWRcIjpjYXNlXCJkaXNhYmxlUGljdHVyZUluUGljdHVyZVwiOmNhc2VcImRpc2FibGVSZW1vdGVQbGF5YmFja1wiOmNhc2VcImZvcm1Ob1ZhbGlkYXRlXCI6Y2FzZVwiaGlkZGVuXCI6Y2FzZVwibG9vcFwiOmNhc2VcIm5vTW9kdWxlXCI6Y2FzZVwibm9WYWxpZGF0ZVwiOmNhc2VcIm9wZW5cIjpjYXNlXCJwbGF5c0lubGluZVwiOmNhc2VcInJlYWRPbmx5XCI6Y2FzZVwicmVxdWlyZWRcIjpjYXNlXCJyZXZlcnNlZFwiOmNhc2VcInNjb3BlZFwiOmNhc2VcInNlYW1sZXNzXCI6Y2FzZVwiaXRlbVNjb3BlXCI6ciYmXCJmdW5jdGlvblwiIT10eXBlb2YgciYmXCJzeW1ib2xcIiE9dHlwZW9mIHI/ZS5zZXRBdHRyaWJ1dGUobixcIlwiKTplLnJlbW92ZUF0dHJpYnV0ZShuKTticmVhaztjYXNlXCJjYXB0dXJlXCI6Y2FzZVwiZG93bmxvYWRcIjohMD09PXI/ZS5zZXRBdHRyaWJ1dGUobixcIlwiKTohMSE9PXImJm51bGwhPXImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJlwic3ltYm9sXCIhPXR5cGVvZiByP2Uuc2V0QXR0cmlidXRlKG4scik6ZS5yZW1vdmVBdHRyaWJ1dGUobik7YnJlYWs7Y2FzZVwiY29sc1wiOmNhc2VcInJvd3NcIjpjYXNlXCJzaXplXCI6Y2FzZVwic3BhblwiOm51bGwhPXImJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJlwic3ltYm9sXCIhPXR5cGVvZiByJiYhaXNOYU4ocikmJjE8PXI/ZS5zZXRBdHRyaWJ1dGUobixyKTplLnJlbW92ZUF0dHJpYnV0ZShuKTticmVhaztjYXNlXCJyb3dTcGFuXCI6Y2FzZVwic3RhcnRcIjpudWxsPT1yfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiByfHxcInN5bWJvbFwiPT10eXBlb2Ygcnx8aXNOYU4ocik/ZS5yZW1vdmVBdHRyaWJ1dGUobik6ZS5zZXRBdHRyaWJ1dGUobixyKTticmVhaztjYXNlXCJwb3BvdmVyXCI6czUoXCJiZWZvcmV0b2dnbGVcIixlKSxzNShcInRvZ2dsZVwiLGUpLGUyKGUsXCJwb3BvdmVyXCIscik7YnJlYWs7Y2FzZVwieGxpbmtBY3R1YXRlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOmFjdHVhdGVcIixyKTticmVhaztjYXNlXCJ4bGlua0FyY3JvbGVcIjplNShlLFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFwieGxpbms6YXJjcm9sZVwiLHIpO2JyZWFrO2Nhc2VcInhsaW5rUm9sZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXCJ4bGluazpyb2xlXCIscik7YnJlYWs7Y2FzZVwieGxpbmtTaG93XCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOnNob3dcIixyKTticmVhaztjYXNlXCJ4bGlua1RpdGxlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOnRpdGxlXCIscik7YnJlYWs7Y2FzZVwieGxpbmtUeXBlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcInhsaW5rOnR5cGVcIixyKTticmVhaztjYXNlXCJ4bWxCYXNlXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLFwieG1sOmJhc2VcIixyKTticmVhaztjYXNlXCJ4bWxMYW5nXCI6ZTUoZSxcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiLFwieG1sOmxhbmdcIixyKTticmVhaztjYXNlXCJ4bWxTcGFjZVwiOmU1KGUsXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcInhtbDpzcGFjZVwiLHIpO2JyZWFrO2Nhc2VcImlzXCI6ZTIoZSxcImlzXCIscik7YnJlYWs7ZGVmYXVsdDoyPG4ubGVuZ3RoJiYoXCJvXCI9PT1uWzBdfHxcIk9cIj09PW5bMF0pJiYoXCJuXCI9PT1uWzFdfHxcIk5cIj09PW5bMV0pfHxlMihlLG49dHAuZ2V0KG4pfHxuLHIpfX1mdW5jdGlvbiBjYyhlLHQsbixyLG8sYSl7c3dpdGNoKG4pe2Nhc2VcInN0eWxlXCI6dGQoZSxyLGEpO2JyZWFrO2Nhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9cil7aWYoXCJvYmplY3RcIiE9dHlwZW9mIHJ8fCEoXCJfX2h0bWxcImluIHIpKXRocm93IEVycm9yKGwoNjEpKTtpZihudWxsIT0obj1yLl9faHRtbCkpe2lmKG51bGwhPW8uY2hpbGRyZW4pdGhyb3cgRXJyb3IobCg2MCkpO2UuaW5uZXJIVE1MPW59fWJyZWFrO2Nhc2VcImNoaWxkcmVuXCI6XCJzdHJpbmdcIj09dHlwZW9mIHI/dHMoZSxyKTooXCJudW1iZXJcIj09dHlwZW9mIHJ8fFwiYmlnaW50XCI9PXR5cGVvZiByKSYmdHMoZSxcIlwiK3IpO2JyZWFrO2Nhc2VcIm9uU2Nyb2xsXCI6bnVsbCE9ciYmczUoXCJzY3JvbGxcIixlKTticmVhaztjYXNlXCJvblNjcm9sbEVuZFwiOm51bGwhPXImJnM1KFwic2Nyb2xsZW5kXCIsZSk7YnJlYWs7Y2FzZVwib25DbGlja1wiOm51bGwhPXImJihlLm9uY2xpY2s9dGcpO2JyZWFrO2Nhc2VcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOmNhc2VcInN1cHByZXNzSHlkcmF0aW9uV2FybmluZ1wiOmNhc2VcImlubmVySFRNTFwiOmNhc2VcInJlZlwiOmNhc2VcImlubmVyVGV4dFwiOmNhc2VcInRleHRDb250ZW50XCI6YnJlYWs7ZGVmYXVsdDppZighZVguaGFzT3duUHJvcGVydHkobikpZTp7aWYoXCJvXCI9PT1uWzBdJiZcIm5cIj09PW5bMV0mJihvPW4uZW5kc1dpdGgoXCJDYXB0dXJlXCIpLHQ9bi5zbGljZSgyLG8/bi5sZW5ndGgtNzp2b2lkIDApLFwiZnVuY3Rpb25cIj09dHlwZW9mKGE9bnVsbCE9KGE9ZVtlTF18fG51bGwpP2Fbbl06bnVsbCkmJmUucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LGEsbyksXCJmdW5jdGlvblwiPT10eXBlb2Ygcikpe1wiZnVuY3Rpb25cIiE9dHlwZW9mIGEmJm51bGwhPT1hJiYobiBpbiBlP2Vbbl09bnVsbDplLmhhc0F0dHJpYnV0ZShuKSYmZS5yZW1vdmVBdHRyaWJ1dGUobikpLGUuYWRkRXZlbnRMaXN0ZW5lcih0LHIsbyk7YnJlYWsgZX1uIGluIGU/ZVtuXT1yOiEwPT09cj9lLnNldEF0dHJpYnV0ZShuLFwiXCIpOmUyKGUsbixyKX19fWZ1bmN0aW9uIGN1KGUsdCxuKXtzd2l0Y2godCl7Y2FzZVwiZGl2XCI6Y2FzZVwic3BhblwiOmNhc2VcInN2Z1wiOmNhc2VcInBhdGhcIjpjYXNlXCJhXCI6Y2FzZVwiZ1wiOmNhc2VcInBcIjpjYXNlXCJsaVwiOmJyZWFrO2Nhc2VcImltZ1wiOnM1KFwiZXJyb3JcIixlKSxzNShcImxvYWRcIixlKTt2YXIgcixvPSExLGE9ITE7Zm9yKHIgaW4gbilpZihuLmhhc093blByb3BlcnR5KHIpKXt2YXIgaT1uW3JdO2lmKG51bGwhPWkpc3dpdGNoKHIpe2Nhc2VcInNyY1wiOm89ITA7YnJlYWs7Y2FzZVwic3JjU2V0XCI6YT0hMDticmVhaztjYXNlXCJjaGlsZHJlblwiOmNhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6dGhyb3cgRXJyb3IobCgxMzcsdCkpO2RlZmF1bHQ6Y3MoZSx0LHIsaSxuLG51bGwpfX1hJiZjcyhlLHQsXCJzcmNTZXRcIixuLnNyY1NldCxuLG51bGwpLG8mJmNzKGUsdCxcInNyY1wiLG4uc3JjLG4sbnVsbCk7cmV0dXJuO2Nhc2VcImlucHV0XCI6czUoXCJpbnZhbGlkXCIsZSk7dmFyIHM9cj1pPWE9bnVsbCxjPW51bGwsdT1udWxsO2ZvcihvIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIGQ9bltvXTtpZihudWxsIT1kKXN3aXRjaChvKXtjYXNlXCJuYW1lXCI6YT1kO2JyZWFrO2Nhc2VcInR5cGVcIjppPWQ7YnJlYWs7Y2FzZVwiY2hlY2tlZFwiOmM9ZDticmVhaztjYXNlXCJkZWZhdWx0Q2hlY2tlZFwiOnU9ZDticmVhaztjYXNlXCJ2YWx1ZVwiOnI9ZDticmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjpzPWQ7YnJlYWs7Y2FzZVwiY2hpbGRyZW5cIjpjYXNlXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOmlmKG51bGwhPWQpdGhyb3cgRXJyb3IobCgxMzcsdCkpO2JyZWFrO2RlZmF1bHQ6Y3MoZSx0LG8sZCxuLG51bGwpfX10cihlLHIscyxjLHUsaSxhLCExKTtyZXR1cm47Y2FzZVwic2VsZWN0XCI6Zm9yKGEgaW4gczUoXCJpbnZhbGlkXCIsZSksbz1pPXI9bnVsbCxuKWlmKG4uaGFzT3duUHJvcGVydHkoYSkmJm51bGwhPShzPW5bYV0pKXN3aXRjaChhKXtjYXNlXCJ2YWx1ZVwiOnI9czticmVhaztjYXNlXCJkZWZhdWx0VmFsdWVcIjppPXM7YnJlYWs7Y2FzZVwibXVsdGlwbGVcIjpvPXM7ZGVmYXVsdDpjcyhlLHQsYSxzLG4sbnVsbCl9dD1yLG49aSxlLm11bHRpcGxlPSEhbyxudWxsIT10P3RhKGUsISFvLHQsITEpOm51bGwhPW4mJnRhKGUsISFvLG4sITApO3JldHVybjtjYXNlXCJ0ZXh0YXJlYVwiOmZvcihpIGluIHM1KFwiaW52YWxpZFwiLGUpLHI9YT1vPW51bGwsbilpZihuLmhhc093blByb3BlcnR5KGkpJiZudWxsIT0ocz1uW2ldKSlzd2l0Y2goaSl7Y2FzZVwidmFsdWVcIjpvPXM7YnJlYWs7Y2FzZVwiZGVmYXVsdFZhbHVlXCI6YT1zO2JyZWFrO2Nhc2VcImNoaWxkcmVuXCI6cj1zO2JyZWFrO2Nhc2VcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6aWYobnVsbCE9cyl0aHJvdyBFcnJvcihsKDkxKSk7YnJlYWs7ZGVmYXVsdDpjcyhlLHQsaSxzLG4sbnVsbCl9dGwoZSxvLGEscik7cmV0dXJuO2Nhc2VcIm9wdGlvblwiOmZvcihjIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShjKSYmbnVsbCE9KG89bltjXSkmJihcInNlbGVjdGVkXCI9PT1jP2Uuc2VsZWN0ZWQ9byYmXCJmdW5jdGlvblwiIT10eXBlb2YgbyYmXCJzeW1ib2xcIiE9dHlwZW9mIG86Y3MoZSx0LGMsbyxuLG51bGwpKTtyZXR1cm47Y2FzZVwiZGlhbG9nXCI6czUoXCJiZWZvcmV0b2dnbGVcIixlKSxzNShcInRvZ2dsZVwiLGUpLHM1KFwiY2FuY2VsXCIsZSksczUoXCJjbG9zZVwiLGUpO2JyZWFrO2Nhc2VcImlmcmFtZVwiOmNhc2VcIm9iamVjdFwiOnM1KFwibG9hZFwiLGUpO2JyZWFrO2Nhc2VcInZpZGVvXCI6Y2FzZVwiYXVkaW9cIjpmb3Iobz0wO288czEubGVuZ3RoO28rKylzNShzMVtvXSxlKTticmVhaztjYXNlXCJpbWFnZVwiOnM1KFwiZXJyb3JcIixlKSxzNShcImxvYWRcIixlKTticmVhaztjYXNlXCJkZXRhaWxzXCI6czUoXCJ0b2dnbGVcIixlKTticmVhaztjYXNlXCJlbWJlZFwiOmNhc2VcInNvdXJjZVwiOmNhc2VcImxpbmtcIjpzNShcImVycm9yXCIsZSksczUoXCJsb2FkXCIsZSk7Y2FzZVwiYXJlYVwiOmNhc2VcImJhc2VcIjpjYXNlXCJiclwiOmNhc2VcImNvbFwiOmNhc2VcImhyXCI6Y2FzZVwia2V5Z2VuXCI6Y2FzZVwibWV0YVwiOmNhc2VcInBhcmFtXCI6Y2FzZVwidHJhY2tcIjpjYXNlXCJ3YnJcIjpjYXNlXCJtZW51aXRlbVwiOmZvcih1IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh1KSYmbnVsbCE9KG89blt1XSkpc3dpdGNoKHUpe2Nhc2VcImNoaWxkcmVuXCI6Y2FzZVwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjp0aHJvdyBFcnJvcihsKDEzNyx0KSk7ZGVmYXVsdDpjcyhlLHQsdSxvLG4sbnVsbCl9cmV0dXJuO2RlZmF1bHQ6aWYodGYodCkpe2ZvcihkIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShkKSYmdm9pZCAwIT09KG89bltkXSkmJmNjKGUsdCxkLG8sbix2b2lkIDApO3JldHVybn19Zm9yKHMgaW4gbiluLmhhc093blByb3BlcnR5KHMpJiZudWxsIT0obz1uW3NdKSYmY3MoZSx0LHMsbyxuLG51bGwpfXZhciBjZD1udWxsLGNmPW51bGw7ZnVuY3Rpb24gY3AoZSl7cmV0dXJuIDk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50fWZ1bmN0aW9uIGNoKGUpe3N3aXRjaChlKXtjYXNlXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiOnJldHVybiAxO2Nhc2VcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBjbShlLHQpe2lmKDA9PT1lKXN3aXRjaCh0KXtjYXNlXCJzdmdcIjpyZXR1cm4gMTtjYXNlXCJtYXRoXCI6cmV0dXJuIDI7ZGVmYXVsdDpyZXR1cm4gMH1yZXR1cm4gMT09PWUmJlwiZm9yZWlnbk9iamVjdFwiPT09dD8wOmV9ZnVuY3Rpb24gY2coZSx0KXtyZXR1cm5cInRleHRhcmVhXCI9PT1lfHxcIm5vc2NyaXB0XCI9PT1lfHxcInN0cmluZ1wiPT10eXBlb2YgdC5jaGlsZHJlbnx8XCJudW1iZXJcIj09dHlwZW9mIHQuY2hpbGRyZW58fFwiYmlnaW50XCI9PXR5cGVvZiB0LmNoaWxkcmVufHxcIm9iamVjdFwiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfXZhciBjeT1udWxsLGN2PVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDp2b2lkIDAsY2I9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDp2b2lkIDAsY0E9XCJmdW5jdGlvblwiPT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxjeD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz9xdWV1ZU1pY3JvdGFzazp2b2lkIDAhPT1jQT9mdW5jdGlvbihlKXtyZXR1cm4gY0EucmVzb2x2ZShudWxsKS50aGVuKGUpLmNhdGNoKGN3KX06Y3Y7ZnVuY3Rpb24gY3coZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX1mdW5jdGlvbiBjQyhlKXtyZXR1cm5cImhlYWRcIj09PWV9ZnVuY3Rpb24gY18oZSx0KXt2YXIgbj10LHI9MDtkb3t2YXIgbz1uLm5leHRTaWJsaW5nO2lmKGUucmVtb3ZlQ2hpbGQobiksbyYmOD09PW8ubm9kZVR5cGUpaWYoXCIvJFwiPT09KG49by5kYXRhKXx8XCIvJlwiPT09bil7aWYoMD09PXIpe2UucmVtb3ZlQ2hpbGQobyksdU8odCk7cmV0dXJufXItLX1lbHNlIGlmKFwiJFwiPT09bnx8XCIkP1wiPT09bnx8XCIkflwiPT09bnx8XCIkIVwiPT09bnx8XCImXCI9PT1uKXIrKztlbHNlIGlmKFwiaHRtbFwiPT09biljRChlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTtlbHNlIGlmKFwiaGVhZFwiPT09bil7Y0Qobj1lLm93bmVyRG9jdW1lbnQuaGVhZCk7Zm9yKHZhciBhPW4uZmlyc3RDaGlsZDthOyl7dmFyIGk9YS5uZXh0U2libGluZyxsPWEubm9kZU5hbWU7YVtlRl18fFwiU0NSSVBUXCI9PT1sfHxcIlNUWUxFXCI9PT1sfHxcIkxJTktcIj09PWwmJlwic3R5bGVzaGVldFwiPT09YS5yZWwudG9Mb3dlckNhc2UoKXx8bi5yZW1vdmVDaGlsZChhKSxhPWl9fWVsc2VcImJvZHlcIj09PW4mJmNEKGUub3duZXJEb2N1bWVudC5ib2R5KTtuPW99d2hpbGUobik7dU8odCl9ZnVuY3Rpb24gY2soZSx0KXt2YXIgbj1lO2U9MDtkb3t2YXIgcj1uLm5leHRTaWJsaW5nO2lmKDE9PT1uLm5vZGVUeXBlP3Q/KG4uX3N0YXNoZWREaXNwbGF5PW4uc3R5bGUuZGlzcGxheSxuLnN0eWxlLmRpc3BsYXk9XCJub25lXCIpOihuLnN0eWxlLmRpc3BsYXk9bi5fc3Rhc2hlZERpc3BsYXl8fFwiXCIsXCJcIj09PW4uZ2V0QXR0cmlidXRlKFwic3R5bGVcIikmJm4ucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIikpOjM9PT1uLm5vZGVUeXBlJiYodD8obi5fc3Rhc2hlZFRleHQ9bi5ub2RlVmFsdWUsbi5ub2RlVmFsdWU9XCJcIik6bi5ub2RlVmFsdWU9bi5fc3Rhc2hlZFRleHR8fFwiXCIpLHImJjg9PT1yLm5vZGVUeXBlKWlmKFwiLyRcIj09PShuPXIuZGF0YSkpaWYoMD09PWUpYnJlYWs7ZWxzZSBlLS07ZWxzZVwiJFwiIT09biYmXCIkP1wiIT09biYmXCIkflwiIT09biYmXCIkIVwiIT09bnx8ZSsrO249cn13aGlsZShuKX1mdW5jdGlvbiBjRShlKXt2YXIgdD1lLmZpcnN0Q2hpbGQ7Zm9yKHQmJjEwPT09dC5ub2RlVHlwZSYmKHQ9dC5uZXh0U2libGluZyk7dDspe3ZhciBuPXQ7c3dpdGNoKHQ9dC5uZXh0U2libGluZyxuLm5vZGVOYW1lKXtjYXNlXCJIVE1MXCI6Y2FzZVwiSEVBRFwiOmNhc2VcIkJPRFlcIjpjRShuKSxlcShuKTtjb250aW51ZTtjYXNlXCJTQ1JJUFRcIjpjYXNlXCJTVFlMRVwiOmNvbnRpbnVlO2Nhc2VcIkxJTktcIjppZihcInN0eWxlc2hlZXRcIj09PW4ucmVsLnRvTG93ZXJDYXNlKCkpY29udGludWV9ZS5yZW1vdmVDaGlsZChuKX19ZnVuY3Rpb24gY2ooZSx0KXtmb3IoOzghPT1lLm5vZGVUeXBlOylpZighdHx8bnVsbD09PShlPWNCKGUubmV4dFNpYmxpbmcpKSlyZXR1cm4gbnVsbDtyZXR1cm4gZX1mdW5jdGlvbiBjUyhlKXtyZXR1cm5cIiQ/XCI9PT1lLmRhdGF8fFwiJH5cIj09PWUuZGF0YX1mdW5jdGlvbiBjTyhlKXtyZXR1cm5cIiQhXCI9PT1lLmRhdGF8fFwiJD9cIj09PWUuZGF0YSYmXCJsb2FkaW5nXCIhPT1lLm93bmVyRG9jdW1lbnQucmVhZHlTdGF0ZX1mdW5jdGlvbiBjQihlKXtmb3IoO251bGwhPWU7ZT1lLm5leHRTaWJsaW5nKXt2YXIgdD1lLm5vZGVUeXBlO2lmKDE9PT10fHwzPT09dClicmVhaztpZig4PT09dCl7aWYoXCIkXCI9PT0odD1lLmRhdGEpfHxcIiQhXCI9PT10fHxcIiQ/XCI9PT10fHxcIiR+XCI9PT10fHxcIiZcIj09PXR8fFwiRiFcIj09PXR8fFwiRlwiPT09dClicmVhaztpZihcIi8kXCI9PT10fHxcIi8mXCI9PT10KXJldHVybiBudWxsfX1yZXR1cm4gZX12YXIgY1A9bnVsbDtmdW5jdGlvbiBjSShlKXtlPWUubmV4dFNpYmxpbmc7Zm9yKHZhciB0PTA7ZTspe2lmKDg9PT1lLm5vZGVUeXBlKXt2YXIgbj1lLmRhdGE7aWYoXCIvJFwiPT09bnx8XCIvJlwiPT09bil7aWYoMD09PXQpcmV0dXJuIGNCKGUubmV4dFNpYmxpbmcpO3QtLX1lbHNlXCIkXCIhPT1uJiZcIiQhXCIhPT1uJiZcIiQ/XCIhPT1uJiZcIiR+XCIhPT1uJiZcIiZcIiE9PW58fHQrK31lPWUubmV4dFNpYmxpbmd9cmV0dXJuIG51bGx9ZnVuY3Rpb24gY3ooZSl7ZT1lLnByZXZpb3VzU2libGluZztmb3IodmFyIHQ9MDtlOyl7aWYoOD09PWUubm9kZVR5cGUpe3ZhciBuPWUuZGF0YTtpZihcIiRcIj09PW58fFwiJCFcIj09PW58fFwiJD9cIj09PW58fFwiJH5cIj09PW58fFwiJlwiPT09bil7aWYoMD09PXQpcmV0dXJuIGU7dC0tfWVsc2VcIi8kXCIhPT1uJiZcIi8mXCIhPT1ufHx0Kyt9ZT1lLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH1mdW5jdGlvbiBjVChlLHQsbil7c3dpdGNoKHQ9Y3AobiksZSl7Y2FzZVwiaHRtbFwiOmlmKCEoZT10LmRvY3VtZW50RWxlbWVudCkpdGhyb3cgRXJyb3IobCg0NTIpKTtyZXR1cm4gZTtjYXNlXCJoZWFkXCI6aWYoIShlPXQuaGVhZCkpdGhyb3cgRXJyb3IobCg0NTMpKTtyZXR1cm4gZTtjYXNlXCJib2R5XCI6aWYoIShlPXQuYm9keSkpdGhyb3cgRXJyb3IobCg0NTQpKTtyZXR1cm4gZTtkZWZhdWx0OnRocm93IEVycm9yKGwoNDUxKSl9fWZ1bmN0aW9uIGNEKGUpe2Zvcih2YXIgdD1lLmF0dHJpYnV0ZXM7dC5sZW5ndGg7KWUucmVtb3ZlQXR0cmlidXRlTm9kZSh0WzBdKTtlcShlKX12YXIgY0w9bmV3IE1hcCxjTj1uZXcgU2V0O2Z1bmN0aW9uIGNSKGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIGUuZ2V0Um9vdE5vZGU/ZS5nZXRSb290Tm9kZSgpOjk9PT1lLm5vZGVUeXBlP2U6ZS5vd25lckRvY3VtZW50fXZhciBjTT16LmQ7ei5kPXtmOmZ1bmN0aW9uKCl7dmFyIGU9Y00uZigpLHQ9c2MoKTtyZXR1cm4gZXx8dH0scjpmdW5jdGlvbihlKXt2YXIgdD1lVihlKTtudWxsIT09dCYmNT09PXQudGFnJiZcImZvcm1cIj09PXQudHlwZT9hUSh0KTpjTS5yKGUpfSxEOmZ1bmN0aW9uKGUpe2NNLkQoZSksY1UoXCJkbnMtcHJlZmV0Y2hcIixlLG51bGwpfSxDOmZ1bmN0aW9uKGUsdCl7Y00uQyhlLHQpLGNVKFwicHJlY29ubmVjdFwiLGUsdCl9LEw6ZnVuY3Rpb24oZSx0LG4pe2lmKGNNLkwoZSx0LG4pLGNaJiZlJiZ0KXt2YXIgcj0nbGlua1tyZWw9XCJwcmVsb2FkXCJdW2FzPVwiJyt0dCh0KSsnXCJdJztcImltYWdlXCI9PT10JiZuJiZuLmltYWdlU3JjU2V0PyhyKz0nW2ltYWdlc3Jjc2V0PVwiJyt0dChuLmltYWdlU3JjU2V0KSsnXCJdJyxcInN0cmluZ1wiPT10eXBlb2Ygbi5pbWFnZVNpemVzJiYocis9J1tpbWFnZXNpemVzPVwiJyt0dChuLmltYWdlU2l6ZXMpKydcIl0nKSk6cis9J1tocmVmPVwiJyt0dChlKSsnXCJdJzt2YXIgbz1yO3N3aXRjaCh0KXtjYXNlXCJzdHlsZVwiOm89Y3EoZSk7YnJlYWs7Y2FzZVwic2NyaXB0XCI6bz1jJChlKX1jTC5oYXMobyl8fChlPWYoe3JlbDpcInByZWxvYWRcIixocmVmOlwiaW1hZ2VcIj09PXQmJm4mJm4uaW1hZ2VTcmNTZXQ/dm9pZCAwOmUsYXM6dH0sbiksY0wuc2V0KG8sZSksbnVsbCE9PWNaLnF1ZXJ5U2VsZWN0b3Iocil8fFwic3R5bGVcIj09PXQmJmNaLnF1ZXJ5U2VsZWN0b3IoY0gobykpfHxcInNjcmlwdFwiPT09dCYmY1oucXVlcnlTZWxlY3RvcihjVyhvKSl8fChjdSh0PWNaLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpLFwibGlua1wiLGUpLGVZKHQpLGNaLmhlYWQuYXBwZW5kQ2hpbGQodCkpKX19LG06ZnVuY3Rpb24oZSx0KXtpZihjTS5tKGUsdCksY1omJmUpe3ZhciBuPXQmJlwic3RyaW5nXCI9PXR5cGVvZiB0LmFzP3QuYXM6XCJzY3JpcHRcIixyPSdsaW5rW3JlbD1cIm1vZHVsZXByZWxvYWRcIl1bYXM9XCInK3R0KG4pKydcIl1baHJlZj1cIicrdHQoZSkrJ1wiXScsbz1yO3N3aXRjaChuKXtjYXNlXCJhdWRpb3dvcmtsZXRcIjpjYXNlXCJwYWludHdvcmtsZXRcIjpjYXNlXCJzZXJ2aWNld29ya2VyXCI6Y2FzZVwic2hhcmVkd29ya2VyXCI6Y2FzZVwid29ya2VyXCI6Y2FzZVwic2NyaXB0XCI6bz1jJChlKX1pZighY0wuaGFzKG8pJiYoZT1mKHtyZWw6XCJtb2R1bGVwcmVsb2FkXCIsaHJlZjplfSx0KSxjTC5zZXQobyxlKSxudWxsPT09Y1oucXVlcnlTZWxlY3RvcihyKSkpe3N3aXRjaChuKXtjYXNlXCJhdWRpb3dvcmtsZXRcIjpjYXNlXCJwYWludHdvcmtsZXRcIjpjYXNlXCJzZXJ2aWNld29ya2VyXCI6Y2FzZVwic2hhcmVkd29ya2VyXCI6Y2FzZVwid29ya2VyXCI6Y2FzZVwic2NyaXB0XCI6aWYoY1oucXVlcnlTZWxlY3RvcihjVyhvKSkpcmV0dXJufWN1KG49Y1ouY3JlYXRlRWxlbWVudChcImxpbmtcIiksXCJsaW5rXCIsZSksZVkobiksY1ouaGVhZC5hcHBlbmRDaGlsZChuKX19fSxYOmZ1bmN0aW9uKGUsdCl7aWYoY00uWChlLHQpLGNaJiZlKXt2YXIgbj1lVyhjWikuaG9pc3RhYmxlU2NyaXB0cyxyPWMkKGUpLG89bi5nZXQocik7b3x8KChvPWNaLnF1ZXJ5U2VsZWN0b3IoY1cocikpKXx8KGU9Zih7c3JjOmUsYXN5bmM6ITB9LHQpLCh0PWNMLmdldChyKSkmJmNHKGUsdCksZVkobz1jWi5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpKSxjdShvLFwibGlua1wiLGUpLGNaLmhlYWQuYXBwZW5kQ2hpbGQobykpLG89e3R5cGU6XCJzY3JpcHRcIixpbnN0YW5jZTpvLGNvdW50OjEsc3RhdGU6bnVsbH0sbi5zZXQocixvKSl9fSxTOmZ1bmN0aW9uKGUsdCxuKXtpZihjTS5TKGUsdCxuKSxjWiYmZSl7dmFyIHI9ZVcoY1opLmhvaXN0YWJsZVN0eWxlcyxvPWNxKGUpO3Q9dHx8XCJkZWZhdWx0XCI7dmFyIGE9ci5nZXQobyk7aWYoIWEpe3ZhciBpPXtsb2FkaW5nOjAscHJlbG9hZDpudWxsfTtpZihhPWNaLnF1ZXJ5U2VsZWN0b3IoY0gobykpKWkubG9hZGluZz01O2Vsc2V7ZT1mKHtyZWw6XCJzdHlsZXNoZWV0XCIsaHJlZjplLFwiZGF0YS1wcmVjZWRlbmNlXCI6dH0sbiksKG49Y0wuZ2V0KG8pKSYmY1goZSxuKTt2YXIgbD1hPWNaLmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO2VZKGwpLGN1KGwsXCJsaW5rXCIsZSksbC5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2wub25sb2FkPWUsbC5vbmVycm9yPXR9KSxsLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsZnVuY3Rpb24oKXtpLmxvYWRpbmd8PTF9KSxsLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLGZ1bmN0aW9uKCl7aS5sb2FkaW5nfD0yfSksaS5sb2FkaW5nfD00LGNLKGEsdCxjWil9YT17dHlwZTpcInN0eWxlc2hlZXRcIixpbnN0YW5jZTphLGNvdW50OjEsc3RhdGU6aX0sci5zZXQobyxhKX19fSxNOmZ1bmN0aW9uKGUsdCl7aWYoY00uTShlLHQpLGNaJiZlKXt2YXIgbj1lVyhjWikuaG9pc3RhYmxlU2NyaXB0cyxyPWMkKGUpLG89bi5nZXQocik7b3x8KChvPWNaLnF1ZXJ5U2VsZWN0b3IoY1cocikpKXx8KGU9Zih7c3JjOmUsYXN5bmM6ITAsdHlwZTpcIm1vZHVsZVwifSx0KSwodD1jTC5nZXQocikpJiZjRyhlLHQpLGVZKG89Y1ouY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSksY3UobyxcImxpbmtcIixlKSxjWi5oZWFkLmFwcGVuZENoaWxkKG8pKSxvPXt0eXBlOlwic2NyaXB0XCIsaW5zdGFuY2U6byxjb3VudDoxLHN0YXRlOm51bGx9LG4uc2V0KHIsbykpfX19O3ZhciBjWj1cInVuZGVmaW5lZFwiPT10eXBlb2YgZG9jdW1lbnQ/bnVsbDpkb2N1bWVudDtmdW5jdGlvbiBjVShlLHQsbil7aWYoY1omJlwic3RyaW5nXCI9PXR5cGVvZiB0JiZ0KXt2YXIgcj10dCh0KTtyPSdsaW5rW3JlbD1cIicrZSsnXCJdW2hyZWY9XCInK3IrJ1wiXScsXCJzdHJpbmdcIj09dHlwZW9mIG4mJihyKz0nW2Nyb3Nzb3JpZ2luPVwiJytuKydcIl0nKSxjTi5oYXMocil8fChjTi5hZGQociksZT17cmVsOmUsY3Jvc3NPcmlnaW46bixocmVmOnR9LG51bGw9PT1jWi5xdWVyeVNlbGVjdG9yKHIpJiYoY3UodD1jWi5jcmVhdGVFbGVtZW50KFwibGlua1wiKSxcImxpbmtcIixlKSxlWSh0KSxjWi5oZWFkLmFwcGVuZENoaWxkKHQpKSl9fWZ1bmN0aW9uIGNGKGUsdCxuLHIpe3ZhciBvPShvPUYuY3VycmVudCk/Y1Iobyk6bnVsbDtpZighbyl0aHJvdyBFcnJvcihsKDQ0NikpO3N3aXRjaChlKXtjYXNlXCJtZXRhXCI6Y2FzZVwidGl0bGVcIjpyZXR1cm4gbnVsbDtjYXNlXCJzdHlsZVwiOnJldHVyblwic3RyaW5nXCI9PXR5cGVvZiBuLnByZWNlZGVuY2UmJlwic3RyaW5nXCI9PXR5cGVvZiBuLmhyZWY/KHQ9Y3Eobi5ocmVmKSwocj0obj1lVyhvKS5ob2lzdGFibGVTdHlsZXMpLmdldCh0KSl8fChyPXt0eXBlOlwic3R5bGVcIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH0sbi5zZXQodCxyKSkscik6e3R5cGU6XCJ2b2lkXCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9O2Nhc2VcImxpbmtcIjppZihcInN0eWxlc2hlZXRcIj09PW4ucmVsJiZcInN0cmluZ1wiPT10eXBlb2Ygbi5ocmVmJiZcInN0cmluZ1wiPT10eXBlb2Ygbi5wcmVjZWRlbmNlKXtlPWNxKG4uaHJlZik7dmFyIGEsaSxzLGMsdT1lVyhvKS5ob2lzdGFibGVTdHlsZXMsZD11LmdldChlKTtpZihkfHwobz1vLm93bmVyRG9jdW1lbnR8fG8sZD17dHlwZTpcInN0eWxlc2hlZXRcIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6e2xvYWRpbmc6MCxwcmVsb2FkOm51bGx9fSx1LnNldChlLGQpLCh1PW8ucXVlcnlTZWxlY3RvcihjSChlKSkpJiYhdS5fcCYmKGQuaW5zdGFuY2U9dSxkLnN0YXRlLmxvYWRpbmc9NSksY0wuaGFzKGUpfHwobj17cmVsOlwicHJlbG9hZFwiLGFzOlwic3R5bGVcIixocmVmOm4uaHJlZixjcm9zc09yaWdpbjpuLmNyb3NzT3JpZ2luLGludGVncml0eTpuLmludGVncml0eSxtZWRpYTpuLm1lZGlhLGhyZWZMYW5nOm4uaHJlZkxhbmcscmVmZXJyZXJQb2xpY3k6bi5yZWZlcnJlclBvbGljeX0sY0wuc2V0KGUsbiksdXx8KGE9byxpPWUscz1uLGM9ZC5zdGF0ZSxhLnF1ZXJ5U2VsZWN0b3IoJ2xpbmtbcmVsPVwicHJlbG9hZFwiXVthcz1cInN0eWxlXCJdWycraStcIl1cIik/Yy5sb2FkaW5nPTE6KGMucHJlbG9hZD1pPWEuY3JlYXRlRWxlbWVudChcImxpbmtcIiksaS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGZ1bmN0aW9uKCl7cmV0dXJuIGMubG9hZGluZ3w9MX0pLGkuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsZnVuY3Rpb24oKXtyZXR1cm4gYy5sb2FkaW5nfD0yfSksY3UoaSxcImxpbmtcIixzKSxlWShpKSxhLmhlYWQuYXBwZW5kQ2hpbGQoaSkpKSkpLHQmJm51bGw9PT1yKXRocm93IEVycm9yKGwoNTI4LFwiXCIpKTtyZXR1cm4gZH1pZih0JiZudWxsIT09cil0aHJvdyBFcnJvcihsKDUyOSxcIlwiKSk7cmV0dXJuIG51bGw7Y2FzZVwic2NyaXB0XCI6cmV0dXJuIHQ9bi5hc3luYyxcInN0cmluZ1wiPT10eXBlb2Yobj1uLnNyYykmJnQmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHQmJlwic3ltYm9sXCIhPXR5cGVvZiB0Pyh0PWMkKG4pLChyPShuPWVXKG8pLmhvaXN0YWJsZVNjcmlwdHMpLmdldCh0KSl8fChyPXt0eXBlOlwic2NyaXB0XCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9LG4uc2V0KHQscikpLHIpOnt0eXBlOlwidm9pZFwiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfTtkZWZhdWx0OnRocm93IEVycm9yKGwoNDQ0LGUpKX19ZnVuY3Rpb24gY3EoZSl7cmV0dXJuJ2hyZWY9XCInK3R0KGUpKydcIid9ZnVuY3Rpb24gY0goZSl7cmV0dXJuJ2xpbmtbcmVsPVwic3R5bGVzaGVldFwiXVsnK2UrXCJdXCJ9ZnVuY3Rpb24gY1YoZSl7cmV0dXJuIGYoe30sZSx7XCJkYXRhLXByZWNlZGVuY2VcIjplLnByZWNlZGVuY2UscHJlY2VkZW5jZTpudWxsfSl9ZnVuY3Rpb24gYyQoZSl7cmV0dXJuJ1tzcmM9XCInK3R0KGUpKydcIl0nfWZ1bmN0aW9uIGNXKGUpe3JldHVyblwic2NyaXB0W2FzeW5jXVwiK2V9ZnVuY3Rpb24gY1koZSx0LG4pe2lmKHQuY291bnQrKyxudWxsPT09dC5pbnN0YW5jZSlzd2l0Y2godC50eXBlKXtjYXNlXCJzdHlsZVwiOnZhciByPWUucXVlcnlTZWxlY3Rvcignc3R5bGVbZGF0YS1ocmVmfj1cIicrdHQobi5ocmVmKSsnXCJdJyk7aWYocilyZXR1cm4gdC5pbnN0YW5jZT1yLGVZKHIpLHI7dmFyIG89Zih7fSxuLHtcImRhdGEtaHJlZlwiOm4uaHJlZixcImRhdGEtcHJlY2VkZW5jZVwiOm4ucHJlY2VkZW5jZSxocmVmOm51bGwscHJlY2VkZW5jZTpudWxsfSk7cmV0dXJuIGVZKHI9KGUub3duZXJEb2N1bWVudHx8ZSkuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpKSxjdShyLFwic3R5bGVcIixvKSxjSyhyLG4ucHJlY2VkZW5jZSxlKSx0Lmluc3RhbmNlPXI7Y2FzZVwic3R5bGVzaGVldFwiOm89Y3Eobi5ocmVmKTt2YXIgYT1lLnF1ZXJ5U2VsZWN0b3IoY0gobykpO2lmKGEpcmV0dXJuIHQuc3RhdGUubG9hZGluZ3w9NCx0Lmluc3RhbmNlPWEsZVkoYSksYTtyPWNWKG4pLChvPWNMLmdldChvKSkmJmNYKHIsbyksZVkoYT0oZS5vd25lckRvY3VtZW50fHxlKS5jcmVhdGVFbGVtZW50KFwibGlua1wiKSk7dmFyIGk9YTtyZXR1cm4gaS5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLHQpe2kub25sb2FkPWUsaS5vbmVycm9yPXR9KSxjdShhLFwibGlua1wiLHIpLHQuc3RhdGUubG9hZGluZ3w9NCxjSyhhLG4ucHJlY2VkZW5jZSxlKSx0Lmluc3RhbmNlPWE7Y2FzZVwic2NyaXB0XCI6aWYoYT1jJChuLnNyYyksbz1lLnF1ZXJ5U2VsZWN0b3IoY1coYSkpKXJldHVybiB0Lmluc3RhbmNlPW8sZVkobyksbztyZXR1cm4gcj1uLChvPWNMLmdldChhKSkmJmNHKHI9Zih7fSxuKSxvKSxlWShvPShlPWUub3duZXJEb2N1bWVudHx8ZSkuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSksY3UobyxcImxpbmtcIixyKSxlLmhlYWQuYXBwZW5kQ2hpbGQobyksdC5pbnN0YW5jZT1vO2Nhc2VcInZvaWRcIjpyZXR1cm4gbnVsbDtkZWZhdWx0OnRocm93IEVycm9yKGwoNDQzLHQudHlwZSkpfXJldHVyblwic3R5bGVzaGVldFwiPT09dC50eXBlJiYwPT0oNCZ0LnN0YXRlLmxvYWRpbmcpJiYocj10Lmluc3RhbmNlLHQuc3RhdGUubG9hZGluZ3w9NCxjSyhyLG4ucHJlY2VkZW5jZSxlKSksdC5pbnN0YW5jZX1mdW5jdGlvbiBjSyhlLHQsbil7Zm9yKHZhciByPW4ucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9XCJzdHlsZXNoZWV0XCJdW2RhdGEtcHJlY2VkZW5jZV0sc3R5bGVbZGF0YS1wcmVjZWRlbmNlXScpLG89ci5sZW5ndGg/cltyLmxlbmd0aC0xXTpudWxsLGE9byxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBsPXJbaV07aWYobC5kYXRhc2V0LnByZWNlZGVuY2U9PT10KWE9bDtlbHNlIGlmKGEhPT1vKWJyZWFrfWE/YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLGEubmV4dFNpYmxpbmcpOih0PTk9PT1uLm5vZGVUeXBlP24uaGVhZDpuKS5pbnNlcnRCZWZvcmUoZSx0LmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGNYKGUsdCl7bnVsbD09ZS5jcm9zc09yaWdpbiYmKGUuY3Jvc3NPcmlnaW49dC5jcm9zc09yaWdpbiksbnVsbD09ZS5yZWZlcnJlclBvbGljeSYmKGUucmVmZXJyZXJQb2xpY3k9dC5yZWZlcnJlclBvbGljeSksbnVsbD09ZS50aXRsZSYmKGUudGl0bGU9dC50aXRsZSl9ZnVuY3Rpb24gY0coZSx0KXtudWxsPT1lLmNyb3NzT3JpZ2luJiYoZS5jcm9zc09yaWdpbj10LmNyb3NzT3JpZ2luKSxudWxsPT1lLnJlZmVycmVyUG9saWN5JiYoZS5yZWZlcnJlclBvbGljeT10LnJlZmVycmVyUG9saWN5KSxudWxsPT1lLmludGVncml0eSYmKGUuaW50ZWdyaXR5PXQuaW50ZWdyaXR5KX12YXIgY1E9bnVsbDtmdW5jdGlvbiBjSihlLHQsbil7aWYobnVsbD09PWNRKXt2YXIgcj1uZXcgTWFwLG89Y1E9bmV3IE1hcDtvLnNldChuLHIpfWVsc2Uocj0obz1jUSkuZ2V0KG4pKXx8KHI9bmV3IE1hcCxvLnNldChuLHIpKTtpZihyLmhhcyhlKSlyZXR1cm4gcjtmb3Ioci5zZXQoZSxudWxsKSxuPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoZSksbz0wO288bi5sZW5ndGg7bysrKXt2YXIgYT1uW29dO2lmKCEoYVtlRl18fGFbZURdfHxcImxpbmtcIj09PWUmJlwic3R5bGVzaGVldFwiPT09YS5nZXRBdHRyaWJ1dGUoXCJyZWxcIikpJiZcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIhPT1hLm5hbWVzcGFjZVVSSSl7dmFyIGk9YS5nZXRBdHRyaWJ1dGUodCl8fFwiXCI7aT1lK2k7dmFyIGw9ci5nZXQoaSk7bD9sLnB1c2goYSk6ci5zZXQoaSxbYV0pfX1yZXR1cm4gcn1mdW5jdGlvbiBjMChlLHQsbil7KGU9ZS5vd25lckRvY3VtZW50fHxlKS5oZWFkLmluc2VydEJlZm9yZShuLFwidGl0bGVcIj09PXQ/ZS5xdWVyeVNlbGVjdG9yKFwiaGVhZCA+IHRpdGxlXCIpOm51bGwpfWZ1bmN0aW9uIGMxKGUpe3JldHVyblwic3R5bGVzaGVldFwiIT09ZS50eXBlfHwwIT0oMyZlLnN0YXRlLmxvYWRpbmcpfXZhciBjMj1udWxsO2Z1bmN0aW9uIGM0KCl7aWYodGhpcy5jb3VudC0tLDA9PT10aGlzLmNvdW50KXtpZih0aGlzLnN0eWxlc2hlZXRzKWMzKHRoaXMsdGhpcy5zdHlsZXNoZWV0cyk7ZWxzZSBpZih0aGlzLnVuc3VzcGVuZCl7dmFyIGU9dGhpcy51bnN1c3BlbmQ7dGhpcy51bnN1c3BlbmQ9bnVsbCxlKCl9fX12YXIgYzU9bnVsbDtmdW5jdGlvbiBjMyhlLHQpe2Uuc3R5bGVzaGVldHM9bnVsbCxudWxsIT09ZS51bnN1c3BlbmQmJihlLmNvdW50KyssYzU9bmV3IE1hcCx0LmZvckVhY2goYzYsZSksYzU9bnVsbCxjNC5jYWxsKGUpKX1mdW5jdGlvbiBjNihlLHQpe2lmKCEoNCZ0LnN0YXRlLmxvYWRpbmcpKXt2YXIgbj1jNS5nZXQoZSk7aWYobil2YXIgcj1uLmdldChudWxsKTtlbHNle249bmV3IE1hcCxjNS5zZXQoZSxuKTtmb3IodmFyIG89ZS5xdWVyeVNlbGVjdG9yQWxsKFwibGlua1tkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV1cIiksYT0wO2E8by5sZW5ndGg7YSsrKXt2YXIgaT1vW2FdOyhcIkxJTktcIj09PWkubm9kZU5hbWV8fFwibm90IGFsbFwiIT09aS5nZXRBdHRyaWJ1dGUoXCJtZWRpYVwiKSkmJihuLnNldChpLmRhdGFzZXQucHJlY2VkZW5jZSxpKSxyPWkpfXImJm4uc2V0KG51bGwscil9aT0obz10Lmluc3RhbmNlKS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXByZWNlZGVuY2VcIiksKGE9bi5nZXQoaSl8fHIpPT09ciYmbi5zZXQobnVsbCxvKSxuLnNldChpLG8pLHRoaXMuY291bnQrKyxyPWM0LmJpbmQodGhpcyksby5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLHIpLG8uYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsciksYT9hLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG8sYS5uZXh0U2libGluZyk6KGU9OT09PWUubm9kZVR5cGU/ZS5oZWFkOmUpLmluc2VydEJlZm9yZShvLGUuZmlyc3RDaGlsZCksdC5zdGF0ZS5sb2FkaW5nfD00fX12YXIgYzk9eyQkdHlwZW9mOkEsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsLF9jdXJyZW50VmFsdWU6VCxfY3VycmVudFZhbHVlMjpULF90aHJlYWRDb3VudDowfTtmdW5jdGlvbiBjOChlLHQsbixyLG8sYSxpLGwscyl7dGhpcy50YWc9MSx0aGlzLmNvbnRhaW5lckluZm89ZSx0aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbCx0aGlzLnRpbWVvdXRIYW5kbGU9LTEsdGhpcy5jYWxsYmFja05vZGU9dGhpcy5uZXh0PXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PXRoaXMuY2FuY2VsUGVuZGluZ0NvbW1pdD1udWxsLHRoaXMuY2FsbGJhY2tQcmlvcml0eT0wLHRoaXMuZXhwaXJhdGlvblRpbWVzPWVrKC0xKSx0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuc2hlbGxTdXNwZW5kQ291bnRlcj10aGlzLmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzPXRoaXMuZXhwaXJlZExhbmVzPXRoaXMud2FybUxhbmVzPXRoaXMucGluZ2VkTGFuZXM9dGhpcy5zdXNwZW5kZWRMYW5lcz10aGlzLnBlbmRpbmdMYW5lcz0wLHRoaXMuZW50YW5nbGVtZW50cz1laygwKSx0aGlzLmhpZGRlblVwZGF0ZXM9ZWsobnVsbCksdGhpcy5pZGVudGlmaWVyUHJlZml4PXIsdGhpcy5vblVuY2F1Z2h0RXJyb3I9byx0aGlzLm9uQ2F1Z2h0RXJyb3I9YSx0aGlzLm9uUmVjb3ZlcmFibGVFcnJvcj1pLHRoaXMucG9vbGVkQ2FjaGU9bnVsbCx0aGlzLnBvb2xlZENhY2hlTGFuZXM9MCx0aGlzLmZvcm1TdGF0ZT1zLHRoaXMuaW5jb21wbGV0ZVRyYW5zaXRpb25zPW5ldyBNYXB9ZnVuY3Rpb24gYzcoZSx0LG4scixvLGEpe289bz9uODpuOCxudWxsPT09ci5jb250ZXh0P3IuY29udGV4dD1vOnIucGVuZGluZ0NvbnRleHQ9bywocj1vXyh0KSkucGF5bG9hZD17ZWxlbWVudDpufSxudWxsIT09KGE9dm9pZCAwPT09YT9udWxsOmEpJiYoci5jYWxsYmFjaz1hKSxudWxsIT09KG49b2soZSxyLHQpKSYmKHNhKG4sZSx0KSxvRShuLGUsdCkpfWZ1bmN0aW9uIHVlKGUsdCl7aWYobnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT1lLmRlaHlkcmF0ZWQpe3ZhciBuPWUucmV0cnlMYW5lO2UucmV0cnlMYW5lPTAhPT1uJiZuPHQ/bjp0fX1mdW5jdGlvbiB1dChlLHQpe3VlKGUsdCksKGU9ZS5hbHRlcm5hdGUpJiZ1ZShlLHQpfWZ1bmN0aW9uIHVuKGUpe2lmKDEzPT09ZS50YWd8fDMxPT09ZS50YWcpe3ZhciB0PW4zKGUsMHg0MDAwMDAwKTtudWxsIT09dCYmc2EodCxlLDB4NDAwMDAwMCksdXQoZSwweDQwMDAwMDApfX1mdW5jdGlvbiB1cihlKXtpZigxMz09PWUudGFnfHwzMT09PWUudGFnKXt2YXIgdD1zcigpLG49bjMoZSx0PWVCKHQpKTtudWxsIT09biYmc2EobixlLHQpLHV0KGUsdCl9fXZhciB1bz0hMDtmdW5jdGlvbiB1YShlLHQsbixyKXt2YXIgbz1JLlQ7SS5UPW51bGw7dmFyIGE9ei5wO3RyeXt6LnA9Mix1bChlLHQsbixyKX1maW5hbGx5e3oucD1hLEkuVD1vfX1mdW5jdGlvbiB1aShlLHQsbixyKXt2YXIgbz1JLlQ7SS5UPW51bGw7dmFyIGE9ei5wO3RyeXt6LnA9OCx1bChlLHQsbixyKX1maW5hbGx5e3oucD1hLEkuVD1vfX1mdW5jdGlvbiB1bChlLHQsbixyKXtpZih1byl7dmFyIG89dXMocik7aWYobnVsbD09PW8pczcoZSx0LHIsdWMsbiksdUEoZSxyKTtlbHNlIGlmKGZ1bmN0aW9uKGUsdCxuLHIsbyl7c3dpdGNoKHQpe2Nhc2VcImZvY3VzaW5cIjpyZXR1cm4gdXA9dXgodXAsZSx0LG4scixvKSwhMDtjYXNlXCJkcmFnZW50ZXJcIjpyZXR1cm4gdWg9dXgodWgsZSx0LG4scixvKSwhMDtjYXNlXCJtb3VzZW92ZXJcIjpyZXR1cm4gdW09dXgodW0sZSx0LG4scixvKSwhMDtjYXNlXCJwb2ludGVyb3ZlclwiOnZhciBhPW8ucG9pbnRlcklkO3JldHVybiB1Zy5zZXQoYSx1eCh1Zy5nZXQoYSl8fG51bGwsZSx0LG4scixvKSksITA7Y2FzZVwiZ290cG9pbnRlcmNhcHR1cmVcIjpyZXR1cm4gYT1vLnBvaW50ZXJJZCx1eS5zZXQoYSx1eCh1eS5nZXQoYSl8fG51bGwsZSx0LG4scixvKSksITB9cmV0dXJuITF9KG8sZSx0LG4scikpci5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKHVBKGUsciksNCZ0JiYtMTx1Yi5pbmRleE9mKGUpKXtmb3IoO251bGwhPT1vOyl7dmFyIGE9ZVYobyk7aWYobnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6aWYoKGE9YS5zdGF0ZU5vZGUpLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBpPWVBKGEucGVuZGluZ0xhbmVzKTtpZigwIT09aSl7dmFyIGw9YTtmb3IobC5wZW5kaW5nTGFuZXN8PTIsbC5lbnRhbmdsZWRMYW5lc3w9MjtpOyl7dmFyIHM9MTw8MzEtZW0oaSk7bC5lbnRhbmdsZW1lbnRzWzFdfD1zLGkmPX5zfXNxKGEpLDA9PSg2JmxEKSYmKGwxPWVyKCkrNTAwLHNIKDAsITEpKX19YnJlYWs7Y2FzZSAzMTpjYXNlIDEzOm51bGwhPT0obD1uMyhhLDIpKSYmc2EobCxhLDIpLHNjKCksdXQoYSwyKX1pZihudWxsPT09KGE9dXMocikpJiZzNyhlLHQscix1YyxuKSxhPT09bylicmVhaztvPWF9bnVsbCE9PW8mJnIuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBzNyhlLHQscixudWxsLG4pfX1mdW5jdGlvbiB1cyhlKXtyZXR1cm4gdXUoZT10dihlKSl9dmFyIHVjPW51bGw7ZnVuY3Rpb24gdXUoZSl7aWYodWM9bnVsbCxudWxsIT09KGU9ZUgoZSkpKXt2YXIgdD1zKGUpO2lmKG51bGw9PT10KWU9bnVsbDtlbHNle3ZhciBuPXQudGFnO2lmKDEzPT09bil7aWYobnVsbCE9PShlPWModCkpKXJldHVybiBlO2U9bnVsbH1lbHNlIGlmKDMxPT09bil7aWYobnVsbCE9PShlPXUodCkpKXJldHVybiBlO2U9bnVsbH1lbHNlIGlmKDM9PT1uKXtpZih0LnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiAzPT09dC50YWc/dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2U9bnVsbH1lbHNlIHQhPT1lJiYoZT1udWxsKX19cmV0dXJuIHVjPWUsbnVsbH1mdW5jdGlvbiB1ZChlKXtzd2l0Y2goZSl7Y2FzZVwiYmVmb3JldG9nZ2xlXCI6Y2FzZVwiY2FuY2VsXCI6Y2FzZVwiY2xpY2tcIjpjYXNlXCJjbG9zZVwiOmNhc2VcImNvbnRleHRtZW51XCI6Y2FzZVwiY29weVwiOmNhc2VcImN1dFwiOmNhc2VcImF1eGNsaWNrXCI6Y2FzZVwiZGJsY2xpY2tcIjpjYXNlXCJkcmFnZW5kXCI6Y2FzZVwiZHJhZ3N0YXJ0XCI6Y2FzZVwiZHJvcFwiOmNhc2VcImZvY3VzaW5cIjpjYXNlXCJmb2N1c291dFwiOmNhc2VcImlucHV0XCI6Y2FzZVwiaW52YWxpZFwiOmNhc2VcImtleWRvd25cIjpjYXNlXCJrZXlwcmVzc1wiOmNhc2VcImtleXVwXCI6Y2FzZVwibW91c2Vkb3duXCI6Y2FzZVwibW91c2V1cFwiOmNhc2VcInBhc3RlXCI6Y2FzZVwicGF1c2VcIjpjYXNlXCJwbGF5XCI6Y2FzZVwicG9pbnRlcmNhbmNlbFwiOmNhc2VcInBvaW50ZXJkb3duXCI6Y2FzZVwicG9pbnRlcnVwXCI6Y2FzZVwicmF0ZWNoYW5nZVwiOmNhc2VcInJlc2V0XCI6Y2FzZVwicmVzaXplXCI6Y2FzZVwic2Vla2VkXCI6Y2FzZVwic3VibWl0XCI6Y2FzZVwidG9nZ2xlXCI6Y2FzZVwidG91Y2hjYW5jZWxcIjpjYXNlXCJ0b3VjaGVuZFwiOmNhc2VcInRvdWNoc3RhcnRcIjpjYXNlXCJ2b2x1bWVjaGFuZ2VcIjpjYXNlXCJjaGFuZ2VcIjpjYXNlXCJzZWxlY3Rpb25jaGFuZ2VcIjpjYXNlXCJ0ZXh0SW5wdXRcIjpjYXNlXCJjb21wb3NpdGlvbnN0YXJ0XCI6Y2FzZVwiY29tcG9zaXRpb25lbmRcIjpjYXNlXCJjb21wb3NpdGlvbnVwZGF0ZVwiOmNhc2VcImJlZm9yZWJsdXJcIjpjYXNlXCJhZnRlcmJsdXJcIjpjYXNlXCJiZWZvcmVpbnB1dFwiOmNhc2VcImJsdXJcIjpjYXNlXCJmdWxsc2NyZWVuY2hhbmdlXCI6Y2FzZVwiZm9jdXNcIjpjYXNlXCJoYXNoY2hhbmdlXCI6Y2FzZVwicG9wc3RhdGVcIjpjYXNlXCJzZWxlY3RcIjpjYXNlXCJzZWxlY3RzdGFydFwiOnJldHVybiAyO2Nhc2VcImRyYWdcIjpjYXNlXCJkcmFnZW50ZXJcIjpjYXNlXCJkcmFnZXhpdFwiOmNhc2VcImRyYWdsZWF2ZVwiOmNhc2VcImRyYWdvdmVyXCI6Y2FzZVwibW91c2Vtb3ZlXCI6Y2FzZVwibW91c2VvdXRcIjpjYXNlXCJtb3VzZW92ZXJcIjpjYXNlXCJwb2ludGVybW92ZVwiOmNhc2VcInBvaW50ZXJvdXRcIjpjYXNlXCJwb2ludGVyb3ZlclwiOmNhc2VcInNjcm9sbFwiOmNhc2VcInRvdWNobW92ZVwiOmNhc2VcIndoZWVsXCI6Y2FzZVwibW91c2VlbnRlclwiOmNhc2VcIm1vdXNlbGVhdmVcIjpjYXNlXCJwb2ludGVyZW50ZXJcIjpjYXNlXCJwb2ludGVybGVhdmVcIjpyZXR1cm4gODtjYXNlXCJtZXNzYWdlXCI6c3dpdGNoKGVvKCkpe2Nhc2UgZWE6cmV0dXJuIDI7Y2FzZSBlaTpyZXR1cm4gODtjYXNlIGVsOmNhc2UgZXM6cmV0dXJuIDMyO2Nhc2UgZWM6cmV0dXJuIDB4MTAwMDAwMDA7ZGVmYXVsdDpyZXR1cm4gMzJ9ZGVmYXVsdDpyZXR1cm4gMzJ9fXZhciB1Zj0hMSx1cD1udWxsLHVoPW51bGwsdW09bnVsbCx1Zz1uZXcgTWFwLHV5PW5ldyBNYXAsdXY9W10sdWI9XCJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXRcIi5zcGxpdChcIiBcIik7ZnVuY3Rpb24gdUEoZSx0KXtzd2l0Y2goZSl7Y2FzZVwiZm9jdXNpblwiOmNhc2VcImZvY3Vzb3V0XCI6dXA9bnVsbDticmVhaztjYXNlXCJkcmFnZW50ZXJcIjpjYXNlXCJkcmFnbGVhdmVcIjp1aD1udWxsO2JyZWFrO2Nhc2VcIm1vdXNlb3ZlclwiOmNhc2VcIm1vdXNlb3V0XCI6dW09bnVsbDticmVhaztjYXNlXCJwb2ludGVyb3ZlclwiOmNhc2VcInBvaW50ZXJvdXRcIjp1Zy5kZWxldGUodC5wb2ludGVySWQpO2JyZWFrO2Nhc2VcImdvdHBvaW50ZXJjYXB0dXJlXCI6Y2FzZVwibG9zdHBvaW50ZXJjYXB0dXJlXCI6dXkuZGVsZXRlKHQucG9pbnRlcklkKX19ZnVuY3Rpb24gdXgoZSx0LG4scixvLGEpe3JldHVybiBudWxsPT09ZXx8ZS5uYXRpdmVFdmVudCE9PWE/KGU9e2Jsb2NrZWRPbjp0LGRvbUV2ZW50TmFtZTpuLGV2ZW50U3lzdGVtRmxhZ3M6cixuYXRpdmVFdmVudDphLHRhcmdldENvbnRhaW5lcnM6W29dfSxudWxsIT09dCYmbnVsbCE9PSh0PWVWKHQpKSYmdW4odCkpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PXIsdD1lLnRhcmdldENvbnRhaW5lcnMsbnVsbCE9PW8mJi0xPT09dC5pbmRleE9mKG8pJiZ0LnB1c2gobykpLGV9ZnVuY3Rpb24gdXcoZSl7dmFyIHQ9ZUgoZS50YXJnZXQpO2lmKG51bGwhPT10KXt2YXIgbj1zKHQpO2lmKG51bGwhPT1uKXtpZigxMz09PSh0PW4udGFnKSl7aWYobnVsbCE9PSh0PWMobikpKXtlLmJsb2NrZWRPbj10LGV6KGUucHJpb3JpdHksZnVuY3Rpb24oKXt1cihuKX0pO3JldHVybn19ZWxzZSBpZigzMT09PXQpe2lmKG51bGwhPT0odD11KG4pKSl7ZS5ibG9ja2VkT249dCxleihlLnByaW9yaXR5LGZ1bmN0aW9uKCl7dXIobil9KTtyZXR1cm59fWVsc2UgaWYoMz09PXQmJm4uc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2UuYmxvY2tlZE9uPTM9PT1uLnRhZz9uLnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX19ZS5ibG9ja2VkT249bnVsbH1mdW5jdGlvbiB1QyhlKXtpZihudWxsIT09ZS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciB0PWUudGFyZ2V0Q29udGFpbmVyczswPHQubGVuZ3RoOyl7dmFyIG49dXMoZS5uYXRpdmVFdmVudCk7aWYobnVsbCE9PW4pcmV0dXJuIG51bGwhPT0odD1lVihuKSkmJnVuKHQpLGUuYmxvY2tlZE9uPW4sITE7dmFyIHI9bmV3KG49ZS5uYXRpdmVFdmVudCkuY29uc3RydWN0b3Iobi50eXBlLG4pO3R5PXIsbi50YXJnZXQuZGlzcGF0Y2hFdmVudChyKSx0eT1udWxsLHQuc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiB1XyhlLHQsbil7dUMoZSkmJm4uZGVsZXRlKHQpfWZ1bmN0aW9uIHVrKCl7dWY9ITEsbnVsbCE9PXVwJiZ1Qyh1cCkmJih1cD1udWxsKSxudWxsIT09dWgmJnVDKHVoKSYmKHVoPW51bGwpLG51bGwhPT11bSYmdUModW0pJiYodW09bnVsbCksdWcuZm9yRWFjaCh1XyksdXkuZm9yRWFjaCh1Xyl9ZnVuY3Rpb24gdUUoZSx0KXtlLmJsb2NrZWRPbj09PXQmJihlLmJsb2NrZWRPbj1udWxsLHVmfHwodWY9ITAsby51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKG8udW5zdGFibGVfTm9ybWFsUHJpb3JpdHksdWspKSl9dmFyIHVqPW51bGw7ZnVuY3Rpb24gdVMoZSl7dWohPT1lJiYodWo9ZSxvLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soby51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxmdW5jdGlvbigpe3VqPT09ZSYmKHVqPW51bGwpO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCs9Myl7dmFyIG49ZVt0XSxyPWVbdCsxXSxvPWVbdCsyXTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiByKWlmKG51bGw9PT11dShyfHxuKSljb250aW51ZTtlbHNlIGJyZWFrO3ZhciBhPWVWKG4pO251bGwhPT1hJiYoZS5zcGxpY2UodCwzKSx0LT0zLGFYKGEse3BlbmRpbmc6ITAsZGF0YTpvLG1ldGhvZDpuLm1ldGhvZCxhY3Rpb246cn0scixvKSl9fSkpfWZ1bmN0aW9uIHVPKGUpe2Z1bmN0aW9uIHQodCl7cmV0dXJuIHVFKHQsZSl9bnVsbCE9PXVwJiZ1RSh1cCxlKSxudWxsIT09dWgmJnVFKHVoLGUpLG51bGwhPT11bSYmdUUodW0sZSksdWcuZm9yRWFjaCh0KSx1eS5mb3JFYWNoKHQpO2Zvcih2YXIgbj0wO248dXYubGVuZ3RoO24rKyl7dmFyIHI9dXZbbl07ci5ibG9ja2VkT249PT1lJiYoci5ibG9ja2VkT249bnVsbCl9Zm9yKDswPHV2Lmxlbmd0aCYmbnVsbD09PShuPXV2WzBdKS5ibG9ja2VkT247KXV3KG4pLG51bGw9PT1uLmJsb2NrZWRPbiYmdXYuc2hpZnQoKTtpZihudWxsIT0obj0oZS5vd25lckRvY3VtZW50fHxlKS4kJHJlYWN0Rm9ybVJlcGxheSkpZm9yKHI9MDtyPG4ubGVuZ3RoO3IrPTMpe3ZhciBvPW5bcl0sYT1uW3IrMV0saT1vW2VMXXx8bnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhKWl8fHVTKG4pO2Vsc2UgaWYoaSl7dmFyIGw9bnVsbDtpZihhJiZhLmhhc0F0dHJpYnV0ZShcImZvcm1BY3Rpb25cIikpe2lmKG89YSxpPWFbZUxdfHxudWxsKWw9aS5mb3JtQWN0aW9uO2Vsc2UgaWYobnVsbCE9PXV1KG8pKWNvbnRpbnVlfWVsc2UgbD1pLmFjdGlvbjtcImZ1bmN0aW9uXCI9PXR5cGVvZiBsP25bcisxXT1sOihuLnNwbGljZShyLDMpLHItPTMpLHVTKG4pfX19ZnVuY3Rpb24gdUIoKXtmdW5jdGlvbiBlKGUpe2UuY2FuSW50ZXJjZXB0JiZcInJlYWN0LXRyYW5zaXRpb25cIj09PWUuaW5mbyYmZS5pbnRlcmNlcHQoe2hhbmRsZXI6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZSl7cmV0dXJuIG89ZX0pfSxmb2N1c1Jlc2V0OlwibWFudWFsXCIsc2Nyb2xsOlwibWFudWFsXCJ9KX1mdW5jdGlvbiB0KCl7bnVsbCE9PW8mJihvKCksbz1udWxsKSxyfHxzZXRUaW1lb3V0KG4sMjApfWZ1bmN0aW9uIG4oKXtpZighciYmIW5hdmlnYXRpb24udHJhbnNpdGlvbil7dmFyIGU9bmF2aWdhdGlvbi5jdXJyZW50RW50cnk7ZSYmbnVsbCE9ZS51cmwmJm5hdmlnYXRpb24ubmF2aWdhdGUoZS51cmwse3N0YXRlOmUuZ2V0U3RhdGUoKSxpbmZvOlwicmVhY3QtdHJhbnNpdGlvblwiLGhpc3Rvcnk6XCJyZXBsYWNlXCJ9KX19aWYoXCJvYmplY3RcIj09dHlwZW9mIG5hdmlnYXRpb24pe3ZhciByPSExLG89bnVsbDtyZXR1cm4gbmF2aWdhdGlvbi5hZGRFdmVudExpc3RlbmVyKFwibmF2aWdhdGVcIixlKSxuYXZpZ2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJuYXZpZ2F0ZXN1Y2Nlc3NcIix0KSxuYXZpZ2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoXCJuYXZpZ2F0ZWVycm9yXCIsdCksc2V0VGltZW91dChuLDEwMCksZnVuY3Rpb24oKXtyPSEwLG5hdmlnYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm5hdmlnYXRlXCIsZSksbmF2aWdhdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwibmF2aWdhdGVzdWNjZXNzXCIsdCksbmF2aWdhdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKFwibmF2aWdhdGVlcnJvclwiLHQpLG51bGwhPT1vJiYobygpLG89bnVsbCl9fX1mdW5jdGlvbiB1UChlKXt0aGlzLl9pbnRlcm5hbFJvb3Q9ZX1mdW5jdGlvbiB1SShlKXt0aGlzLl9pbnRlcm5hbFJvb3Q9ZX11SS5wcm90b3R5cGUucmVuZGVyPXVQLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGw9PT10KXRocm93IEVycm9yKGwoNDA5KSk7YzcodC5jdXJyZW50LHNyKCksZSx0LG51bGwsbnVsbCl9LHVJLnByb3RvdHlwZS51bm1vdW50PXVQLnByb3RvdHlwZS51bm1vdW50PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW50ZXJuYWxSb290O2lmKG51bGwhPT1lKXt0aGlzLl9pbnRlcm5hbFJvb3Q9bnVsbDt2YXIgdD1lLmNvbnRhaW5lckluZm87YzcoZS5jdXJyZW50LDIsbnVsbCxlLG51bGwsbnVsbCksc2MoKSx0W2VOXT1udWxsfX0sdUkucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PWVJKCk7ZT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmUscHJpb3JpdHk6dH07Zm9yKHZhciBuPTA7bjx1di5sZW5ndGgmJjAhPT10JiZ0PHV2W25dLnByaW9yaXR5O24rKyk7dXYuc3BsaWNlKG4sMCxlKSwwPT09biYmdXcoZSl9fTt2YXIgdXo9YS52ZXJzaW9uO2lmKFwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOFwiIT09dXopdGhyb3cgRXJyb3IobCg1MjcsdXosXCIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4XCIpKTtpZih6LmZpbmRET01Ob2RlPWZ1bmN0aW9uKGUpe3ZhciB0PWUuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PXQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUucmVuZGVyKXRocm93IEVycm9yKGwoMTg4KSk7dGhyb3cgRXJyb3IobCgyNjgsZT1PYmplY3Qua2V5cyhlKS5qb2luKFwiLFwiKSkpfXJldHVybiBlPW51bGw9PT0oZT1udWxsIT09KGU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7aWYoIXQpe2lmKG51bGw9PT0odD1zKGUpKSl0aHJvdyBFcnJvcihsKDE4OCkpO3JldHVybiB0IT09ZT9udWxsOmV9Zm9yKHZhciBuPWUscj10Ozspe3ZhciBvPW4ucmV0dXJuO2lmKG51bGw9PT1vKWJyZWFrO3ZhciBhPW8uYWx0ZXJuYXRlO2lmKG51bGw9PT1hKXtpZihudWxsIT09KHI9by5yZXR1cm4pKXtuPXI7Y29udGludWV9YnJlYWt9aWYoby5jaGlsZD09PWEuY2hpbGQpe2ZvcihhPW8uY2hpbGQ7YTspe2lmKGE9PT1uKXJldHVybiBkKG8pLGU7aWYoYT09PXIpcmV0dXJuIGQobyksdDthPWEuc2libGluZ310aHJvdyBFcnJvcihsKDE4OCkpfWlmKG4ucmV0dXJuIT09ci5yZXR1cm4pbj1vLHI9YTtlbHNle2Zvcih2YXIgaT0hMSxjPW8uY2hpbGQ7Yzspe2lmKGM9PT1uKXtpPSEwLG49byxyPWE7YnJlYWt9aWYoYz09PXIpe2k9ITAscj1vLG49YTticmVha31jPWMuc2libGluZ31pZighaSl7Zm9yKGM9YS5jaGlsZDtjOyl7aWYoYz09PW4pe2k9ITAsbj1hLHI9bzticmVha31pZihjPT09cil7aT0hMCxyPWEsbj1vO2JyZWFrfWM9Yy5zaWJsaW5nfWlmKCFpKXRocm93IEVycm9yKGwoMTg5KSl9fWlmKG4uYWx0ZXJuYXRlIT09cil0aHJvdyBFcnJvcihsKDE5MCkpfWlmKDMhPT1uLnRhZyl0aHJvdyBFcnJvcihsKDE4OCkpO3JldHVybiBuLnN0YXRlTm9kZS5jdXJyZW50PT09bj9lOnR9KHQpKT9mdW5jdGlvbiBlKHQpe3ZhciBuPXQudGFnO2lmKDU9PT1ufHwyNj09PW58fDI3PT09bnx8Nj09PW4pcmV0dXJuIHQ7Zm9yKHQ9dC5jaGlsZDtudWxsIT09dDspe2lmKG51bGwhPT0obj1lKHQpKSlyZXR1cm4gbjt0PXQuc2libGluZ31yZXR1cm4gbnVsbH0oZSk6bnVsbCk/bnVsbDplLnN0YXRlTm9kZX0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyl7dmFyIHVUPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighdVQuaXNEaXNhYmxlZCYmdVQuc3VwcG9ydHNGaWJlcil0cnl7ZWY9dVQuaW5qZWN0KHtidW5kbGVUeXBlOjAsdmVyc2lvbjpcIjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MThcIixyZW5kZXJlclBhY2thZ2VOYW1lOlwicmVhY3QtZG9tXCIsY3VycmVudERpc3BhdGNoZXJSZWY6SSxyZWNvbmNpbGVyVmVyc2lvbjpcIjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MThcIn0pLGVwPXVUfWNhdGNoKGUpe319dC5jcmVhdGVSb290PWZ1bmN0aW9uKGUsdCl7aWYoIShuPWUpfHwxIT09bi5ub2RlVHlwZSYmOSE9PW4ubm9kZVR5cGUmJjExIT09bi5ub2RlVHlwZSl0aHJvdyBFcnJvcihsKDI5OSkpO3ZhciBuLHIsbyxhLGkscyxjLHUsZD0hMSxmPVwiXCIscD1pdSxoPWlkLG09aXA7cmV0dXJuIG51bGwhPXQmJighMD09PXQudW5zdGFibGVfc3RyaWN0TW9kZSYmKGQ9ITApLHZvaWQgMCE9PXQuaWRlbnRpZmllclByZWZpeCYmKGY9dC5pZGVudGlmaWVyUHJlZml4KSx2b2lkIDAhPT10Lm9uVW5jYXVnaHRFcnJvciYmKHA9dC5vblVuY2F1Z2h0RXJyb3IpLHZvaWQgMCE9PXQub25DYXVnaHRFcnJvciYmKGg9dC5vbkNhdWdodEVycm9yKSx2b2lkIDAhPT10Lm9uUmVjb3ZlcmFibGVFcnJvciYmKG09dC5vblJlY292ZXJhYmxlRXJyb3IpKSxyPWUsbz0xLGE9ITEsaT1udWxsLHM9MCxjPWQsdT1udWxsLHI9bmV3IGM4KHIsbyxhLGYscCxoLG0sdUIsbnVsbCksbz0xLCEwPT09YyYmKG98PTI0KSxjPXJlKDMsbnVsbCxudWxsLG8pLHIuY3VycmVudD1jLGMuc3RhdGVOb2RlPXIsbz1yMSgpLG8ucmVmQ291bnQrKyxyLnBvb2xlZENhY2hlPW8sby5yZWZDb3VudCsrLGMubWVtb2l6ZWRTdGF0ZT17ZWxlbWVudDpudWxsLGlzRGVoeWRyYXRlZDphLGNhY2hlOm99LG93KGMpLHQ9cixlW2VOXT10LmN1cnJlbnQsczkoZSksbmV3IHVQKHQpfX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzXCIpO2Z1bmN0aW9uIG8oZSl7dmFyIHQ9XCJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvXCIrZTtpZigxPGFyZ3VtZW50cy5sZW5ndGgpe3QrPVwiP2FyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtmb3IodmFyIG49MjtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXQrPVwiJmFyZ3NbXT1cIitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKX1yZXR1cm5cIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIitlK1wiOyB2aXNpdCBcIit0K1wiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIn1mdW5jdGlvbiBhKCl7fXZhciBpPXtkOntmOmEscjpmdW5jdGlvbigpe3Rocm93IEVycm9yKG8oNTIyKSl9LEQ6YSxDOmEsTDphLG06YSxYOmEsUzphLE06YX0scDowLGZpbmRET01Ob2RlOm51bGx9LGw9U3ltYm9sLmZvcihcInJlYWN0LnBvcnRhbFwiKSxzPXIuX19DTElFTlRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFO2Z1bmN0aW9uIGMoZSx0KXtyZXR1cm5cImZvbnRcIj09PWU/XCJcIjpcInN0cmluZ1wiPT10eXBlb2YgdD9cInVzZS1jcmVkZW50aWFsc1wiPT09dD90OlwiXCI6dm9pZCAwfXQuX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFPWksdC5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighdHx8MSE9PXQubm9kZVR5cGUmJjkhPT10Lm5vZGVUeXBlJiYxMSE9PXQubm9kZVR5cGUpdGhyb3cgRXJyb3IobygyOTkpKTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3ZhciByPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjpsLGtleTpudWxsPT1yP251bGw6XCJcIityLGNoaWxkcmVuOmUsY29udGFpbmVySW5mbzp0LGltcGxlbWVudGF0aW9uOm59fShlLHQsbnVsbCxuKX0sdC5mbHVzaFN5bmM9ZnVuY3Rpb24oZSl7dmFyIHQ9cy5ULG49aS5wO3RyeXtpZihzLlQ9bnVsbCxpLnA9MixlKXJldHVybiBlKCl9ZmluYWxseXtzLlQ9dCxpLnA9bixpLmQuZigpfX0sdC5wcmVjb25uZWN0PWZ1bmN0aW9uKGUsdCl7XCJzdHJpbmdcIj09dHlwZW9mIGUmJih0PXQ/XCJzdHJpbmdcIj09dHlwZW9mKHQ9dC5jcm9zc09yaWdpbik/XCJ1c2UtY3JlZGVudGlhbHNcIj09PXQ/dDpcIlwiOnZvaWQgMDpudWxsLGkuZC5DKGUsdCkpfSx0LnByZWZldGNoRE5TPWZ1bmN0aW9uKGUpe1wic3RyaW5nXCI9PXR5cGVvZiBlJiZpLmQuRChlKX0sdC5wcmVpbml0PWZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJnQmJlwic3RyaW5nXCI9PXR5cGVvZiB0LmFzKXt2YXIgbj10LmFzLHI9YyhuLHQuY3Jvc3NPcmlnaW4pLG89XCJzdHJpbmdcIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMCxhPVwic3RyaW5nXCI9PXR5cGVvZiB0LmZldGNoUHJpb3JpdHk/dC5mZXRjaFByaW9yaXR5OnZvaWQgMDtcInN0eWxlXCI9PT1uP2kuZC5TKGUsXCJzdHJpbmdcIj09dHlwZW9mIHQucHJlY2VkZW5jZT90LnByZWNlZGVuY2U6dm9pZCAwLHtjcm9zc09yaWdpbjpyLGludGVncml0eTpvLGZldGNoUHJpb3JpdHk6YX0pOlwic2NyaXB0XCI9PT1uJiZpLmQuWChlLHtjcm9zc09yaWdpbjpyLGludGVncml0eTpvLGZldGNoUHJpb3JpdHk6YSxub25jZTpcInN0cmluZ1wiPT10eXBlb2YgdC5ub25jZT90Lm5vbmNlOnZvaWQgMH0pfX0sdC5wcmVpbml0TW9kdWxlPWZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpaWYoXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10KXtpZihudWxsPT10LmFzfHxcInNjcmlwdFwiPT09dC5hcyl7dmFyIG49Yyh0LmFzLHQuY3Jvc3NPcmlnaW4pO2kuZC5NKGUse2Nyb3NzT3JpZ2luOm4saW50ZWdyaXR5Olwic3RyaW5nXCI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDAsbm9uY2U6XCJzdHJpbmdcIj09dHlwZW9mIHQubm9uY2U/dC5ub25jZTp2b2lkIDB9KX19ZWxzZSBudWxsPT10JiZpLmQuTShlKX0sdC5wcmVsb2FkPWZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZudWxsIT09dCYmXCJzdHJpbmdcIj09dHlwZW9mIHQuYXMpe3ZhciBuPXQuYXMscj1jKG4sdC5jcm9zc09yaWdpbik7aS5kLkwoZSxuLHtjcm9zc09yaWdpbjpyLGludGVncml0eTpcInN0cmluZ1wiPT10eXBlb2YgdC5pbnRlZ3JpdHk/dC5pbnRlZ3JpdHk6dm9pZCAwLG5vbmNlOlwic3RyaW5nXCI9PXR5cGVvZiB0Lm5vbmNlP3Qubm9uY2U6dm9pZCAwLHR5cGU6XCJzdHJpbmdcIj09dHlwZW9mIHQudHlwZT90LnR5cGU6dm9pZCAwLGZldGNoUHJpb3JpdHk6XCJzdHJpbmdcIj09dHlwZW9mIHQuZmV0Y2hQcmlvcml0eT90LmZldGNoUHJpb3JpdHk6dm9pZCAwLHJlZmVycmVyUG9saWN5Olwic3RyaW5nXCI9PXR5cGVvZiB0LnJlZmVycmVyUG9saWN5P3QucmVmZXJyZXJQb2xpY3k6dm9pZCAwLGltYWdlU3JjU2V0Olwic3RyaW5nXCI9PXR5cGVvZiB0LmltYWdlU3JjU2V0P3QuaW1hZ2VTcmNTZXQ6dm9pZCAwLGltYWdlU2l6ZXM6XCJzdHJpbmdcIj09dHlwZW9mIHQuaW1hZ2VTaXplcz90LmltYWdlU2l6ZXM6dm9pZCAwLG1lZGlhOlwic3RyaW5nXCI9PXR5cGVvZiB0Lm1lZGlhP3QubWVkaWE6dm9pZCAwfSl9fSx0LnByZWxvYWRNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlpZih0KXt2YXIgbj1jKHQuYXMsdC5jcm9zc09yaWdpbik7aS5kLm0oZSx7YXM6XCJzdHJpbmdcIj09dHlwZW9mIHQuYXMmJlwic2NyaXB0XCIhPT10LmFzP3QuYXM6dm9pZCAwLGNyb3NzT3JpZ2luOm4saW50ZWdyaXR5Olwic3RyaW5nXCI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDB9KX1lbHNlIGkuZC5tKGUpfSx0LnJlcXVlc3RGb3JtUmVzZXQ9ZnVuY3Rpb24oZSl7aS5kLnIoZSl9LHQudW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSh0KX0sdC51c2VGb3JtU3RhdGU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBzLkgudXNlRm9ybVN0YXRlKGUsdCxuKX0sdC51c2VGb3JtU3RhdHVzPWZ1bmN0aW9uKCl7cmV0dXJuIHMuSC51c2VIb3N0VHJhbnNpdGlvblN0YXR1cygpfSx0LnZlcnNpb249XCIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4XCJ9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0LWRvbS9jbGllbnQuanNcIjpmdW5jdGlvbihlLHQsbil7XCJ1c2Ugc3RyaWN0XCI7IWZ1bmN0aW9uIGUoKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UpdHJ5e19fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0oKSxlLmV4cG9ydHM9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS1jbGllbnQucHJvZHVjdGlvbi5qc1wiKX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2luZGV4LmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiOyFmdW5jdGlvbiBlKCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyYmXCJmdW5jdGlvblwiPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoZSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKX19KCksZS5leHBvcnRzPW4oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5qc1wiKX0sXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWNvbXBpbGVyLXJ1bnRpbWUucHJvZHVjdGlvbi5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzXCIpLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTt0LmM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuSC51c2VNZW1vQ2FjaGUoZSl9fSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5qc1wiOmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49U3ltYm9sLmZvcihcInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50XCIpO2Z1bmN0aW9uIHIoZSx0LHIpe3ZhciBvPW51bGw7aWYodm9pZCAwIT09ciYmKG89XCJcIityKSx2b2lkIDAhPT10LmtleSYmKG89XCJcIit0LmtleSksXCJrZXlcImluIHQpZm9yKHZhciBhIGluIHI9e30sdClcImtleVwiIT09YSYmKHJbYV09dFthXSk7ZWxzZSByPXQ7cmV0dXJueyQkdHlwZW9mOm4sdHlwZTplLGtleTpvLHJlZjp2b2lkIDAhPT0odD1yLnJlZik/dDpudWxsLHByb3BzOnJ9fXQuRnJhZ21lbnQ9U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLHQuanN4PXIsdC5qc3hzPXJ9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzXCI6ZnVuY3Rpb24oZSx0KXtcInVzZSBzdHJpY3RcIjt2YXIgbj1TeW1ib2wuZm9yKFwicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnRcIikscj1TeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLG89U3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLGE9U3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLGk9U3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLGw9U3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLHM9U3ltYm9sLmZvcihcInJlYWN0LmNvbnRleHRcIiksYz1TeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIiksdT1TeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksZD1TeW1ib2wuZm9yKFwicmVhY3QubWVtb1wiKSxmPVN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLHA9U3ltYm9sLml0ZXJhdG9yLGg9e2lzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiExfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oKXt9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbigpe319LG09T2JqZWN0LmFzc2lnbixnPXt9O2Z1bmN0aW9uIHkoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Zyx0aGlzLnVwZGF0ZXI9bnx8aH1mdW5jdGlvbiB2KCl7fWZ1bmN0aW9uIGIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Zyx0aGlzLnVwZGF0ZXI9bnx8aH15LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHkucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJm51bGwhPWUpdGhyb3cgRXJyb3IoXCJ0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy5cIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLGUsdCxcInNldFN0YXRlXCIpfSx5LnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSxcImZvcmNlVXBkYXRlXCIpfSx2LnByb3RvdHlwZT15LnByb3RvdHlwZTt2YXIgQT1iLnByb3RvdHlwZT1uZXcgdjtBLmNvbnN0cnVjdG9yPWIsbShBLHkucHJvdG90eXBlKSxBLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwO3ZhciB4PUFycmF5LmlzQXJyYXk7ZnVuY3Rpb24gdygpe312YXIgQz17SDpudWxsLEE6bnVsbCxUOm51bGwsUzpudWxsfSxfPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gayhlLHQscil7dmFyIG89ci5yZWY7cmV0dXJueyQkdHlwZW9mOm4sdHlwZTplLGtleTp0LHJlZjp2b2lkIDAhPT1vP286bnVsbCxwcm9wczpyfX1mdW5jdGlvbiBFKGUpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PW59dmFyIGo9L1xcLysvZztmdW5jdGlvbiBTKGUsdCl7dmFyIG4scjtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJm51bGwhPWUua2V5PyhuPVwiXCIrZS5rZXkscj17XCI9XCI6XCI9MFwiLFwiOlwiOlwiPTJcIn0sXCIkXCIrbi5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oZSl7cmV0dXJuIHJbZV19KSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gTyhlLHQsbyl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgYT1bXSxpPTA7cmV0dXJuIWZ1bmN0aW9uIGUodCxvLGEsaSxsKXt2YXIgcyxjLHUsZD10eXBlb2YgdDsoXCJ1bmRlZmluZWRcIj09PWR8fFwiYm9vbGVhblwiPT09ZCkmJih0PW51bGwpO3ZhciBoPSExO2lmKG51bGw9PT10KWg9ITA7ZWxzZSBzd2l0Y2goZCl7Y2FzZVwiYmlnaW50XCI6Y2FzZVwic3RyaW5nXCI6Y2FzZVwibnVtYmVyXCI6aD0hMDticmVhaztjYXNlXCJvYmplY3RcIjpzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBuOmNhc2UgcjpoPSEwO2JyZWFrO2Nhc2UgZjpyZXR1cm4gZSgoaD10Ll9pbml0KSh0Ll9wYXlsb2FkKSxvLGEsaSxsKX19aWYoaClyZXR1cm4gbD1sKHQpLGg9XCJcIj09PWk/XCIuXCIrUyh0LDApOmkseChsKT8oYT1cIlwiLG51bGwhPWgmJihhPWgucmVwbGFjZShqLFwiJCYvXCIpK1wiL1wiKSxlKGwsbyxhLFwiXCIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSk6bnVsbCE9bCYmKEUobCkmJihzPWwsYz1hKyhudWxsPT1sLmtleXx8dCYmdC5rZXk9PT1sLmtleT9cIlwiOihcIlwiK2wua2V5KS5yZXBsYWNlKGosXCIkJi9cIikrXCIvXCIpK2gsbD1rKHMudHlwZSxjLHMucHJvcHMpKSxvLnB1c2gobCkpLDE7aD0wO3ZhciBtPVwiXCI9PT1pP1wiLlwiOmkrXCI6XCI7aWYoeCh0KSlmb3IodmFyIGc9MDtnPHQubGVuZ3RoO2crKylkPW0rUyhpPXRbZ10sZyksaCs9ZShpLG8sYSxkLGwpO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YoZz1udWxsPT09KHU9dCl8fFwib2JqZWN0XCIhPXR5cGVvZiB1P251bGw6XCJmdW5jdGlvblwiPT10eXBlb2YodT1wJiZ1W3BdfHx1W1wiQEBpdGVyYXRvclwiXSk/dTpudWxsKSlmb3IodD1nLmNhbGwodCksZz0wOyEoaT10Lm5leHQoKSkuZG9uZTspZD1tK1MoaT1pLnZhbHVlLGcrKyksaCs9ZShpLG8sYSxkLGwpO2Vsc2UgaWYoXCJvYmplY3RcIj09PWQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQudGhlbilyZXR1cm4gZShmdW5jdGlvbihlKXtzd2l0Y2goZS5zdGF0dXMpe2Nhc2VcImZ1bGZpbGxlZFwiOnJldHVybiBlLnZhbHVlO2Nhc2VcInJlamVjdGVkXCI6dGhyb3cgZS5yZWFzb247ZGVmYXVsdDpzd2l0Y2goXCJzdHJpbmdcIj09dHlwZW9mIGUuc3RhdHVzP2UudGhlbih3LHcpOihlLnN0YXR1cz1cInBlbmRpbmdcIixlLnRoZW4oZnVuY3Rpb24odCl7XCJwZW5kaW5nXCI9PT1lLnN0YXR1cyYmKGUuc3RhdHVzPVwiZnVsZmlsbGVkXCIsZS52YWx1ZT10KX0sZnVuY3Rpb24odCl7XCJwZW5kaW5nXCI9PT1lLnN0YXR1cyYmKGUuc3RhdHVzPVwicmVqZWN0ZWRcIixlLnJlYXNvbj10KX0pKSxlLnN0YXR1cyl7Y2FzZVwiZnVsZmlsbGVkXCI6cmV0dXJuIGUudmFsdWU7Y2FzZVwicmVqZWN0ZWRcIjp0aHJvdyBlLnJlYXNvbn19dGhyb3cgZX0odCksbyxhLGksbCk7dGhyb3cgRXJyb3IoXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiKyhcIltvYmplY3QgT2JqZWN0XVwiPT09KG89U3RyaW5nKHQpKT9cIm9iamVjdCB3aXRoIGtleXMge1wiK09iamVjdC5rZXlzKHQpLmpvaW4oXCIsIFwiKStcIn1cIjpvKStcIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC5cIil9cmV0dXJuIGh9KGUsYSxcIlwiLFwiXCIsZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbChvLGUsaSsrKX0pLGF9ZnVuY3Rpb24gQihlKXtpZigtMT09PWUuX3N0YXR1cyl7dmFyIHQ9ZS5fcmVzdWx0Oyh0PXQoKSkudGhlbihmdW5jdGlvbih0KXsoMD09PWUuX3N0YXR1c3x8LTE9PT1lLl9zdGF0dXMpJiYoZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSxmdW5jdGlvbih0KXsoMD09PWUuX3N0YXR1c3x8LTE9PT1lLl9zdGF0dXMpJiYoZS5fc3RhdHVzPTIsZS5fcmVzdWx0PXQpfSksLTE9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9dCl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBQPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHdpbmRvdy5FcnJvckV2ZW50KXt2YXIgdD1uZXcgd2luZG93LkVycm9yRXZlbnQoXCJlcnJvclwiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsbWVzc2FnZTpcIm9iamVjdFwiPT10eXBlb2YgZSYmbnVsbCE9PWUmJlwic3RyaW5nXCI9PXR5cGVvZiBlLm1lc3NhZ2U/U3RyaW5nKGUubWVzc2FnZSk6U3RyaW5nKGUpLGVycm9yOmV9KTtpZighd2luZG93LmRpc3BhdGNoRXZlbnQodCkpcmV0dXJufWVsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHByb2Nlc3MmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHByb2Nlc3MuZW1pdClyZXR1cm4gdm9pZCBwcm9jZXNzLmVtaXQoXCJ1bmNhdWdodEV4Y2VwdGlvblwiLGUpO2NvbnNvbGUuZXJyb3IoZSl9O3QuQ2hpbGRyZW49e21hcDpPLGZvckVhY2g6ZnVuY3Rpb24oZSx0LG4pe08oZSxmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuKX0sY291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9MDtyZXR1cm4gTyhlLGZ1bmN0aW9uKCl7dCsrfSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGUpe2lmKCFFKGUpKXRocm93IEVycm9yKFwiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuXCIpO3JldHVybiBlfX0sdC5Db21wb25lbnQ9eSx0LkZyYWdtZW50PW8sdC5Qcm9maWxlcj1pLHQuUHVyZUNvbXBvbmVudD1iLHQuU3RyaWN0TW9kZT1hLHQuU3VzcGVuc2U9dSx0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERT1DLHQuX19DT01QSUxFUl9SVU5USU1FPXtfX3Byb3RvX186bnVsbCxjOmZ1bmN0aW9uKGUpe3JldHVybiBDLkgudXNlTWVtb0NhY2hlKGUpfX0sdC5jYWNoZT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShudWxsLGFyZ3VtZW50cyl9fSx0LmNhY2hlU2lnbmFsPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LHQuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXtpZihudWxsPT1lKXRocm93IEVycm9yKFwiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIitlK1wiLlwiKTt2YXIgcj1tKHt9LGUucHJvcHMpLG89ZS5rZXk7aWYobnVsbCE9dClmb3IoYSBpbiB2b2lkIDAhPT10LmtleSYmKG89XCJcIit0LmtleSksdClfLmNhbGwodCxhKSYmXCJrZXlcIiE9PWEmJlwiX19zZWxmXCIhPT1hJiZcIl9fc291cmNlXCIhPT1hJiYoXCJyZWZcIiE9PWF8fHZvaWQgMCE9PXQucmVmKSYmKHJbYV09dFthXSk7dmFyIGE9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1hKXIuY2hpbGRyZW49bjtlbHNlIGlmKDE8YSl7Zm9yKHZhciBpPUFycmF5KGEpLGw9MDtsPGE7bCsrKWlbbF09YXJndW1lbnRzW2wrMl07ci5jaGlsZHJlbj1pfXJldHVybiBrKGUudHlwZSxvLHIpfSx0LmNyZWF0ZUNvbnRleHQ9ZnVuY3Rpb24oZSl7cmV0dXJuKGU9eyQkdHlwZW9mOnMsX2N1cnJlbnRWYWx1ZTplLF9jdXJyZW50VmFsdWUyOmUsX3RocmVhZENvdW50OjAsUHJvdmlkZXI6bnVsbCxDb25zdW1lcjpudWxsfSkuUHJvdmlkZXI9ZSxlLkNvbnN1bWVyPXskJHR5cGVvZjpsLF9jb250ZXh0OmV9LGV9LHQuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIHIsbz17fSxhPW51bGw7aWYobnVsbCE9dClmb3IociBpbiB2b2lkIDAhPT10LmtleSYmKGE9XCJcIit0LmtleSksdClfLmNhbGwodCxyKSYmXCJrZXlcIiE9PXImJlwiX19zZWxmXCIhPT1yJiZcIl9fc291cmNlXCIhPT1yJiYob1tyXT10W3JdKTt2YXIgaT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWkpby5jaGlsZHJlbj1uO2Vsc2UgaWYoMTxpKXtmb3IodmFyIGw9QXJyYXkoaSkscz0wO3M8aTtzKyspbFtzXT1hcmd1bWVudHNbcysyXTtvLmNoaWxkcmVuPWx9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKHIgaW4gaT1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT1vW3JdJiYob1tyXT1pW3JdKTtyZXR1cm4gayhlLGEsbyl9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6YyxyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9RSx0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOmYsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDpCfX0sdC5tZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOmQsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx0LnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1DLlQsbj17fTtDLlQ9bjt0cnl7dmFyIHI9ZSgpLG89Qy5TO251bGwhPT1vJiZvKG4sciksXCJvYmplY3RcIj09dHlwZW9mIHImJm51bGwhPT1yJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLnRoZW4mJnIudGhlbih3LFApfWNhdGNoKGUpe1AoZSl9ZmluYWxseXtudWxsIT09dCYmbnVsbCE9PW4udHlwZXMmJih0LnR5cGVzPW4udHlwZXMpLEMuVD10fX0sdC51bnN0YWJsZV91c2VDYWNoZVJlZnJlc2g9ZnVuY3Rpb24oKXtyZXR1cm4gQy5ILnVzZUNhY2hlUmVmcmVzaCgpfSx0LnVzZT1mdW5jdGlvbihlKXtyZXR1cm4gQy5ILnVzZShlKX0sdC51c2VBY3Rpb25TdGF0ZT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIEMuSC51c2VBY3Rpb25TdGF0ZShlLHQsbil9LHQudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gQy5ILnVzZUNhbGxiYWNrKGUsdCl9LHQudXNlQ29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4gQy5ILnVzZUNvbnRleHQoZSl9LHQudXNlRGVidWdWYWx1ZT1mdW5jdGlvbigpe30sdC51c2VEZWZlcnJlZFZhbHVlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VEZWZlcnJlZFZhbHVlKGUsdCl9LHQudXNlRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VFZmZlY3QoZSx0KX0sdC51c2VJZD1mdW5jdGlvbigpe3JldHVybiBDLkgudXNlSWQoKX0sdC51c2VJbXBlcmF0aXZlSGFuZGxlPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQy5ILnVzZUltcGVyYXRpdmVIYW5kbGUoZSx0LG4pfSx0LnVzZUluc2VydGlvbkVmZmVjdD1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlSW5zZXJ0aW9uRWZmZWN0KGUsdCl9LHQudXNlTGF5b3V0RWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VMYXlvdXRFZmZlY3QoZSx0KX0sdC51c2VNZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEMuSC51c2VNZW1vKGUsdCl9LHQudXNlT3B0aW1pc3RpYz1mdW5jdGlvbihlLHQpe3JldHVybiBDLkgudXNlT3B0aW1pc3RpYyhlLHQpfSx0LnVzZVJlZHVjZXI9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBDLkgudXNlUmVkdWNlcihlLHQsbil9LHQudXNlUmVmPWZ1bmN0aW9uKGUpe3JldHVybiBDLkgudXNlUmVmKGUpfSx0LnVzZVN0YXRlPWZ1bmN0aW9uKGUpe3JldHVybiBDLkgudXNlU3RhdGUoZSl9LHQudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBDLkgudXNlU3luY0V4dGVybmFsU3RvcmUoZSx0LG4pfSx0LnVzZVRyYW5zaXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gQy5ILnVzZVRyYW5zaXRpb24oKX0sdC52ZXJzaW9uPVwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOFwifSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9jb21waWxlci1ydW50aW1lLmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC1jb21waWxlci1ydW50aW1lLnByb2R1Y3Rpb24uanNcIil9LFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2luZGV4LmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKFwiLi9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzXCIpfSxcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9qc3gtcnVudGltZS5qc1wiOmZ1bmN0aW9uKGUsdCxuKXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9bihcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5qc1wiKX0sXCIuL2Rpc3QvY29tcGlsZWQvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5qc1wiOmZ1bmN0aW9uKGUsdCl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPWUubGVuZ3RoO2ZvcihlLnB1c2godCk7MDxuOyl7dmFyIHI9bi0xPj4+MSxvPWVbcl07aWYoMDxhKG8sdCkpZVtyXT10LGVbbl09byxuPXI7ZWxzZSBicmVha319ZnVuY3Rpb24gcihlKXtyZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZVswXX1mdW5jdGlvbiBvKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgdD1lWzBdLG49ZS5wb3AoKTtpZihuIT09dCl7ZVswXT1uO2Zvcih2YXIgcj0wLG89ZS5sZW5ndGgsaT1vPj4+MTtyPGk7KXt2YXIgbD0yKihyKzEpLTEscz1lW2xdLGM9bCsxLHU9ZVtjXTtpZigwPmEocyxuKSljPG8mJjA+YSh1LHMpPyhlW3JdPXUsZVtjXT1uLHI9Yyk6KGVbcl09cyxlW2xdPW4scj1sKTtlbHNlIGlmKGM8byYmMD5hKHUsbikpZVtyXT11LGVbY109bixyPWM7ZWxzZSBicmVha319cmV0dXJuIHR9ZnVuY3Rpb24gYShlLHQpe3ZhciBuPWUuc29ydEluZGV4LXQuc29ydEluZGV4O3JldHVybiAwIT09bj9uOmUuaWQtdC5pZH1pZih0LnVuc3RhYmxlX25vdz12b2lkIDAsXCJvYmplY3RcIj09dHlwZW9mIHBlcmZvcm1hbmNlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwZXJmb3JtYW5jZS5ub3cpe3ZhciBpLGw9cGVyZm9ybWFuY2U7dC51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gbC5ub3coKX19ZWxzZXt2YXIgcz1EYXRlLGM9cy5ub3coKTt0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBzLm5vdygpLWN9fXZhciB1PVtdLGQ9W10sZj0xLHA9bnVsbCxoPTMsbT0hMSxnPSExLHk9ITEsdj0hMSxiPVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLEE9XCJmdW5jdGlvblwiPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpudWxsLHg9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNldEltbWVkaWF0ZT9zZXRJbW1lZGlhdGU6bnVsbDtmdW5jdGlvbiB3KGUpe2Zvcih2YXIgdD1yKGQpO251bGwhPT10Oyl7aWYobnVsbD09PXQuY2FsbGJhY2spbyhkKTtlbHNlIGlmKHQuc3RhcnRUaW1lPD1lKW8oZCksdC5zb3J0SW5kZXg9dC5leHBpcmF0aW9uVGltZSxuKHUsdCk7ZWxzZSBicmVhazt0PXIoZCl9fWZ1bmN0aW9uIEMoZSl7aWYoeT0hMSx3KGUpLCFnKWlmKG51bGwhPT1yKHUpKWc9ITAsX3x8KF89ITAsaSgpKTtlbHNle3ZhciB0PXIoZCk7bnVsbCE9PXQmJkkoQyx0LnN0YXJ0VGltZS1lKX19dmFyIF89ITEsaz0tMSxFPTUsaj0tMTtmdW5jdGlvbiBTKCl7cmV0dXJuISF2fHwhKHQudW5zdGFibGVfbm93KCktajxFKX1mdW5jdGlvbiBPKCl7aWYodj0hMSxfKXt2YXIgZT10LnVuc3RhYmxlX25vdygpO2o9ZTt2YXIgbj0hMDt0cnl7ZTp7Zz0hMSx5JiYoeT0hMSxBKGspLGs9LTEpLG09ITA7dmFyIGE9aDt0cnl7dDp7Zm9yKHcoZSkscD1yKHUpO251bGwhPT1wJiYhKHAuZXhwaXJhdGlvblRpbWU+ZSYmUygpKTspe3ZhciBsPXAuY2FsbGJhY2s7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgbCl7cC5jYWxsYmFjaz1udWxsLGg9cC5wcmlvcml0eUxldmVsO3ZhciBzPWwocC5leHBpcmF0aW9uVGltZTw9ZSk7aWYoZT10LnVuc3RhYmxlX25vdygpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHMpe3AuY2FsbGJhY2s9cyx3KGUpLG49ITA7YnJlYWsgdH1wPT09cih1KSYmbyh1KSx3KGUpfWVsc2Ugbyh1KTtwPXIodSl9aWYobnVsbCE9PXApbj0hMDtlbHNle3ZhciBjPXIoZCk7bnVsbCE9PWMmJkkoQyxjLnN0YXJ0VGltZS1lKSxuPSExfX1icmVhayBlfWZpbmFsbHl7cD1udWxsLGg9YSxtPSExfX19ZmluYWxseXtuP2koKTpfPSExfX19aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgeClpPWZ1bmN0aW9uKCl7eChPKX07ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBCPW5ldyBNZXNzYWdlQ2hhbm5lbCxQPUIucG9ydDI7Qi5wb3J0MS5vbm1lc3NhZ2U9TyxpPWZ1bmN0aW9uKCl7UC5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBpPWZ1bmN0aW9uKCl7YihPLDApfTtmdW5jdGlvbiBJKGUsbil7az1iKGZ1bmN0aW9uKCl7ZSh0LnVuc3RhYmxlX25vdygpKX0sbil9dC51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSx0LnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsdC51bnN0YWJsZV9Mb3dQcmlvcml0eT00LHQudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9Myx0LnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLHQudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9Mix0LnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGUpe2UuY2FsbGJhY2s9bnVsbH0sdC51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihlKXswPmV8fDEyNTxlP2NvbnNvbGUuZXJyb3IoXCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWRcIik6RT0wPGU/TWF0aC5mbG9vcigxZTMvZSk6NX0sdC51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbD1mdW5jdGlvbigpe3JldHVybiBofSx0LnVuc3RhYmxlX25leHQ9ZnVuY3Rpb24oZSl7c3dpdGNoKGgpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOnZhciB0PTM7YnJlYWs7ZGVmYXVsdDp0PWh9dmFyIG49aDtoPXQ7dHJ5e3JldHVybiBlKCl9ZmluYWxseXtoPW59fSx0LnVuc3RhYmxlX3JlcXVlc3RQYWludD1mdW5jdGlvbigpe3Y9ITB9LHQudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDplPTN9dmFyIG49aDtoPWU7dHJ5e3JldHVybiB0KCl9ZmluYWxseXtoPW59fSx0LnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oZSxvLGEpe3ZhciBsPXQudW5zdGFibGVfbm93KCk7c3dpdGNoKGE9XCJvYmplY3RcIj09dHlwZW9mIGEmJm51bGwhPT1hJiZcIm51bWJlclwiPT10eXBlb2YoYT1hLmRlbGF5KSYmMDxhP2wrYTpsLGUpe2Nhc2UgMTp2YXIgcz0tMTticmVhaztjYXNlIDI6cz0yNTA7YnJlYWs7Y2FzZSA1OnM9MHgzZmZmZmZmZjticmVhaztjYXNlIDQ6cz0xZTQ7YnJlYWs7ZGVmYXVsdDpzPTVlM31yZXR1cm4gcz1hK3MsZT17aWQ6ZisrLGNhbGxiYWNrOm8scHJpb3JpdHlMZXZlbDplLHN0YXJ0VGltZTphLGV4cGlyYXRpb25UaW1lOnMsc29ydEluZGV4Oi0xfSxhPmw/KGUuc29ydEluZGV4PWEsbihkLGUpLG51bGw9PT1yKHUpJiZlPT09cihkKSYmKHk/KEEoayksaz0tMSk6eT0hMCxJKEMsYS1sKSkpOihlLnNvcnRJbmRleD1zLG4odSxlKSxnfHxtfHwoZz0hMCxffHwoXz0hMCxpKCkpKSksZX0sdC51bnN0YWJsZV9zaG91bGRZaWVsZD1TLHQudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PWg7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49aDtoPXQ7dHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2g9bn19fX0sXCIuL2Rpc3QvY29tcGlsZWQvc2NoZWR1bGVyL2luZGV4LmpzXCI6ZnVuY3Rpb24oZSx0LG4pe1widXNlIHN0cmljdFwiO2UuZXhwb3J0cz1uKFwiLi9kaXN0L2NvbXBpbGVkL3NjaGVkdWxlci9janMvc2NoZWR1bGVyLnByb2R1Y3Rpb24uanNcIil9LFwiLi9kaXN0L2NvbXBpbGVkL3N0YWNrdHJhY2UtcGFyc2VyL3N0YWNrLXRyYWNlLXBhcnNlci5janMuanNcIjpmdW5jdGlvbihlKXsoKCk9PntcInVzZSBzdHJpY3RcIjtcInVuZGVmaW5lZFwiIT10eXBlb2YgX19uY2N3cGNrX3JlcXVpcmVfXyYmKF9fbmNjd3Bja19yZXF1aXJlX18uYWI9XCIvL1wiKTt2YXIgdCxuLHIsbyxhLGksbCxzLGM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdD1cIjx1bmtub3duPlwiLG49L15cXHMqYXQgKC4qPykgP1xcKCgoPzpmaWxlfGh0dHBzP3xibG9ifGNocm9tZS1leHRlbnNpb258bmF0aXZlfGV2YWx8d2VicGFja3x3ZWJwYWNrLWludGVybmFsfHJzY3xhYm91dHx0dXJib3BhY2t8PGFub255bW91cz58XFwvfFthLXpdOlxcXFx8XFxcXFxcXFwpLio/KSg/OjooXFxkKykpPyg/OjooXFxkKykpP1xcKT9cXHMqJC9pLHI9L1xcKChcXFMqKSg/OjooXFxkKykpKD86OihcXGQrKSlcXCkvLG89L15cXHMqYXQgKD86KCg/OlxcW29iamVjdCBvYmplY3RcXF0pPy4rKSApP1xcKD8oKD86ZmlsZXxtcy1hcHB4fGh0dHBzP3x3ZWJwYWNrfHdlYnBhY2staW50ZXJuYWx8cnNjfGFib3V0fHR1cmJvcGFja3xibG9iKTouKj8pOihcXGQrKSg/OjooXFxkKykpP1xcKT9cXHMqJC9pLGE9L15cXHMqKC4qPykoPzpcXCgoLio/KVxcKSk/KD86XnxAKSgoPzpmaWxlfGh0dHBzP3xibG9ifGNocm9tZXx3ZWJwYWNrfHdlYnBhY2staW50ZXJuYWx8cnNjfGFib3V0fHR1cmJvcGFja3xyZXNvdXJjZXxcXFtuYXRpdmUpLio/fFteQF0qYnVuZGxlKSg/OjooXFxkKykpPyg/OjooXFxkKykpP1xccyokL2ksaT0vKFxcUyspIGxpbmUgKFxcZCspKD86ID4gZXZhbCBsaW5lIFxcZCspKiA+IGV2YWwvaSxsPS9eXFxzKig/OihbXkBdKikoPzpcXCgoLio/KVxcKSk/QCk/KFxcUy4qPyk6KFxcZCspKD86OihcXGQrKSk/XFxzKiQvaSxzPS9eXFxzKmF0ICg/OigoPzpcXFtvYmplY3Qgb2JqZWN0XFxdKT9bXlxcXFwvXSsoPzogXFxbYXMgXFxTK1xcXSk/KSApP1xcKD8oLio/KTooXFxkKykoPzo6KFxcZCspKT9cXCk/XFxzKiQvaSxjLnBhcnNlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnNwbGl0KFwiXFxuXCIpLnJlZHVjZShmdW5jdGlvbihlLGMpe3ZhciB1LGQsZixwLGgsbSxnPWZ1bmN0aW9uKGUpe3ZhciBvPW4uZXhlYyhlKTtpZighbylyZXR1cm4gbnVsbDt2YXIgYT1vWzJdJiYwPT09b1syXS5pbmRleE9mKFwibmF0aXZlXCIpLGk9b1syXSYmMD09PW9bMl0uaW5kZXhPZihcImV2YWxcIiksbD1yLmV4ZWMob1syXSk7cmV0dXJuIGkmJm51bGwhPWwmJihvWzJdPWxbMV0sb1szXT1sWzJdLG9bNF09bFszXSkse2ZpbGU6YT9udWxsOm9bMl0sbWV0aG9kTmFtZTpvWzFdfHx0LGFyZ3VtZW50czphP1tvWzJdXTpbXSxsaW5lTnVtYmVyOm9bM10/K29bM106bnVsbCxjb2x1bW46b1s0XT8rb1s0XTpudWxsfX0oYyl8fCh1PWMsKGQ9by5leGVjKHUpKT97ZmlsZTpkWzJdLG1ldGhvZE5hbWU6ZFsxXXx8dCxhcmd1bWVudHM6W10sbGluZU51bWJlcjorZFszXSxjb2x1bW46ZFs0XT8rZFs0XTpudWxsfTpudWxsKXx8ZnVuY3Rpb24oZSl7dmFyIG49YS5leGVjKGUpO2lmKCFuKXJldHVybiBudWxsO3ZhciByPW5bM10mJm5bM10uaW5kZXhPZihcIiA+IGV2YWxcIik+LTEsbz1pLmV4ZWMoblszXSk7cmV0dXJuIHImJm51bGwhPW8mJihuWzNdPW9bMV0sbls0XT1vWzJdLG5bNV09bnVsbCkse2ZpbGU6blszXSxtZXRob2ROYW1lOm5bMV18fHQsYXJndW1lbnRzOm5bMl0/blsyXS5zcGxpdChcIixcIik6W10sbGluZU51bWJlcjpuWzRdPytuWzRdOm51bGwsY29sdW1uOm5bNV0/K25bNV06bnVsbH19KGMpfHwoZj1jLChwPXMuZXhlYyhmKSk/e2ZpbGU6cFsyXSxtZXRob2ROYW1lOnBbMV18fHQsYXJndW1lbnRzOltdLGxpbmVOdW1iZXI6K3BbM10sY29sdW1uOnBbNF0/K3BbNF06bnVsbH06bnVsbCl8fChoPWMsKG09bC5leGVjKGgpKT97ZmlsZTptWzNdLG1ldGhvZE5hbWU6bVsxXXx8dCxhcmd1bWVudHM6W10sbGluZU51bWJlcjorbVs0XSxjb2x1bW46bVs1XT8rbVs1XTpudWxsfTpudWxsKTtyZXR1cm4gZyYmZS5wdXNoKGcpLGV9LFtdKX0sZS5leHBvcnRzPWN9KSgpfSxcIi4vZGlzdC9jb21waWxlZC9zdHJpcC1hbnNpL2luZGV4LmpzXCI6ZnVuY3Rpb24oZSl7KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezUxMTplPT57ZS5leHBvcnRzPSh7b25seUZpcnN0OmU9ITF9PXt9KT0+UmVnRXhwKFwiW1xcXFx1MDAxQlxcXFx1MDA5Ql1bW1xcXFxdKCkjOz9dKig/Oig/Oig/Oig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSspKnxbYS16QS1aXFxcXGRdKyg/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KXwoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiLGU/dm9pZCAwOlwiZ1wiKX0sNTMyOihlLHQsbik9PntsZXQgcj1uKDUxMSk7ZS5leHBvcnRzPWU9Plwic3RyaW5nXCI9PXR5cGVvZiBlP2UucmVwbGFjZShyKCksXCJcIik6ZX19LG49e307ZnVuY3Rpb24gcihlKXt2YXIgbz1uW2VdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIG8uZXhwb3J0czt2YXIgYT1uW2VdPXtleHBvcnRzOnt9fSxpPSEwO3RyeXt0W2VdKGEsYS5leHBvcnRzLHIpLGk9ITF9ZmluYWxseXtpJiZkZWxldGUgbltlXX1yZXR1cm4gYS5leHBvcnRzfXIuYWI9XCIvL1wiLGUuZXhwb3J0cz1yKDUzMil9KSgpfSxcIi4vc3JjL2J1aWxkL3dlYnBhY2svbG9hZGVycy9kZXZ0b29sL2RldnRvb2wtc3R5bGUtaW5qZWN0LmpzXCI6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe2xldCBlPXdpbmRvdy5fbmV4dGpzRGV2dG9vbHNTdHlsZUNhY2hlO2lmKGUuY2FjaGVkU2hhZG93Um9vdClyZXR1cm4gZS5jYWNoZWRTaGFkb3dSb290O2xldCB0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCJuZXh0anMtcG9ydGFsXCIpLG49dD8uc2hhZG93Um9vdHx8bnVsbDtyZXR1cm4gbiYmKGUuY2FjaGVkU2hhZG93Um9vdD1uKSxufWZ1bmN0aW9uIG4oZSx0KXtsZXQgbj13aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZTtuLmxhc3RJbnNlcnRlZEVsZW1lbnQ/bi5sYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nP3QuaW5zZXJ0QmVmb3JlKGUsbi5sYXN0SW5zZXJ0ZWRFbGVtZW50Lm5leHRTaWJsaW5nKTp0LmFwcGVuZENoaWxkKGUpOnQuaW5zZXJ0QmVmb3JlKGUsdC5maXJzdENoaWxkKSxuLmxhc3RJbnNlcnRlZEVsZW1lbnQ9ZX1mdW5jdGlvbiByKCl7bGV0IGU9d2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGUscj10KCk7ciYmKGUucGVuZGluZ0VsZW1lbnRzLmZvckVhY2goZT0+e24oZSxyKX0pLGUucGVuZGluZ0VsZW1lbnRzPVtdKX1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiYod2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGU9d2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGV8fHtwZW5kaW5nRWxlbWVudHM6W10saXNPYnNlcnZpbmc6ITEsbGFzdEluc2VydGVkRWxlbWVudDpudWxsLGNhY2hlZFNoYWRvd1Jvb3Q6bnVsbH0pLGUuZXhwb3J0cz1mdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShcImRhdGEtbmV4dGpzLWRldi10b29sLXN0eWxlXCIsXCJ0cnVlXCIpO2xldCBvPXQoKTtvP24oZSxvKTood2luZG93Ll9uZXh0anNEZXZ0b29sc1N0eWxlQ2FjaGUucGVuZGluZ0VsZW1lbnRzLnB1c2goZSksZnVuY3Rpb24oKXtsZXQgZT13aW5kb3cuX25leHRqc0RldnRvb2xzU3R5bGVDYWNoZTtpZihlLmlzT2JzZXJ2aW5nKXJldHVybjtpZihlLmlzT2JzZXJ2aW5nPSEwLHQoKSlyZXR1cm4gcigpO2xldCBuPW5ldyBNdXRhdGlvbk9ic2VydmVyKG89PntpZigwPT09by5sZW5ndGh8fDA9PT1vWzBdLmFkZGVkTm9kZXMubGVuZ3RoKXJldHVybjtsZXQgYT1vWzBdLmFkZGVkTm9kZXNbMF0saT1udWxsO2lmKFwiU0NSSVBUXCI9PT1hLnRhZ05hbWUmJmEuZ2V0QXR0cmlidXRlKFwiZGF0YS1uZXh0anMtZGV2LW92ZXJsYXlcIik/aT1hLmZpcnN0Q2hpbGQ6XCJORVhUSlMtUE9SVEFMXCI9PT1hLnRhZ05hbWUmJihpPWEpLCFpKXJldHVybjtsZXQgbD0oKT0+e3QoKT8ocigpLG4uZGlzY29ubmVjdCgpLGUuaXNPYnNlcnZpbmc9ITEpOnNldFRpbWVvdXQobCwyMCl9O2woKX0pO24ub2JzZXJ2ZShkb2N1bWVudC5ib2R5LHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMH0pfSgpKX19LFwiLi9kaXN0L2NvbXBpbGVkL3pvZC9pbmRleC5janNcIjpmdW5jdGlvbihlKXsoKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgdD17NjI5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9fY3JlYXRlQmluZGluZ3x8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9bik7dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pOyghb3x8KFwiZ2V0XCJpbiBvPyF0Ll9fZXNNb2R1bGU6by53cml0YWJsZXx8by5jb25maWd1cmFibGUpKSYmKG89e2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRbbl19fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscixvKX06ZnVuY3Rpb24oZSx0LG4scil7dm9pZCAwPT09ciYmKHI9biksZVtyXT10W25dfSksbz10aGlzJiZ0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdHx8KE9iamVjdC5jcmVhdGU/ZnVuY3Rpb24oZSx0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSl9OmZ1bmN0aW9uKGUsdCl7ZS5kZWZhdWx0PXR9KSxhPXRoaXMmJnRoaXMuX19pbXBvcnRTdGFyfHxmdW5jdGlvbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlcImRlZmF1bHRcIiE9PW4mJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZyKHQsZSxuKTtyZXR1cm4gbyh0LGUpLHR9LGk9dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuej12b2lkIDA7bGV0IGw9YShuKDkyMykpO3Quej1sLGkobig5MjMpLHQpLHQuZGVmYXVsdD1sfSwzNDg6KGUsdCxuKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLHQuWm9kRXJyb3I9dC5xdW90ZWxlc3NKc29uPXQuWm9kSXNzdWVDb2RlPXZvaWQgMDtsZXQgcj1uKDcwOSk7dC5ab2RJc3N1ZUNvZGU9ci51dGlsLmFycmF5VG9FbnVtKFtcImludmFsaWRfdHlwZVwiLFwiaW52YWxpZF9saXRlcmFsXCIsXCJjdXN0b21cIixcImludmFsaWRfdW5pb25cIixcImludmFsaWRfdW5pb25fZGlzY3JpbWluYXRvclwiLFwiaW52YWxpZF9lbnVtX3ZhbHVlXCIsXCJ1bnJlY29nbml6ZWRfa2V5c1wiLFwiaW52YWxpZF9hcmd1bWVudHNcIixcImludmFsaWRfcmV0dXJuX3R5cGVcIixcImludmFsaWRfZGF0ZVwiLFwiaW52YWxpZF9zdHJpbmdcIixcInRvb19zbWFsbFwiLFwidG9vX2JpZ1wiLFwiaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXNcIixcIm5vdF9tdWx0aXBsZV9vZlwiLFwibm90X2Zpbml0ZVwiXSksdC5xdW90ZWxlc3NKc29uPWU9PkpTT04uc3RyaW5naWZ5KGUsbnVsbCwyKS5yZXBsYWNlKC9cIihbXlwiXSspXCI6L2csXCIkMTpcIik7Y2xhc3MgbyBleHRlbmRzIEVycm9ye2dldCBlcnJvcnMoKXtyZXR1cm4gdGhpcy5pc3N1ZXN9Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLmlzc3Vlcz1bXSx0aGlzLmFkZElzc3VlPWU9Pnt0aGlzLmlzc3Vlcz1bLi4udGhpcy5pc3N1ZXMsZV19LHRoaXMuYWRkSXNzdWVzPShlPVtdKT0+e3RoaXMuaXNzdWVzPVsuLi50aGlzLmlzc3VlcywuLi5lXX07bGV0IHQ9bmV3LnRhcmdldC5wcm90b3R5cGU7T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZih0aGlzLHQpOnRoaXMuX19wcm90b19fPXQsdGhpcy5uYW1lPVwiWm9kRXJyb3JcIix0aGlzLmlzc3Vlcz1lfWZvcm1hdChlKXtsZXQgdD1lfHxmdW5jdGlvbihlKXtyZXR1cm4gZS5tZXNzYWdlfSxuPXtfZXJyb3JzOltdfSxyPWU9Pntmb3IobGV0IG8gb2YgZS5pc3N1ZXMpaWYoXCJpbnZhbGlkX3VuaW9uXCI9PT1vLmNvZGUpby51bmlvbkVycm9ycy5tYXAocik7ZWxzZSBpZihcImludmFsaWRfcmV0dXJuX3R5cGVcIj09PW8uY29kZSlyKG8ucmV0dXJuVHlwZUVycm9yKTtlbHNlIGlmKFwiaW52YWxpZF9hcmd1bWVudHNcIj09PW8uY29kZSlyKG8uYXJndW1lbnRzRXJyb3IpO2Vsc2UgaWYoMD09PW8ucGF0aC5sZW5ndGgpbi5fZXJyb3JzLnB1c2godChvKSk7ZWxzZXtsZXQgZT1uLHI9MDtmb3IoO3I8by5wYXRoLmxlbmd0aDspe2xldCBuPW8ucGF0aFtyXTtyPT09by5wYXRoLmxlbmd0aC0xPyhlW25dPWVbbl18fHtfZXJyb3JzOltdfSxlW25dLl9lcnJvcnMucHVzaCh0KG8pKSk6ZVtuXT1lW25dfHx7X2Vycm9yczpbXX0sZT1lW25dLHIrK319fTtyZXR1cm4gcih0aGlzKSxufXN0YXRpYyBhc3NlcnQoZSl7aWYoIShlIGluc3RhbmNlb2YgbykpdGhyb3cgRXJyb3IoYE5vdCBhIFpvZEVycm9yOiAke2V9YCl9dG9TdHJpbmcoKXtyZXR1cm4gdGhpcy5tZXNzYWdlfWdldCBtZXNzYWdlKCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuaXNzdWVzLHIudXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIsMil9Z2V0IGlzRW1wdHkoKXtyZXR1cm4gMD09PXRoaXMuaXNzdWVzLmxlbmd0aH1mbGF0dGVuKGU9ZT0+ZS5tZXNzYWdlKXtsZXQgdD17fSxuPVtdO2ZvcihsZXQgciBvZiB0aGlzLmlzc3VlcylpZihyLnBhdGgubGVuZ3RoPjApe2xldCBuPXIucGF0aFswXTt0W25dPXRbbl18fFtdLHRbbl0ucHVzaChlKHIpKX1lbHNlIG4ucHVzaChlKHIpKTtyZXR1cm57Zm9ybUVycm9yczpuLGZpZWxkRXJyb3JzOnR9fWdldCBmb3JtRXJyb3JzKCl7cmV0dXJuIHRoaXMuZmxhdHRlbigpfX10LlpvZEVycm9yPW8sby5jcmVhdGU9ZT0+bmV3IG8oZSl9LDYxOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzJiZ0aGlzLl9faW1wb3J0RGVmYXVsdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRlZmF1bHRFcnJvck1hcD12b2lkIDAsdC5zZXRFcnJvck1hcD1mdW5jdGlvbihlKXthPWV9LHQuZ2V0RXJyb3JNYXA9ZnVuY3Rpb24oKXtyZXR1cm4gYX07bGV0IG89cihuKDg3MSkpO3QuZGVmYXVsdEVycm9yTWFwPW8uZGVmYXVsdDtsZXQgYT1vLmRlZmF1bHR9LDkyMzpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2NyZWF0ZUJpbmRpbmd8fChPYmplY3QuY3JlYXRlP2Z1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pO3ZhciBvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKTsoIW98fChcImdldFwiaW4gbz8hdC5fX2VzTW9kdWxlOm8ud3JpdGFibGV8fG8uY29uZmlndXJhYmxlKSkmJihvPXtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0W25dfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsbyl9OmZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPW4pLGVbcl09dFtuXX0pLG89dGhpcyYmdGhpcy5fX2V4cG9ydFN0YXJ8fGZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpXCJkZWZhdWx0XCI9PT1ufHxPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKXx8cih0LGUsbil9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pLG8obig2MSksdCksbyhuKDgxOCksdCksbyhuKDUxNSksdCksbyhuKDcwOSksdCksbyhuKDE1NSksdCksbyhuKDM0OCksdCl9LDUzODooZSx0KT0+e3ZhciBuLHI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5lcnJvclV0aWw9dm9pZCAwLChyPW58fCh0LmVycm9yVXRpbD1uPXt9KSkuZXJyVG9PYmo9ZT0+XCJzdHJpbmdcIj09dHlwZW9mIGU/e21lc3NhZ2U6ZX06ZXx8e30sci50b1N0cmluZz1lPT5cInN0cmluZ1wiPT10eXBlb2YgZT9lOmU/Lm1lc3NhZ2V9LDgxODpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcyYmdGhpcy5fX2ltcG9ydERlZmF1bHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5pc0FzeW5jPXQuaXNWYWxpZD10LmlzRGlydHk9dC5pc0Fib3J0ZWQ9dC5PSz10LkRJUlRZPXQuSU5WQUxJRD10LlBhcnNlU3RhdHVzPXQuRU1QVFlfUEFUSD10Lm1ha2VJc3N1ZT12b2lkIDAsdC5hZGRJc3N1ZVRvQ29udGV4dD1mdW5jdGlvbihlLG4pe2xldCByPSgwLG8uZ2V0RXJyb3JNYXApKCksaT0oMCx0Lm1ha2VJc3N1ZSkoe2lzc3VlRGF0YTpuLGRhdGE6ZS5kYXRhLHBhdGg6ZS5wYXRoLGVycm9yTWFwczpbZS5jb21tb24uY29udGV4dHVhbEVycm9yTWFwLGUuc2NoZW1hRXJyb3JNYXAscixyPT09YS5kZWZhdWx0P3ZvaWQgMDphLmRlZmF1bHRdLmZpbHRlcihlPT4hIWUpfSk7ZS5jb21tb24uaXNzdWVzLnB1c2goaSl9O2xldCBvPW4oNjEpLGE9cihuKDg3MSkpO3QubWFrZUlzc3VlPWU9PntsZXR7ZGF0YTp0LHBhdGg6bixlcnJvck1hcHM6cixpc3N1ZURhdGE6b309ZSxhPVsuLi5uLC4uLm8ucGF0aHx8W11dLGk9ey4uLm8scGF0aDphfTtpZih2b2lkIDAhPT1vLm1lc3NhZ2UpcmV0dXJuey4uLm8scGF0aDphLG1lc3NhZ2U6by5tZXNzYWdlfTtsZXQgbD1cIlwiO2ZvcihsZXQgZSBvZiByLmZpbHRlcihlPT4hIWUpLnNsaWNlKCkucmV2ZXJzZSgpKWw9ZShpLHtkYXRhOnQsZGVmYXVsdEVycm9yOmx9KS5tZXNzYWdlO3JldHVybnsuLi5vLHBhdGg6YSxtZXNzYWdlOmx9fSx0LkVNUFRZX1BBVEg9W107Y2xhc3MgaXtjb25zdHJ1Y3Rvcigpe3RoaXMudmFsdWU9XCJ2YWxpZFwifWRpcnR5KCl7XCJ2YWxpZFwiPT09dGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9XCJkaXJ0eVwiKX1hYm9ydCgpe1wiYWJvcnRlZFwiIT09dGhpcy52YWx1ZSYmKHRoaXMudmFsdWU9XCJhYm9ydGVkXCIpfXN0YXRpYyBtZXJnZUFycmF5KGUsbil7bGV0IHI9W107Zm9yKGxldCBvIG9mIG4pe2lmKFwiYWJvcnRlZFwiPT09by5zdGF0dXMpcmV0dXJuIHQuSU5WQUxJRDtcImRpcnR5XCI9PT1vLnN0YXR1cyYmZS5kaXJ0eSgpLHIucHVzaChvLnZhbHVlKX1yZXR1cm57c3RhdHVzOmUudmFsdWUsdmFsdWU6cn19c3RhdGljIGFzeW5jIG1lcmdlT2JqZWN0QXN5bmMoZSx0KXtsZXQgbj1bXTtmb3IobGV0IGUgb2YgdCl7bGV0IHQ9YXdhaXQgZS5rZXkscj1hd2FpdCBlLnZhbHVlO24ucHVzaCh7a2V5OnQsdmFsdWU6cn0pfXJldHVybiBpLm1lcmdlT2JqZWN0U3luYyhlLG4pfXN0YXRpYyBtZXJnZU9iamVjdFN5bmMoZSxuKXtsZXQgcj17fTtmb3IobGV0IG8gb2Ygbil7bGV0e2tleTpuLHZhbHVlOmF9PW87aWYoXCJhYm9ydGVkXCI9PT1uLnN0YXR1c3x8XCJhYm9ydGVkXCI9PT1hLnN0YXR1cylyZXR1cm4gdC5JTlZBTElEO1wiZGlydHlcIj09PW4uc3RhdHVzJiZlLmRpcnR5KCksXCJkaXJ0eVwiPT09YS5zdGF0dXMmJmUuZGlydHkoKSxcIl9fcHJvdG9fX1wiIT09bi52YWx1ZSYmKHZvaWQgMCE9PWEudmFsdWV8fG8uYWx3YXlzU2V0KSYmKHJbbi52YWx1ZV09YS52YWx1ZSl9cmV0dXJue3N0YXR1czplLnZhbHVlLHZhbHVlOnJ9fX10LlBhcnNlU3RhdHVzPWksdC5JTlZBTElEPU9iamVjdC5mcmVlemUoe3N0YXR1czpcImFib3J0ZWRcIn0pLHQuRElSVFk9ZT0+KHtzdGF0dXM6XCJkaXJ0eVwiLHZhbHVlOmV9KSx0Lk9LPWU9Pih7c3RhdHVzOlwidmFsaWRcIix2YWx1ZTplfSksdC5pc0Fib3J0ZWQ9ZT0+XCJhYm9ydGVkXCI9PT1lLnN0YXR1cyx0LmlzRGlydHk9ZT0+XCJkaXJ0eVwiPT09ZS5zdGF0dXMsdC5pc1ZhbGlkPWU9PlwidmFsaWRcIj09PWUuc3RhdHVzLHQuaXNBc3luYz1lPT5cInVuZGVmaW5lZFwiIT10eXBlb2YgUHJvbWlzZSYmZSBpbnN0YW5jZW9mIFByb21pc2V9LDUxNTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSw3MDk6KGUsdCk9Pnt2YXIgbixyLG87T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSksdC5nZXRQYXJzZWRUeXBlPXQuWm9kUGFyc2VkVHlwZT10Lm9iamVjdFV0aWw9dC51dGlsPXZvaWQgMCwobz1ufHwodC51dGlsPW49e30pKS5hc3NlcnRFcXVhbD1lPT57fSxvLmFzc2VydElzPWZ1bmN0aW9uKGUpe30sby5hc3NlcnROZXZlcj1mdW5jdGlvbihlKXt0aHJvdyBFcnJvcigpfSxvLmFycmF5VG9FbnVtPWU9PntsZXQgdD17fTtmb3IobGV0IG4gb2YgZSl0W25dPW47cmV0dXJuIHR9LG8uZ2V0VmFsaWRFbnVtVmFsdWVzPWU9PntsZXQgdD1vLm9iamVjdEtleXMoZSkuZmlsdGVyKHQ9PlwibnVtYmVyXCIhPXR5cGVvZiBlW2VbdF1dKSxuPXt9O2ZvcihsZXQgciBvZiB0KW5bcl09ZVtyXTtyZXR1cm4gby5vYmplY3RWYWx1ZXMobil9LG8ub2JqZWN0VmFsdWVzPWU9Pm8ub2JqZWN0S2V5cyhlKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSxvLm9iamVjdEtleXM9XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmtleXM/ZT0+T2JqZWN0LmtleXMoZSk6ZT0+e2xldCB0PVtdO2ZvcihsZXQgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiZ0LnB1c2gobik7cmV0dXJuIHR9LG8uZmluZD0oZSx0KT0+e2ZvcihsZXQgbiBvZiBlKWlmKHQobikpcmV0dXJuIG59LG8uaXNJbnRlZ2VyPVwiZnVuY3Rpb25cIj09dHlwZW9mIE51bWJlci5pc0ludGVnZXI/ZT0+TnVtYmVyLmlzSW50ZWdlcihlKTplPT5cIm51bWJlclwiPT10eXBlb2YgZSYmTnVtYmVyLmlzRmluaXRlKGUpJiZNYXRoLmZsb29yKGUpPT09ZSxvLmpvaW5WYWx1ZXM9ZnVuY3Rpb24oZSx0PVwiIHwgXCIpe3JldHVybiBlLm1hcChlPT5cInN0cmluZ1wiPT10eXBlb2YgZT9gJyR7ZX0nYDplKS5qb2luKHQpfSxvLmpzb25TdHJpbmdpZnlSZXBsYWNlcj0oZSx0KT0+XCJiaWdpbnRcIj09dHlwZW9mIHQ/dC50b1N0cmluZygpOnQsKHJ8fCh0Lm9iamVjdFV0aWw9cj17fSkpLm1lcmdlU2hhcGVzPShlLHQpPT4oey4uLmUsLi4udH0pLHQuWm9kUGFyc2VkVHlwZT1uLmFycmF5VG9FbnVtKFtcInN0cmluZ1wiLFwibmFuXCIsXCJudW1iZXJcIixcImludGVnZXJcIixcImZsb2F0XCIsXCJib29sZWFuXCIsXCJkYXRlXCIsXCJiaWdpbnRcIixcInN5bWJvbFwiLFwiZnVuY3Rpb25cIixcInVuZGVmaW5lZFwiLFwibnVsbFwiLFwiYXJyYXlcIixcIm9iamVjdFwiLFwidW5rbm93blwiLFwicHJvbWlzZVwiLFwidm9pZFwiLFwibmV2ZXJcIixcIm1hcFwiLFwic2V0XCJdKSx0LmdldFBhcnNlZFR5cGU9ZT0+e3N3aXRjaCh0eXBlb2YgZSl7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS51bmRlZmluZWQ7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5zdHJpbmc7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIE51bWJlci5pc05hTihlKT90LlpvZFBhcnNlZFR5cGUubmFuOnQuWm9kUGFyc2VkVHlwZS5udW1iZXI7Y2FzZVwiYm9vbGVhblwiOnJldHVybiB0LlpvZFBhcnNlZFR5cGUuYm9vbGVhbjtjYXNlXCJmdW5jdGlvblwiOnJldHVybiB0LlpvZFBhcnNlZFR5cGUuZnVuY3Rpb247Y2FzZVwiYmlnaW50XCI6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5iaWdpbnQ7Y2FzZVwic3ltYm9sXCI6cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5zeW1ib2w7Y2FzZVwib2JqZWN0XCI6aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLmFycmF5O2lmKG51bGw9PT1lKXJldHVybiB0LlpvZFBhcnNlZFR5cGUubnVsbDtpZihlLnRoZW4mJlwiZnVuY3Rpb25cIj09dHlwZW9mIGUudGhlbiYmZS5jYXRjaCYmXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jYXRjaClyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLnByb21pc2U7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIE1hcCYmZSBpbnN0YW5jZW9mIE1hcClyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLm1hcDtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU2V0JiZlIGluc3RhbmNlb2YgU2V0KXJldHVybiB0LlpvZFBhcnNlZFR5cGUuc2V0O2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBEYXRlJiZlIGluc3RhbmNlb2YgRGF0ZSlyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLmRhdGU7cmV0dXJuIHQuWm9kUGFyc2VkVHlwZS5vYmplY3Q7ZGVmYXVsdDpyZXR1cm4gdC5ab2RQYXJzZWRUeXBlLnVua25vd259fX0sODcxOihlLHQsbik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTtsZXQgcj1uKDM0OCksbz1uKDcwOSk7dC5kZWZhdWx0PShlLHQpPT57bGV0IG47c3dpdGNoKGUuY29kZSl7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGU6bj1lLnJlY2VpdmVkPT09by5ab2RQYXJzZWRUeXBlLnVuZGVmaW5lZD9cIlJlcXVpcmVkXCI6YEV4cGVjdGVkICR7ZS5leHBlY3RlZH0sIHJlY2VpdmVkICR7ZS5yZWNlaXZlZH1gO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9saXRlcmFsOm49YEludmFsaWQgbGl0ZXJhbCB2YWx1ZSwgZXhwZWN0ZWQgJHtKU09OLnN0cmluZ2lmeShlLmV4cGVjdGVkLG8udXRpbC5qc29uU3RyaW5naWZ5UmVwbGFjZXIpfWA7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS51bnJlY29nbml6ZWRfa2V5czpuPWBVbnJlY29nbml6ZWQga2V5KHMpIGluIG9iamVjdDogJHtvLnV0aWwuam9pblZhbHVlcyhlLmtleXMsXCIsIFwiKX1gO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbjpuPVwiSW52YWxpZCBpbnB1dFwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yOm49YEludmFsaWQgZGlzY3JpbWluYXRvciB2YWx1ZS4gRXhwZWN0ZWQgJHtvLnV0aWwuam9pblZhbHVlcyhlLm9wdGlvbnMpfWA7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX2VudW1fdmFsdWU6bj1gSW52YWxpZCBlbnVtIHZhbHVlLiBFeHBlY3RlZCAke28udXRpbC5qb2luVmFsdWVzKGUub3B0aW9ucyl9LCByZWNlaXZlZCAnJHtlLnJlY2VpdmVkfSdgO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9hcmd1bWVudHM6bj1cIkludmFsaWQgZnVuY3Rpb24gYXJndW1lbnRzXCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlOm49XCJJbnZhbGlkIGZ1bmN0aW9uIHJldHVybiB0eXBlXCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5pbnZhbGlkX2RhdGU6bj1cIkludmFsaWQgZGF0ZVwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmc6XCJvYmplY3RcIj09dHlwZW9mIGUudmFsaWRhdGlvbj9cImluY2x1ZGVzXCJpbiBlLnZhbGlkYXRpb24/KG49YEludmFsaWQgaW5wdXQ6IG11c3QgaW5jbHVkZSBcIiR7ZS52YWxpZGF0aW9uLmluY2x1ZGVzfVwiYCxcIm51bWJlclwiPT10eXBlb2YgZS52YWxpZGF0aW9uLnBvc2l0aW9uJiYobj1gJHtufSBhdCBvbmUgb3IgbW9yZSBwb3NpdGlvbnMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7ZS52YWxpZGF0aW9uLnBvc2l0aW9ufWApKTpcInN0YXJ0c1dpdGhcImluIGUudmFsaWRhdGlvbj9uPWBJbnZhbGlkIGlucHV0OiBtdXN0IHN0YXJ0IHdpdGggXCIke2UudmFsaWRhdGlvbi5zdGFydHNXaXRofVwiYDpcImVuZHNXaXRoXCJpbiBlLnZhbGlkYXRpb24/bj1gSW52YWxpZCBpbnB1dDogbXVzdCBlbmQgd2l0aCBcIiR7ZS52YWxpZGF0aW9uLmVuZHNXaXRofVwiYDpvLnV0aWwuYXNzZXJ0TmV2ZXIoZS52YWxpZGF0aW9uKTpuPVwicmVnZXhcIiE9PWUudmFsaWRhdGlvbj9gSW52YWxpZCAke2UudmFsaWRhdGlvbn1gOlwiSW52YWxpZFwiO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsOm49XCJhcnJheVwiPT09ZS50eXBlP2BBcnJheSBtdXN0IGNvbnRhaW4gJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wiYXQgbGVhc3RcIjpcIm1vcmUgdGhhblwifSAke2UubWluaW11bX0gZWxlbWVudChzKWA6XCJzdHJpbmdcIj09PWUudHlwZT9gU3RyaW5nIG11c3QgY29udGFpbiAke2UuZXhhY3Q/XCJleGFjdGx5XCI6ZS5pbmNsdXNpdmU/XCJhdCBsZWFzdFwiOlwib3ZlclwifSAke2UubWluaW11bX0gY2hhcmFjdGVyKHMpYDpcIm51bWJlclwiPT09ZS50eXBlfHxcImJpZ2ludFwiPT09ZS50eXBlP2BOdW1iZXIgbXVzdCBiZSAke2UuZXhhY3Q/XCJleGFjdGx5IGVxdWFsIHRvIFwiOmUuaW5jbHVzaXZlP1wiZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFwiOlwiZ3JlYXRlciB0aGFuIFwifSR7ZS5taW5pbXVtfWA6XCJkYXRlXCI9PT1lLnR5cGU/YERhdGUgbXVzdCBiZSAke2UuZXhhY3Q/XCJleGFjdGx5IGVxdWFsIHRvIFwiOmUuaW5jbHVzaXZlP1wiZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFwiOlwiZ3JlYXRlciB0aGFuIFwifSR7bmV3IERhdGUoTnVtYmVyKGUubWluaW11bSkpfWA6XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS50b29fYmlnOm49XCJhcnJheVwiPT09ZS50eXBlP2BBcnJheSBtdXN0IGNvbnRhaW4gJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wiYXQgbW9zdFwiOlwibGVzcyB0aGFuXCJ9ICR7ZS5tYXhpbXVtfSBlbGVtZW50KHMpYDpcInN0cmluZ1wiPT09ZS50eXBlP2BTdHJpbmcgbXVzdCBjb250YWluICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cImF0IG1vc3RcIjpcInVuZGVyXCJ9ICR7ZS5tYXhpbXVtfSBjaGFyYWN0ZXIocylgOlwibnVtYmVyXCI9PT1lLnR5cGU/YE51bWJlciBtdXN0IGJlICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cImxlc3MgdGhhbiBvciBlcXVhbCB0b1wiOlwibGVzcyB0aGFuXCJ9ICR7ZS5tYXhpbXVtfWA6XCJiaWdpbnRcIj09PWUudHlwZT9gQmlnSW50IG11c3QgYmUgJHtlLmV4YWN0P1wiZXhhY3RseVwiOmUuaW5jbHVzaXZlP1wibGVzcyB0aGFuIG9yIGVxdWFsIHRvXCI6XCJsZXNzIHRoYW5cIn0gJHtlLm1heGltdW19YDpcImRhdGVcIj09PWUudHlwZT9gRGF0ZSBtdXN0IGJlICR7ZS5leGFjdD9cImV4YWN0bHlcIjplLmluY2x1c2l2ZT9cInNtYWxsZXIgdGhhbiBvciBlcXVhbCB0b1wiOlwic21hbGxlciB0aGFuXCJ9ICR7bmV3IERhdGUoTnVtYmVyKGUubWF4aW11bSkpfWA6XCJJbnZhbGlkIGlucHV0XCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5jdXN0b206bj1cIkludmFsaWQgaW5wdXRcIjticmVhaztjYXNlIHIuWm9kSXNzdWVDb2RlLmludmFsaWRfaW50ZXJzZWN0aW9uX3R5cGVzOm49XCJJbnRlcnNlY3Rpb24gcmVzdWx0cyBjb3VsZCBub3QgYmUgbWVyZ2VkXCI7YnJlYWs7Y2FzZSByLlpvZElzc3VlQ29kZS5ub3RfbXVsdGlwbGVfb2Y6bj1gTnVtYmVyIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAke2UubXVsdGlwbGVPZn1gO2JyZWFrO2Nhc2Ugci5ab2RJc3N1ZUNvZGUubm90X2Zpbml0ZTpuPVwiTnVtYmVyIG11c3QgYmUgZmluaXRlXCI7YnJlYWs7ZGVmYXVsdDpuPXQuZGVmYXVsdEVycm9yLG8udXRpbC5hc3NlcnROZXZlcihlKX1yZXR1cm57bWVzc2FnZTpufX19LDE1NTooZSx0LG4pPT57dmFyIHIsbztsZXQgYTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSx0LmRpc2NyaW1pbmF0ZWRVbmlvbj10LmRhdGU9dC5ib29sZWFuPXQuYmlnaW50PXQuYXJyYXk9dC5hbnk9dC5jb2VyY2U9dC5ab2RGaXJzdFBhcnR5VHlwZUtpbmQ9dC5sYXRlPXQuWm9kU2NoZW1hPXQuU2NoZW1hPXQuWm9kUmVhZG9ubHk9dC5ab2RQaXBlbGluZT10LlpvZEJyYW5kZWQ9dC5CUkFORD10LlpvZE5hTj10LlpvZENhdGNoPXQuWm9kRGVmYXVsdD10LlpvZE51bGxhYmxlPXQuWm9kT3B0aW9uYWw9dC5ab2RUcmFuc2Zvcm1lcj10LlpvZEVmZmVjdHM9dC5ab2RQcm9taXNlPXQuWm9kTmF0aXZlRW51bT10LlpvZEVudW09dC5ab2RMaXRlcmFsPXQuWm9kTGF6eT10LlpvZEZ1bmN0aW9uPXQuWm9kU2V0PXQuWm9kTWFwPXQuWm9kUmVjb3JkPXQuWm9kVHVwbGU9dC5ab2RJbnRlcnNlY3Rpb249dC5ab2REaXNjcmltaW5hdGVkVW5pb249dC5ab2RVbmlvbj10LlpvZE9iamVjdD10LlpvZEFycmF5PXQuWm9kVm9pZD10LlpvZE5ldmVyPXQuWm9kVW5rbm93bj10LlpvZEFueT10LlpvZE51bGw9dC5ab2RVbmRlZmluZWQ9dC5ab2RTeW1ib2w9dC5ab2REYXRlPXQuWm9kQm9vbGVhbj10LlpvZEJpZ0ludD10LlpvZE51bWJlcj10LlpvZFN0cmluZz10LlpvZFR5cGU9dm9pZCAwLHQuTkVWRVI9dC52b2lkPXQudW5rbm93bj10LnVuaW9uPXQudW5kZWZpbmVkPXQudHVwbGU9dC50cmFuc2Zvcm1lcj10LnN5bWJvbD10LnN0cmluZz10LnN0cmljdE9iamVjdD10LnNldD10LnJlY29yZD10LnByb21pc2U9dC5wcmVwcm9jZXNzPXQucGlwZWxpbmU9dC5vc3RyaW5nPXQub3B0aW9uYWw9dC5vbnVtYmVyPXQub2Jvb2xlYW49dC5vYmplY3Q9dC5udW1iZXI9dC5udWxsYWJsZT10Lm51bGw9dC5uZXZlcj10Lm5hdGl2ZUVudW09dC5uYW49dC5tYXA9dC5saXRlcmFsPXQubGF6eT10LmludGVyc2VjdGlvbj10Lmluc3RhbmNlb2Y9dC5mdW5jdGlvbj10LmVudW09dC5lZmZlY3Q9dm9pZCAwLHQuZGF0ZXRpbWVSZWdleD1JLHQuY3VzdG9tPWV2O2xldCBpPW4oMzQ4KSxsPW4oNjEpLHM9big1MzgpLGM9big4MTgpLHU9big3MDkpO2NsYXNzIGR7Y29uc3RydWN0b3IoZSx0LG4scil7dGhpcy5fY2FjaGVkUGF0aD1bXSx0aGlzLnBhcmVudD1lLHRoaXMuZGF0YT10LHRoaXMuX3BhdGg9bix0aGlzLl9rZXk9cn1nZXQgcGF0aCgpe3JldHVybiB0aGlzLl9jYWNoZWRQYXRoLmxlbmd0aHx8KEFycmF5LmlzQXJyYXkodGhpcy5fa2V5KT90aGlzLl9jYWNoZWRQYXRoLnB1c2goLi4udGhpcy5fcGF0aCwuLi50aGlzLl9rZXkpOnRoaXMuX2NhY2hlZFBhdGgucHVzaCguLi50aGlzLl9wYXRoLHRoaXMuX2tleSkpLHRoaXMuX2NhY2hlZFBhdGh9fWxldCBmPShlLHQpPT57aWYoKDAsYy5pc1ZhbGlkKSh0KSlyZXR1cm57c3VjY2VzczohMCxkYXRhOnQudmFsdWV9O2lmKCFlLmNvbW1vbi5pc3N1ZXMubGVuZ3RoKXRocm93IEVycm9yKFwiVmFsaWRhdGlvbiBmYWlsZWQgYnV0IG5vIGlzc3VlcyBkZXRlY3RlZC5cIik7cmV0dXJue3N1Y2Nlc3M6ITEsZ2V0IGVycm9yKCl7aWYodGhpcy5fZXJyb3IpcmV0dXJuIHRoaXMuX2Vycm9yO2xldCB0PW5ldyBpLlpvZEVycm9yKGUuY29tbW9uLmlzc3Vlcyk7cmV0dXJuIHRoaXMuX2Vycm9yPXQsdGhpcy5fZXJyb3J9fX07ZnVuY3Rpb24gcChlKXtpZighZSlyZXR1cm57fTtsZXR7ZXJyb3JNYXA6dCxpbnZhbGlkX3R5cGVfZXJyb3I6bixyZXF1aXJlZF9lcnJvcjpyLGRlc2NyaXB0aW9uOm99PWU7aWYodCYmKG58fHIpKXRocm93IEVycm9yKCdDYW5cXCd0IHVzZSBcImludmFsaWRfdHlwZV9lcnJvclwiIG9yIFwicmVxdWlyZWRfZXJyb3JcIiBpbiBjb25qdW5jdGlvbiB3aXRoIGN1c3RvbSBlcnJvciBtYXAuJyk7cmV0dXJuIHQ/e2Vycm9yTWFwOnQsZGVzY3JpcHRpb246b306e2Vycm9yTWFwOih0LG8pPT57bGV0e21lc3NhZ2U6YX09ZTtyZXR1cm5cImludmFsaWRfZW51bV92YWx1ZVwiPT09dC5jb2RlP3ttZXNzYWdlOmE/P28uZGVmYXVsdEVycm9yfTp2b2lkIDA9PT1vLmRhdGE/e21lc3NhZ2U6YT8/cj8/by5kZWZhdWx0RXJyb3J9OlwiaW52YWxpZF90eXBlXCIhPT10LmNvZGU/e21lc3NhZ2U6by5kZWZhdWx0RXJyb3J9OnttZXNzYWdlOmE/P24/P28uZGVmYXVsdEVycm9yfX0sZGVzY3JpcHRpb246b319Y2xhc3MgaHtnZXQgZGVzY3JpcHRpb24oKXtyZXR1cm4gdGhpcy5fZGVmLmRlc2NyaXB0aW9ufV9nZXRUeXBlKGUpe3JldHVybigwLHUuZ2V0UGFyc2VkVHlwZSkoZS5kYXRhKX1fZ2V0T3JSZXR1cm5DdHgoZSx0KXtyZXR1cm4gdHx8e2NvbW1vbjplLnBhcmVudC5jb21tb24sZGF0YTplLmRhdGEscGFyc2VkVHlwZTooMCx1LmdldFBhcnNlZFR5cGUpKGUuZGF0YSksc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhdGg6ZS5wYXRoLHBhcmVudDplLnBhcmVudH19X3Byb2Nlc3NJbnB1dFBhcmFtcyhlKXtyZXR1cm57c3RhdHVzOm5ldyBjLlBhcnNlU3RhdHVzLGN0eDp7Y29tbW9uOmUucGFyZW50LmNvbW1vbixkYXRhOmUuZGF0YSxwYXJzZWRUeXBlOigwLHUuZ2V0UGFyc2VkVHlwZSkoZS5kYXRhKSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGF0aDplLnBhdGgscGFyZW50OmUucGFyZW50fX19X3BhcnNlU3luYyhlKXtsZXQgdD10aGlzLl9wYXJzZShlKTtpZigoMCxjLmlzQXN5bmMpKHQpKXRocm93IEVycm9yKFwiU3luY2hyb25vdXMgcGFyc2UgZW5jb3VudGVyZWQgcHJvbWlzZS5cIik7cmV0dXJuIHR9X3BhcnNlQXN5bmMoZSl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9wYXJzZShlKSl9cGFyc2UoZSx0KXtsZXQgbj10aGlzLnNhZmVQYXJzZShlLHQpO2lmKG4uc3VjY2VzcylyZXR1cm4gbi5kYXRhO3Rocm93IG4uZXJyb3J9c2FmZVBhcnNlKGUsdCl7bGV0IG49e2NvbW1vbjp7aXNzdWVzOltdLGFzeW5jOnQ/LmFzeW5jPz8hMSxjb250ZXh0dWFsRXJyb3JNYXA6dD8uZXJyb3JNYXB9LHBhdGg6dD8ucGF0aHx8W10sc2NoZW1hRXJyb3JNYXA6dGhpcy5fZGVmLmVycm9yTWFwLHBhcmVudDpudWxsLGRhdGE6ZSxwYXJzZWRUeXBlOigwLHUuZ2V0UGFyc2VkVHlwZSkoZSl9LHI9dGhpcy5fcGFyc2VTeW5jKHtkYXRhOmUscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm4gZihuLHIpfVwifnZhbGlkYXRlXCIoZSl7bGV0IHQ9e2NvbW1vbjp7aXNzdWVzOltdLGFzeW5jOiEhdGhpc1tcIn5zdGFuZGFyZFwiXS5hc3luY30scGF0aDpbXSxzY2hlbWFFcnJvck1hcDp0aGlzLl9kZWYuZXJyb3JNYXAscGFyZW50Om51bGwsZGF0YTplLHBhcnNlZFR5cGU6KDAsdS5nZXRQYXJzZWRUeXBlKShlKX07aWYoIXRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmMpdHJ5e2xldCBuPXRoaXMuX3BhcnNlU3luYyh7ZGF0YTplLHBhdGg6W10scGFyZW50OnR9KTtyZXR1cm4oMCxjLmlzVmFsaWQpKG4pP3t2YWx1ZTpuLnZhbHVlfTp7aXNzdWVzOnQuY29tbW9uLmlzc3Vlc319Y2F0Y2goZSl7ZT8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoXCJlbmNvdW50ZXJlZFwiKSYmKHRoaXNbXCJ+c3RhbmRhcmRcIl0uYXN5bmM9ITApLHQuY29tbW9uPXtpc3N1ZXM6W10sYXN5bmM6ITB9fXJldHVybiB0aGlzLl9wYXJzZUFzeW5jKHtkYXRhOmUscGF0aDpbXSxwYXJlbnQ6dH0pLnRoZW4oZT0+KDAsYy5pc1ZhbGlkKShlKT97dmFsdWU6ZS52YWx1ZX06e2lzc3Vlczp0LmNvbW1vbi5pc3N1ZXN9KX1hc3luYyBwYXJzZUFzeW5jKGUsdCl7bGV0IG49YXdhaXQgdGhpcy5zYWZlUGFyc2VBc3luYyhlLHQpO2lmKG4uc3VjY2VzcylyZXR1cm4gbi5kYXRhO3Rocm93IG4uZXJyb3J9YXN5bmMgc2FmZVBhcnNlQXN5bmMoZSx0KXtsZXQgbj17Y29tbW9uOntpc3N1ZXM6W10sY29udGV4dHVhbEVycm9yTWFwOnQ/LmVycm9yTWFwLGFzeW5jOiEwfSxwYXRoOnQ/LnBhdGh8fFtdLHNjaGVtYUVycm9yTWFwOnRoaXMuX2RlZi5lcnJvck1hcCxwYXJlbnQ6bnVsbCxkYXRhOmUscGFyc2VkVHlwZTooMCx1LmdldFBhcnNlZFR5cGUpKGUpfSxyPXRoaXMuX3BhcnNlKHtkYXRhOmUscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm4gZihuLGF3YWl0ICgoMCxjLmlzQXN5bmMpKHIpP3I6UHJvbWlzZS5yZXNvbHZlKHIpKSl9cmVmaW5lKGUsdCl7cmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoKG4scik9PntsZXQgbz1lKG4pLGE9KCk9PnIuYWRkSXNzdWUoe2NvZGU6aS5ab2RJc3N1ZUNvZGUuY3VzdG9tLC4uLlwic3RyaW5nXCI9PXR5cGVvZiB0fHx2b2lkIDA9PT10P3ttZXNzYWdlOnR9OlwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChuKTp0fSk7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFByb21pc2UmJm8gaW5zdGFuY2VvZiBQcm9taXNlP28udGhlbihlPT4hIWV8fChhKCksITEpKTohIW98fChhKCksITEpfSl9cmVmaW5lbWVudChlLHQpe3JldHVybiB0aGlzLl9yZWZpbmVtZW50KChuLHIpPT4hIWUobil8fChyLmFkZElzc3VlKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChuLHIpOnQpLCExKSl9X3JlZmluZW1lbnQoZSl7cmV0dXJuIG5ldyBlcyh7c2NoZW1hOnRoaXMsdHlwZU5hbWU6ci5ab2RFZmZlY3RzLGVmZmVjdDp7dHlwZTpcInJlZmluZW1lbnRcIixyZWZpbmVtZW50OmV9fSl9c3VwZXJSZWZpbmUoZSl7cmV0dXJuIHRoaXMuX3JlZmluZW1lbnQoZSl9Y29uc3RydWN0b3IoZSl7dGhpcy5zcGE9dGhpcy5zYWZlUGFyc2VBc3luYyx0aGlzLl9kZWY9ZSx0aGlzLnBhcnNlPXRoaXMucGFyc2UuYmluZCh0aGlzKSx0aGlzLnNhZmVQYXJzZT10aGlzLnNhZmVQYXJzZS5iaW5kKHRoaXMpLHRoaXMucGFyc2VBc3luYz10aGlzLnBhcnNlQXN5bmMuYmluZCh0aGlzKSx0aGlzLnNhZmVQYXJzZUFzeW5jPXRoaXMuc2FmZVBhcnNlQXN5bmMuYmluZCh0aGlzKSx0aGlzLnNwYT10aGlzLnNwYS5iaW5kKHRoaXMpLHRoaXMucmVmaW5lPXRoaXMucmVmaW5lLmJpbmQodGhpcyksdGhpcy5yZWZpbmVtZW50PXRoaXMucmVmaW5lbWVudC5iaW5kKHRoaXMpLHRoaXMuc3VwZXJSZWZpbmU9dGhpcy5zdXBlclJlZmluZS5iaW5kKHRoaXMpLHRoaXMub3B0aW9uYWw9dGhpcy5vcHRpb25hbC5iaW5kKHRoaXMpLHRoaXMubnVsbGFibGU9dGhpcy5udWxsYWJsZS5iaW5kKHRoaXMpLHRoaXMubnVsbGlzaD10aGlzLm51bGxpc2guYmluZCh0aGlzKSx0aGlzLmFycmF5PXRoaXMuYXJyYXkuYmluZCh0aGlzKSx0aGlzLnByb21pc2U9dGhpcy5wcm9taXNlLmJpbmQodGhpcyksdGhpcy5vcj10aGlzLm9yLmJpbmQodGhpcyksdGhpcy5hbmQ9dGhpcy5hbmQuYmluZCh0aGlzKSx0aGlzLnRyYW5zZm9ybT10aGlzLnRyYW5zZm9ybS5iaW5kKHRoaXMpLHRoaXMuYnJhbmQ9dGhpcy5icmFuZC5iaW5kKHRoaXMpLHRoaXMuZGVmYXVsdD10aGlzLmRlZmF1bHQuYmluZCh0aGlzKSx0aGlzLmNhdGNoPXRoaXMuY2F0Y2guYmluZCh0aGlzKSx0aGlzLmRlc2NyaWJlPXRoaXMuZGVzY3JpYmUuYmluZCh0aGlzKSx0aGlzLnBpcGU9dGhpcy5waXBlLmJpbmQodGhpcyksdGhpcy5yZWFkb25seT10aGlzLnJlYWRvbmx5LmJpbmQodGhpcyksdGhpcy5pc051bGxhYmxlPXRoaXMuaXNOdWxsYWJsZS5iaW5kKHRoaXMpLHRoaXMuaXNPcHRpb25hbD10aGlzLmlzT3B0aW9uYWwuYmluZCh0aGlzKSx0aGlzW1wifnN0YW5kYXJkXCJdPXt2ZXJzaW9uOjEsdmVuZG9yOlwiem9kXCIsdmFsaWRhdGU6ZT0+dGhpc1tcIn52YWxpZGF0ZVwiXShlKX19b3B0aW9uYWwoKXtyZXR1cm4gZWMuY3JlYXRlKHRoaXMsdGhpcy5fZGVmKX1udWxsYWJsZSgpe3JldHVybiBldS5jcmVhdGUodGhpcyx0aGlzLl9kZWYpfW51bGxpc2goKXtyZXR1cm4gdGhpcy5udWxsYWJsZSgpLm9wdGlvbmFsKCl9YXJyYXkoKXtyZXR1cm4gVi5jcmVhdGUodGhpcyl9cHJvbWlzZSgpe3JldHVybiBlbC5jcmVhdGUodGhpcyx0aGlzLl9kZWYpfW9yKGUpe3JldHVybiBXLmNyZWF0ZShbdGhpcyxlXSx0aGlzLl9kZWYpfWFuZChlKXtyZXR1cm4gWC5jcmVhdGUodGhpcyxlLHRoaXMuX2RlZil9dHJhbnNmb3JtKGUpe3JldHVybiBuZXcgZXMoey4uLnAodGhpcy5fZGVmKSxzY2hlbWE6dGhpcyx0eXBlTmFtZTpyLlpvZEVmZmVjdHMsZWZmZWN0Ont0eXBlOlwidHJhbnNmb3JtXCIsdHJhbnNmb3JtOmV9fSl9ZGVmYXVsdChlKXtyZXR1cm4gbmV3IGVkKHsuLi5wKHRoaXMuX2RlZiksaW5uZXJUeXBlOnRoaXMsZGVmYXVsdFZhbHVlOlwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTooKT0+ZSx0eXBlTmFtZTpyLlpvZERlZmF1bHR9KX1icmFuZCgpe3JldHVybiBuZXcgZWgoe3R5cGVOYW1lOnIuWm9kQnJhbmRlZCx0eXBlOnRoaXMsLi4ucCh0aGlzLl9kZWYpfSl9Y2F0Y2goZSl7cmV0dXJuIG5ldyBlZih7Li4ucCh0aGlzLl9kZWYpLGlubmVyVHlwZTp0aGlzLGNhdGNoVmFsdWU6XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lOigpPT5lLHR5cGVOYW1lOnIuWm9kQ2F0Y2h9KX1kZXNjcmliZShlKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3Ioey4uLnRoaXMuX2RlZixkZXNjcmlwdGlvbjplfSl9cGlwZShlKXtyZXR1cm4gZW0uY3JlYXRlKHRoaXMsZSl9cmVhZG9ubHkoKXtyZXR1cm4gZWcuY3JlYXRlKHRoaXMpfWlzT3B0aW9uYWwoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2Uodm9pZCAwKS5zdWNjZXNzfWlzTnVsbGFibGUoKXtyZXR1cm4gdGhpcy5zYWZlUGFyc2UobnVsbCkuc3VjY2Vzc319dC5ab2RUeXBlPWgsdC5TY2hlbWE9aCx0LlpvZFNjaGVtYT1oO2xldCBtPS9eY1teXFxzLV17OCx9JC9pLGc9L15bMC05YS16XSskLyx5PS9eWzAtOUEtSEpLTU5QLVRWLVpdezI2fSQvaSx2PS9eWzAtOWEtZkEtRl17OH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17NH1cXGItWzAtOWEtZkEtRl17MTJ9JC9pLGI9L15bYS16MC05Xy1dezIxfSQvaSxBPS9eW0EtWmEtejAtOS1fXStcXC5bQS1aYS16MC05LV9dK1xcLltBLVphLXowLTktX10qJC8seD0vXlstK10/UCg/ISQpKD86KD86Wy0rXT9cXGQrWSl8KD86Wy0rXT9cXGQrWy4sXVxcZCtZJCkpPyg/Oig/OlstK10/XFxkK00pfCg/OlstK10/XFxkK1suLF1cXGQrTSQpKT8oPzooPzpbLStdP1xcZCtXKXwoPzpbLStdP1xcZCtbLixdXFxkK1ckKSk/KD86KD86Wy0rXT9cXGQrRCl8KD86Wy0rXT9cXGQrWy4sXVxcZCtEJCkpPyg/OlQoPz1bXFxkKy1dKSg/Oig/OlstK10/XFxkK0gpfCg/OlstK10/XFxkK1suLF1cXGQrSCQpKT8oPzooPzpbLStdP1xcZCtNKXwoPzpbLStdP1xcZCtbLixdXFxkK00kKSk/KD86Wy0rXT9cXGQrKD86Wy4sXVxcZCspP1MpPyk/PyQvLHc9L14oPyFcXC4pKD8hLipcXC5cXC4pKFtBLVowLTlfJytcXC1cXC5dKilbQS1aMC05XystXUAoW0EtWjAtOV1bQS1aMC05XFwtXSpcXC4pK1tBLVpdezIsfSQvaSxDPS9eKD86KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLil7M30oPzoyNVswLTVdfDJbMC00XVswLTldfDFbMC05XVswLTldfFsxLTldWzAtOV18WzAtOV0pJC8sXz0vXig/Oig/OjI1WzAtNV18MlswLTRdWzAtOV18MVswLTldWzAtOV18WzEtOV1bMC05XXxbMC05XSlcXC4pezN9KD86MjVbMC01XXwyWzAtNF1bMC05XXwxWzAtOV1bMC05XXxbMS05XVswLTldfFswLTldKVxcLygzWzAtMl18WzEyXT9bMC05XSkkLyxrPS9eKChbMC05YS1mQS1GXXsxLDR9Oil7Nyw3fVswLTlhLWZBLUZdezEsNH18KFswLTlhLWZBLUZdezEsNH06KXsxLDd9OnwoWzAtOWEtZkEtRl17MSw0fTopezEsNn06WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsNX0oOlswLTlhLWZBLUZdezEsNH0pezEsMn18KFswLTlhLWZBLUZdezEsNH06KXsxLDR9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDN9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwzfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsMn0oOlswLTlhLWZBLUZdezEsNH0pezEsNX18WzAtOWEtZkEtRl17MSw0fTooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDZ9KXw6KCg6WzAtOWEtZkEtRl17MSw0fSl7MSw3fXw6KXxmZTgwOig6WzAtOWEtZkEtRl17MCw0fSl7MCw0fSVbMC05YS16QS1aXXsxLH18OjooZmZmZig6MHsxLDR9KXswLDF9Oil7MCwxfSgoMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pXFwuKXszLDN9KDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH06KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pKSQvLEU9L14oKFswLTlhLWZBLUZdezEsNH06KXs3LDd9WzAtOWEtZkEtRl17MSw0fXwoWzAtOWEtZkEtRl17MSw0fTopezEsN306fChbMC05YS1mQS1GXXsxLDR9Oil7MSw2fTpbMC05YS1mQS1GXXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSw1fSg6WzAtOWEtZkEtRl17MSw0fSl7MSwyfXwoWzAtOWEtZkEtRl17MSw0fTopezEsNH0oOlswLTlhLWZBLUZdezEsNH0pezEsM318KFswLTlhLWZBLUZdezEsNH06KXsxLDN9KDpbMC05YS1mQS1GXXsxLDR9KXsxLDR9fChbMC05YS1mQS1GXXsxLDR9Oil7MSwyfSg6WzAtOWEtZkEtRl17MSw0fSl7MSw1fXxbMC05YS1mQS1GXXsxLDR9OigoOlswLTlhLWZBLUZdezEsNH0pezEsNn0pfDooKDpbMC05YS1mQS1GXXsxLDR9KXsxLDd9fDopfGZlODA6KDpbMC05YS1mQS1GXXswLDR9KXswLDR9JVswLTlhLXpBLVpdezEsfXw6OihmZmZmKDowezEsNH0pezAsMX06KXswLDF9KCgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSlcXC4pezMsM30oMjVbMC01XXwoMlswLTRdfDF7MCwxfVswLTldKXswLDF9WzAtOV0pfChbMC05YS1mQS1GXXsxLDR9Oil7MSw0fTooKDI1WzAtNV18KDJbMC00XXwxezAsMX1bMC05XSl7MCwxfVswLTldKVxcLil7MywzfSgyNVswLTVdfCgyWzAtNF18MXswLDF9WzAtOV0pezAsMX1bMC05XSkpXFwvKDEyWzAtOF18MVswMV1bMC05XXxbMS05XT9bMC05XSkkLyxqPS9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLyxTPS9eKFswLTlhLXpBLVotX117NH0pKigoWzAtOWEtekEtWi1fXXsyfSg9PSk/KXwoWzAtOWEtekEtWi1fXXszfSg9KT8pKT8kLyxPPVwiKChcXFxcZFxcXFxkWzI0NjhdWzA0OF18XFxcXGRcXFxcZFsxMzU3OV1bMjZdfFxcXFxkXFxcXGQwWzQ4XXxbMDI0NjhdWzA0OF0wMHxbMTM1NzldWzI2XTAwKS0wMi0yOXxcXFxcZHs0fS0oKDBbMTM1NzhdfDFbMDJdKS0oMFsxLTldfFsxMl1cXFxcZHwzWzAxXSl8KDBbNDY5XXwxMSktKDBbMS05XXxbMTJdXFxcXGR8MzApfCgwMiktKDBbMS05XXwxXFxcXGR8MlswLThdKSkpXCIsQj1SZWdFeHAoYF4ke099JGApO2Z1bmN0aW9uIFAoZSl7bGV0IHQ9XCJbMC01XVxcXFxkXCI7ZS5wcmVjaXNpb24/dD1gJHt0fVxcXFwuXFxcXGR7JHtlLnByZWNpc2lvbn19YDpudWxsPT1lLnByZWNpc2lvbiYmKHQ9YCR7dH0oXFxcXC5cXFxcZCspP2ApO2xldCBuPWUucHJlY2lzaW9uP1wiK1wiOlwiP1wiO3JldHVybmAoWzAxXVxcXFxkfDJbMC0zXSk6WzAtNV1cXFxcZCg6JHt0fSkke259YH1mdW5jdGlvbiBJKGUpe2xldCB0PWAke099VCR7UChlKX1gLG49W107cmV0dXJuIG4ucHVzaChlLmxvY2FsP1wiWj9cIjpcIlpcIiksZS5vZmZzZXQmJm4ucHVzaChcIihbKy1dXFxcXGR7Mn06P1xcXFxkezJ9KVwiKSx0PWAke3R9KCR7bi5qb2luKFwifFwiKX0pYCxSZWdFeHAoYF4ke3R9JGApfWNsYXNzIHogZXh0ZW5kcyBoe19wYXJzZShlKXt2YXIgdCxuLHIsbztsZXQgbDtpZih0aGlzLl9kZWYuY29lcmNlJiYoZS5kYXRhPVN0cmluZyhlLmRhdGEpKSx0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLnN0cmluZyl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLnN0cmluZyxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9bGV0IHM9bmV3IGMuUGFyc2VTdGF0dXM7Zm9yKGxldCBkIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoXCJtaW5cIj09PWQua2luZCllLmRhdGEubGVuZ3RoPGQudmFsdWUmJihsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTpkLnZhbHVlLHR5cGU6XCJzdHJpbmdcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJtYXhcIj09PWQua2luZCllLmRhdGEubGVuZ3RoPmQudmFsdWUmJihsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1heGltdW06ZC52YWx1ZSx0eXBlOlwic3RyaW5nXCIsaW5jbHVzaXZlOiEwLGV4YWN0OiExLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwibGVuZ3RoXCI9PT1kLmtpbmQpe2xldCB0PWUuZGF0YS5sZW5ndGg+ZC52YWx1ZSxuPWUuZGF0YS5sZW5ndGg8ZC52YWx1ZTsodHx8bikmJihsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksdD8oMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsbWF4aW11bTpkLnZhbHVlLHR5cGU6XCJzdHJpbmdcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITAsbWVzc2FnZTpkLm1lc3NhZ2V9KTpuJiYoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOmQudmFsdWUsdHlwZTpcInN0cmluZ1wiLGluY2x1c2l2ZTohMCxleGFjdDohMCxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSl9ZWxzZSBpZihcImVtYWlsXCI9PT1kLmtpbmQpdy50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImVtYWlsXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcImVtb2ppXCI9PT1kLmtpbmQpYXx8KGE9UmVnRXhwKFwiXihcXFxccHtFeHRlbmRlZF9QaWN0b2dyYXBoaWN9fFxcXFxwe0Vtb2ppX0NvbXBvbmVudH0pKyRcIixcInVcIikpLGEudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJlbW9qaVwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJ1dWlkXCI9PT1kLmtpbmQpdi50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcInV1aWRcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwibmFub2lkXCI9PT1kLmtpbmQpYi50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcIm5hbm9pZFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpO2Vsc2UgaWYoXCJjdWlkXCI9PT1kLmtpbmQpbS50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImN1aWRcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwiY3VpZDJcIj09PWQua2luZClnLnRlc3QoZS5kYXRhKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiY3VpZDJcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTtlbHNlIGlmKFwidWxpZFwiPT09ZC5raW5kKXkudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJ1bGlkXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk7ZWxzZSBpZihcInVybFwiPT09ZC5raW5kKXRyeXtuZXcgVVJMKGUuZGF0YSl9Y2F0Y2h7bD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJ1cmxcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpfWVsc2VcInJlZ2V4XCI9PT1kLmtpbmQ/KGQucmVnZXgubGFzdEluZGV4PTAsZC5yZWdleC50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcInJlZ2V4XCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSkpOlwidHJpbVwiPT09ZC5raW5kP2UuZGF0YT1lLmRhdGEudHJpbSgpOlwiaW5jbHVkZXNcIj09PWQua2luZD9lLmRhdGEuaW5jbHVkZXMoZC52YWx1ZSxkLnBvc2l0aW9uKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e2luY2x1ZGVzOmQudmFsdWUscG9zaXRpb246ZC5wb3NpdGlvbn0sbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwidG9Mb3dlckNhc2VcIj09PWQua2luZD9lLmRhdGE9ZS5kYXRhLnRvTG93ZXJDYXNlKCk6XCJ0b1VwcGVyQ2FzZVwiPT09ZC5raW5kP2UuZGF0YT1lLmRhdGEudG9VcHBlckNhc2UoKTpcInN0YXJ0c1dpdGhcIj09PWQua2luZD9lLmRhdGEuc3RhcnRzV2l0aChkLnZhbHVlKXx8KGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLHZhbGlkYXRpb246e3N0YXJ0c1dpdGg6ZC52YWx1ZX0sbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiZW5kc1dpdGhcIj09PWQua2luZD9lLmRhdGEuZW5kc1dpdGgoZC52YWx1ZSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOntlbmRzV2l0aDpkLnZhbHVlfSxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJkYXRldGltZVwiPT09ZC5raW5kP0koZCkudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjpcImRhdGV0aW1lXCIsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiZGF0ZVwiPT09ZC5raW5kP0IudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsdmFsaWRhdGlvbjpcImRhdGVcIixtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJ0aW1lXCI9PT1kLmtpbmQ/UmVnRXhwKGBeJHtQKGQpfSRgKS50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyx2YWxpZGF0aW9uOlwidGltZVwiLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImR1cmF0aW9uXCI9PT1kLmtpbmQ/eC50ZXN0KGUuZGF0YSl8fChsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImR1cmF0aW9uXCIsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3N0cmluZyxtZXNzYWdlOmQubWVzc2FnZX0pLHMuZGlydHkoKSk6XCJpcFwiPT09ZC5raW5kPyh0PWUuZGF0YSwhKChcInY0XCI9PT0obj1kLnZlcnNpb24pfHwhbikmJkMudGVzdCh0KXx8KFwidjZcIj09PW58fCFuKSYmay50ZXN0KHQpKSYmMSYmKGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiaXBcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKSk6XCJqd3RcIj09PWQua2luZD8hZnVuY3Rpb24oZSx0KXtpZighQS50ZXN0KGUpKXJldHVybiExO3RyeXtsZXRbbl09ZS5zcGxpdChcIi5cIik7aWYoIW4pcmV0dXJuITE7bGV0IHI9bi5yZXBsYWNlKC8tL2csXCIrXCIpLnJlcGxhY2UoL18vZyxcIi9cIikucGFkRW5kKG4ubGVuZ3RoKyg0LW4ubGVuZ3RoJTQpJTQsXCI9XCIpLG89SlNPTi5wYXJzZShhdG9iKHIpKTtpZihcIm9iamVjdFwiIT10eXBlb2Ygb3x8bnVsbD09PW98fFwidHlwXCJpbiBvJiZvPy50eXAhPT1cIkpXVFwifHwhby5hbGd8fHQmJm8uYWxnIT09dClyZXR1cm4hMTtyZXR1cm4hMH1jYXRjaHtyZXR1cm4hMX19KGUuZGF0YSxkLmFsZykmJihsPXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsbCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobCx7dmFsaWRhdGlvbjpcImp3dFwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpOlwiY2lkclwiPT09ZC5raW5kPyhyPWUuZGF0YSwhKChcInY0XCI9PT0obz1kLnZlcnNpb24pfHwhbykmJl8udGVzdChyKXx8KFwidjZcIj09PW98fCFvKSYmRS50ZXN0KHIpKSYmMSYmKGw9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSxsKSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KShsLHt2YWxpZGF0aW9uOlwiY2lkclwiLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsbWVzc2FnZTpkLm1lc3NhZ2V9KSxzLmRpcnR5KCkpKTpcImJhc2U2NFwiPT09ZC5raW5kP2oudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJiYXNlNjRcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTpcImJhc2U2NHVybFwiPT09ZC5raW5kP1MudGVzdChlLmRhdGEpfHwobD10aGlzLl9nZXRPclJldHVybkN0eChlLGwpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKGwse3ZhbGlkYXRpb246XCJiYXNlNjR1cmxcIixjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfc3RyaW5nLG1lc3NhZ2U6ZC5tZXNzYWdlfSkscy5kaXJ0eSgpKTp1LnV0aWwuYXNzZXJ0TmV2ZXIoZCk7cmV0dXJue3N0YXR1czpzLnZhbHVlLHZhbHVlOmUuZGF0YX19X3JlZ2V4KGUsdCxuKXtyZXR1cm4gdGhpcy5yZWZpbmVtZW50KHQ9PmUudGVzdCh0KSx7dmFsaWRhdGlvbjp0LGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9zdHJpbmcsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoobil9KX1fYWRkQ2hlY2soZSl7cmV0dXJuIG5ldyB6KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLGVdfSl9ZW1haWwoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZW1haWxcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfXVybChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJ1cmxcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWVtb2ppKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImVtb2ppXCIsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZSl9KX11dWlkKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcInV1aWRcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfW5hbm9pZChlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJuYW5vaWRcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWN1aWQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiY3VpZFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9Y3VpZDIoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiY3VpZDJcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfXVsaWQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwidWxpZFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9YmFzZTY0KGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImJhc2U2NFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9YmFzZTY0dXJsKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImJhc2U2NHVybFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9and0KGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImp3dFwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9aXAoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiaXBcIiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaihlKX0pfWNpZHIoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiY2lkclwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9ZGF0ZXRpbWUoZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/dGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkYXRldGltZVwiLHByZWNpc2lvbjpudWxsLG9mZnNldDohMSxsb2NhbDohMSxtZXNzYWdlOmV9KTp0aGlzLl9hZGRDaGVjayh7a2luZDpcImRhdGV0aW1lXCIscHJlY2lzaW9uOnZvaWQgMD09PWU/LnByZWNpc2lvbj9udWxsOmU/LnByZWNpc2lvbixvZmZzZXQ6ZT8ub2Zmc2V0Pz8hMSxsb2NhbDplPy5sb2NhbD8/ITEsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZT8ubWVzc2FnZSl9KX1kYXRlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImRhdGVcIixtZXNzYWdlOmV9KX10aW1lKGUpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiBlP3RoaXMuX2FkZENoZWNrKHtraW5kOlwidGltZVwiLHByZWNpc2lvbjpudWxsLG1lc3NhZ2U6ZX0pOnRoaXMuX2FkZENoZWNrKHtraW5kOlwidGltZVwiLHByZWNpc2lvbjp2b2lkIDA9PT1lPy5wcmVjaXNpb24/bnVsbDplPy5wcmVjaXNpb24sLi4ucy5lcnJvclV0aWwuZXJyVG9PYmooZT8ubWVzc2FnZSl9KX1kdXJhdGlvbihlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJkdXJhdGlvblwiLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKGUpfSl9cmVnZXgoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJyZWdleFwiLHJlZ2V4OmUsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodCl9KX1pbmNsdWRlcyhlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcImluY2x1ZGVzXCIsdmFsdWU6ZSxwb3NpdGlvbjp0Py5wb3NpdGlvbiwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0Py5tZXNzYWdlKX0pfXN0YXJ0c1dpdGgoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJzdGFydHNXaXRoXCIsdmFsdWU6ZSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0KX0pfWVuZHNXaXRoKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiZW5kc1dpdGhcIix2YWx1ZTplLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQpfSl9bWluKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6ZSwuLi5zLmVycm9yVXRpbC5lcnJUb09iaih0KX0pfW1heChlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLHZhbHVlOmUsLi4ucy5lcnJvclV0aWwuZXJyVG9PYmoodCl9KX1sZW5ndGgoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJsZW5ndGhcIix2YWx1ZTplLC4uLnMuZXJyb3JVdGlsLmVyclRvT2JqKHQpfSl9bm9uZW1wdHkoZSl7cmV0dXJuIHRoaXMubWluKDEscy5lcnJvclV0aWwuZXJyVG9PYmooZSkpfXRyaW0oKXtyZXR1cm4gbmV3IHooey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6XCJ0cmltXCJ9XX0pfXRvTG93ZXJDYXNlKCl7cmV0dXJuIG5ldyB6KHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOlwidG9Mb3dlckNhc2VcIn1dfSl9dG9VcHBlckNhc2UoKXtyZXR1cm4gbmV3IHooey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6XCJ0b1VwcGVyQ2FzZVwifV19KX1nZXQgaXNEYXRldGltZSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiZGF0ZXRpbWVcIj09PWUua2luZCl9Z2V0IGlzRGF0ZSgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiZGF0ZVwiPT09ZS5raW5kKX1nZXQgaXNUaW1lKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJ0aW1lXCI9PT1lLmtpbmQpfWdldCBpc0R1cmF0aW9uKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJkdXJhdGlvblwiPT09ZS5raW5kKX1nZXQgaXNFbWFpbCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiZW1haWxcIj09PWUua2luZCl9Z2V0IGlzVVJMKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJ1cmxcIj09PWUua2luZCl9Z2V0IGlzRW1vamkoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImVtb2ppXCI9PT1lLmtpbmQpfWdldCBpc1VVSUQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cInV1aWRcIj09PWUua2luZCl9Z2V0IGlzTkFOT0lEKCl7cmV0dXJuISF0aGlzLl9kZWYuY2hlY2tzLmZpbmQoZT0+XCJuYW5vaWRcIj09PWUua2luZCl9Z2V0IGlzQ1VJRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiY3VpZFwiPT09ZS5raW5kKX1nZXQgaXNDVUlEMigpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiY3VpZDJcIj09PWUua2luZCl9Z2V0IGlzVUxJRCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwidWxpZFwiPT09ZS5raW5kKX1nZXQgaXNJUCgpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiaXBcIj09PWUua2luZCl9Z2V0IGlzQ0lEUigpe3JldHVybiEhdGhpcy5fZGVmLmNoZWNrcy5maW5kKGU9PlwiY2lkclwiPT09ZS5raW5kKX1nZXQgaXNCYXNlNjQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImJhc2U2NFwiPT09ZS5raW5kKX1nZXQgaXNCYXNlNjR1cmwoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImJhc2U2NHVybFwiPT09ZS5raW5kKX1nZXQgbWluTGVuZ3RoKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1pblwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU+ZSkmJihlPXQudmFsdWUpO3JldHVybiBlfWdldCBtYXhMZW5ndGgoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWF4XCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZTxlKSYmKGU9dC52YWx1ZSk7cmV0dXJuIGV9fXQuWm9kU3RyaW5nPXosei5jcmVhdGU9ZT0+bmV3IHooe2NoZWNrczpbXSx0eXBlTmFtZTpyLlpvZFN0cmluZyxjb2VyY2U6ZT8uY29lcmNlPz8hMSwuLi5wKGUpfSk7Y2xhc3MgVCBleHRlbmRzIGh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMubWluPXRoaXMuZ3RlLHRoaXMubWF4PXRoaXMubHRlLHRoaXMuc3RlcD10aGlzLm11bHRpcGxlT2Z9X3BhcnNlKGUpe2xldCB0O2lmKHRoaXMuX2RlZi5jb2VyY2UmJihlLmRhdGE9TnVtYmVyKGUuZGF0YSkpLHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUubnVtYmVyKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUubnVtYmVyLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1sZXQgbj1uZXcgYy5QYXJzZVN0YXR1cztmb3IobGV0IHIgb2YgdGhpcy5fZGVmLmNoZWNrcylcImludFwiPT09ci5raW5kP3UudXRpbC5pc0ludGVnZXIoZS5kYXRhKXx8KHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDpcImludGVnZXJcIixyZWNlaXZlZDpcImZsb2F0XCIsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOlwibWluXCI9PT1yLmtpbmQ/KHIuaW5jbHVzaXZlP2UuZGF0YTxyLnZhbHVlOmUuZGF0YTw9ci52YWx1ZSkmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fc21hbGwsbWluaW11bTpyLnZhbHVlLHR5cGU6XCJudW1iZXJcIixpbmNsdXNpdmU6ci5pbmNsdXNpdmUsZXhhY3Q6ITEsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOlwibWF4XCI9PT1yLmtpbmQ/KHIuaW5jbHVzaXZlP2UuZGF0YT5yLnZhbHVlOmUuZGF0YT49ci52YWx1ZSkmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1heGltdW06ci52YWx1ZSx0eXBlOlwibnVtYmVyXCIsaW5jbHVzaXZlOnIuaW5jbHVzaXZlLGV4YWN0OiExLG1lc3NhZ2U6ci5tZXNzYWdlfSksbi5kaXJ0eSgpKTpcIm11bHRpcGxlT2ZcIj09PXIua2luZD8wIT09ZnVuY3Rpb24oZSx0KXtsZXQgbj0oZS50b1N0cmluZygpLnNwbGl0KFwiLlwiKVsxXXx8XCJcIikubGVuZ3RoLHI9KHQudG9TdHJpbmcoKS5zcGxpdChcIi5cIilbMV18fFwiXCIpLmxlbmd0aCxvPW4+cj9uOnI7cmV0dXJuIE51bWJlci5wYXJzZUludChlLnRvRml4ZWQobykucmVwbGFjZShcIi5cIixcIlwiKSklTnVtYmVyLnBhcnNlSW50KHQudG9GaXhlZChvKS5yZXBsYWNlKFwiLlwiLFwiXCIpKS8xMCoqb30oZS5kYXRhLHIudmFsdWUpJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6ci52YWx1ZSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6XCJmaW5pdGVcIj09PXIua2luZD9OdW1iZXIuaXNGaW5pdGUoZS5kYXRhKXx8KHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLm5vdF9maW5pdGUsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOnUudXRpbC5hc3NlcnROZXZlcihyKTtyZXR1cm57c3RhdHVzOm4udmFsdWUsdmFsdWU6ZS5kYXRhfX1ndGUoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1pblwiLGUsITAscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfWd0KGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIixlLCExLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1sdGUoZSx0KXtyZXR1cm4gdGhpcy5zZXRMaW1pdChcIm1heFwiLGUsITAscy5lcnJvclV0aWwudG9TdHJpbmcodCkpfWx0KGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIixlLCExLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1zZXRMaW1pdChlLHQsbixyKXtyZXR1cm4gbmV3IFQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3Mse2tpbmQ6ZSx2YWx1ZTp0LGluY2x1c2l2ZTpuLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcocil9XX0pfV9hZGRDaGVjayhlKXtyZXR1cm4gbmV3IFQoey4uLnRoaXMuX2RlZixjaGVja3M6Wy4uLnRoaXMuX2RlZi5jaGVja3MsZV19KX1pbnQoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwiaW50XCIsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfXBvc2l0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOjAsaW5jbHVzaXZlOiExLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1uZWdhdGl2ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTowLGluY2x1c2l2ZTohMSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bm9ucG9zaXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6MCxpbmNsdXNpdmU6ITAsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pfW5vbm5lZ2F0aXZlKGUpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOjAsaW5jbHVzaXZlOiEwLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcoZSl9KX1tdWx0aXBsZU9mKGUsdCl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibXVsdGlwbGVPZlwiLHZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX0pfWZpbml0ZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJmaW5pdGVcIixtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9c2FmZShlKXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtaW5cIixpbmNsdXNpdmU6ITAsdmFsdWU6TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyhlKX0pLl9hZGRDaGVjayh7a2luZDpcIm1heFwiLGluY2x1c2l2ZTohMCx2YWx1ZTpOdW1iZXIuTUFYX1NBRkVfSU5URUdFUixtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9Z2V0IG1pblZhbHVlKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1pblwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU+ZSkmJihlPXQudmFsdWUpO3JldHVybiBlfWdldCBtYXhWYWx1ZSgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtYXhcIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPGUpJiYoZT10LnZhbHVlKTtyZXR1cm4gZX1nZXQgaXNJbnQoKXtyZXR1cm4hIXRoaXMuX2RlZi5jaGVja3MuZmluZChlPT5cImludFwiPT09ZS5raW5kfHxcIm11bHRpcGxlT2ZcIj09PWUua2luZCYmdS51dGlsLmlzSW50ZWdlcihlLnZhbHVlKSl9Z2V0IGlzRmluaXRlKCl7bGV0IGU9bnVsbCx0PW51bGw7Zm9yKGxldCBuIG9mIHRoaXMuX2RlZi5jaGVja3MpaWYoXCJmaW5pdGVcIj09PW4ua2luZHx8XCJpbnRcIj09PW4ua2luZHx8XCJtdWx0aXBsZU9mXCI9PT1uLmtpbmQpcmV0dXJuITA7ZWxzZVwibWluXCI9PT1uLmtpbmQ/KG51bGw9PT10fHxuLnZhbHVlPnQpJiYodD1uLnZhbHVlKTpcIm1heFwiPT09bi5raW5kJiYobnVsbD09PWV8fG4udmFsdWU8ZSkmJihlPW4udmFsdWUpO3JldHVybiBOdW1iZXIuaXNGaW5pdGUodCkmJk51bWJlci5pc0Zpbml0ZShlKX19dC5ab2ROdW1iZXI9VCxULmNyZWF0ZT1lPT5uZXcgVCh7Y2hlY2tzOltdLHR5cGVOYW1lOnIuWm9kTnVtYmVyLGNvZXJjZTplPy5jb2VyY2V8fCExLC4uLnAoZSl9KTtjbGFzcyBEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5taW49dGhpcy5ndGUsdGhpcy5tYXg9dGhpcy5sdGV9X3BhcnNlKGUpe2xldCB0O2lmKHRoaXMuX2RlZi5jb2VyY2UpdHJ5e2UuZGF0YT1CaWdJbnQoZS5kYXRhKX1jYXRjaHtyZXR1cm4gdGhpcy5fZ2V0SW52YWxpZElucHV0KGUpfWlmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUuYmlnaW50KXJldHVybiB0aGlzLl9nZXRJbnZhbGlkSW5wdXQoZSk7bGV0IG49bmV3IGMuUGFyc2VTdGF0dXM7Zm9yKGxldCByIG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtaW5cIj09PXIua2luZD8oci5pbmNsdXNpdmU/ZS5kYXRhPHIudmFsdWU6ZS5kYXRhPD1yLnZhbHVlKSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCx0eXBlOlwiYmlnaW50XCIsbWluaW11bTpyLnZhbHVlLGluY2x1c2l2ZTpyLmluY2x1c2l2ZSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6XCJtYXhcIj09PXIua2luZD8oci5pbmNsdXNpdmU/ZS5kYXRhPnIudmFsdWU6ZS5kYXRhPj1yLnZhbHVlKSYmKHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSx0KSwoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19iaWcsdHlwZTpcImJpZ2ludFwiLG1heGltdW06ci52YWx1ZSxpbmNsdXNpdmU6ci5pbmNsdXNpdmUsbWVzc2FnZTpyLm1lc3NhZ2V9KSxuLmRpcnR5KCkpOlwibXVsdGlwbGVPZlwiPT09ci5raW5kP2UuZGF0YSVyLnZhbHVlIT09QmlnSW50KDApJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUubm90X211bHRpcGxlX29mLG11bHRpcGxlT2Y6ci52YWx1ZSxtZXNzYWdlOnIubWVzc2FnZX0pLG4uZGlydHkoKSk6dS51dGlsLmFzc2VydE5ldmVyKHIpO3JldHVybntzdGF0dXM6bi52YWx1ZSx2YWx1ZTplLmRhdGF9fV9nZXRJbnZhbGlkSW5wdXQoZSl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLmJpZ2ludCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9Z3RlKGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtaW5cIixlLCEwLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1ndChlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWluXCIsZSwhMSxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9bHRlKGUsdCl7cmV0dXJuIHRoaXMuc2V0TGltaXQoXCJtYXhcIixlLCEwLHMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpKX1sdChlLHQpe3JldHVybiB0aGlzLnNldExpbWl0KFwibWF4XCIsZSwhMSxzLmVycm9yVXRpbC50b1N0cmluZyh0KSl9c2V0TGltaXQoZSx0LG4scil7cmV0dXJuIG5ldyBEKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLHtraW5kOmUsdmFsdWU6dCxpbmNsdXNpdmU6bixtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHIpfV19KX1fYWRkQ2hlY2soZSl7cmV0dXJuIG5ldyBEKHsuLi50aGlzLl9kZWYsY2hlY2tzOlsuLi50aGlzLl9kZWYuY2hlY2tzLGVdfSl9cG9zaXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bm9ucG9zaXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWF4XCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMCxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bm9ubmVnYXRpdmUoZSl7cmV0dXJuIHRoaXMuX2FkZENoZWNrKHtraW5kOlwibWluXCIsdmFsdWU6QmlnSW50KDApLGluY2x1c2l2ZTohMCxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKGUpfSl9bXVsdGlwbGVPZihlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm11bHRpcGxlT2ZcIix2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9KX1nZXQgbWluVmFsdWUoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWluXCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZT5lKSYmKGU9dC52YWx1ZSk7cmV0dXJuIGV9Z2V0IG1heFZhbHVlKCl7bGV0IGU9bnVsbDtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLmNoZWNrcylcIm1heFwiPT09dC5raW5kJiYobnVsbD09PWV8fHQudmFsdWU8ZSkmJihlPXQudmFsdWUpO3JldHVybiBlfX10LlpvZEJpZ0ludD1ELEQuY3JlYXRlPWU9Pm5ldyBEKHtjaGVja3M6W10sdHlwZU5hbWU6ci5ab2RCaWdJbnQsY29lcmNlOmU/LmNvZXJjZT8/ITEsLi4ucChlKX0pO2NsYXNzIEwgZXh0ZW5kcyBoe19wYXJzZShlKXtpZih0aGlzLl9kZWYuY29lcmNlJiYoZS5kYXRhPSEhZS5kYXRhKSx0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLmJvb2xlYW4pe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5ib29sZWFuLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZEJvb2xlYW49TCxMLmNyZWF0ZT1lPT5uZXcgTCh7dHlwZU5hbWU6ci5ab2RCb29sZWFuLGNvZXJjZTplPy5jb2VyY2V8fCExLC4uLnAoZSl9KTtjbGFzcyBOIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0IHQ7aWYodGhpcy5fZGVmLmNvZXJjZSYmKGUuZGF0YT1uZXcgRGF0ZShlLmRhdGEpKSx0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLmRhdGUpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5kYXRlLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1pZihOdW1iZXIuaXNOYU4oZS5kYXRhLmdldFRpbWUoKSkpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9kYXRlfSksYy5JTlZBTElEfWxldCBuPW5ldyBjLlBhcnNlU3RhdHVzO2ZvcihsZXQgciBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWluXCI9PT1yLmtpbmQ/ZS5kYXRhLmdldFRpbWUoKTxyLnZhbHVlJiYodD10aGlzLl9nZXRPclJldHVybkN0eChlLHQpLCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1lc3NhZ2U6ci5tZXNzYWdlLGluY2x1c2l2ZTohMCxleGFjdDohMSxtaW5pbXVtOnIudmFsdWUsdHlwZTpcImRhdGVcIn0pLG4uZGlydHkoKSk6XCJtYXhcIj09PXIua2luZD9lLmRhdGEuZ2V0VGltZSgpPnIudmFsdWUmJih0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUsdCksKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1lc3NhZ2U6ci5tZXNzYWdlLGluY2x1c2l2ZTohMCxleGFjdDohMSxtYXhpbXVtOnIudmFsdWUsdHlwZTpcImRhdGVcIn0pLG4uZGlydHkoKSk6dS51dGlsLmFzc2VydE5ldmVyKHIpO3JldHVybntzdGF0dXM6bi52YWx1ZSx2YWx1ZTpuZXcgRGF0ZShlLmRhdGEuZ2V0VGltZSgpKX19X2FkZENoZWNrKGUpe3JldHVybiBuZXcgTih7Li4udGhpcy5fZGVmLGNoZWNrczpbLi4udGhpcy5fZGVmLmNoZWNrcyxlXX0pfW1pbihlLHQpe3JldHVybiB0aGlzLl9hZGRDaGVjayh7a2luZDpcIm1pblwiLHZhbHVlOmUuZ2V0VGltZSgpLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9KX1tYXgoZSx0KXtyZXR1cm4gdGhpcy5fYWRkQ2hlY2soe2tpbmQ6XCJtYXhcIix2YWx1ZTplLmdldFRpbWUoKSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfSl9Z2V0IG1pbkRhdGUoKXtsZXQgZT1udWxsO2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYuY2hlY2tzKVwibWluXCI9PT10LmtpbmQmJihudWxsPT09ZXx8dC52YWx1ZT5lKSYmKGU9dC52YWx1ZSk7cmV0dXJuIG51bGwhPWU/bmV3IERhdGUoZSk6bnVsbH1nZXQgbWF4RGF0ZSgpe2xldCBlPW51bGw7Zm9yKGxldCB0IG9mIHRoaXMuX2RlZi5jaGVja3MpXCJtYXhcIj09PXQua2luZCYmKG51bGw9PT1lfHx0LnZhbHVlPGUpJiYoZT10LnZhbHVlKTtyZXR1cm4gbnVsbCE9ZT9uZXcgRGF0ZShlKTpudWxsfX10LlpvZERhdGU9TixOLmNyZWF0ZT1lPT5uZXcgTih7Y2hlY2tzOltdLGNvZXJjZTplPy5jb2VyY2V8fCExLHR5cGVOYW1lOnIuWm9kRGF0ZSwuLi5wKGUpfSk7Y2xhc3MgUiBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUuc3ltYm9sKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuc3ltYm9sLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZFN5bWJvbD1SLFIuY3JlYXRlPWU9Pm5ldyBSKHt0eXBlTmFtZTpyLlpvZFN5bWJvbCwuLi5wKGUpfSk7Y2xhc3MgTSBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkLHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfX10LlpvZFVuZGVmaW5lZD1NLE0uY3JlYXRlPWU9Pm5ldyBNKHt0eXBlTmFtZTpyLlpvZFVuZGVmaW5lZCwuLi5wKGUpfSk7Y2xhc3MgWiBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUubnVsbCl7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm51bGwscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEfXJldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kTnVsbD1aLFouY3JlYXRlPWU9Pm5ldyBaKHt0eXBlTmFtZTpyLlpvZE51bGwsLi4ucChlKX0pO2NsYXNzIFUgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKCl7c3VwZXIoLi4uYXJndW1lbnRzKSx0aGlzLl9hbnk9ITB9X3BhcnNlKGUpe3JldHVybigwLGMuT0spKGUuZGF0YSl9fXQuWm9kQW55PVUsVS5jcmVhdGU9ZT0+bmV3IFUoe3R5cGVOYW1lOnIuWm9kQW55LC4uLnAoZSl9KTtjbGFzcyBGIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fdW5rbm93bj0hMH1fcGFyc2UoZSl7cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2RVbmtub3duPUYsRi5jcmVhdGU9ZT0+bmV3IEYoe3R5cGVOYW1lOnIuWm9kVW5rbm93biwuLi5wKGUpfSk7Y2xhc3MgcSBleHRlbmRzIGh7X3BhcnNlKGUpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5uZXZlcixyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9fXQuWm9kTmV2ZXI9cSxxLmNyZWF0ZT1lPT5uZXcgcSh7dHlwZU5hbWU6ci5ab2ROZXZlciwuLi5wKGUpfSk7Y2xhc3MgSCBleHRlbmRzIGh7X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUudm9pZCxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9cmV0dXJuKDAsYy5PSykoZS5kYXRhKX19dC5ab2RWb2lkPUgsSC5jcmVhdGU9ZT0+bmV3IEgoe3R5cGVOYW1lOnIuWm9kVm9pZCwuLi5wKGUpfSk7Y2xhc3MgViBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtjdHg6dCxzdGF0dXM6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLHI9dGhpcy5fZGVmO2lmKHQucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5hcnJheSlyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuYXJyYXkscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2lmKG51bGwhPT1yLmV4YWN0TGVuZ3RoKXtsZXQgZT10LmRhdGEubGVuZ3RoPnIuZXhhY3RMZW5ndGgudmFsdWUsbz10LmRhdGEubGVuZ3RoPHIuZXhhY3RMZW5ndGgudmFsdWU7KGV8fG8pJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTplP2kuWm9kSXNzdWVDb2RlLnRvb19iaWc6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06bz9yLmV4YWN0TGVuZ3RoLnZhbHVlOnZvaWQgMCxtYXhpbXVtOmU/ci5leGFjdExlbmd0aC52YWx1ZTp2b2lkIDAsdHlwZTpcImFycmF5XCIsaW5jbHVzaXZlOiEwLGV4YWN0OiEwLG1lc3NhZ2U6ci5leGFjdExlbmd0aC5tZXNzYWdlfSksbi5kaXJ0eSgpKX1pZihudWxsIT09ci5taW5MZW5ndGgmJnQuZGF0YS5sZW5ndGg8ci5taW5MZW5ndGgudmFsdWUmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOnIubWluTGVuZ3RoLnZhbHVlLHR5cGU6XCJhcnJheVwiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOnIubWluTGVuZ3RoLm1lc3NhZ2V9KSxuLmRpcnR5KCkpLG51bGwhPT1yLm1heExlbmd0aCYmdC5kYXRhLmxlbmd0aD5yLm1heExlbmd0aC52YWx1ZSYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX2JpZyxtYXhpbXVtOnIubWF4TGVuZ3RoLnZhbHVlLHR5cGU6XCJhcnJheVwiLGluY2x1c2l2ZTohMCxleGFjdDohMSxtZXNzYWdlOnIubWF4TGVuZ3RoLm1lc3NhZ2V9KSxuLmRpcnR5KCkpLHQuY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChbLi4udC5kYXRhXS5tYXAoKGUsbik9PnIudHlwZS5fcGFyc2VBc3luYyhuZXcgZCh0LGUsdC5wYXRoLG4pKSkpLnRoZW4oZT0+Yy5QYXJzZVN0YXR1cy5tZXJnZUFycmF5KG4sZSkpO2xldCBvPVsuLi50LmRhdGFdLm1hcCgoZSxuKT0+ci50eXBlLl9wYXJzZVN5bmMobmV3IGQodCxlLHQucGF0aCxuKSkpO3JldHVybiBjLlBhcnNlU3RhdHVzLm1lcmdlQXJyYXkobixvKX1nZXQgZWxlbWVudCgpe3JldHVybiB0aGlzLl9kZWYudHlwZX1taW4oZSx0KXtyZXR1cm4gbmV3IFYoey4uLnRoaXMuX2RlZixtaW5MZW5ndGg6e3ZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX19KX1tYXgoZSx0KXtyZXR1cm4gbmV3IFYoey4uLnRoaXMuX2RlZixtYXhMZW5ndGg6e3ZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX19KX1sZW5ndGgoZSx0KXtyZXR1cm4gbmV3IFYoey4uLnRoaXMuX2RlZixleGFjdExlbmd0aDp7dmFsdWU6ZSxtZXNzYWdlOnMuZXJyb3JVdGlsLnRvU3RyaW5nKHQpfX0pfW5vbmVtcHR5KGUpe3JldHVybiB0aGlzLm1pbigxLGUpfX10LlpvZEFycmF5PVYsVi5jcmVhdGU9KGUsdCk9Pm5ldyBWKHt0eXBlOmUsbWluTGVuZ3RoOm51bGwsbWF4TGVuZ3RoOm51bGwsZXhhY3RMZW5ndGg6bnVsbCx0eXBlTmFtZTpyLlpvZEFycmF5LC4uLnAodCl9KTtjbGFzcyAkIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcigpe3N1cGVyKC4uLmFyZ3VtZW50cyksdGhpcy5fY2FjaGVkPW51bGwsdGhpcy5ub25zdHJpY3Q9dGhpcy5wYXNzdGhyb3VnaCx0aGlzLmF1Z21lbnQ9dGhpcy5leHRlbmR9X2dldENhY2hlZCgpe2lmKG51bGwhPT10aGlzLl9jYWNoZWQpcmV0dXJuIHRoaXMuX2NhY2hlZDtsZXQgZT10aGlzLl9kZWYuc2hhcGUoKSx0PXUudXRpbC5vYmplY3RLZXlzKGUpO3JldHVybiB0aGlzLl9jYWNoZWQ9e3NoYXBlOmUsa2V5czp0fSx0aGlzLl9jYWNoZWR9X3BhcnNlKGUpe2lmKHRoaXMuX2dldFR5cGUoZSkhPT11LlpvZFBhcnNlZFR5cGUub2JqZWN0KXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUub2JqZWN0LHJlY2VpdmVkOnQucGFyc2VkVHlwZX0pLGMuSU5WQUxJRH1sZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSx7c2hhcGU6cixrZXlzOm99PXRoaXMuX2dldENhY2hlZCgpLGE9W107aWYoISh0aGlzLl9kZWYuY2F0Y2hhbGwgaW5zdGFuY2VvZiBxJiZcInN0cmlwXCI9PT10aGlzLl9kZWYudW5rbm93bktleXMpKWZvcihsZXQgZSBpbiBuLmRhdGEpby5pbmNsdWRlcyhlKXx8YS5wdXNoKGUpO2xldCBsPVtdO2ZvcihsZXQgZSBvZiBvKXtsZXQgdD1yW2VdLG89bi5kYXRhW2VdO2wucHVzaCh7a2V5OntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOmV9LHZhbHVlOnQuX3BhcnNlKG5ldyBkKG4sbyxuLnBhdGgsZSkpLGFsd2F5c1NldDplIGluIG4uZGF0YX0pfWlmKHRoaXMuX2RlZi5jYXRjaGFsbCBpbnN0YW5jZW9mIHEpe2xldCBlPXRoaXMuX2RlZi51bmtub3duS2V5cztpZihcInBhc3N0aHJvdWdoXCI9PT1lKWZvcihsZXQgZSBvZiBhKWwucHVzaCh7a2V5OntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOmV9LHZhbHVlOntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOm4uZGF0YVtlXX19KTtlbHNlIGlmKFwic3RyaWN0XCI9PT1lKWEubGVuZ3RoPjAmJigoMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnVucmVjb2duaXplZF9rZXlzLGtleXM6YX0pLHQuZGlydHkoKSk7ZWxzZSBpZihcInN0cmlwXCI9PT1lKTtlbHNlIHRocm93IEVycm9yKFwiSW50ZXJuYWwgWm9kT2JqZWN0IGVycm9yOiBpbnZhbGlkIHVua25vd25LZXlzIHZhbHVlLlwiKX1lbHNle2xldCBlPXRoaXMuX2RlZi5jYXRjaGFsbDtmb3IobGV0IHQgb2YgYSl7bGV0IHI9bi5kYXRhW3RdO2wucHVzaCh7a2V5OntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOnR9LHZhbHVlOmUuX3BhcnNlKG5ldyBkKG4scixuLnBhdGgsdCkpLGFsd2F5c1NldDp0IGluIG4uZGF0YX0pfX1yZXR1cm4gbi5jb21tb24uYXN5bmM/UHJvbWlzZS5yZXNvbHZlKCkudGhlbihhc3luYygpPT57bGV0IGU9W107Zm9yKGxldCB0IG9mIGwpe2xldCBuPWF3YWl0IHQua2V5LHI9YXdhaXQgdC52YWx1ZTtlLnB1c2goe2tleTpuLHZhbHVlOnIsYWx3YXlzU2V0OnQuYWx3YXlzU2V0fSl9cmV0dXJuIGV9KS50aGVuKGU9PmMuUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHQsZSkpOmMuUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHQsbCl9Z2V0IHNoYXBlKCl7cmV0dXJuIHRoaXMuX2RlZi5zaGFwZSgpfXN0cmljdChlKXtyZXR1cm4gcy5lcnJvclV0aWwuZXJyVG9PYmosbmV3ICQoey4uLnRoaXMuX2RlZix1bmtub3duS2V5czpcInN0cmljdFwiLC4uLnZvaWQgMCE9PWU/e2Vycm9yTWFwOih0LG4pPT57bGV0IHI9dGhpcy5fZGVmLmVycm9yTWFwPy4odCxuKS5tZXNzYWdlPz9uLmRlZmF1bHRFcnJvcjtyZXR1cm5cInVucmVjb2duaXplZF9rZXlzXCI9PT10LmNvZGU/e21lc3NhZ2U6cy5lcnJvclV0aWwuZXJyVG9PYmooZSkubWVzc2FnZT8/cn06e21lc3NhZ2U6cn19fTp7fX0pfXN0cmlwKCl7cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsdW5rbm93bktleXM6XCJzdHJpcFwifSl9cGFzc3Rocm91Z2goKXtyZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZix1bmtub3duS2V5czpcInBhc3N0aHJvdWdoXCJ9KX1leHRlbmQoZSl7cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9Pih7Li4udGhpcy5fZGVmLnNoYXBlKCksLi4uZX0pfSl9bWVyZ2UoZSl7cmV0dXJuIG5ldyAkKHt1bmtub3duS2V5czplLl9kZWYudW5rbm93bktleXMsY2F0Y2hhbGw6ZS5fZGVmLmNhdGNoYWxsLHNoYXBlOigpPT4oey4uLnRoaXMuX2RlZi5zaGFwZSgpLC4uLmUuX2RlZi5zaGFwZSgpfSksdHlwZU5hbWU6ci5ab2RPYmplY3R9KX1zZXRLZXkoZSx0KXtyZXR1cm4gdGhpcy5hdWdtZW50KHtbZV06dH0pfWNhdGNoYWxsKGUpe3JldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLGNhdGNoYWxsOmV9KX1waWNrKGUpe2xldCB0PXt9O2ZvcihsZXQgbiBvZiB1LnV0aWwub2JqZWN0S2V5cyhlKSllW25dJiZ0aGlzLnNoYXBlW25dJiYodFtuXT10aGlzLnNoYXBlW25dKTtyZXR1cm4gbmV3ICQoey4uLnRoaXMuX2RlZixzaGFwZTooKT0+dH0pfW9taXQoZSl7bGV0IHQ9e307Zm9yKGxldCBuIG9mIHUudXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKWVbbl18fCh0W25dPXRoaXMuc2hhcGVbbl0pO3JldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT50fSl9ZGVlcFBhcnRpYWwoKXtyZXR1cm4gZnVuY3Rpb24gZSh0KXtpZih0IGluc3RhbmNlb2YgJCl7bGV0IG49e307Zm9yKGxldCByIGluIHQuc2hhcGUpe2xldCBvPXQuc2hhcGVbcl07bltyXT1lYy5jcmVhdGUoZShvKSl9cmV0dXJuIG5ldyAkKHsuLi50Ll9kZWYsc2hhcGU6KCk9Pm59KX1pZih0IGluc3RhbmNlb2YgVilyZXR1cm4gbmV3IFYoey4uLnQuX2RlZix0eXBlOmUodC5lbGVtZW50KX0pO2lmKHQgaW5zdGFuY2VvZiBlYylyZXR1cm4gZWMuY3JlYXRlKGUodC51bndyYXAoKSkpO2lmKHQgaW5zdGFuY2VvZiBldSlyZXR1cm4gZXUuY3JlYXRlKGUodC51bndyYXAoKSkpO2lmKHQgaW5zdGFuY2VvZiBHKXJldHVybiBHLmNyZWF0ZSh0Lml0ZW1zLm1hcCh0PT5lKHQpKSk7ZWxzZSByZXR1cm4gdH0odGhpcyl9cGFydGlhbChlKXtsZXQgdD17fTtmb3IobGV0IG4gb2YgdS51dGlsLm9iamVjdEtleXModGhpcy5zaGFwZSkpe2xldCByPXRoaXMuc2hhcGVbbl07ZSYmIWVbbl0/dFtuXT1yOnRbbl09ci5vcHRpb25hbCgpfXJldHVybiBuZXcgJCh7Li4udGhpcy5fZGVmLHNoYXBlOigpPT50fSl9cmVxdWlyZWQoZSl7bGV0IHQ9e307Zm9yKGxldCBuIG9mIHUudXRpbC5vYmplY3RLZXlzKHRoaXMuc2hhcGUpKWlmKGUmJiFlW25dKXRbbl09dGhpcy5zaGFwZVtuXTtlbHNle2xldCBlPXRoaXMuc2hhcGVbbl07Zm9yKDtlIGluc3RhbmNlb2YgZWM7KWU9ZS5fZGVmLmlubmVyVHlwZTt0W25dPWV9cmV0dXJuIG5ldyAkKHsuLi50aGlzLl9kZWYsc2hhcGU6KCk9PnR9KX1rZXlvZigpe3JldHVybiBlbyh1LnV0aWwub2JqZWN0S2V5cyh0aGlzLnNoYXBlKSl9fXQuWm9kT2JqZWN0PSQsJC5jcmVhdGU9KGUsdCk9Pm5ldyAkKHtzaGFwZTooKT0+ZSx1bmtub3duS2V5czpcInN0cmlwXCIsY2F0Y2hhbGw6cS5jcmVhdGUoKSx0eXBlTmFtZTpyLlpvZE9iamVjdCwuLi5wKHQpfSksJC5zdHJpY3RDcmVhdGU9KGUsdCk9Pm5ldyAkKHtzaGFwZTooKT0+ZSx1bmtub3duS2V5czpcInN0cmljdFwiLGNhdGNoYWxsOnEuY3JlYXRlKCksdHlwZU5hbWU6ci5ab2RPYmplY3QsLi4ucCh0KX0pLCQubGF6eWNyZWF0ZT0oZSx0KT0+bmV3ICQoe3NoYXBlOmUsdW5rbm93bktleXM6XCJzdHJpcFwiLGNhdGNoYWxsOnEuY3JlYXRlKCksdHlwZU5hbWU6ci5ab2RPYmplY3QsLi4ucCh0KX0pO2NsYXNzIFcgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKSxuPXRoaXMuX2RlZi5vcHRpb25zO2lmKHQuY29tbW9uLmFzeW5jKXJldHVybiBQcm9taXNlLmFsbChuLm1hcChhc3luYyBlPT57bGV0IG49ey4uLnQsY29tbW9uOnsuLi50LmNvbW1vbixpc3N1ZXM6W119LHBhcmVudDpudWxsfTtyZXR1cm57cmVzdWx0OmF3YWl0IGUuX3BhcnNlQXN5bmMoe2RhdGE6dC5kYXRhLHBhdGg6dC5wYXRoLHBhcmVudDpufSksY3R4Om59fSkpLnRoZW4oZnVuY3Rpb24oZSl7Zm9yKGxldCB0IG9mIGUpaWYoXCJ2YWxpZFwiPT09dC5yZXN1bHQuc3RhdHVzKXJldHVybiB0LnJlc3VsdDtmb3IobGV0IG4gb2YgZSlpZihcImRpcnR5XCI9PT1uLnJlc3VsdC5zdGF0dXMpcmV0dXJuIHQuY29tbW9uLmlzc3Vlcy5wdXNoKC4uLm4uY3R4LmNvbW1vbi5pc3N1ZXMpLG4ucmVzdWx0O2xldCBuPWUubWFwKGU9Pm5ldyBpLlpvZEVycm9yKGUuY3R4LmNvbW1vbi5pc3N1ZXMpKTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdW5pb24sdW5pb25FcnJvcnM6bn0pLGMuSU5WQUxJRH0pO3tsZXQgZSxyPVtdO2ZvcihsZXQgbyBvZiBuKXtsZXQgbj17Li4udCxjb21tb246ey4uLnQuY29tbW9uLGlzc3VlczpbXX0scGFyZW50Om51bGx9LGE9by5fcGFyc2VTeW5jKHtkYXRhOnQuZGF0YSxwYXRoOnQucGF0aCxwYXJlbnQ6bn0pO2lmKFwidmFsaWRcIj09PWEuc3RhdHVzKXJldHVybiBhO1wiZGlydHlcIiE9PWEuc3RhdHVzfHxlfHwoZT17cmVzdWx0OmEsY3R4Om59KSxuLmNvbW1vbi5pc3N1ZXMubGVuZ3RoJiZyLnB1c2gobi5jb21tb24uaXNzdWVzKX1pZihlKXJldHVybiB0LmNvbW1vbi5pc3N1ZXMucHVzaCguLi5lLmN0eC5jb21tb24uaXNzdWVzKSxlLnJlc3VsdDtsZXQgbz1yLm1hcChlPT5uZXcgaS5ab2RFcnJvcihlKSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3VuaW9uLHVuaW9uRXJyb3JzOm99KSxjLklOVkFMSUR9fWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi5vcHRpb25zfX10LlpvZFVuaW9uPVcsVy5jcmVhdGU9KGUsdCk9Pm5ldyBXKHtvcHRpb25zOmUsdHlwZU5hbWU6ci5ab2RVbmlvbiwuLi5wKHQpfSk7bGV0IFk9ZT0+e2lmKGUgaW5zdGFuY2VvZiBlbilyZXR1cm4gWShlLnNjaGVtYSk7aWYoZSBpbnN0YW5jZW9mIGVzKXJldHVybiBZKGUuaW5uZXJUeXBlKCkpO2lmKGUgaW5zdGFuY2VvZiBlcilyZXR1cm5bZS52YWx1ZV07aWYoZSBpbnN0YW5jZW9mIGVhKXJldHVybiBlLm9wdGlvbnM7aWYoZSBpbnN0YW5jZW9mIGVpKXJldHVybiB1LnV0aWwub2JqZWN0VmFsdWVzKGUuZW51bSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgZWQpcmV0dXJuIFkoZS5fZGVmLmlubmVyVHlwZSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgTSlyZXR1cm5bdm9pZCAwXTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBaKXJldHVybltudWxsXTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBlYylyZXR1cm5bdm9pZCAwLC4uLlkoZS51bndyYXAoKSldO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGV1KXJldHVybltudWxsLC4uLlkoZS51bndyYXAoKSldO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGVoKXJldHVybiBZKGUudW53cmFwKCkpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGVnKXJldHVybiBZKGUudW53cmFwKCkpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIGVmKXJldHVybiBZKGUuX2RlZi5pbm5lclR5cGUpO2Vsc2UgcmV0dXJuW119O2NsYXNzIEsgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZih0LnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUub2JqZWN0KXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5vYmplY3QscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2xldCBuPXRoaXMuZGlzY3JpbWluYXRvcixyPXQuZGF0YVtuXSxvPXRoaXMub3B0aW9uc01hcC5nZXQocik7cmV0dXJuIG8/dC5jb21tb24uYXN5bmM/by5fcGFyc2VBc3luYyh7ZGF0YTp0LmRhdGEscGF0aDp0LnBhdGgscGFyZW50OnR9KTpvLl9wYXJzZVN5bmMoe2RhdGE6dC5kYXRhLHBhdGg6dC5wYXRoLHBhcmVudDp0fSk6KCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF91bmlvbl9kaXNjcmltaW5hdG9yLG9wdGlvbnM6QXJyYXkuZnJvbSh0aGlzLm9wdGlvbnNNYXAua2V5cygpKSxwYXRoOltuXX0pLGMuSU5WQUxJRCl9Z2V0IGRpc2NyaW1pbmF0b3IoKXtyZXR1cm4gdGhpcy5fZGVmLmRpc2NyaW1pbmF0b3J9Z2V0IG9wdGlvbnMoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnN9Z2V0IG9wdGlvbnNNYXAoKXtyZXR1cm4gdGhpcy5fZGVmLm9wdGlvbnNNYXB9c3RhdGljIGNyZWF0ZShlLHQsbil7bGV0IG89bmV3IE1hcDtmb3IobGV0IG4gb2YgdCl7bGV0IHQ9WShuLnNoYXBlW2VdKTtpZighdC5sZW5ndGgpdGhyb3cgRXJyb3IoYEEgZGlzY3JpbWluYXRvciB2YWx1ZSBmb3Iga2V5IFxcYCR7ZX1cXGAgY291bGQgbm90IGJlIGV4dHJhY3RlZCBmcm9tIGFsbCBzY2hlbWEgb3B0aW9uc2ApO2ZvcihsZXQgciBvZiB0KXtpZihvLmhhcyhyKSl0aHJvdyBFcnJvcihgRGlzY3JpbWluYXRvciBwcm9wZXJ0eSAke1N0cmluZyhlKX0gaGFzIGR1cGxpY2F0ZSB2YWx1ZSAke1N0cmluZyhyKX1gKTtvLnNldChyLG4pfX1yZXR1cm4gbmV3IEsoe3R5cGVOYW1lOnIuWm9kRGlzY3JpbWluYXRlZFVuaW9uLGRpc2NyaW1pbmF0b3I6ZSxvcHRpb25zOnQsb3B0aW9uc01hcDpvLC4uLnAobil9KX19dC5ab2REaXNjcmltaW5hdGVkVW5pb249SztjbGFzcyBYIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSkscj0oZSxyKT0+e2lmKCgwLGMuaXNBYm9ydGVkKShlKXx8KDAsYy5pc0Fib3J0ZWQpKHIpKXJldHVybiBjLklOVkFMSUQ7bGV0IG89ZnVuY3Rpb24gZSh0LG4pe2xldCByPSgwLHUuZ2V0UGFyc2VkVHlwZSkodCksbz0oMCx1LmdldFBhcnNlZFR5cGUpKG4pO2lmKHQ9PT1uKXJldHVybnt2YWxpZDohMCxkYXRhOnR9O2lmKHI9PT11LlpvZFBhcnNlZFR5cGUub2JqZWN0JiZvPT09dS5ab2RQYXJzZWRUeXBlLm9iamVjdCl7bGV0IHI9dS51dGlsLm9iamVjdEtleXMobiksbz11LnV0aWwub2JqZWN0S2V5cyh0KS5maWx0ZXIoZT0+LTEhPT1yLmluZGV4T2YoZSkpLGE9ey4uLnQsLi4ubn07Zm9yKGxldCByIG9mIG8pe2xldCBvPWUodFtyXSxuW3JdKTtpZighby52YWxpZClyZXR1cm57dmFsaWQ6ITF9O2Fbcl09by5kYXRhfXJldHVybnt2YWxpZDohMCxkYXRhOmF9fWlmKHI9PT11LlpvZFBhcnNlZFR5cGUuYXJyYXkmJm89PT11LlpvZFBhcnNlZFR5cGUuYXJyYXkpe2lmKHQubGVuZ3RoIT09bi5sZW5ndGgpcmV0dXJue3ZhbGlkOiExfTtsZXQgcj1bXTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl7bGV0IGE9ZSh0W29dLG5bb10pO2lmKCFhLnZhbGlkKXJldHVybnt2YWxpZDohMX07ci5wdXNoKGEuZGF0YSl9cmV0dXJue3ZhbGlkOiEwLGRhdGE6cn19aWYocj09PXUuWm9kUGFyc2VkVHlwZS5kYXRlJiZvPT09dS5ab2RQYXJzZWRUeXBlLmRhdGUmJit0PT0rbilyZXR1cm57dmFsaWQ6ITAsZGF0YTp0fTtyZXR1cm57dmFsaWQ6ITF9fShlLnZhbHVlLHIudmFsdWUpO3JldHVybiBvLnZhbGlkPygoKDAsYy5pc0RpcnR5KShlKXx8KDAsYy5pc0RpcnR5KShyKSkmJnQuZGlydHkoKSx7c3RhdHVzOnQudmFsdWUsdmFsdWU6by5kYXRhfSk6KCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9pbnRlcnNlY3Rpb25fdHlwZXN9KSxjLklOVkFMSUQpfTtyZXR1cm4gbi5jb21tb24uYXN5bmM/UHJvbWlzZS5hbGwoW3RoaXMuX2RlZi5sZWZ0Ll9wYXJzZUFzeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pLHRoaXMuX2RlZi5yaWdodC5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KV0pLnRoZW4oKFtlLHRdKT0+cihlLHQpKTpyKHRoaXMuX2RlZi5sZWZ0Ll9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSksdGhpcy5fZGVmLnJpZ2h0Ll9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSkpfX10LlpvZEludGVyc2VjdGlvbj1YLFguY3JlYXRlPShlLHQsbik9Pm5ldyBYKHtsZWZ0OmUscmlnaHQ6dCx0eXBlTmFtZTpyLlpvZEludGVyc2VjdGlvbiwuLi5wKG4pfSk7Y2xhc3MgRyBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKG4ucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5hcnJheSlyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuYXJyYXkscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2lmKG4uZGF0YS5sZW5ndGg8dGhpcy5fZGVmLml0ZW1zLmxlbmd0aClyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLnRvb19zbWFsbCxtaW5pbXVtOnRoaXMuX2RlZi5pdGVtcy5sZW5ndGgsaW5jbHVzaXZlOiEwLGV4YWN0OiExLHR5cGU6XCJhcnJheVwifSksYy5JTlZBTElEOyF0aGlzLl9kZWYucmVzdCYmbi5kYXRhLmxlbmd0aD50aGlzLl9kZWYuaXRlbXMubGVuZ3RoJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1heGltdW06dGhpcy5fZGVmLml0ZW1zLmxlbmd0aCxpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsdHlwZTpcImFycmF5XCJ9KSx0LmRpcnR5KCkpO2xldCByPVsuLi5uLmRhdGFdLm1hcCgoZSx0KT0+e2xldCByPXRoaXMuX2RlZi5pdGVtc1t0XXx8dGhpcy5fZGVmLnJlc3Q7cmV0dXJuIHI/ci5fcGFyc2UobmV3IGQobixlLG4ucGF0aCx0KSk6bnVsbH0pLmZpbHRlcihlPT4hIWUpO3JldHVybiBuLmNvbW1vbi5hc3luYz9Qcm9taXNlLmFsbChyKS50aGVuKGU9PmMuUGFyc2VTdGF0dXMubWVyZ2VBcnJheSh0LGUpKTpjLlBhcnNlU3RhdHVzLm1lcmdlQXJyYXkodCxyKX1nZXQgaXRlbXMoKXtyZXR1cm4gdGhpcy5fZGVmLml0ZW1zfXJlc3QoZSl7cmV0dXJuIG5ldyBHKHsuLi50aGlzLl9kZWYscmVzdDplfSl9fXQuWm9kVHVwbGU9RyxHLmNyZWF0ZT0oZSx0KT0+e2lmKCFBcnJheS5pc0FycmF5KGUpKXRocm93IEVycm9yKFwiWW91IG11c3QgcGFzcyBhbiBhcnJheSBvZiBzY2hlbWFzIHRvIHoudHVwbGUoWyAuLi4gXSlcIik7cmV0dXJuIG5ldyBHKHtpdGVtczplLHR5cGVOYW1lOnIuWm9kVHVwbGUscmVzdDpudWxsLC4uLnAodCl9KX07Y2xhc3MgUSBleHRlbmRzIGh7Z2V0IGtleVNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYua2V5VHlwZX1nZXQgdmFsdWVTY2hlbWEoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZX1fcGFyc2UoZSl7bGV0e3N0YXR1czp0LGN0eDpufT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSk7aWYobi5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLm9iamVjdClyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUub2JqZWN0LHJlY2VpdmVkOm4ucGFyc2VkVHlwZX0pLGMuSU5WQUxJRDtsZXQgcj1bXSxvPXRoaXMuX2RlZi5rZXlUeXBlLGE9dGhpcy5fZGVmLnZhbHVlVHlwZTtmb3IobGV0IGUgaW4gbi5kYXRhKXIucHVzaCh7a2V5Om8uX3BhcnNlKG5ldyBkKG4sZSxuLnBhdGgsZSkpLHZhbHVlOmEuX3BhcnNlKG5ldyBkKG4sbi5kYXRhW2VdLG4ucGF0aCxlKSksYWx3YXlzU2V0OmUgaW4gbi5kYXRhfSk7cmV0dXJuIG4uY29tbW9uLmFzeW5jP2MuUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RBc3luYyh0LHIpOmMuUGFyc2VTdGF0dXMubWVyZ2VPYmplY3RTeW5jKHQscil9Z2V0IGVsZW1lbnQoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlVHlwZX1zdGF0aWMgY3JlYXRlKGUsdCxuKXtyZXR1cm4gbmV3IFEodCBpbnN0YW5jZW9mIGg/e2tleVR5cGU6ZSx2YWx1ZVR5cGU6dCx0eXBlTmFtZTpyLlpvZFJlY29yZCwuLi5wKG4pfTp7a2V5VHlwZTp6LmNyZWF0ZSgpLHZhbHVlVHlwZTplLHR5cGVOYW1lOnIuWm9kUmVjb3JkLC4uLnAodCl9KX19dC5ab2RSZWNvcmQ9UTtjbGFzcyBKIGV4dGVuZHMgaHtnZXQga2V5U2NoZW1hKCl7cmV0dXJuIHRoaXMuX2RlZi5rZXlUeXBlfWdldCB2YWx1ZVNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYudmFsdWVUeXBlfV9wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihuLnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUubWFwKXJldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlLGV4cGVjdGVkOnUuWm9kUGFyc2VkVHlwZS5tYXAscmVjZWl2ZWQ6bi5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2xldCByPXRoaXMuX2RlZi5rZXlUeXBlLG89dGhpcy5fZGVmLnZhbHVlVHlwZSxhPVsuLi5uLmRhdGEuZW50cmllcygpXS5tYXAoKFtlLHRdLGEpPT4oe2tleTpyLl9wYXJzZShuZXcgZChuLGUsbi5wYXRoLFthLFwia2V5XCJdKSksdmFsdWU6by5fcGFyc2UobmV3IGQobix0LG4ucGF0aCxbYSxcInZhbHVlXCJdKSl9KSk7aWYobi5jb21tb24uYXN5bmMpe2xldCBlPW5ldyBNYXA7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oYXN5bmMoKT0+e2ZvcihsZXQgbiBvZiBhKXtsZXQgcj1hd2FpdCBuLmtleSxvPWF3YWl0IG4udmFsdWU7aWYoXCJhYm9ydGVkXCI9PT1yLnN0YXR1c3x8XCJhYm9ydGVkXCI9PT1vLnN0YXR1cylyZXR1cm4gYy5JTlZBTElEOyhcImRpcnR5XCI9PT1yLnN0YXR1c3x8XCJkaXJ0eVwiPT09by5zdGF0dXMpJiZ0LmRpcnR5KCksZS5zZXQoci52YWx1ZSxvLnZhbHVlKX1yZXR1cm57c3RhdHVzOnQudmFsdWUsdmFsdWU6ZX19KX17bGV0IGU9bmV3IE1hcDtmb3IobGV0IG4gb2YgYSl7bGV0IHI9bi5rZXksbz1uLnZhbHVlO2lmKFwiYWJvcnRlZFwiPT09ci5zdGF0dXN8fFwiYWJvcnRlZFwiPT09by5zdGF0dXMpcmV0dXJuIGMuSU5WQUxJRDsoXCJkaXJ0eVwiPT09ci5zdGF0dXN8fFwiZGlydHlcIj09PW8uc3RhdHVzKSYmdC5kaXJ0eSgpLGUuc2V0KHIudmFsdWUsby52YWx1ZSl9cmV0dXJue3N0YXR1czp0LnZhbHVlLHZhbHVlOmV9fX19dC5ab2RNYXA9SixKLmNyZWF0ZT0oZSx0LG4pPT5uZXcgSih7dmFsdWVUeXBlOnQsa2V5VHlwZTplLHR5cGVOYW1lOnIuWm9kTWFwLC4uLnAobil9KTtjbGFzcyBlZSBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKG4ucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5zZXQpcmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLnNldCxyZWNlaXZlZDpuLnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7bGV0IHI9dGhpcy5fZGVmO251bGwhPT1yLm1pblNpemUmJm4uZGF0YS5zaXplPHIubWluU2l6ZS52YWx1ZSYmKCgwLGMuYWRkSXNzdWVUb0NvbnRleHQpKG4se2NvZGU6aS5ab2RJc3N1ZUNvZGUudG9vX3NtYWxsLG1pbmltdW06ci5taW5TaXplLnZhbHVlLHR5cGU6XCJzZXRcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpyLm1pblNpemUubWVzc2FnZX0pLHQuZGlydHkoKSksbnVsbCE9PXIubWF4U2l6ZSYmbi5kYXRhLnNpemU+ci5tYXhTaXplLnZhbHVlJiYoKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7Y29kZTppLlpvZElzc3VlQ29kZS50b29fYmlnLG1heGltdW06ci5tYXhTaXplLnZhbHVlLHR5cGU6XCJzZXRcIixpbmNsdXNpdmU6ITAsZXhhY3Q6ITEsbWVzc2FnZTpyLm1heFNpemUubWVzc2FnZX0pLHQuZGlydHkoKSk7bGV0IG89dGhpcy5fZGVmLnZhbHVlVHlwZTtmdW5jdGlvbiBhKGUpe2xldCBuPW5ldyBTZXQ7Zm9yKGxldCByIG9mIGUpe2lmKFwiYWJvcnRlZFwiPT09ci5zdGF0dXMpcmV0dXJuIGMuSU5WQUxJRDtcImRpcnR5XCI9PT1yLnN0YXR1cyYmdC5kaXJ0eSgpLG4uYWRkKHIudmFsdWUpfXJldHVybntzdGF0dXM6dC52YWx1ZSx2YWx1ZTpufX1sZXQgbD1bLi4ubi5kYXRhLnZhbHVlcygpXS5tYXAoKGUsdCk9Pm8uX3BhcnNlKG5ldyBkKG4sZSxuLnBhdGgsdCkpKTtyZXR1cm4gbi5jb21tb24uYXN5bmM/UHJvbWlzZS5hbGwobCkudGhlbihlPT5hKGUpKTphKGwpfW1pbihlLHQpe3JldHVybiBuZXcgZWUoey4uLnRoaXMuX2RlZixtaW5TaXplOnt2YWx1ZTplLG1lc3NhZ2U6cy5lcnJvclV0aWwudG9TdHJpbmcodCl9fSl9bWF4KGUsdCl7cmV0dXJuIG5ldyBlZSh7Li4udGhpcy5fZGVmLG1heFNpemU6e3ZhbHVlOmUsbWVzc2FnZTpzLmVycm9yVXRpbC50b1N0cmluZyh0KX19KX1zaXplKGUsdCl7cmV0dXJuIHRoaXMubWluKGUsdCkubWF4KGUsdCl9bm9uZW1wdHkoZSl7cmV0dXJuIHRoaXMubWluKDEsZSl9fXQuWm9kU2V0PWVlLGVlLmNyZWF0ZT0oZSx0KT0+bmV3IGVlKHt2YWx1ZVR5cGU6ZSxtaW5TaXplOm51bGwsbWF4U2l6ZTpudWxsLHR5cGVOYW1lOnIuWm9kU2V0LC4uLnAodCl9KTtjbGFzcyBldCBleHRlbmRzIGh7Y29uc3RydWN0b3IoKXtzdXBlciguLi5hcmd1bWVudHMpLHRoaXMudmFsaWRhdGU9dGhpcy5pbXBsZW1lbnR9X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO2lmKHQucGFyc2VkVHlwZSE9PXUuWm9kUGFyc2VkVHlwZS5mdW5jdGlvbilyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUuZnVuY3Rpb24scmVjZWl2ZWQ6dC5wYXJzZWRUeXBlfSksYy5JTlZBTElEO2Z1bmN0aW9uIG4oZSxuKXtyZXR1cm4oMCxjLm1ha2VJc3N1ZSkoe2RhdGE6ZSxwYXRoOnQucGF0aCxlcnJvck1hcHM6W3QuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCx0LnNjaGVtYUVycm9yTWFwLCgwLGwuZ2V0RXJyb3JNYXApKCksbC5kZWZhdWx0RXJyb3JNYXBdLmZpbHRlcihlPT4hIWUpLGlzc3VlRGF0YTp7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX2FyZ3VtZW50cyxhcmd1bWVudHNFcnJvcjpufX0pfWZ1bmN0aW9uIHIoZSxuKXtyZXR1cm4oMCxjLm1ha2VJc3N1ZSkoe2RhdGE6ZSxwYXRoOnQucGF0aCxlcnJvck1hcHM6W3QuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcCx0LnNjaGVtYUVycm9yTWFwLCgwLGwuZ2V0RXJyb3JNYXApKCksbC5kZWZhdWx0RXJyb3JNYXBdLmZpbHRlcihlPT4hIWUpLGlzc3VlRGF0YTp7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3JldHVybl90eXBlLHJldHVyblR5cGVFcnJvcjpufX0pfWxldCBvPXtlcnJvck1hcDp0LmNvbW1vbi5jb250ZXh0dWFsRXJyb3JNYXB9LGE9dC5kYXRhO2lmKHRoaXMuX2RlZi5yZXR1cm5zIGluc3RhbmNlb2YgZWwpe2xldCBlPXRoaXM7cmV0dXJuKDAsYy5PSykoYXN5bmMgZnVuY3Rpb24oLi4udCl7bGV0IGw9bmV3IGkuWm9kRXJyb3IoW10pLHM9YXdhaXQgZS5fZGVmLmFyZ3MucGFyc2VBc3luYyh0LG8pLmNhdGNoKGU9Pnt0aHJvdyBsLmFkZElzc3VlKG4odCxlKSksbH0pLGM9YXdhaXQgUmVmbGVjdC5hcHBseShhLHRoaXMscyk7cmV0dXJuIGF3YWl0IGUuX2RlZi5yZXR1cm5zLl9kZWYudHlwZS5wYXJzZUFzeW5jKGMsbykuY2F0Y2goZT0+e3Rocm93IGwuYWRkSXNzdWUocihjLGUpKSxsfSl9KX17bGV0IGU9dGhpcztyZXR1cm4oMCxjLk9LKShmdW5jdGlvbiguLi50KXtsZXQgbD1lLl9kZWYuYXJncy5zYWZlUGFyc2UodCxvKTtpZighbC5zdWNjZXNzKXRocm93IG5ldyBpLlpvZEVycm9yKFtuKHQsbC5lcnJvcildKTtsZXQgcz1SZWZsZWN0LmFwcGx5KGEsdGhpcyxsLmRhdGEpLGM9ZS5fZGVmLnJldHVybnMuc2FmZVBhcnNlKHMsbyk7aWYoIWMuc3VjY2Vzcyl0aHJvdyBuZXcgaS5ab2RFcnJvcihbcihzLGMuZXJyb3IpXSk7cmV0dXJuIGMuZGF0YX0pfX1wYXJhbWV0ZXJzKCl7cmV0dXJuIHRoaXMuX2RlZi5hcmdzfXJldHVyblR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnJldHVybnN9YXJncyguLi5lKXtyZXR1cm4gbmV3IGV0KHsuLi50aGlzLl9kZWYsYXJnczpHLmNyZWF0ZShlKS5yZXN0KEYuY3JlYXRlKCkpfSl9cmV0dXJucyhlKXtyZXR1cm4gbmV3IGV0KHsuLi50aGlzLl9kZWYscmV0dXJuczplfSl9aW1wbGVtZW50KGUpe3JldHVybiB0aGlzLnBhcnNlKGUpfXN0cmljdEltcGxlbWVudChlKXtyZXR1cm4gdGhpcy5wYXJzZShlKX1zdGF0aWMgY3JlYXRlKGUsdCxuKXtyZXR1cm4gbmV3IGV0KHthcmdzOmV8fEcuY3JlYXRlKFtdKS5yZXN0KEYuY3JlYXRlKCkpLHJldHVybnM6dHx8Ri5jcmVhdGUoKSx0eXBlTmFtZTpyLlpvZEZ1bmN0aW9uLC4uLnAobil9KX19dC5ab2RGdW5jdGlvbj1ldDtjbGFzcyBlbiBleHRlbmRzIGh7Z2V0IHNjaGVtYSgpe3JldHVybiB0aGlzLl9kZWYuZ2V0dGVyKCl9X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpO3JldHVybiB0aGlzLl9kZWYuZ2V0dGVyKCkuX3BhcnNlKHtkYXRhOnQuZGF0YSxwYXRoOnQucGF0aCxwYXJlbnQ6dH0pfX10LlpvZExhenk9ZW4sZW4uY3JlYXRlPShlLHQpPT5uZXcgZW4oe2dldHRlcjplLHR5cGVOYW1lOnIuWm9kTGF6eSwuLi5wKHQpfSk7Y2xhc3MgZXIgZXh0ZW5kcyBoe19wYXJzZShlKXtpZihlLmRhdGEhPT10aGlzLl9kZWYudmFsdWUpe2xldCB0PXRoaXMuX2dldE9yUmV0dXJuQ3R4KGUpO3JldHVybigwLGMuYWRkSXNzdWVUb0NvbnRleHQpKHQse3JlY2VpdmVkOnQuZGF0YSxjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfbGl0ZXJhbCxleHBlY3RlZDp0aGlzLl9kZWYudmFsdWV9KSxjLklOVkFMSUR9cmV0dXJue3N0YXR1czpcInZhbGlkXCIsdmFsdWU6ZS5kYXRhfX1nZXQgdmFsdWUoKXtyZXR1cm4gdGhpcy5fZGVmLnZhbHVlfX1mdW5jdGlvbiBlbyhlLHQpe3JldHVybiBuZXcgZWEoe3ZhbHVlczplLHR5cGVOYW1lOnIuWm9kRW51bSwuLi5wKHQpfSl9dC5ab2RMaXRlcmFsPWVyLGVyLmNyZWF0ZT0oZSx0KT0+bmV3IGVyKHt2YWx1ZTplLHR5cGVOYW1lOnIuWm9kTGl0ZXJhbCwuLi5wKHQpfSk7Y2xhc3MgZWEgZXh0ZW5kcyBoe19wYXJzZShlKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZS5kYXRhKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKSxuPXRoaXMuX2RlZi52YWx1ZXM7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7ZXhwZWN0ZWQ6dS51dGlsLmpvaW5WYWx1ZXMobikscmVjZWl2ZWQ6dC5wYXJzZWRUeXBlLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF90eXBlfSksYy5JTlZBTElEfWlmKHRoaXMuX2NhY2hlfHwodGhpcy5fY2FjaGU9bmV3IFNldCh0aGlzLl9kZWYudmFsdWVzKSksIXRoaXMuX2NhY2hlLmhhcyhlLmRhdGEpKXtsZXQgdD10aGlzLl9nZXRPclJldHVybkN0eChlKSxuPXRoaXMuX2RlZi52YWx1ZXM7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7cmVjZWl2ZWQ6dC5kYXRhLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlLG9wdGlvbnM6bn0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfWdldCBvcHRpb25zKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZXN9Z2V0IGVudW0oKXtsZXQgZT17fTtmb3IobGV0IHQgb2YgdGhpcy5fZGVmLnZhbHVlcyllW3RdPXQ7cmV0dXJuIGV9Z2V0IFZhbHVlcygpe2xldCBlPXt9O2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYudmFsdWVzKWVbdF09dDtyZXR1cm4gZX1nZXQgRW51bSgpe2xldCBlPXt9O2ZvcihsZXQgdCBvZiB0aGlzLl9kZWYudmFsdWVzKWVbdF09dDtyZXR1cm4gZX1leHRyYWN0KGUsdD10aGlzLl9kZWYpe3JldHVybiBlYS5jcmVhdGUoZSx7Li4udGhpcy5fZGVmLC4uLnR9KX1leGNsdWRlKGUsdD10aGlzLl9kZWYpe3JldHVybiBlYS5jcmVhdGUodGhpcy5vcHRpb25zLmZpbHRlcih0PT4hZS5pbmNsdWRlcyh0KSksey4uLnRoaXMuX2RlZiwuLi50fSl9fXQuWm9kRW51bT1lYSxlYS5jcmVhdGU9ZW87Y2xhc3MgZWkgZXh0ZW5kcyBoe19wYXJzZShlKXtsZXQgdD11LnV0aWwuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2RlZi52YWx1ZXMpLG49dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7aWYobi5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLnN0cmluZyYmbi5wYXJzZWRUeXBlIT09dS5ab2RQYXJzZWRUeXBlLm51bWJlcil7bGV0IGU9dS51dGlsLm9iamVjdFZhbHVlcyh0KTtyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KShuLHtleHBlY3RlZDp1LnV0aWwuam9pblZhbHVlcyhlKSxyZWNlaXZlZDpuLnBhcnNlZFR5cGUsY29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGV9KSxjLklOVkFMSUR9aWYodGhpcy5fY2FjaGV8fCh0aGlzLl9jYWNoZT1uZXcgU2V0KHUudXRpbC5nZXRWYWxpZEVudW1WYWx1ZXModGhpcy5fZGVmLnZhbHVlcykpKSwhdGhpcy5fY2FjaGUuaGFzKGUuZGF0YSkpe2xldCBlPXUudXRpbC5vYmplY3RWYWx1ZXModCk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobix7cmVjZWl2ZWQ6bi5kYXRhLGNvZGU6aS5ab2RJc3N1ZUNvZGUuaW52YWxpZF9lbnVtX3ZhbHVlLG9wdGlvbnM6ZX0pLGMuSU5WQUxJRH1yZXR1cm4oMCxjLk9LKShlLmRhdGEpfWdldCBlbnVtKCl7cmV0dXJuIHRoaXMuX2RlZi52YWx1ZXN9fXQuWm9kTmF0aXZlRW51bT1laSxlaS5jcmVhdGU9KGUsdCk9Pm5ldyBlaSh7dmFsdWVzOmUsdHlwZU5hbWU6ci5ab2ROYXRpdmVFbnVtLC4uLnAodCl9KTtjbGFzcyBlbCBleHRlbmRzIGh7dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfV9wYXJzZShlKXtsZXR7Y3R4OnR9PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZih0LnBhcnNlZFR5cGUhPT11LlpvZFBhcnNlZFR5cGUucHJvbWlzZSYmITE9PT10LmNvbW1vbi5hc3luYylyZXR1cm4oMCxjLmFkZElzc3VlVG9Db250ZXh0KSh0LHtjb2RlOmkuWm9kSXNzdWVDb2RlLmludmFsaWRfdHlwZSxleHBlY3RlZDp1LlpvZFBhcnNlZFR5cGUucHJvbWlzZSxyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUQ7bGV0IG49dC5wYXJzZWRUeXBlPT09dS5ab2RQYXJzZWRUeXBlLnByb21pc2U/dC5kYXRhOlByb21pc2UucmVzb2x2ZSh0LmRhdGEpO3JldHVybigwLGMuT0spKG4udGhlbihlPT50aGlzLl9kZWYudHlwZS5wYXJzZUFzeW5jKGUse3BhdGg6dC5wYXRoLGVycm9yTWFwOnQuY29tbW9uLmNvbnRleHR1YWxFcnJvck1hcH0pKSl9fXQuWm9kUHJvbWlzZT1lbCxlbC5jcmVhdGU9KGUsdCk9Pm5ldyBlbCh7dHlwZTplLHR5cGVOYW1lOnIuWm9kUHJvbWlzZSwuLi5wKHQpfSk7Y2xhc3MgZXMgZXh0ZW5kcyBoe2lubmVyVHlwZSgpe3JldHVybiB0aGlzLl9kZWYuc2NoZW1hfXNvdXJjZVR5cGUoKXtyZXR1cm4gdGhpcy5fZGVmLnNjaGVtYS5fZGVmLnR5cGVOYW1lPT09ci5ab2RFZmZlY3RzP3RoaXMuX2RlZi5zY2hlbWEuc291cmNlVHlwZSgpOnRoaXMuX2RlZi5zY2hlbWF9X3BhcnNlKGUpe2xldHtzdGF0dXM6dCxjdHg6bn09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLHI9dGhpcy5fZGVmLmVmZmVjdHx8bnVsbCxvPXthZGRJc3N1ZTplPT57KDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkobixlKSxlLmZhdGFsP3QuYWJvcnQoKTp0LmRpcnR5KCl9LGdldCBwYXRoKCl7cmV0dXJuIG4ucGF0aH19O2lmKG8uYWRkSXNzdWU9by5hZGRJc3N1ZS5iaW5kKG8pLFwicHJlcHJvY2Vzc1wiPT09ci50eXBlKXtsZXQgZT1yLnRyYW5zZm9ybShuLmRhdGEsbyk7aWYobi5jb21tb24uYXN5bmMpcmV0dXJuIFByb21pc2UucmVzb2x2ZShlKS50aGVuKGFzeW5jIGU9PntpZihcImFib3J0ZWRcIj09PXQudmFsdWUpcmV0dXJuIGMuSU5WQUxJRDtsZXQgcj1hd2FpdCB0aGlzLl9kZWYuc2NoZW1hLl9wYXJzZUFzeW5jKHtkYXRhOmUscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm5cImFib3J0ZWRcIj09PXIuc3RhdHVzP2MuSU5WQUxJRDpcImRpcnR5XCI9PT1yLnN0YXR1c3x8XCJkaXJ0eVwiPT09dC52YWx1ZT8oMCxjLkRJUlRZKShyLnZhbHVlKTpyfSk7e2lmKFwiYWJvcnRlZFwiPT09dC52YWx1ZSlyZXR1cm4gYy5JTlZBTElEO2xldCByPXRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlU3luYyh7ZGF0YTplLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuXCJhYm9ydGVkXCI9PT1yLnN0YXR1cz9jLklOVkFMSUQ6XCJkaXJ0eVwiPT09ci5zdGF0dXN8fFwiZGlydHlcIj09PXQudmFsdWU/KDAsYy5ESVJUWSkoci52YWx1ZSk6cn19aWYoXCJyZWZpbmVtZW50XCI9PT1yLnR5cGUpe2xldCBlPWU9PntsZXQgdD1yLnJlZmluZW1lbnQoZSxvKTtpZihuLmNvbW1vbi5hc3luYylyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHQpO2lmKHQgaW5zdGFuY2VvZiBQcm9taXNlKXRocm93IEVycm9yKFwiQXN5bmMgcmVmaW5lbWVudCBlbmNvdW50ZXJlZCBkdXJpbmcgc3luY2hyb25vdXMgcGFyc2Ugb3BlcmF0aW9uLiBVc2UgLnBhcnNlQXN5bmMgaW5zdGVhZC5cIik7cmV0dXJuIGV9O2lmKCExIT09bi5jb21tb24uYXN5bmMpcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSkudGhlbihuPT5cImFib3J0ZWRcIj09PW4uc3RhdHVzP2MuSU5WQUxJRDooXCJkaXJ0eVwiPT09bi5zdGF0dXMmJnQuZGlydHkoKSxlKG4udmFsdWUpLnRoZW4oKCk9Pih7c3RhdHVzOnQudmFsdWUsdmFsdWU6bi52YWx1ZX0pKSkpO3tsZXQgcj10aGlzLl9kZWYuc2NoZW1hLl9wYXJzZVN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSk7cmV0dXJuXCJhYm9ydGVkXCI9PT1yLnN0YXR1cz9jLklOVkFMSUQ6KFwiZGlydHlcIj09PXIuc3RhdHVzJiZ0LmRpcnR5KCksZShyLnZhbHVlKSx7c3RhdHVzOnQudmFsdWUsdmFsdWU6ci52YWx1ZX0pfX1pZihcInRyYW5zZm9ybVwiPT09ci50eXBlKWlmKCExIT09bi5jb21tb24uYXN5bmMpcmV0dXJuIHRoaXMuX2RlZi5zY2hlbWEuX3BhcnNlQXN5bmMoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDpufSkudGhlbihlPT4oMCxjLmlzVmFsaWQpKGUpP1Byb21pc2UucmVzb2x2ZShyLnRyYW5zZm9ybShlLnZhbHVlLG8pKS50aGVuKGU9Pih7c3RhdHVzOnQudmFsdWUsdmFsdWU6ZX0pKTpjLklOVkFMSUQpO2Vsc2V7bGV0IGU9dGhpcy5fZGVmLnNjaGVtYS5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO2lmKCEoMCxjLmlzVmFsaWQpKGUpKXJldHVybiBjLklOVkFMSUQ7bGV0IGE9ci50cmFuc2Zvcm0oZS52YWx1ZSxvKTtpZihhIGluc3RhbmNlb2YgUHJvbWlzZSl0aHJvdyBFcnJvcihcIkFzeW5jaHJvbm91cyB0cmFuc2Zvcm0gZW5jb3VudGVyZWQgZHVyaW5nIHN5bmNocm9ub3VzIHBhcnNlIG9wZXJhdGlvbi4gVXNlIC5wYXJzZUFzeW5jIGluc3RlYWQuXCIpO3JldHVybntzdGF0dXM6dC52YWx1ZSx2YWx1ZTphfX11LnV0aWwuYXNzZXJ0TmV2ZXIocil9fXQuWm9kRWZmZWN0cz1lcyx0LlpvZFRyYW5zZm9ybWVyPWVzLGVzLmNyZWF0ZT0oZSx0LG4pPT5uZXcgZXMoe3NjaGVtYTplLHR5cGVOYW1lOnIuWm9kRWZmZWN0cyxlZmZlY3Q6dCwuLi5wKG4pfSksZXMuY3JlYXRlV2l0aFByZXByb2Nlc3M9KGUsdCxuKT0+bmV3IGVzKHtzY2hlbWE6dCxlZmZlY3Q6e3R5cGU6XCJwcmVwcm9jZXNzXCIsdHJhbnNmb3JtOmV9LHR5cGVOYW1lOnIuWm9kRWZmZWN0cywuLi5wKG4pfSk7Y2xhc3MgZWMgZXh0ZW5kcyBoe19wYXJzZShlKXtyZXR1cm4gdGhpcy5fZ2V0VHlwZShlKT09PXUuWm9kUGFyc2VkVHlwZS51bmRlZmluZWQ/KDAsYy5PSykodm9pZCAwKTp0aGlzLl9kZWYuaW5uZXJUeXBlLl9wYXJzZShlKX11bndyYXAoKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19dC5ab2RPcHRpb25hbD1lYyxlYy5jcmVhdGU9KGUsdCk9Pm5ldyBlYyh7aW5uZXJUeXBlOmUsdHlwZU5hbWU6ci5ab2RPcHRpb25hbCwuLi5wKHQpfSk7Y2xhc3MgZXUgZXh0ZW5kcyBoe19wYXJzZShlKXtyZXR1cm4gdGhpcy5fZ2V0VHlwZShlKT09PXUuWm9kUGFyc2VkVHlwZS5udWxsPygwLGMuT0spKG51bGwpOnRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGUpfXVud3JhcCgpe3JldHVybiB0aGlzLl9kZWYuaW5uZXJUeXBlfX10LlpvZE51bGxhYmxlPWV1LGV1LmNyZWF0ZT0oZSx0KT0+bmV3IGV1KHtpbm5lclR5cGU6ZSx0eXBlTmFtZTpyLlpvZE51bGxhYmxlLC4uLnAodCl9KTtjbGFzcyBlZCBleHRlbmRzIGh7X3BhcnNlKGUpe2xldHtjdHg6dH09dGhpcy5fcHJvY2Vzc0lucHV0UGFyYW1zKGUpLG49dC5kYXRhO3JldHVybiB0LnBhcnNlZFR5cGU9PT11LlpvZFBhcnNlZFR5cGUudW5kZWZpbmVkJiYobj10aGlzLl9kZWYuZGVmYXVsdFZhbHVlKCkpLHRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKHtkYXRhOm4scGF0aDp0LnBhdGgscGFyZW50OnR9KX1yZW1vdmVEZWZhdWx0KCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fXQuWm9kRGVmYXVsdD1lZCxlZC5jcmVhdGU9KGUsdCk9Pm5ldyBlZCh7aW5uZXJUeXBlOmUsdHlwZU5hbWU6ci5ab2REZWZhdWx0LGRlZmF1bHRWYWx1ZTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlZmF1bHQ/dC5kZWZhdWx0OigpPT50LmRlZmF1bHQsLi4ucCh0KX0pO2NsYXNzIGVmIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSksbj17Li4udCxjb21tb246ey4uLnQuY29tbW9uLGlzc3VlczpbXX19LHI9dGhpcy5fZGVmLmlubmVyVHlwZS5fcGFyc2Uoe2RhdGE6bi5kYXRhLHBhdGg6bi5wYXRoLHBhcmVudDp7Li4ubn19KTtyZXR1cm4oMCxjLmlzQXN5bmMpKHIpP3IudGhlbihlPT4oe3N0YXR1czpcInZhbGlkXCIsdmFsdWU6XCJ2YWxpZFwiPT09ZS5zdGF0dXM/ZS52YWx1ZTp0aGlzLl9kZWYuY2F0Y2hWYWx1ZSh7Z2V0IGVycm9yKCl7cmV0dXJuIG5ldyBpLlpvZEVycm9yKG4uY29tbW9uLmlzc3Vlcyl9LGlucHV0Om4uZGF0YX0pfSkpOntzdGF0dXM6XCJ2YWxpZFwiLHZhbHVlOlwidmFsaWRcIj09PXIuc3RhdHVzP3IudmFsdWU6dGhpcy5fZGVmLmNhdGNoVmFsdWUoe2dldCBlcnJvcigpe3JldHVybiBuZXcgaS5ab2RFcnJvcihuLmNvbW1vbi5pc3N1ZXMpfSxpbnB1dDpuLmRhdGF9KX19cmVtb3ZlQ2F0Y2goKXtyZXR1cm4gdGhpcy5fZGVmLmlubmVyVHlwZX19dC5ab2RDYXRjaD1lZixlZi5jcmVhdGU9KGUsdCk9Pm5ldyBlZih7aW5uZXJUeXBlOmUsdHlwZU5hbWU6ci5ab2RDYXRjaCxjYXRjaFZhbHVlOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuY2F0Y2g/dC5jYXRjaDooKT0+dC5jYXRjaCwuLi5wKHQpfSk7Y2xhc3MgZXAgZXh0ZW5kcyBoe19wYXJzZShlKXtpZih0aGlzLl9nZXRUeXBlKGUpIT09dS5ab2RQYXJzZWRUeXBlLm5hbil7bGV0IHQ9dGhpcy5fZ2V0T3JSZXR1cm5DdHgoZSk7cmV0dXJuKDAsYy5hZGRJc3N1ZVRvQ29udGV4dCkodCx7Y29kZTppLlpvZElzc3VlQ29kZS5pbnZhbGlkX3R5cGUsZXhwZWN0ZWQ6dS5ab2RQYXJzZWRUeXBlLm5hbixyZWNlaXZlZDp0LnBhcnNlZFR5cGV9KSxjLklOVkFMSUR9cmV0dXJue3N0YXR1czpcInZhbGlkXCIsdmFsdWU6ZS5kYXRhfX19dC5ab2ROYU49ZXAsZXAuY3JlYXRlPWU9Pm5ldyBlcCh7dHlwZU5hbWU6ci5ab2ROYU4sLi4ucChlKX0pLHQuQlJBTkQ9U3ltYm9sKFwiem9kX2JyYW5kXCIpO2NsYXNzIGVoIGV4dGVuZHMgaHtfcGFyc2UoZSl7bGV0e2N0eDp0fT10aGlzLl9wcm9jZXNzSW5wdXRQYXJhbXMoZSksbj10LmRhdGE7cmV0dXJuIHRoaXMuX2RlZi50eXBlLl9wYXJzZSh7ZGF0YTpuLHBhdGg6dC5wYXRoLHBhcmVudDp0fSl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi50eXBlfX10LlpvZEJyYW5kZWQ9ZWg7Y2xhc3MgZW0gZXh0ZW5kcyBoe19wYXJzZShlKXtsZXR7c3RhdHVzOnQsY3R4Om59PXRoaXMuX3Byb2Nlc3NJbnB1dFBhcmFtcyhlKTtpZihuLmNvbW1vbi5hc3luYylyZXR1cm4oYXN5bmMoKT0+e2xldCBlPWF3YWl0IHRoaXMuX2RlZi5pbi5fcGFyc2VBc3luYyh7ZGF0YTpuLmRhdGEscGF0aDpuLnBhdGgscGFyZW50Om59KTtyZXR1cm5cImFib3J0ZWRcIj09PWUuc3RhdHVzP2MuSU5WQUxJRDpcImRpcnR5XCI9PT1lLnN0YXR1cz8odC5kaXJ0eSgpLCgwLGMuRElSVFkpKGUudmFsdWUpKTp0aGlzLl9kZWYub3V0Ll9wYXJzZUFzeW5jKHtkYXRhOmUudmFsdWUscGF0aDpuLnBhdGgscGFyZW50Om59KX0pKCk7e2xldCBlPXRoaXMuX2RlZi5pbi5fcGFyc2VTeW5jKHtkYXRhOm4uZGF0YSxwYXRoOm4ucGF0aCxwYXJlbnQ6bn0pO3JldHVyblwiYWJvcnRlZFwiPT09ZS5zdGF0dXM/Yy5JTlZBTElEOlwiZGlydHlcIj09PWUuc3RhdHVzPyh0LmRpcnR5KCkse3N0YXR1czpcImRpcnR5XCIsdmFsdWU6ZS52YWx1ZX0pOnRoaXMuX2RlZi5vdXQuX3BhcnNlU3luYyh7ZGF0YTplLnZhbHVlLHBhdGg6bi5wYXRoLHBhcmVudDpufSl9fXN0YXRpYyBjcmVhdGUoZSx0KXtyZXR1cm4gbmV3IGVtKHtpbjplLG91dDp0LHR5cGVOYW1lOnIuWm9kUGlwZWxpbmV9KX19dC5ab2RQaXBlbGluZT1lbTtjbGFzcyBlZyBleHRlbmRzIGh7X3BhcnNlKGUpe2xldCB0PXRoaXMuX2RlZi5pbm5lclR5cGUuX3BhcnNlKGUpLG49ZT0+KCgwLGMuaXNWYWxpZCkoZSkmJihlLnZhbHVlPU9iamVjdC5mcmVlemUoZS52YWx1ZSkpLGUpO3JldHVybigwLGMuaXNBc3luYykodCk/dC50aGVuKGU9Pm4oZSkpOm4odCl9dW53cmFwKCl7cmV0dXJuIHRoaXMuX2RlZi5pbm5lclR5cGV9fWZ1bmN0aW9uIGV5KGUsdCl7bGV0IG49XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKHQpOlwic3RyaW5nXCI9PXR5cGVvZiBlP3ttZXNzYWdlOmV9OmU7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIG4/e21lc3NhZ2U6bn06bn1mdW5jdGlvbiBldihlLHQ9e30sbil7cmV0dXJuIGU/VS5jcmVhdGUoKS5zdXBlclJlZmluZSgocixvKT0+e2xldCBhPWUocik7aWYoYSBpbnN0YW5jZW9mIFByb21pc2UpcmV0dXJuIGEudGhlbihlPT57aWYoIWUpe2xldCBlPWV5KHQsciksYT1lLmZhdGFsPz9uPz8hMDtvLmFkZElzc3VlKHtjb2RlOlwiY3VzdG9tXCIsLi4uZSxmYXRhbDphfSl9fSk7aWYoIWEpe2xldCBlPWV5KHQsciksYT1lLmZhdGFsPz9uPz8hMDtvLmFkZElzc3VlKHtjb2RlOlwiY3VzdG9tXCIsLi4uZSxmYXRhbDphfSl9fSk6VS5jcmVhdGUoKX10LlpvZFJlYWRvbmx5PWVnLGVnLmNyZWF0ZT0oZSx0KT0+bmV3IGVnKHtpbm5lclR5cGU6ZSx0eXBlTmFtZTpyLlpvZFJlYWRvbmx5LC4uLnAodCl9KSx0LmxhdGU9e29iamVjdDokLmxhenljcmVhdGV9LChvPXJ8fCh0LlpvZEZpcnN0UGFydHlUeXBlS2luZD1yPXt9KSkuWm9kU3RyaW5nPVwiWm9kU3RyaW5nXCIsby5ab2ROdW1iZXI9XCJab2ROdW1iZXJcIixvLlpvZE5hTj1cIlpvZE5hTlwiLG8uWm9kQmlnSW50PVwiWm9kQmlnSW50XCIsby5ab2RCb29sZWFuPVwiWm9kQm9vbGVhblwiLG8uWm9kRGF0ZT1cIlpvZERhdGVcIixvLlpvZFN5bWJvbD1cIlpvZFN5bWJvbFwiLG8uWm9kVW5kZWZpbmVkPVwiWm9kVW5kZWZpbmVkXCIsby5ab2ROdWxsPVwiWm9kTnVsbFwiLG8uWm9kQW55PVwiWm9kQW55XCIsby5ab2RVbmtub3duPVwiWm9kVW5rbm93blwiLG8uWm9kTmV2ZXI9XCJab2ROZXZlclwiLG8uWm9kVm9pZD1cIlpvZFZvaWRcIixvLlpvZEFycmF5PVwiWm9kQXJyYXlcIixvLlpvZE9iamVjdD1cIlpvZE9iamVjdFwiLG8uWm9kVW5pb249XCJab2RVbmlvblwiLG8uWm9kRGlzY3JpbWluYXRlZFVuaW9uPVwiWm9kRGlzY3JpbWluYXRlZFVuaW9uXCIsby5ab2RJbnRlcnNlY3Rpb249XCJab2RJbnRlcnNlY3Rpb25cIixvLlpvZFR1cGxlPVwiWm9kVHVwbGVcIixvLlpvZFJlY29yZD1cIlpvZFJlY29yZFwiLG8uWm9kTWFwPVwiWm9kTWFwXCIsby5ab2RTZXQ9XCJab2RTZXRcIixvLlpvZEZ1bmN0aW9uPVwiWm9kRnVuY3Rpb25cIixvLlpvZExhenk9XCJab2RMYXp5XCIsby5ab2RMaXRlcmFsPVwiWm9kTGl0ZXJhbFwiLG8uWm9kRW51bT1cIlpvZEVudW1cIixvLlpvZEVmZmVjdHM9XCJab2RFZmZlY3RzXCIsby5ab2ROYXRpdmVFbnVtPVwiWm9kTmF0aXZlRW51bVwiLG8uWm9kT3B0aW9uYWw9XCJab2RPcHRpb25hbFwiLG8uWm9kTnVsbGFibGU9XCJab2ROdWxsYWJsZVwiLG8uWm9kRGVmYXVsdD1cIlpvZERlZmF1bHRcIixvLlpvZENhdGNoPVwiWm9kQ2F0Y2hcIixvLlpvZFByb21pc2U9XCJab2RQcm9taXNlXCIsby5ab2RCcmFuZGVkPVwiWm9kQnJhbmRlZFwiLG8uWm9kUGlwZWxpbmU9XCJab2RQaXBlbGluZVwiLG8uWm9kUmVhZG9ubHk9XCJab2RSZWFkb25seVwiLHQuaW5zdGFuY2VvZj0oZSx0PXttZXNzYWdlOmBJbnB1dCBub3QgaW5zdGFuY2Ugb2YgJHtlLm5hbWV9YH0pPT5ldih0PT50IGluc3RhbmNlb2YgZSx0KTtsZXQgZWI9ei5jcmVhdGU7dC5zdHJpbmc9ZWI7bGV0IGVBPVQuY3JlYXRlO3QubnVtYmVyPWVBLHQubmFuPWVwLmNyZWF0ZSx0LmJpZ2ludD1ELmNyZWF0ZTtsZXQgZXg9TC5jcmVhdGU7dC5ib29sZWFuPWV4LHQuZGF0ZT1OLmNyZWF0ZSx0LnN5bWJvbD1SLmNyZWF0ZSx0LnVuZGVmaW5lZD1NLmNyZWF0ZSx0Lm51bGw9Wi5jcmVhdGUsdC5hbnk9VS5jcmVhdGUsdC51bmtub3duPUYuY3JlYXRlLHQubmV2ZXI9cS5jcmVhdGUsdC52b2lkPUguY3JlYXRlLHQuYXJyYXk9Vi5jcmVhdGUsdC5vYmplY3Q9JC5jcmVhdGUsdC5zdHJpY3RPYmplY3Q9JC5zdHJpY3RDcmVhdGUsdC51bmlvbj1XLmNyZWF0ZSx0LmRpc2NyaW1pbmF0ZWRVbmlvbj1LLmNyZWF0ZSx0LmludGVyc2VjdGlvbj1YLmNyZWF0ZSx0LnR1cGxlPUcuY3JlYXRlLHQucmVjb3JkPVEuY3JlYXRlLHQubWFwPUouY3JlYXRlLHQuc2V0PWVlLmNyZWF0ZSx0LmZ1bmN0aW9uPWV0LmNyZWF0ZSx0Lmxhenk9ZW4uY3JlYXRlLHQubGl0ZXJhbD1lci5jcmVhdGUsdC5lbnVtPWVhLmNyZWF0ZSx0Lm5hdGl2ZUVudW09ZWkuY3JlYXRlLHQucHJvbWlzZT1lbC5jcmVhdGU7bGV0IGV3PWVzLmNyZWF0ZTt0LmVmZmVjdD1ldyx0LnRyYW5zZm9ybWVyPWV3LHQub3B0aW9uYWw9ZWMuY3JlYXRlLHQubnVsbGFibGU9ZXUuY3JlYXRlLHQucHJlcHJvY2Vzcz1lcy5jcmVhdGVXaXRoUHJlcHJvY2Vzcyx0LnBpcGVsaW5lPWVtLmNyZWF0ZSx0Lm9zdHJpbmc9KCk9PmViKCkub3B0aW9uYWwoKSx0Lm9udW1iZXI9KCk9PmVBKCkub3B0aW9uYWwoKSx0Lm9ib29sZWFuPSgpPT5leCgpLm9wdGlvbmFsKCksdC5jb2VyY2U9e3N0cmluZzplPT56LmNyZWF0ZSh7Li4uZSxjb2VyY2U6ITB9KSxudW1iZXI6ZT0+VC5jcmVhdGUoey4uLmUsY29lcmNlOiEwfSksYm9vbGVhbjplPT5MLmNyZWF0ZSh7Li4uZSxjb2VyY2U6ITB9KSxiaWdpbnQ6ZT0+RC5jcmVhdGUoey4uLmUsY29lcmNlOiEwfSksZGF0ZTplPT5OLmNyZWF0ZSh7Li4uZSxjb2VyY2U6ITB9KX0sdC5ORVZFUj1jLklOVkFMSUR9fSxuPXt9O2Z1bmN0aW9uIHIoZSl7dmFyIG89bltlXTtpZih2b2lkIDAhPT1vKXJldHVybiBvLmV4cG9ydHM7dmFyIGE9bltlXT17ZXhwb3J0czp7fX0saT0hMDt0cnl7dFtlXS5jYWxsKGEuZXhwb3J0cyxhLGEuZXhwb3J0cyxyKSxpPSExfWZpbmFsbHl7aSYmZGVsZXRlIG5bZV19cmV0dXJuIGEuZXhwb3J0c31yLmFiPVwiLy9cIixlLmV4cG9ydHM9cig2MjkpfSkoKX19LF9fd2VicGFja19tb2R1bGVfY2FjaGVfXz17fTtmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKGUpe3ZhciB0PV9fd2VicGFja19tb2R1bGVfY2FjaGVfX1tlXTtpZih2b2lkIDAhPT10KXJldHVybiB0LmV4cG9ydHM7dmFyIG49X193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW2VdPXtpZDplLGV4cG9ydHM6e319O3JldHVybiBfX3dlYnBhY2tfbW9kdWxlc19fW2VdKG4sbi5leHBvcnRzLF9fd2VicGFja19yZXF1aXJlX18pLG4uZXhwb3J0c31fX3dlYnBhY2tfcmVxdWlyZV9fLm49ZT0+e3ZhciB0PWUmJmUuX19lc01vZHVsZT8oKT0+ZS5kZWZhdWx0OigpPT5lO3JldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmQodCx7YTp0fSksdH0sKCgpPT57dmFyIGUsdD1PYmplY3QuZ2V0UHJvdG90eXBlT2Y/ZT0+T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpOmU9PmUuX19wcm90b19fO19fd2VicGFja19yZXF1aXJlX18udD1mdW5jdGlvbihuLHIpe2lmKDEmciYmKG49dGhpcyhuKSksOCZyfHxcIm9iamVjdFwiPT10eXBlb2YgbiYmbiYmKDQmciYmbi5fX2VzTW9kdWxlfHwxNiZyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnRoZW4pKXJldHVybiBuO3ZhciBvPU9iamVjdC5jcmVhdGUobnVsbCk7X193ZWJwYWNrX3JlcXVpcmVfXy5yKG8pO3ZhciBhPXt9O2U9ZXx8W251bGwsdCh7fSksdChbXSksdCh0KV07Zm9yKHZhciBpPTImciYmbjtcIm9iamVjdFwiPT10eXBlb2YgaSYmIX5lLmluZGV4T2YoaSk7aT10KGkpKU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGkpLmZvckVhY2goZT0+e2FbZV09KCk9Pm5bZV19KTtyZXR1cm4gYS5kZWZhdWx0PSgpPT5uLF9fd2VicGFja19yZXF1aXJlX18uZChvLGEpLG99fSkoKSxfX3dlYnBhY2tfcmVxdWlyZV9fLmQ9KGUsdCk9Pntmb3IodmFyIG4gaW4gdClfX3dlYnBhY2tfcmVxdWlyZV9fLm8odCxuKSYmIV9fd2VicGFja19yZXF1aXJlX18ubyhlLG4pJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9LF9fd2VicGFja19yZXF1aXJlX18ubz0oZSx0KT0+T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCksX193ZWJwYWNrX3JlcXVpcmVfXy5yPWU9PntcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSxfX3dlYnBhY2tfcmVxdWlyZV9fLm5jPXZvaWQgMDt2YXIgX193ZWJwYWNrX2V4cG9ydHNfXz17fTtmb3IodmFyIF9fd2VicGFja19pX18gaW4oKCk9PntcInVzZSBzdHJpY3RcIjtfX3dlYnBhY2tfcmVxdWlyZV9fLnIoX193ZWJwYWNrX2V4cG9ydHNfXyksX193ZWJwYWNrX3JlcXVpcmVfXy5kKF9fd2VicGFja19leHBvcnRzX18se2Rpc3BhdGNoZXI6KCk9PmR0LHJlbmRlckFwcERldk92ZXJsYXk6KCk9PmRjLERldk92ZXJsYXlDb250ZXh0OigpPT5kcixyZW5kZXJQYWdlc0Rldk92ZXJsYXk6KCk9PmR1LHVzZURldk92ZXJsYXlDb250ZXh0OigpPT5kYX0pO3ZhciBlLHQsbixyPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIiksbz1fX3dlYnBhY2tfcmVxdWlyZV9fLm4ociksYT1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIiksaT1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oYSksbD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9zcmMvYnVpbGQvd2VicGFjay9sb2FkZXJzL2RldnRvb2wvZGV2dG9vbC1zdHlsZS1pbmplY3QuanNcIikscz1fX3dlYnBhY2tfcmVxdWlyZV9fLm4obCksYz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3N0eWxlLWxvYWRlckA0LjAuMF93ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3djK2hlbHBlcnNAMC41LjE1X19lc2J1aWxkQDAuMjQuMl8vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCIpLHU9X193ZWJwYWNrX3JlcXVpcmVfXy5uKGMpLGQ9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zdHlsZS1sb2FkZXJANC4wLjBfd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3YytoZWxwZXJzQDAuNS4xNV9fZXNidWlsZEAwLjI0LjJfL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiKSxmPV9fd2VicGFja19yZXF1aXJlX18ubihkKSxwPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vc3R5bGUtbG9hZGVyQDQuMC4wX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd2MraGVscGVyc0AwLjUuMTVfX2VzYnVpbGRAMC4yNC4yXy9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiKSxoPV9fd2VicGFja19yZXF1aXJlX18ubihwKSxtPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvZ2xvYmFsLmNzc1wiKSxnPXt9O2cuc3R5bGVUYWdUcmFuc2Zvcm09aCgpLGcuc2V0QXR0cmlidXRlcz11KCksZy5pbnNlcnQ9cygpLGcuZG9tQVBJPWkoKSxnLmluc2VydFN0eWxlRWxlbWVudD1mKCksbygpKG0uWixnKSxtLlomJm0uWi5sb2NhbHMmJm0uWi5sb2NhbHM7dmFyIHk9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL3RvYXN0L3N0eWxlLmNzc1wiKSx2PXt9O3Yuc3R5bGVUYWdUcmFuc2Zvcm09aCgpLHYuc2V0QXR0cmlidXRlcz11KCksdi5pbnNlcnQ9cygpLHYuZG9tQVBJPWkoKSx2Lmluc2VydFN0eWxlRWxlbWVudD1mKCksbygpKHkuWix2KSx5LlomJnkuWi5sb2NhbHMmJnkuWi5sb2NhbHM7dmFyIGI9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vZGlzdC9jb21waWxlZC9yZWFjdC9qc3gtcnVudGltZS5qc1wiKSxBPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvY29tcGlsZXItcnVudGltZS5qc1wiKSx4PV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QvaW5kZXguanNcIiksdz1fX3dlYnBhY2tfcmVxdWlyZV9fLnQoeCwyKSxDPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvc3RhY2t0cmFjZS1wYXJzZXIvc3RhY2stdHJhY2UtcGFyc2VyLmNqcy5qc1wiKSxfPS9cXC9fbmV4dChcXC9zdGF0aWNcXC8uKykvLGs9U3ltYm9sLmZvcihcIm5leHQuY29uc29sZS5lcnJvci5kaWdlc3RcIik7ZnVuY3Rpb24gRShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gaihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7RShlLHQsblt0XSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBTKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX12YXIgTz17U21hbGw6MTYvMTQsTWVkaXVtOjEsTGFyZ2U6MTYvMTh9LEI9XCJzdGF0aWMtaW5kaWNhdG9yXCIsUD1cImJ1aWxkLW9rXCIsST1cImJ1aWxkLWVycm9yXCIsej1cImJlZm9yZS1mYXN0LXJlZnJlc2hcIixUPVwiZmFzdC1yZWZyZXNoXCIsRD1cInZlcnNpb24taW5mb1wiLEw9XCJ1bmhhbmRsZWQtZXJyb3JcIixOPVwidW5oYW5kbGVkLXJlamVjdGlvblwiLFI9XCJkZWJ1Zy1pbmZvXCIsTT1cImRldi1pbmRpY2F0b3JcIixaPVwiZGV2LWluZGljYXRvci1kaXNhYmxlXCIsVT1cImVycm9yLW92ZXJsYXktb3BlblwiLEY9XCJlcnJvci1vdmVybGF5LWNsb3NlXCIscT1cImVycm9yLW92ZXJsYXktdG9nZ2xlXCIsSD1cImJ1aWxkaW5nLWluZGljYXRvci1zaG93XCIsVj1cImJ1aWxkaW5nLWluZGljYXRvci1oaWRlXCIsJD1cInJlbmRlcmluZy1pbmRpY2F0b3Itc2hvd1wiLFc9XCJyZW5kZXJpbmctaW5kaWNhdG9yLWhpZGVcIixZPVwiZGV2dG9vbHMtcG9zaXRpb25cIixLPVwiZGV2dG9vbHMtcGFuZWwtcG9zaXRpb25cIixYPVwiZGV2dG9vbHMtc2NhbGVcIixHPVwiZGV2dG9vbHMtY29uZmlnXCIsUT1cIl9fbmV4dGpzLWRldi10b29scy1wYW5lbC1wb3NpdGlvblwiLEo9XCJfX25leHRqcy1kZXYtdG9vbHMtcGFuZWwtc2l6ZVwiLGVlPVwiX19uZXh0anMtZGV2LXRvb2xzLXNoYXJlZC1wYW5lbC1zaXplXCIsZXQ9XCJfX25leHRqcy1kZXYtdG9vbHMtc2hhcmVkLXBhbmVsLWxvY2F0aW9uXCIsZW49XCJzZWdtZW50LWV4cGxvcmVyLXVwZGF0ZS1yb3V0ZS1zdGF0ZVwiLGVyPS9cXHMrKGF0IE9iamVjdFxcLnJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZS4qKXwocmVhY3Rfc3RhY2tfYm90dG9tX2ZyYW1lQC4qKXwoYXQgcmVhY3Qtc3RhY2stYm90dG9tLWZyYW1lLiopfChyZWFjdC1zdGFjay1ib3R0b20tZnJhbWVALiopLztmdW5jdGlvbiBlbyhlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5zcGxpdChlcilbMF19dmFyIGVhPShudWxsPT0oZT1wcm9jZXNzLmVudi5fX05FWFRfREVWX0lORElDQVRPUik/dm9pZCAwOmUudG9TdHJpbmcoKSk9PT1cImZhbHNlXCIsZWk9e25leHRJZDoxLGJ1aWxkRXJyb3I6bnVsbCxlcnJvcnM6W10sbm90Rm91bmQ6ITEscmVuZGVyaW5nSW5kaWNhdG9yOiExLHN0YXRpY0luZGljYXRvcjohMSxzaG93SW5kaWNhdG9yOiExLGRpc2FibGVEZXZJbmRpY2F0b3I6ITEsYnVpbGRpbmdJbmRpY2F0b3I6ITEscmVmcmVzaFN0YXRlOnt0eXBlOlwiaWRsZVwifSx2ZXJzaW9uSW5mbzp7aW5zdGFsbGVkOlwiMC4wLjBcIixzdGFsZW5lc3M6XCJ1bmtub3duXCJ9LGRlYnVnSW5mbzp7ZGV2dG9vbHNGcm9udGVuZFVybDp2b2lkIDB9LGRldlRvb2xzUG9zaXRpb246XCJib3R0b20tbGVmdFwiLGRldlRvb2xzUGFuZWxQb3NpdGlvbjpFKHt9LGV0LFwiYm90dG9tLWxlZnRcIiksZGV2VG9vbHNQYW5lbFNpemU6e30sc2NhbGU6Ty5NZWRpdW0scGFnZTpcIlwiLHRoZW1lOlwic3lzdGVtXCIsaGlkZVNob3J0Y3V0Om51bGx9LGVsPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvcmVhY3QtZG9tL2NsaWVudC5qc1wiKTtmdW5jdGlvbiBlcyhlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQ+MT90LTE6MCkscj0xO3I8dDtyKyspbltyLTFdPWFyZ3VtZW50c1tyXTt2YXIgbz1lLmxlbmd0aC0xO3JldHVybihlLnNsaWNlKDAsbykucmVkdWNlKGZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZSt0K25bcl19LFwiXCIpK2Vbb10pLnJlcGxhY2UoL1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vZyxcIlwiKS5yZXBsYWNlKC9cXHMrL2csXCIgXCIpLnJlcGxhY2UoL1xccyooWzo7LHt9XSlcXHMqL2csXCIkMVwiKS5yZXBsYWNlKC87K30vZyxcIn1cIikudHJpbSgpfWZ1bmN0aW9uIGVjKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgICAgIC8qIGxhdGluLWV4dCAqL1xcbiAgICAgIEBmb250LWZhY2Uge1xcbiAgICAgICAgZm9udC1mYW1pbHk6ICdfX25leHRqcy1HZWlzdCc7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwIDYwMDtcXG4gICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcXG4gICAgICAgIHNyYzogdXJsKC9fX25leHRqc19mb250L2dlaXN0LWxhdGluLWV4dC53b2ZmMikgZm9ybWF0KCd3b2ZmMicpO1xcbiAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMTAwLTAyQkEsIFUrMDJCRC0wMkM1LCBVKzAyQzctMDJDQywgVSswMkNFLTAyRDcsXFxuICAgICAgICAgIFUrMDJERC0wMkZGLCBVKzAzMDQsIFUrMDMwOCwgVSswMzI5LCBVKzFEMDAtMURCRiwgVSsxRTAwLTFFOUYsXFxuICAgICAgICAgIFUrMUVGMi0xRUZGLCBVKzIwMjAsIFUrMjBBMC0yMEFCLCBVKzIwQUQtMjBDMCwgVSsyMTEzLCBVKzJDNjAtMkM3RixcXG4gICAgICAgICAgVStBNzIwLUE3RkY7XFxuICAgICAgfVxcbiAgICAgIC8qIGxhdGluLWV4dCAqL1xcbiAgICAgIEBmb250LWZhY2Uge1xcbiAgICAgICAgZm9udC1mYW1pbHk6ICdfX25leHRqcy1HZWlzdCBNb25vJztcXG4gICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA0MDAgNjAwO1xcbiAgICAgICAgZm9udC1kaXNwbGF5OiBzd2FwO1xcbiAgICAgICAgc3JjOiB1cmwoL19fbmV4dGpzX2ZvbnQvZ2Vpc3QtbW9uby1sYXRpbi1leHQud29mZjIpIGZvcm1hdCgnd29mZjInKTtcXG4gICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDEwMC0wMkJBLCBVKzAyQkQtMDJDNSwgVSswMkM3LTAyQ0MsIFUrMDJDRS0wMkQ3LFxcbiAgICAgICAgICBVKzAyREQtMDJGRiwgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsxRDAwLTFEQkYsIFUrMUUwMC0xRTlGLFxcbiAgICAgICAgICBVKzFFRjItMUVGRiwgVSsyMDIwLCBVKzIwQTAtMjBBQiwgVSsyMEFELTIwQzAsIFUrMjExMywgVSsyQzYwLTJDN0YsXFxuICAgICAgICAgIFUrQTcyMC1BN0ZGO1xcbiAgICAgIH1cXG4gICAgICAvKiBsYXRpbiAqL1xcbiAgICAgIEBmb250LWZhY2Uge1xcbiAgICAgICAgZm9udC1mYW1pbHk6ICdfX25leHRqcy1HZWlzdCc7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwIDYwMDtcXG4gICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcXG4gICAgICAgIHNyYzogdXJsKC9fX25leHRqc19mb250L2dlaXN0LWxhdGluLndvZmYyKSBmb3JtYXQoJ3dvZmYyJyk7XFxuICAgICAgICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNixcXG4gICAgICAgICAgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMixcXG4gICAgICAgICAgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDtcXG4gICAgICB9XFxuICAgICAgLyogbGF0aW4gKi9cXG4gICAgICBAZm9udC1mYWNlIHtcXG4gICAgICAgIGZvbnQtZmFtaWx5OiAnX19uZXh0anMtR2Vpc3QgTW9ubyc7XFxuICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7XFxuICAgICAgICBmb250LXdlaWdodDogNDAwIDYwMDtcXG4gICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDtcXG4gICAgICAgIHNyYzogdXJsKC9fX25leHRqc19mb250L2dlaXN0LW1vbm8tbGF0aW4ud29mZjIpIGZvcm1hdCgnd29mZjInKTtcXG4gICAgICAgIHVuaWNvZGUtcmFuZ2U6IFUrMDAwMC0wMEZGLCBVKzAxMzEsIFUrMDE1Mi0wMTUzLCBVKzAyQkItMDJCQywgVSswMkM2LFxcbiAgICAgICAgICBVKzAyREEsIFUrMDJEQywgVSswMzA0LCBVKzAzMDgsIFUrMDMyOSwgVSsyMDAwLTIwNkYsIFUrMjBBQywgVSsyMTIyLFxcbiAgICAgICAgICBVKzIxOTEsIFUrMjE5MywgVSsyMjEyLCBVKzIyMTUsIFUrRkVGRiwgVStGRkZEO1xcbiAgICAgIH1cXG4gICAgXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIGVjPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59dmFyIGV1PWZ1bmN0aW9uKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9W10sdFswXT1lKTplPXRbMF0sKDAseC51c2VJbnNlcnRpb25FZmZlY3QpKGVkLGUpLG51bGx9O2Z1bmN0aW9uIGVkKCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO3JldHVybiBlLnRleHRDb250ZW50PWVzKGVjKCkpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZSksZnVuY3Rpb24oKXtkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKGUpfX12YXIgZWY9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vZGlzdC9jb21waWxlZC9yZWFjdC1kb20vaW5kZXguanNcIik7ZnVuY3Rpb24gZXAoZSl7dmFyIHQsbj0oMCxBLmMpKDMpLHI9ZS5jaGlsZHJlbixvPWRhKCkuc2hhZG93Um9vdDtyZXR1cm4gblswXSE9PXJ8fG5bMV0hPT1vPyh0PSgwLGVmLmNyZWF0ZVBvcnRhbCkocixvKSxuWzBdPXIsblsxXT1vLG5bMl09dCk6dD1uWzJdLHR9ZnVuY3Rpb24gZWgoZSl7aWYoXCJcIj09PWUudHJpbSgpKXRocm93IEVycm9yKFwiY2FuJ3QgZGVjb2RlIGVtcHR5IGhleFwiKTt2YXIgdD1wYXJzZUludChlLDE2KTtpZihpc05hTih0KSl0aHJvdyBFcnJvcihcImludmFsaWQgaGV4OiBgXCIuY29uY2F0KGUsXCJgXCIpKTtyZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQodCl9dmFyIGVtPS9eX19UVVJCT1BBQ0tfXyhbYS16QS1aMC05XyRdKylfXyQvLGVnPS9odHRwcz86XFwvXFwvW15cXHMvJC4/I10uW15cXHMpJ1wiXSovaSxleT1uZXcgUmVnRXhwKFwiKFwiLmNvbmNhdCgvX19UVVJCT1BBQ0tfX1thLXpBLVowLTlfJF0rX18vZy5zb3VyY2UsXCJ8XFxcXHMrKVwiKSksZXY9ZnVuY3Rpb24oZSl7dmFyIHQsbj0oMCxBLmMpKDcpLHI9ZS50ZXh0LG89ZS5tYXRjaGVyO2lmKG5bMF0hPT1vfHxuWzFdIT09cil7dmFyIGEsaSxsPXIuc3BsaXQoZXkpO25bM10hPT1vPyhpPWZ1bmN0aW9uKGUsdCl7aWYoZWcudGVzdChlKSl7dmFyIG49ZWcuZXhlYyhlKVswXTtyZXR1cm5cImZ1bmN0aW9uXCIhPXR5cGVvZiBvfHxvKG4pPygwLGIuanN4KSh4LkZyYWdtZW50LHtjaGlsZHJlbjooMCxiLmpzeCkoXCJhXCIse2hyZWY6bix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub3JlZmVycmVyIG5vb3BlbmVyXCIsY2hpbGRyZW46ZX0pfSxcImxpbmstXCIuY29uY2F0KHQpKTplfXRyeXt2YXIgcj1mdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKGVtKTtpZighdClyZXR1cm4gZTtmb3IodmFyIG49dFsxXSxyPVwiXCIsbz0wLGE9XCJcIixpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciBsPW5baV07aWYoMD09PW8pXCJfXCI9PT1sP289MTpcIiRcIj09PWw/bz0yOnIrPWw7ZWxzZSBpZigxPT09bylcIl9cIj09PWw/KHIrPVwiIFwiLG89MCk6XCIkXCI9PT1sPyhyKz1cIl9cIixvPTIpOihyKz1sLG89MCk7ZWxzZSBpZigyPT09bylpZigyPT09YS5sZW5ndGgmJihyKz1laChhKSxhPVwiXCIpLFwiX1wiPT09bCl7aWYoXCJcIiE9PWEpdGhyb3cgRXJyb3IoXCJpbnZhbGlkIGhleDogYFwiLmNvbmNhdChhLFwiYFwiKSk7bz0zfWVsc2UgaWYoXCIkXCI9PT1sKXtpZihcIlwiIT09YSl0aHJvdyBFcnJvcihcImludmFsaWQgaGV4OiBgXCIuY29uY2F0KGEsXCJgXCIpKTtvPTB9ZWxzZSBhKz1sO2Vsc2UgaWYoMz09PW8paWYoXCJfXCI9PT1sKXRocm93IEVycm9yKFwiaW52YWxpZCBoZXg6IGBcIi5jb25jYXQoYStsLFwiYFwiKSk7ZWxzZVwiJFwiPT09bD8ocis9ZWgoYSksYT1cIlwiLG89MCk6YSs9bH1yZXR1cm4gcn0oZSk7aWYociE9PWUpcmV0dXJuKDAsYi5qc3hzKShcImlcIix7Y2hpbGRyZW46W1wie1wiLHIsXCJ9XCJdfSxcImlkZW50LVwiLmNvbmNhdCh0KSl9Y2F0Y2gobil7cmV0dXJuKDAsYi5qc3hzKShcImlcIix7Y2hpbGRyZW46W1wie1wiLGUsXCIgKGRlY29kaW5nIGZhaWxlZDogXCIsXCJcIituLFwiKVwiLFwifVwiXX0sXCJpZGVudC1cIi5jb25jYXQodCkpfXJldHVybigwLGIuanN4KSh4LkZyYWdtZW50LHtjaGlsZHJlbjplfSxcInRleHQtXCIuY29uY2F0KHQpKX0sblszXT1vLG5bNF09aSk6aT1uWzRdLGE9bC5tYXAoaSksblswXT1vLG5bMV09cixuWzJdPWF9ZWxzZSBhPW5bMl07cmV0dXJuIG5bNV0hPT1hPyh0PSgwLGIuanN4KShiLkZyYWdtZW50LHtjaGlsZHJlbjphfSksbls1XT1hLG5bNl09dCk6dD1uWzZdLHR9LGViPVsvXndlYnBhY2staW50ZXJuYWw6XFwvXFwvXFwvKFxcKFtcXHctXStcXClcXC8pPy8sL14od2VicGFjazpcXC9cXC9cXC98d2VicGFjazpcXC9cXC8oX05fRVxcLyk/KShcXChbXFx3LV0rXFwpXFwvKT8vXTtmdW5jdGlvbiBlQShlKXt2YXIgdD0hMCxuPSExLHI9dm9pZCAwO3RyeXtmb3IodmFyIG8sYT1lYltTeW1ib2wuaXRlcmF0b3JdKCk7ISh0PShvPWEubmV4dCgpKS5kb25lKTt0PSEwKXt2YXIgaT1vLnZhbHVlO2lmKGkudGVzdChlKSlyZXR1cm4hMDtlPWUucmVwbGFjZShpLFwiXCIpfX1jYXRjaChlKXtuPSEwLHI9ZX1maW5hbGx5e3RyeXt0fHxudWxsPT1hLnJldHVybnx8YS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgcn19cmV0dXJuITF9ZnVuY3Rpb24gZXgoZSl7dmFyIHQ9ITAsbj0hMSxyPXZvaWQgMDt0cnl7Zm9yKHZhciBvLGE9ZWJbU3ltYm9sLml0ZXJhdG9yXSgpOyEodD0obz1hLm5leHQoKSkuZG9uZSk7dD0hMCl7dmFyIGk9by52YWx1ZTtlPWUucmVwbGFjZShpLFwiXCIpfX1jYXRjaChlKXtuPSEwLHI9ZX1maW5hbGx5e3RyeXt0fHxudWxsPT1hLnJldHVybnx8YS5yZXR1cm4oKX1maW5hbGx5e2lmKG4pdGhyb3cgcn19cmV0dXJuIGV9ZnVuY3Rpb24gZXcoZSx0LG4scixvLGEsaSl7dHJ5e3ZhciBsPWVbYV0oaSkscz1sLnZhbHVlfWNhdGNoKGUpe24oZSk7cmV0dXJufWwuZG9uZT90KHMpOlByb21pc2UucmVzb2x2ZShzKS50aGVuKHIsbyl9ZnVuY3Rpb24gZUMoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixvKXt2YXIgYT1lLmFwcGx5KHQsbik7ZnVuY3Rpb24gaShlKXtldyhhLHIsbyxpLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXtldyhhLHIsbyxpLGwsXCJ0aHJvd1wiLGUpfWkodm9pZCAwKX0pfX1mdW5jdGlvbiBlXyhlLHQpe3ZhciBuLHIsbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119LGk9T2JqZWN0LmNyZWF0ZSgoXCJmdW5jdGlvblwiPT10eXBlb2YgSXRlcmF0b3I/SXRlcmF0b3I6T2JqZWN0KS5wcm90b3R5cGUpO3JldHVybiBpLm5leHQ9bCgwKSxpLnRocm93PWwoMSksaS5yZXR1cm49bCgyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIGM9W2wsc107aWYobil0aHJvdyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aSYmKGk9MCxjWzBdJiYoYT0wKSksYTspdHJ5e2lmKG49MSxyJiYobz0yJmNbMF0/ci5yZXR1cm46Y1swXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGM9WzImY1swXSxvLnZhbHVlXSksY1swXSl7Y2FzZSAwOmNhc2UgMTpvPWM7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmNbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWNbMV0sYz1bMF07Y29udGludWU7Y2FzZSA3OmM9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWNbMF18fDI9PT1jWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1jWzBdJiYoIW98fGNbMV0+b1swXSYmY1sxXTxvWzNdKSl7YS5sYWJlbD1jWzFdO2JyZWFrfWlmKDY9PT1jWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWM7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChjKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9Yz10LmNhbGwoZSxhKX1jYXRjaChlKXtjPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmY1swXSl0aHJvdyBjWzFdO3JldHVybnt2YWx1ZTpjWzBdP2NbMV06dm9pZCAwLGRvbmU6ITB9fX19ZnVuY3Rpb24gZWsoZSx0KXt2YXIgbjtyZXR1cm5cImZpbGU6Ly9cIj09PWUuZmlsZXx8KG51bGw9PShuPWUuZmlsZSk/dm9pZCAwOm4ubWF0Y2goL2h0dHBzPzpcXC9cXC8vKSk/UHJvbWlzZS5yZXNvbHZlKHtlcnJvcjohMSxyZWFzb246bnVsbCxleHRlcm5hbDohMCxzb3VyY2VTdGFja0ZyYW1lOmUsb3JpZ2luYWxTdGFja0ZyYW1lOm51bGwsb3JpZ2luYWxDb2RlRnJhbWU6bnVsbCxpZ25vcmVkOiEwfSk6ZUMoZnVuY3Rpb24oKXt2YXIgbixyO3JldHVybiBlXyh0aGlzLGZ1bmN0aW9uKG8pe2lmKFwicmVqZWN0ZWRcIj09PXQuc3RhdHVzKXRocm93IEVycm9yKHQucmVhc29uKTtyZXR1cm5bMix7ZXJyb3I6ITEscmVhc29uOm51bGwsZXh0ZXJuYWw6ITEsc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZToocj10LnZhbHVlKS5vcmlnaW5hbFN0YWNrRnJhbWUsb3JpZ2luYWxDb2RlRnJhbWU6ci5vcmlnaW5hbENvZGVGcmFtZXx8bnVsbCxpZ25vcmVkOihudWxsPT0obj1yLm9yaWdpbmFsU3RhY2tGcmFtZSk/dm9pZCAwOm4uaWdub3JlZCl8fCExfV19KX0pKCkuY2F0Y2goZnVuY3Rpb24odCl7dmFyIG4scjtyZXR1cm57ZXJyb3I6ITAscmVhc29uOm51bGwhPShyPW51bGwhPShuPW51bGw9PXQ/dm9pZCAwOnQubWVzc2FnZSk/bjpudWxsPT10P3ZvaWQgMDp0LnRvU3RyaW5nKCkpP3I6XCJVbmtub3duIEVycm9yXCIsZXh0ZXJuYWw6ITEsc291cmNlU3RhY2tGcmFtZTplLG9yaWdpbmFsU3RhY2tGcmFtZTpudWxsLG9yaWdpbmFsQ29kZUZyYW1lOm51bGwsaWdub3JlZDohMX19KX1mdW5jdGlvbiBlRShlLHQsbil7cmV0dXJuIGVDKGZ1bmN0aW9uKCl7dmFyIHIsbyxhLGk7cmV0dXJuIGVfKHRoaXMsZnVuY3Rpb24obCl7c3dpdGNoKGwubGFiZWwpe2Nhc2UgMDpyPXtmcmFtZXM6ZSxpc1NlcnZlcjpcInNlcnZlclwiPT09dCxpc0VkZ2VTZXJ2ZXI6XCJlZGdlLXNlcnZlclwiPT09dCxpc0FwcERpcmVjdG9yeTpufSxvPXZvaWQgMCxhPXZvaWQgMCxsLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBsLnRyeXMucHVzaChbMSwzLCw0XSksWzQsZmV0Y2goXCIvX19uZXh0anNfb3JpZ2luYWwtc3RhY2stZnJhbWVzXCIse21ldGhvZDpcIlBPU1RcIixib2R5OkpTT04uc3RyaW5naWZ5KHIpfSldO2Nhc2UgMjpyZXR1cm4gbz1sLnNlbnQoKSxbMyw0XTtjYXNlIDM6cmV0dXJuIGE9bC5zZW50KCkrXCJcIixbMyw0XTtjYXNlIDQ6aWYoIShvJiZvLm9rJiYyMDQhPT1vLnN0YXR1cykpcmV0dXJuWzMsNl07cmV0dXJuWzQsby5qc29uKCldO2Nhc2UgNTpyZXR1cm4gaT1sLnNlbnQoKSxbMixQcm9taXNlLmFsbChlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlayhlLGlbdF0pfSkpXTtjYXNlIDY6aWYoIW8pcmV0dXJuWzMsOF07cmV0dXJuWzQsby50ZXh0KCldO2Nhc2UgNzphPWwuc2VudCgpLGwubGFiZWw9ODtjYXNlIDg6cmV0dXJuWzIsUHJvbWlzZS5hbGwoZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGVrKGUse3N0YXR1czpcInJlamVjdGVkXCIscmVhc29uOlwiRmFpbGVkIHRvIGZldGNoIHRoZSBvcmlnaW5hbCBzdGFjayBmcmFtZXMgXCIuY29uY2F0KGE/XCI6IFwiLmNvbmNhdChhKTpcIlwiKX0pfSkpXX19KX0pKCl9ZnVuY3Rpb24gZWooZSl7aWYoIWUuZmlsZSlyZXR1cm5cIlwiO3ZhciB0PWVBKGUuZmlsZSksbj1cIlwiO2lmKHQpbj1leChlLmZpbGUpO2Vsc2UgdHJ5e3ZhciByLG89bmV3IFVSTChlLmZpbGUpLGE9XCJcIjsobnVsbD09KHI9Z2xvYmFsVGhpcy5sb2NhdGlvbik/dm9pZCAwOnIub3JpZ2luKSE9PW8ub3JpZ2luJiYoXCJudWxsXCI9PT1vLm9yaWdpbj9hKz1vLnByb3RvY29sOmErPW8ub3JpZ2luKSxhKz1vLnBhdGhuYW1lLG49ZXgoYSl9Y2F0Y2godCl7bj1leChlLmZpbGUpfXJldHVybiFlQShlLmZpbGUpJiZudWxsIT1lLmxpbmUxJiZuJiZcIjxhbm9ueW1vdXM+XCIhPT1lLmZpbGUmJihudWxsIT1lLmNvbHVtbjE/bis9XCIgKFwiLmNvbmNhdChlLmxpbmUxLFwiOlwiKS5jb25jYXQoZS5jb2x1bW4xLFwiKVwiKTpuKz1cIiAoXCIuY29uY2F0KGUubGluZTEsXCIpXCIpKSxufWZ1bmN0aW9uIGVTKGUpe3ZhciB0LG4scj0oMCxBLmMpKDYpO3JbMF0hPT1lPyh0PXZvaWQgMD09PWU/e306ZSxyWzBdPWUsclsxXT10KTp0PXJbMV07dmFyIG89dC5maWxlLGE9dC5saW5lMSxpPXQuY29sdW1uMTtyZXR1cm4gclsyXSE9PWl8fHJbM10hPT1vfHxyWzRdIT09YT8obj1mdW5jdGlvbigpe2lmKG51bGwhPW8mJm51bGwhPWEmJm51bGwhPWkpe3ZhciBlPW5ldyBVUkxTZWFyY2hQYXJhbXM7ZS5hcHBlbmQoXCJmaWxlXCIsbyksZS5hcHBlbmQoXCJsaW5lMVwiLFN0cmluZyhhKSksZS5hcHBlbmQoXCJjb2x1bW4xXCIsU3RyaW5nKGkpKSxzZWxmLmZldGNoKFwiXCIuY29uY2F0KHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCIsXCIvX19uZXh0anNfbGF1bmNoLWVkaXRvcj9cIikuY29uY2F0KGUudG9TdHJpbmcoKSkpLnRoZW4oZU8sZnVuY3Rpb24oZSl7Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIG9wZW4gZmlsZSBcIicuY29uY2F0KG8sXCIgKFwiKS5jb25jYXQoYSxcIjpcIikuY29uY2F0KGksJylcIiBpbiB5b3VyIGVkaXRvci4gQ2F1c2U6JyksZSl9KX19LHJbMl09aSxyWzNdPW8scls0XT1hLHJbNV09bik6bj1yWzVdLG59ZnVuY3Rpb24gZU8oKXt9ZnVuY3Rpb24gZUIoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIGVQKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBlSShlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZmlsbDpcImN1cnJlbnRDb2xvclwiLGQ6XCJNMTEuNSA5Ljc1VjExLjI1QzExLjUgMTEuMzg4MSAxMS4zODgxIDExLjUgMTEuMjUgMTEuNUg0Ljc1QzQuNjExOTMgMTEuNSA0LjUgMTEuMzg4MSA0LjUgMTEuMjVMNC41IDQuNzVDNC41IDQuNjExOTMgNC42MTE5MyA0LjUgNC43NSA0LjVINi4yNUg3VjNINi4yNUg0Ljc1QzMuNzgzNSAzIDMgMy43ODM1IDMgNC43NVYxMS4yNUMzIDEyLjIxNjUgMy43ODM1IDEzIDQuNzUgMTNIMTEuMjVDMTIuMjE2NSAxMyAxMyAxMi4yMTY1IDEzIDExLjI1VjkuNzVWOUgxMS41VjkuNzVaTTguNSAzSDkuMjVIMTIuMjQ5NUMxMi42NjM3IDMgMTIuOTk5NSAzLjMzNTc5IDEyLjk5OTUgMy43NVY2Ljc1VjcuNUgxMS40OTk1VjYuNzVWNS41NjA2Nkw4LjUzMDMzIDguNTI5NzhMOCA5LjA2MDExTDYuOTM5MzQgNy45OTk0NUw3LjQ2OTY3IDcuNDY5MTJMMTAuNDM4OCA0LjVIOS4yNUg4LjVWM1pcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLGIuanN4KShcInN2Z1wiLGVQKGVCKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCJ9LGUpLHtjaGlsZHJlbjp0fSkpLHJbMV09ZSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIGV6KGUpe3ZhciB0LG4scj0oMCxBLmMpKDMpO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTguNTU4NDYgMkg3LjQ0MTQ4TDEuODg5NzUgMTMuNUgxNC4xMTAyTDguNTU4NDYgMlpNOS45MDkyOSAxLjM0Nzg4QzkuNjU5MDIgMC44Mjk0NTYgOS4xMzQxMyAwLjUgOC41NTg0NiAwLjVINy40NDE0OEM2Ljg2NTgxIDAuNSA2LjM0MDkyIDAuODI5NDU0IDYuMDkwNjUgMS4zNDc4N0wwLjE5MjYwOCAxMy41NjUzQy0wLjEyNzk0MyAxNC4yMjkzIDAuMzU1ODM1IDE1IDEuMDkzMTYgMTVIMTQuOTA2OEMxNS42NDQxIDE1IDE2LjEyNzkgMTQuMjI5MyAxNS44MDczIDEzLjU2NTNMOS45MDkyOSAxLjM0Nzg4Wk04Ljc0OTk3IDQuNzVWNS41VjhWOC43NUg3LjI0OTk3VjhWNS41VjQuNzVIOC43NDk5N1pNNy45OTk5NyAxMkM4LjU1MjI2IDEyIDguOTk5OTcgMTEuNTUyMyA4Ljk5OTk3IDExQzguOTk5OTcgMTAuNDQ3NyA4LjU1MjI2IDEwIDcuOTk5OTcgMTBDNy40NDc2OSAxMCA2Ljk5OTk3IDEwLjQ0NzcgNi45OTk5NyAxMUM2Ljk5OTk3IDExLjU1MjMgNy40NDc2OSAxMiA3Ljk5OTk3IDEyWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLGIuanN4KShcInN2Z1wiLGVQKGVCKHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsaGVpZ2h0OlwiMTZcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsdmlld0JveDpcIi00IC00IDI0IDI0XCIsd2lkdGg6XCIxNlwifSxlKSx7Y2hpbGRyZW46dH0pKSxyWzFdPWUsclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiBlVChlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCxBLmMpKDYpLHM9ZS5sYW5nO2lmKCFzKXJldHVybiBsWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKGVSLHt9KSxsWzBdPXQpOnQ9bFswXSx0O3N3aXRjaChzLnRvTG93ZXJDYXNlKCkpe2Nhc2VcImpzeFwiOmNhc2VcInRzeFwiOnJldHVybiBsWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG49KDAsYi5qc3gpKGVNLHt9KSxsWzFdPW4pOm49bFsxXSxuO2Nhc2VcInRzXCI6Y2FzZVwidHlwZXNjcmlwdFwiOnJldHVybiBsWzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKGVOLHt9KSxsWzJdPXIpOnI9bFsyXSxyO2Nhc2VcImphdmFzY3JpcHRcIjpjYXNlXCJqc1wiOmNhc2VcIm1qc1wiOnJldHVybiBsWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89KDAsYi5qc3gpKGVMLHt9KSxsWzNdPW8pOm89bFszXSxvO2Nhc2VcImpzb25cIjpyZXR1cm4gbFs0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPSgwLGIuanN4KShlRCx7fSksbFs0XT1hKTphPWxbNF0sYTtkZWZhdWx0OnJldHVybiBsWzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9KDAsYi5qc3gpKGVSLHt9KSxsWzVdPWkpOmk9bFs1XSxpfX1mdW5jdGlvbiBlRCgpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHtjbGlwUnVsZTpcImV2ZW5vZGRcIixmaWxsUnVsZTpcImV2ZW5vZGRcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTMyMS40NSAxMzMzLjMzXCIsd2lkdGg6XCIxNlwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0yMjEuMzcgNjE4LjQ0aDc1Ny45NFY0MDUuMTVINzU1LjE0Yy0yMy41IDAtNTYuMzItMTIuNzQtNzEuODItMjguMjQtMTUuNS0xNS41LTI1LTQzLjQ3LTI1LTY2Ljk3VjgyLjg5SDg4LjM5Yy0xLjk5IDAtMy40OSAxLTQuNDkgMi0xLjUgMS0yIDIuNS0yIDQuNXYxMTU1LjA0YzAgMS41IDEgMy41IDIgNC41IDEgMS40OSAzIDEuOTkgNC40OSAxLjk5SDk3Mi44YzIgMCAxLjg5LS45OSAyLjg5LTEuOTkgMS41LTEgMy42MS0zIDMuNjEtNC41di0xMjEuMDlIMjIxLjM2Yy00NC45NiAwLTgyLTM2LjktODItODEuOTlWNzAwLjQ0YzAtNDUuMSAzNi45LTgyIDgyLTgyem0xMjYuNTEgMTE3LjQ3aDc1LjI0djE0Ni42MWMwIDMwLjc5LTIuNDQgNTQuMjMtNy4zMyA3MC4zMS00LjkyIDE2LjAzLTE0LjggMjkuNjctMjkuNjUgNDAuODUtMTQuODYgMTEuMTItMzMuOTEgMTYuNzItNTcuMDUgMTYuNzItMjQuNTMgMC00My41MS0zLjcxLTU2Ljk0LTExLjA2LTEzLjUtNy4zNi0yMy44OS0xOC4xLTMxLjIzLTMyLjMtNy4zNS0xNC4xNC0xMS42OS0zMS42Ny0xMi45OS01Mi41M2w3MS41LTEwLjgxYy4xMSAxMS44MSAxLjA3IDIwLjYxIDIuODEgMjYuMzMgMS43NiA1Ljc4IDQuNzUgMTAuMzcgOSAxMy45NSAyLjg3IDIuMzMgNi45NCAzLjQ2IDEyLjI1IDMuNDYgOC40IDAgMTQuNTgtMy40NiAxOC41My0xMC4zNyAzLjktNi45MiA1Ljg3LTE4LjYgNS44Ny0zNVY3MzUuOTJ6bTExMi43NyAxODAuNjdsNzEuMTctNC45N2MxLjU0IDEyLjgxIDQuNjkgMjIuNjIgOS40NCAyOS4yOCA3Ljc0IDEwLjg4IDE4Ljc0IDE2LjM0IDMzLjA5IDE2LjM0IDEwLjY4IDAgMTguOTMtMi43NiAyNC42OC04LjM2IDUuODEtNS41OCA4LjctMTIuMDcgOC43LTE5LjQxIDAtNi45Ny0yLjcxLTEzLjI2LTguMi0xOC43OS01LjQ3LTUuNTMtMTguMjMtMTAuNjgtMzguMjgtMTUuNjUtMzIuODktOC4xNy01Ni4yNy0xOS4xLTcwLjI2LTMyLjc0LTE0LjEyLTEzLjU3LTIxLjE4LTMwLjkyLTIxLjE4LTUyLjAzIDAtMTMuODMgMy42MS0yNi44OSAxMC44NS0zOS4yMSA3LjIyLTEyLjM4IDE4LjA3LTIyLjA2IDMyLjU5LTI5LjA5IDE0LjUyLTcuMDQgMzQuNC0xMC41NiA1OS42NS0xMC41NiAzMSAwIDU0LjYyIDYuNDEgNzAuODggMTkuMjkgMTYuMjggMTIuODEgMjUuOTIgMzMuMjQgMjkuMDQgNjEuMjdsLTcwLjUgNC42NWMtMS44Ny0xMi4yNS01LjgxLTIxLjE3LTExLjgxLTI2LjctNi4wNS01LjYtMTQuMzUtOC4zNi0yNC45LTguMzYtOC43MSAwLTE1LjMxIDIuMDctMTkuNzMgNi4xNi00LjQgNC4wOS02LjU5IDkuMTItNi41OSAxNS4wMiAwIDQuMjcgMS44MSA4LjExIDUuMzcgMTEuNTcgMy40NSAzLjU5IDExLjggNi44NSAyNS4wMiA5LjkzIDMyLjc1IDcuODYgNTYuMiAxNS44NCA3MC4zMSAyMy44NyAxNC4xOCA4LjA1IDI0LjUyIDE3Ljk4IDMwLjk2IDI5LjkyIDYuNDQgMTEuODggOS42NiAyNS4yIDkuNjYgMzkuOTYgMCAxNy4yOS00LjMgMzMuMjQtMTIuODggNDcuODktOC42MyAxNC41OC0yMC42MSAyNS43LTM2LjA4IDMzLjI0LTE1LjQxIDcuNTQtMzQuODUgMTEuMzEtNTguMzMgMTEuMzEtNDEuMjQgMC02OS44MS04Ljg2LTg1LjY4LTI2LjUyLTE1Ljg4LTE3LjY1LTI0Ljg1LTQwLjA5LTI2Ljk2LTY3LjN6bTI0OC43NC00NS41YzAtNDQuMDUgMTEuMDItNzguMzYgMzMuMDktMTAyLjg3IDIyLjA5LTI0LjU3IDUyLjgyLTM2LjgyIDkyLjI0LTM2LjgyIDQwLjM4IDAgNzEuNSAxMi4wNyA5My4zNCAzNi4xMyAyMS44NiAyNC4xMyAzMi43NyA1Ny45NCAzMi43NyAxMDEuMzcgMCAzMS41NC00Ljc1IDU3LjM2LTE0LjMgNzcuNTQtOS41NCAyMC4xOC0yMy4zNyAzNS44OS00MS40IDQ3LjEzLTE4LjA3IDExLjI0LTQwLjU1IDE2Ljg0LTY3LjQ4IDE2Ljg0LTI3LjMzIDAtNDkuOTktNC44My02Ny45NC0xNC41Mi0xNy45Mi05Ljc0LTMyLjQ5LTI1LjA3LTQzLjYyLTQ2LjA2LTExLjEzLTIwLjkyLTE2LjcyLTQ3LjE5LTE2LjcyLTc4Ljc0em03NC44OS4xOWMwIDI3LjIxIDQuNTcgNDYuODEgMTMuNjggNTguNjggOS4xMyAxMS44OCAyMS41NyAxNy44NSAzNy4yNiAxNy44NSAxNi4xIDAgMjguNjUtNS44NCAzNy40NS0xNy40NyA4Ljg3LTExLjY4IDEzLjI4LTMyLjU0IDEzLjI4LTYyLjc3IDAtMjUuMzktNC42My00My45Mi0xMy44NC01NS42MS05LjI2LTExLjc2LTIxLjc1LTE3LjYtMzcuNTYtMTcuNi0xNS4xMyAwLTI3LjM0IDUuOTctMzYuNDkgMTcuODUtOS4yMSAxMS44OC0xMy43OCAzMS42MS0xMy43OCA1OS4wN3ptMjA5LjA4LTEzNS4zNmg2OS45OWw5MC45OCAxNDkuMDVWNzM1LjkxaDcwLjgzdjI2OS45NmgtNzAuODNsLTkwLjQ4LTE0OC4yNHYxNDguMjRoLTcwLjQ5VjczNS45MXptNjcuNzEtMTE3LjQ3aDE3OC4zN2M0NS4xIDAgODIgMzcuMDQgODIgODJ2MzQwLjkxYzAgNDQuOTYtMzcuMDMgODEuOTktODIgODEuOTloLTE3OC4zN3YxNDdjMCAxNy41LTYuOTkgMzIuOTktMTguNSA0NC41LTExLjUgMTEuNDktMjcgMTguNS00NC41IDE4LjVINjIuOTdjLTE3LjUgMC0zMi45OS03LTQ0LjUtMTguNS0xMS40OS0xMS41LTE4LjUtMjctMTguNS00NC41VjYzLjQ5YzAtMTcuNSA3LTMzIDE4LjUtNDQuNVM0NS45Ny40OSA2Mi45Ny40OUg3MDAuMWMxLjUtLjUgMy0uNSA0LjUtLjUgNyAwIDE0IDMgMTkgNy40OWgxYzEgLjUgMS41IDEgMi41IDJsMzI1LjQ2IDMyOS40N2M1LjUgNS41IDkuNSAxMyA5LjUgMjEuNSAwIDIuNS0uNSA0LjUtMSA3djI1MC45OHpNNzMyLjYxIDMwMy40N1Y5Ni45OWwyMzIuNDggMjM1LjQ3SDc2MS42Yy03Ljk5IDAtMTQuOTktMy41LTIwLjUtOC40OS00Ljk5LTUtOC40OS0xMi41LTguNDktMjAuNXpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gZUwoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7aGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDUwIDUwXCIsd2lkdGg6XCIxNlwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNIDQzLjMzNTkzOCA0IEwgNi42Njc5NjkgNCBDIDUuMTk1MzEzIDQgNCA1LjE5NTMxMyA0IDYuNjY3OTY5IEwgNCA0My4zMzIwMzEgQyA0IDQ0LjgwNDY4OCA1LjE5NTMxMyA0NiA2LjY2Nzk2OSA0NiBMIDQzLjMzMjAzMSA0NiBDIDQ0LjgwNDY4OCA0NiA0NiA0NC44MDQ2ODggNDYgNDMuMzM1OTM4IEwgNDYgNi42Njc5NjkgQyA0NiA1LjE5NTMxMyA0NC44MDQ2ODggNCA0My4zMzU5MzggNCBaIE0gMjcgMzYuMTgzNTk0IEMgMjcgNDAuMTc5Njg4IDI0LjY1NjI1IDQyIDIxLjIzNDM3NSA0MiBDIDE4LjE0MDYyNSA0MiAxNS45MTAxNTYgMzkuOTI1NzgxIDE1IDM4IEwgMTguMTQ0NTMxIDM2LjA5NzY1NiBDIDE4Ljc1IDM3LjE3MTg3NSAxOS42NzE4NzUgMzggMjEgMzggQyAyMi4yNjk1MzEgMzggMjMgMzcuNTAzOTA2IDIzIDM1LjU3NDIxOSBMIDIzIDIzIEwgMjcgMjMgWiBNIDM1LjY3NTc4MSA0MiBDIDMyLjEzMjgxMyA0MiAzMC4xMjEwOTQgNDAuMjE0ODQ0IDI5IDM4IEwgMzIgMzYgQyAzMi44MTY0MDYgMzcuMzM1OTM4IDMzLjcwNzAzMSAzOC42MTMyODEgMzUuNTg5ODQ0IDM4LjYxMzI4MSBDIDM3LjE3MTg3NSAzOC42MTMyODEgMzggMzcuODI0MjE5IDM4IDM2LjczMDQ2OSBDIDM4IDM1LjQyNTc4MSAzNy4xNDA2MjUgMzQuOTYwOTM4IDM1LjQwMjM0NCAzNC4xOTkyMTkgTCAzNC40NDkyMTkgMzMuNzg5MDYzIEMgMzEuNjk1MzEzIDMyLjYxNzE4OCAyOS44NjMyODEgMzEuMTQ4NDM4IDI5Ljg2MzI4MSAyOC4wMzkwNjMgQyAyOS44NjMyODEgMjUuMTc5Njg4IDMyLjA0Njg3NSAyMyAzNS40NTMxMjUgMjMgQyAzNy44Nzg5MDYgMjMgMzkuNjIxMDk0IDIzLjg0Mzc1IDQwLjg3ODkwNiAyNi4wNTQ2ODggTCAzNy45MTAxNTYgMjcuOTY0ODQ0IEMgMzcuMjUzOTA2IDI2Ljc4OTA2MyAzNi41NTA3ODEgMjYuMzI4MTI1IDM1LjQ1MzEyNSAyNi4zMjgxMjUgQyAzNC4zMzU5MzggMjYuMzI4MTI1IDMzLjYyODkwNiAyNy4wMzkwNjMgMzMuNjI4OTA2IDI3Ljk2NDg0NCBDIDMzLjYyODkwNiAyOS4xMDkzNzUgMzQuMzM1OTM4IDI5LjU3MDMxMyAzNS45NzI2NTYgMzAuMjgxMjUgTCAzNi45MjU3ODEgMzAuNjkxNDA2IEMgNDAuMTcxODc1IDMyLjA3ODEyNSA0MiAzMy40OTYwOTQgNDIgMzYuNjgzNTk0IEMgNDIgNDAuMTE3MTg4IDM5LjMwMDc4MSA0MiAzNS42NzU3ODEgNDIgWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBlTigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4cykoXCJzdmdcIix7ZmlsbDpcIm5vbmVcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgNTEyIDUxMlwiLHdpZHRoOlwiMTRcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46WygwLGIuanN4KShcInJlY3RcIix7ZmlsbDpcImN1cnJlbnRDb2xvclwiLGhlaWdodDpcIjUxMlwiLHJ4OlwiNTBcIix3aWR0aDpcIjUxMlwifSksKDAsYi5qc3gpKFwicmVjdFwiLHtmaWxsOlwiY3VycmVudENvbG9yXCIsaGVpZ2h0OlwiNTEyXCIscng6XCI1MFwiLHdpZHRoOlwiNTEyXCJ9KSwoMCxiLmpzeCkoXCJwYXRoXCIse2NsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJtMzE2LjkzOSA0MDcuNDI0djUwLjA2MWM4LjEzOCA0LjE3MiAxNy43NjMgNy4zIDI4Ljg3NSA5LjM4NnMyMi44MjMgMy4xMjkgMzUuMTM1IDMuMTI5YzExLjk5OSAwIDIzLjM5Ny0xLjE0NyAzNC4xOTYtMy40NDIgMTAuNzk5LTIuMjk0IDIwLjI2OC02LjA3NSAyOC40MDYtMTEuMzQyIDguMTM4LTUuMjY2IDE0LjU4MS0xMi4xNSAxOS4zMjgtMjAuNjVzNy4xMjEtMTkuMDA3IDcuMTIxLTMxLjUyMmMwLTkuMDc0LTEuMzU2LTE3LjAyNi00LjA2OS0yMy44NTdzLTYuNjI1LTEyLjkwNi0xMS43MzgtMTguMjI1Yy01LjExMi01LjMxOS0xMS4yNDItMTAuMDkxLTE4LjM4OS0xNC4zMTVzLTE1LjIwNy04LjIxMy0yNC4xOC0xMS45NjdjLTYuNTczLTIuNzEyLTEyLjQ2OC01LjM0NS0xNy42ODUtNy45LTUuMjE3LTIuNTU2LTkuNjUxLTUuMTYzLTEzLjMwMy03LjgyMi0zLjY1Mi0yLjY2LTYuNDY5LTUuNDc2LTguNDUxLTguNDQ4LTEuOTgyLTIuOTczLTIuOTc0LTYuMzM2LTIuOTc0LTEwLjA5MSAwLTMuNDQxLjg4Ny02LjU0NCAyLjY2MS05LjMwOHM0LjI3OC01LjEzNiA3LjUxMi03LjExOGMzLjIzNS0xLjk4MSA3LjE5OS0zLjUyIDExLjg5NC00LjYxNSA0LjY5Ni0xLjA5NSA5LjkxMi0xLjY0MiAxNS42NTEtMS42NDIgNC4xNzMgMCA4LjU4MS4zMTMgMTMuMjI0LjkzOCA0LjY0My42MjYgOS4zMTIgMS41OTEgMTQuMDA4IDIuODk0IDQuNjk1IDEuMzA0IDkuMjU5IDIuOTQ3IDEzLjY5NCA0LjkyOCA0LjQzNCAxLjk4MiA4LjUyOSA0LjI3NiAxMi4yODUgNi44ODR2LTQ2Ljc3NmMtNy42MTYtMi45Mi0xNS45MzctNS4wODQtMjQuOTYyLTYuNDkycy0xOS4zODEtMi4xMTItMzEuMDY2LTIuMTEyYy0xMS44OTUgMC0yMy4xNjMgMS4yNzgtMzMuODA1IDMuODMzcy0yMC4wMDYgNi41NDQtMjguMDkzIDExLjk2N2MtOC4wODYgNS40MjQtMTQuNDc2IDEyLjMzMy0xOS4xNzEgMjAuNzI5LTQuNjk1IDguMzk1LTcuMDQzIDE4LjQzMy03LjA0MyAzMC4xMTQgMCAxNC45MTQgNC4zMDQgMjcuNjM4IDEyLjkxMiAzOC4xNzIgOC42MDcgMTAuNTMzIDIxLjY3NSAxOS40NSAzOS4yMDQgMjYuNzUxIDYuODg2IDIuODE2IDEzLjMwMyA1LjU3OSAxOS4yNSA4LjI5MXMxMS4wODYgNS41MjggMTUuNDE1IDguNDQ4YzQuMzMgMi45MiA3Ljc0NyA2LjEwMSAxMC4yNTIgOS41NDMgMi41MDQgMy40NDEgMy43NTYgNy4zNTIgMy43NTYgMTEuNzMzIDAgMy4yMzMtLjc4MyA2LjIzMS0yLjM0OCA4Ljk5NXMtMy45MzkgNS4xNjItNy4xMjEgNy4xOTYtNy4xNDcgMy42MjQtMTEuODk0IDQuNzcxYy00Ljc0OCAxLjE0OC0xMC4zMDMgMS43MjEtMTYuNjY4IDEuNzIxLTEwLjg1MSAwLTIxLjU5Ny0xLjkwMy0zMi4yNC01LjcxLTEwLjY0Mi0zLjgwNi0yMC41MDItOS41MTYtMjkuNTc5LTE3LjEzem0tODQuMTU5LTEyMy4zNDJoNjQuMjJ2LTQxLjA4MmgtMTc5djQxLjA4Mmg2My45MDZ2MTgyLjkxOGg1MC44NzR6XCIsZmlsbDpcInZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKVwiLGZpbGxSdWxlOlwiZXZlbm9kZFwifSldfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBlUigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTdcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMTQuNSA3djdhMi41IDIuNSAwIDAgMS0yLjUgMi41SDRBMi41IDIuNSAwIDAgMSAxLjUgMTRWLjVoNy41ODZhMSAxIDAgMCAxIC43MDcuMjkzbDQuNDE0IDQuNDE0YTEgMSAwIDAgMSAuMjkzLjcwN1Y3ek0xMyA3djdhMSAxIDAgMCAxLTEgMUg0YTEgMSAwIDAgMS0xLTFWMmg1djVoNXpNOS41IDIuNjIxVjUuNWgyLjg3OUw5LjUgMi42MjF6XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIGVNKCl7dmFyIGUsdCxuPSgwLEEuYykoMik7cmV0dXJuIG5bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJnXCIse2NsaXBQYXRoOlwidXJsKCNmaWxlX3JlYWN0X2NsaXAwXzg3Ml8zMTgzKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk00LjUgMS45Mzc4MkM0LjcwMTI5IDEuODIxNjEgNC45OTQ3MiAxLjc4NTggNS40MTMxNSAxLjkxMDUzQzUuODMyOTggMi4wMzU2NyA2LjMzMTM5IDIuMzEwNzMgNi44NzYyNyAyLjczOTQ4QzcuMDExMzYgMi44NDU3OCA3LjE0ODAzIDIuOTYwNTIgNy4yODU3MyAzLjA4MzMxQzYuODYyMTcgMy41MzQ0NiA2LjQ0MjM5IDQuMDQzNTggNi4wMzc1MiA0LjYwMDkyQzUuMzUyNDMgNC42NzI4OCA0LjcwMTY0IDQuNzgxODYgNC4wOTkxNiA0LjkyMzA5QzQuMDYxNjcgNC43NDI0NCA0LjAzMDY0IDQuNTY2NzEgNC4wMDYxMiA0LjM5NjU2QzMuOTA3MjUgMy43MTAzMSAzLjkxODI1IDMuMTQxMTQgNC4wMTk3OSAyLjcxNDk5QzQuMTIwOTkgMi4yOTAyNSA0LjI5ODcxIDIuMDU0MDQgNC41IDEuOTM3ODJaTTcuNDk0NjYgMS45NTM2MUM3LjY2MjI1IDIuMDg1NDggNy44MzA5MiAyLjIyODA0IDcuOTk5OTkgMi4zODA2N0M4LjE2OTA2IDIuMjI4MDQgOC4zMzc3MyAyLjA4NTQ4IDguNTA1MzIgMS45NTM2MUM5LjEwOTIxIDEuNDc4NDIgOS43MTk4MiAxLjEyNTQ5IDEwLjMwMTIgMC45NTIyMDJDMTAuODgzOSAwLjc3ODQ5NiAxMS40ODM4IDAuNzczOCAxMiAxLjA3MThDMTIuNTE2MSAxLjM2OTggMTIuODEyIDEuODkxNjkgMTIuOTUzIDIuNDgzMjJDMTMuMDkzNiAzLjA3MzMzIDEzLjA5MzIgMy43Nzg1OCAxMi45ODM2IDQuNTM5MTdDMTIuOTUzMiA0Ljc1MDI0IDEyLjkxNDEgNC45Njc2IDEyLjg2NjUgNS4xOTAzNEMxMy4wODMyIDUuMjYwNDQgMTMuMjkxIDUuMzM1MjQgMTMuNDg5IDUuNDE0NDRDMTQuMjAyNSA1LjY5OTgzIDE0LjgxMzQgNi4wNTIxNyAxNS4yNTQyIDYuNDY4OTlDMTUuNjk2IDYuODg2OCAxNiA3LjQwNCAxNiA4QzE2IDguNTk2IDE1LjY5NiA5LjExMzE5IDE1LjI1NDIgOS41MzEwMUMxNC44MTM0IDkuOTQ3ODMgMTQuMjAyNSAxMC4zMDAyIDEzLjQ4OSAxMC41ODU2QzEzLjI5MSAxMC42NjQ4IDEzLjA4MzIgMTAuNzM5NiAxMi44NjY1IDEwLjgwOTdDMTIuOTE0MSAxMS4wMzI0IDEyLjk1MzIgMTEuMjQ5OCAxMi45ODM3IDExLjQ2MDhDMTMuMDkzMiAxMi4yMjE0IDEzLjA5MzYgMTIuOTI2NyAxMi45NTMgMTMuNTE2OEMxMi44MTIgMTQuMTA4MyAxMi41MTYxIDE0LjYzMDIgMTIgMTQuOTI4MkMxMS40ODM5IDE1LjIyNjIgMTAuODgzOSAxNS4yMjE1IDEwLjMwMTIgMTUuMDQ3OEM5LjcxOTg0IDE0Ljg3NDUgOS4xMDkyMyAxNC41MjE2IDguNTA1MzQgMTQuMDQ2NEM4LjMzNzc1IDEzLjkxNDUgOC4xNjkwNiAxMy43NzE5IDcuOTk5OTkgMTMuNjE5M0M3LjgzMDkxIDEzLjc3MTkgNy42NjIyMyAxMy45MTQ1IDcuNDk0NjQgMTQuMDQ2NEM2Ljg5MDc1IDE0LjUyMTYgNi4yODAxNCAxNC44NzQ1IDUuNjk4NzkgMTUuMDQ3OEM1LjExNjA1IDE1LjIyMTUgNC41MTYxMyAxNS4yMjYyIDMuOTk5OTggMTQuOTI4MkMzLjQ4MzgzIDE0LjYzMDIgMy4xODc5NCAxNC4xMDgzIDMuMDQ3IDEzLjUxNjhDMi45MDY0IDEyLjkyNjcgMi45MDY3NCAxMi4yMjE0IDMuMDE2MzIgMTEuNDYwOEMzLjA0NjczIDExLjI0OTggMy4wODU4NiAxMS4wMzI0IDMuMTMzNTEgMTAuODA5N0MyLjkxNjc5IDEwLjczOTUgMi43MDkgMTAuNjY0OCAyLjUxMSAxMC41ODU2QzEuNzk3NTIgMTAuMzAwMiAxLjE4NjU4IDkuOTQ3ODMgMC43NDU4MzMgOS41MzEwMUMwLjMwNDAyOCA5LjExMzE5IDAgOC41OTYgMCA4QzAgNy40MDQgMC4zMDQwMjggNi44ODY4IDAuNzQ1ODMzIDYuNDY4OTlDMS4xODY1OCA2LjA1MjE3IDEuNzk3NTIgNS42OTk4MyAyLjUxMSA1LjQxNDQ0QzIuNzA5IDUuMzM1MjQgMi45MTY4IDUuMjYwNDQgMy4xMzM1MiA1LjE5MDM0QzMuMDg1ODcgNC45Njc2IDMuMDQ2NzUgNC43NTAyNCAzLjAxNjM0IDQuNTM5MTdDMi45MDY3NiAzLjc3ODU4IDIuOTA2NDIgMy4wNzMzMiAzLjA0NzAyIDIuNDgzMjFDMy4xODc5NiAxLjg5MTY5IDMuNDgzODUgMS4zNjk4IDQgMS4wNzE4QzQuNTE2MTUgMC43NzM3OTggNS4xMTYwNyAwLjc3ODQ5NSA1LjY5ODgxIDAuOTUyMjAxQzYuMjgwMTYgMS4xMjU0OSA2Ljg5MDc3IDEuNDc4NDEgNy40OTQ2NiAxLjk1MzYxWk03LjM2NzQ3IDQuNTEwMjVDNy41NzczNSA0LjI1MTk0IDcuNzg4ODEgNC4wMDkyNyA3Ljk5OTk5IDMuNzgzNTZDOC4yMTExNyA0LjAwOTI3IDguNDIyNjMgNC4yNTE5NCA4LjYzMjUxIDQuNTEwMjVDOC40MjM2OSA0LjUwMzQ2IDguMjEyNzQgNC41IDggNC41QzcuNzg3MjUgNC41IDcuNTc2MyA0LjUwMzQ1IDcuMzY3NDcgNC41MTAyNVpNOC43MTQyNSAzLjA4MzMxQzkuMTM3ODEgMy41MzQ0NyA5LjU1NzU5IDQuMDQzNTggOS45NjI0NiA0LjYwMDkyQzEwLjY0NzUgNC42NzI4OCAxMS4yOTgzIDQuNzgxODYgMTEuOTAwOCA0LjkyMzA5QzExLjkzODMgNC43NDI0NCAxMS45NjkzIDQuNTY2NzEgMTEuOTkzOSA0LjM5NjU3QzEyLjA5MjcgMy43MTAzMSAxMi4wODE3IDMuMTQxMTQgMTEuOTgwMiAyLjcxNDk5QzExLjg3OSAyLjI5MDI1IDExLjcwMTMgMi4wNTQwNCAxMS41IDEuOTM3ODJDMTEuMjk4NyAxLjgyMTYxIDExLjAwNTMgMS43ODU4IDEwLjU4NjggMS45MTA1M0MxMC4xNjcgMi4wMzU2OCA5LjY2ODU5IDIuMzEwNzMgOS4xMjM3MSAyLjczOTQ4QzguOTg4NjIgMi44NDU3OCA4Ljg1MTk2IDIuOTYwNTIgOC43MTQyNSAzLjA4MzMxWk04IDUuNUM4LjQ4NDMzIDUuNSA4Ljk1NjM4IDUuNTE4ODUgOS40MTE4OCA1LjU1NDU2QzkuNjcwNTYgNS45MzExOCA5LjkyMjkgNi4zMzA1NiAxMC4xNjUxIDYuNzVDMTAuNDA3MiA3LjE2OTQ0IDEwLjYyNjkgNy41ODc2NiAxMC44MjM3IDcuOTk5OThDMTAuNjI2OSA4LjQxMjMyIDEwLjQwNzIgOC44MzA1NSAxMC4xNjUgOS4yNUM5LjkyMjg4IDkuNjY5NDQgOS42NzA1MyAxMC4wNjg4IDkuNDExODUgMTAuNDQ1NEM4Ljk1NjM2IDEwLjQ4MTIgOC40ODQzMiAxMC41IDggMTAuNUM3LjUxNTY3IDEwLjUgNy4wNDM2MyAxMC40ODEyIDYuNTg4MTMgMTAuNDQ1NEM2LjMyOTQ1IDEwLjA2ODggNi4wNzcxIDkuNjY5NDQgNS44MzQ5NCA5LjI1QzUuNTkyNzcgOC44MzA1NSA1LjM3MzA2IDguNDEyMzIgNS4xNzYyNCA3Ljk5OTk4QzUuMzczMDYgNy41ODc2NSA1LjU5Mjc1IDcuMTY5NDQgNS44MzQ5MiA2Ljc1QzYuMDc3MDggNi4zMzA1NiA2LjMyOTQyIDUuOTMxMTggNi41ODgxIDUuNTU0NTZDNy4wNDM2MSA1LjUxODg0IDcuNTE1NjYgNS41IDggNS41Wk0xMS4wMzExIDYuMjVDMTEuMTM3NSA2LjQzNDIzIDExLjIzOTkgNi42MTg2NCAxMS4zMzg1IDYuODAyODdDMTEuNDU3MiA2LjQ5MTk3IDExLjU2MTYgNi4xODc1MiAxMS42NTE1IDUuODkxNzhDMTEuMzUwNSA1LjgyMTc1IDExLjAzNDYgNS43NTk5NiAxMC43MDYgNS43MDczNkMxMC44MTYzIDUuODg0OCAxMC45MjQ3IDYuMDY1NzYgMTEuMDMxMSA2LjI1Wk0xMS4wMzExIDkuNzVDMTEuMTM3NCA5LjU2NTc2IDExLjIzOTkgOS4zODEzMyAxMS4zMzg1IDkuMTk3MDlDMTEuNDU3MiA5LjUwODAxIDExLjU2MTcgOS44MTI0NiAxMS42NTE1IDEwLjEwODJDMTEuMzUwNSAxMC4xNzgyIDExLjAzNDYgMTAuMjQgMTAuNzA1OSAxMC4yOTI2QzEwLjgxNjIgMTAuMTE1MiAxMC45MjQ3IDkuOTM0MjQgMTEuMDMxMSA5Ljc1Wk0xMS45MjQ5IDcuOTk5OThDMTIuMjA1MSA4LjYyOTI3IDEyLjQzNjIgOS4yNDczOCAxMi42MTUxIDkuODM5NzdDMTIuNzkwMyA5Ljc4MTkxIDEyLjk1OCA5LjcyMDkyIDEzLjExNzYgOS42NTcwOEMxMy43NjE0IDkuMzk5NTggMTQuMjQ4OCA5LjEwNTQ3IDE0LjU2NzEgOC44MDQ0NkMxNC44ODQzIDguNTA0NDUgMTUgOC4yMzI0MyAxNSA4QzE1IDcuNzY3NTcgMTQuODg0MyA3LjQ5NTU1IDE0LjU2NzEgNy4xOTU1NEMxNC4yNDg4IDYuODk0NTMgMTMuNzYxNCA2LjYwMDQyIDEzLjExNzYgNi4zNDI5MkMxMi45NTggNi4yNzkwNyAxMi43OTAzIDYuMjE4MDggMTIuNjE1MSA2LjE2MDIyQzEyLjQzNjIgNi43NTI2IDEyLjIwNTEgNy4zNzA2OSAxMS45MjQ5IDcuOTk5OThaTTkuOTYyNDQgMTEuMzk5MUMxMC42NDc1IDExLjMyNzEgMTEuMjk4MyAxMS4yMTgxIDExLjkwMDggMTEuMDc2OUMxMS45MzgzIDExLjI1NzYgMTEuOTY5NCAxMS40MzMzIDExLjk5MzkgMTEuNjAzNEMxMi4wOTI4IDEyLjI4OTcgMTIuMDgxNyAxMi44NTg5IDExLjk4MDIgMTMuMjg1QzExLjg3OSAxMy43MDk4IDExLjcwMTMgMTMuOTQ2IDExLjUgMTQuMDYyMkMxMS4yOTg3IDE0LjE3ODQgMTEuMDA1MyAxNC4yMTQyIDEwLjU4NjggMTQuMDg5NUMxMC4xNjcgMTMuOTY0MyA5LjY2ODYxIDEzLjY4OTMgOS4xMjM3MyAxMy4yNjA1QzguOTg4NjMgMTMuMTU0MiA4Ljg1MTk2IDEzLjAzOTUgOC43MTQyNCAxMi45MTY3QzkuMTM3OCAxMi40NjU1IDkuNTU3NTggMTEuOTU2NCA5Ljk2MjQ0IDExLjM5OTFaTTguNjMyNDkgMTEuNDg5OEM4LjQyMjYyIDExLjc0ODEgOC4yMTExNiAxMS45OTA3IDcuOTk5OTkgMTIuMjE2NEM3Ljc4ODgxIDExLjk5MDcgNy41NzczNyAxMS43NDgxIDcuMzY3NDkgMTEuNDg5N0M3LjU3NjMxIDExLjQ5NjUgNy43ODcyNiAxMS41IDggMTEuNUM4LjIxMjczIDExLjUgOC40MjM2NyAxMS40OTY1IDguNjMyNDkgMTEuNDg5OFpNNC45Njg5MSA5Ljc1QzUuMDc1MjggOS45MzQyNCA1LjE4Mzc1IDEwLjExNTIgNS4yOTQwNCAxMC4yOTI2QzQuOTY1NCAxMC4yNCA0LjY0OTUxIDEwLjE3ODIgNC4zNDg0NCAxMC4xMDgyQzQuNDM4MzMgOS44MTI0NiA0LjU0Mjc2IDkuNTA4IDQuNjYxNTIgOS4xOTcwOEM0Ljc2MDA1IDkuMzgxMzMgNC44NjI1NCA5LjU2NTc1IDQuOTY4OTEgOS43NVpNNi4wMzc1NCAxMS4zOTkxQzUuMzUyNDQgMTEuMzI3MSA0LjcwMTYzIDExLjIxODEgNC4wOTkxNCAxMS4wNzY5QzQuMDYxNjUgMTEuMjU3NiA0LjAzMDYyIDExLjQzMzMgNC4wMDYxIDExLjYwMzRDMy45MDcyMyAxMi4yODk3IDMuOTE4MjMgMTIuODU4OSA0LjAxOTc3IDEzLjI4NUM0LjEyMDk3IDEzLjcwOTggNC4yOTg2OSAxMy45NDYgNC40OTk5OCAxNC4wNjIyQzQuNzAxMjcgMTQuMTc4NCA0Ljk5NDcgMTQuMjE0MiA1LjQxMzEzIDE0LjA4OTVDNS44MzI5NiAxMy45NjQzIDYuMzMxMzcgMTMuNjg5MyA2Ljg3NjI1IDEzLjI2MDVDNy4wMTEzNSAxMy4xNTQyIDcuMTQ4MDIgMTMuMDM5NSA3LjI4NTczIDEyLjkxNjdDNi44NjIxNyAxMi40NjU1IDYuNDQyNCAxMS45NTY0IDYuMDM3NTQgMTEuMzk5MVpNNC4wNzUwNyA3Ljk5OTk4QzMuNzk0ODQgOC42MjkyNyAzLjU2MzgxIDkuMjQ3MzcgMy4zODQ4OSA5LjgzOTc3QzMuMjA5NjkgOS43ODE5MSAzLjA0MiA5LjcyMDkyIDIuODgyMzkgOS42NTcwOEMyLjIzODY0IDkuMzk5NTggMS43NTEyMyA5LjEwNTQ3IDEuNDMyOTQgOC44MDQ0NkMxLjExNTcxIDguNTA0NDUgMSA4LjIzMjQzIDEgOEMxIDcuNzY3NTcgMS4xMTU3MSA3LjQ5NTU1IDEuNDMyOTQgNy4xOTU1NEMxLjc1MTIzIDYuODk0NTMgMi4yMzg2NCA2LjYwMDQyIDIuODgyMzkgNi4zNDI5MkMzLjA0MiA2LjI3OTA3IDMuMjA5NyA2LjIxODA4IDMuMzg0OSA2LjE2MDIyQzMuNTYzODMgNi43NTI2MSAzLjc5NDg0IDcuMzcwNjkgNC4wNzUwNyA3Ljk5OTk4Wk00LjY2MTUyIDYuODAyODdDNC41NDI3NyA2LjQ5MTk3IDQuNDM4MzUgNi4xODc1MiA0LjM0ODQ2IDUuODkxNzhDNC42NDk1MiA1LjgyMTc1IDQuOTY1MzkgNS43NTk5NiA1LjI5NDAyIDUuNzA3MzZDNS4xODM3MyA1Ljg4NDggNS4wNzUyNiA2LjA2NTc2IDQuOTY4ODkgNi4yNUM0Ljg2MjUzIDYuNDM0MjMgNC43NjAwNSA2LjYxODY0IDQuNjYxNTIgNi44MDI4N1pNOS4yNSA4QzkuMjUgOC42OTAzNiA4LjY5MDM2IDkuMjUgOCA5LjI1QzcuMzA5NjQgOS4yNSA2Ljc1IDguNjkwMzYgNi43NSA4QzYuNzUgNy4zMDk2NSA3LjMwOTY0IDYuNzUgOCA2Ljc1QzguNjkwMzYgNi43NSA5LjI1IDcuMzA5NjUgOS4yNSA4WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksblswXT1lKTplPW5bMF0sblsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4cykoXCJzdmdcIix7aGVpZ2h0OlwiMTZcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLHdpZHRoOlwiMTZcIixjaGlsZHJlbjpbZSwoMCxiLmpzeCkoXCJkZWZzXCIse2NoaWxkcmVuOigwLGIuanN4KShcImNsaXBQYXRoXCIse2lkOlwiZmlsZV9yZWFjdF9jbGlwMF84NzJfMzE4M1wiLGNoaWxkcmVuOigwLGIuanN4KShcInJlY3RcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsZmlsbDpcIndoaXRlXCJ9KX0pfSldfSksblsxXT10KTp0PW5bMV0sdH12YXIgZVo9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4vZGlzdC9jb21waWxlZC9hbnNlci9pbmRleC5qc1wiKSxlVT1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZVopLGVGPV9fd2VicGFja19yZXF1aXJlX18oXCIuL2Rpc3QvY29tcGlsZWQvc3RyaXAtYW5zaS9pbmRleC5qc1wiKSxlcT1fX3dlYnBhY2tfcmVxdWlyZV9fLm4oZUYpO2Z1bmN0aW9uIGVIKGUpe3ZhciB0PWUuc3BsaXQoL1xccj9cXG4vZyksbj10Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09PS9ePj8gK1xcZCsgK1xcfCBbIF0rLy5leGVjKGVxKCkoZSkpP251bGw6L14+PyArXFxkKyArXFx8ICggKikvLmV4ZWMoZXEoKShlKSl9KS5maWx0ZXIoQm9vbGVhbikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnBvcCgpfSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGlzTmFOKGUpP3QubGVuZ3RoOk1hdGgubWluKGUsdC5sZW5ndGgpfSxOYU4pO3JldHVybiBuPjE/dC5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm5+KHQ9ZS5pbmRleE9mKFwifFwiKSk/ZS5zdWJzdHJpbmcoMCx0KStlLnN1YnN0cmluZyh0KS5yZXBsYWNlKFwiXlxcXFwge1wiLmNvbmNhdChuLFwifVwiKSxcIlwiKTplfSkuam9pbihcIlxcblwiKTp0LmpvaW4oXCJcXG5cIil9ZnVuY3Rpb24gZVYoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIGUkKGUpe3ZhciB0LG4scixvPWUuc3RhY2tGcmFtZSxhPWUuY29kZUZyYW1lLGk9KDAseC51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybihmdW5jdGlvbihlKXt2YXIgdD1lVSgpLmFuc2lUb0pzb24oZSx7anNvbjohMCx1c2VfY2xhc3NlczohMCxyZW1vdmVfZW1wdHk6ITB9KSxuPVtdLHI9W10sbz0hMCxhPSExLGk9dm9pZCAwO3RyeXtmb3IodmFyIGwscz10W1N5bWJvbC5pdGVyYXRvcl0oKTshKG89KGw9cy5uZXh0KCkpLmRvbmUpO289ITApe3ZhciBjPWwudmFsdWU7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGMuY29udGVudCYmYy5jb250ZW50LmluY2x1ZGVzKFwiXFxuXCIpKWZvcih2YXIgdT1jLmNvbnRlbnQuc3BsaXQoXCJcXG5cIiksZD0wO2Q8dS5sZW5ndGg7ZCsrKXt2YXIgZj11W2RdO2YmJnIucHVzaChmdW5jdGlvbihlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9KGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sYykse2NvbnRlbnQ6Zn0pKSxkPHUubGVuZ3RoLTEmJihuLnB1c2gocikscj1bXSl9ZWxzZSByLnB1c2goYyl9fWNhdGNoKGUpe2E9ITAsaT1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoYSl0aHJvdyBpfX1yZXR1cm4gci5sZW5ndGg+MCYmbi5wdXNoKHIpLG59KShlSChhKSkubWFwKGZ1bmN0aW9uKGUpe3ZhciB0LG4scixhLGksbCxzLGMsdTtyZXR1cm57bGluZTplLHBhcnNlZExpbmU6KHQ9ZSxuPW8sKChudWxsPT0ocj10WzBdKT92b2lkIDA6ci5jb250ZW50KT09PVwiPlwifHwobnVsbD09KGE9dFswXSk/dm9pZCAwOmEuY29udGVudCk9PT1cIiBcIikmJihzPW51bGw9PShsPXRbMV0pfHxudWxsPT0odT1sLmNvbnRlbnQpfHxudWxsPT0oYz11LnJlcGxhY2UoXCJ8XCIsXCJcIikpP3ZvaWQgMDpjLnRyaW0oKSkse2xpbmVOdW1iZXI6cyxpc0Vycm9yZWRMaW5lOnM9PT0obnVsbD09KGk9bi5saW5lMSk/dm9pZCAwOmkudG9TdHJpbmcoKSl9KX19KX0sW2Esb10pLGw9ZVMoe2ZpbGU6by5maWxlLGxpbmUxOm51bGwhPShuPW8ubGluZTEpP246MSxjb2x1bW4xOm51bGwhPShyPW8uY29sdW1uMSk/cjoxfSkscz1udWxsPT1vfHxudWxsPT0odD1vLmZpbGUpP3ZvaWQgMDp0LnNwbGl0KFwiLlwiKS5wb3AoKTtyZXR1cm4oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY29kZWZyYW1lXCI6ITAsY2hpbGRyZW46WygwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWhlYWRlclwiLGNoaWxkcmVuOigwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtbGlua1wiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtaWNvblwiLGNoaWxkcmVuOigwLGIuanN4KShlVCx7bGFuZzpzfSl9KSwoMCxiLmpzeHMpKFwic3BhblwiLHtcImRhdGEtdGV4dFwiOiEwLGNoaWxkcmVuOltlaihvKSxcIiBAXCIsXCIgXCIsKDAsYi5qc3gpKGV2LHt0ZXh0Om8ubWV0aG9kTmFtZX0pXX0pLCgwLGIuanN4KShcImJ1dHRvblwiLHtcImFyaWEtbGFiZWxcIjpcIk9wZW4gaW4gZWRpdG9yXCIsXCJkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGluay1zb3VyY2UtZmlsZVwiOiEwLG9uQ2xpY2s6bCxjaGlsZHJlbjooMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtaWNvblwiLFwiZGF0YS1pY29uXCI6XCJyaWdodFwiLGNoaWxkcmVuOigwLGIuanN4KShlSSx7d2lkdGg6MTYsaGVpZ2h0OjE2fSl9KX0pXX0pfSksKDAsYi5qc3gpKFwicHJlXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtcHJlXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtbGluZXNcIixjaGlsZHJlbjppLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1lLmxpbmUsYT1lLnBhcnNlZExpbmUsaT1hLmxpbmVOdW1iZXIsbD1hLmlzRXJyb3JlZExpbmUscz17fTtyZXR1cm4gaSYmKHNbXCJkYXRhLW5leHRqcy1jb2RlZnJhbWUtbGluZVwiXT1pKSxsJiYoc1tcImRhdGEtbmV4dGpzLWNvZGVmcmFtZS1saW5lLS1lcnJvcmVkXCJdPSEwKSwoMCxiLmpzeCkoXCJkaXZcIiwobj1lVih7fSxzKSxyPXI9e2NoaWxkcmVuOm8ubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDAsYi5qc3gpKFwic3BhblwiLHtzdHlsZTplVih7Y29sb3I6ZS5mZz9cInZhcigtLWNvbG9yLVwiLmNvbmNhdChlLmZnLFwiKVwiKTp2b2lkIDB9LFwiYm9sZFwiPT09ZS5kZWNvcmF0aW9uP3tmb250V2VpZ2h0OjUwMH06XCJpdGFsaWNcIj09PWUuZGVjb3JhdGlvbj97Zm9udFN0eWxlOlwiaXRhbGljXCJ9OnZvaWQgMCksY2hpbGRyZW46ZS5jb250ZW50fSxcImZyYW1lLVwiLmNvbmNhdCh0KSl9KX0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhyKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChyKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSxuKSxcImxpbmUtXCIuY29uY2F0KHQpKX0pfSl9KV19KX12YXIgZVc9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAsQS5jKSg4KTtyZXR1cm4obFswXSE9PWU/KGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIl0pLHI9ZS5jaGlsZHJlbixvPWUuY2xhc3NOYW1lLGxbMF09ZSxsWzFdPXIsbFsyXT1vLGxbM109YSk6KHI9bFsxXSxvPWxbMl0sYT1sWzNdKSxsWzRdIT09cnx8bFs1XSE9PW98fGxbNl0hPT1hKT8oaT0oMCxiLmpzeCkoXCJkaXZcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWRpYWxvZy1ib2R5XCI6ITAsY2xhc3NOYW1lOm99LGEpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksbFs0XT1yLGxbNV09byxsWzZdPWEsbFs3XT1pKTppPWxbN10saX0sZVk9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAsQS5jKSg4KTtyZXR1cm4obFswXSE9PWU/KGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIl0pLHI9ZS5jaGlsZHJlbixvPWUuY2xhc3NOYW1lLGxbMF09ZSxsWzFdPXIsbFsyXT1vLGxbM109YSk6KHI9bFsxXSxvPWxbMl0sYT1sWzNdKSxsWzRdIT09cnx8bFs1XSE9PW98fGxbNl0hPT1hKT8oaT0oMCxiLmpzeCkoXCJkaXZcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWRpYWxvZy1jb250ZW50XCI6ITAsY2xhc3NOYW1lOm99LGEpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksbFs0XT1yLGxbNV09byxsWzZdPWEsbFs3XT1pKTppPWxbN10saX07ZnVuY3Rpb24gZUsoKXt2YXIgZSx0LG49KGU9W1wiXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLXJvb3RdIHtcXG4gICAgLS1uZXh0LWRpYWxvZy1yYWRpdXM6IHZhcigtLXJvdW5kZWQteGwpO1xcbiAgICAtLW5leHQtZGlhbG9nLW1heC13aWR0aDogOTYwcHg7XFxuICAgIC0tbmV4dC1kaWFsb2ctcm93LXBhZGRpbmc6IDE2cHg7XFxuICAgIC0tbmV4dC1kaWFsb2ctcGFkZGluZzogMTJweDtcXG4gICAgLS1uZXh0LWRpYWxvZy1ub3RjaC1oZWlnaHQ6IDQycHg7XFxuICAgIC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoOiAxcHg7XFxuXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSA1NnB4KTtcXG4gICAgbWF4LXdpZHRoOiB2YXIoLS1uZXh0LWRpYWxvZy1tYXgtd2lkdGgpO1xcbiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XFxuICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xcbiAgICBzY2FsZTogMC45NztcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogc2NhbGUsIG9wYWNpdHk7XFxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24pO1xcbiAgICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tdGltaW5nLW92ZXJsYXkpO1xcblxcbiAgICAmW2RhdGEtcmVuZGVyZWQ9J3RydWUnXSB7XFxuICAgICAgb3BhY2l0eTogMTtcXG4gICAgICBzY2FsZTogMTtcXG4gICAgfVxcblxcbiAgICBbZGF0YS1uZXh0anMtc2Nyb2xsLWZhZGVyXVtkYXRhLXNpZGU9J3RvcCddIHtcXG4gICAgICBsZWZ0OiAxcHg7XFxuICAgICAgdG9wOiBjYWxjKFxcbiAgICAgICAgdmFyKC0tbmV4dC1kaWFsb2ctbm90Y2gtaGVpZ2h0KSArIHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aClcXG4gICAgICApO1xcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSB2YXIoLS1uZXh0LWRpYWxvZy1wYWRkaW5nKSk7XFxuICAgICAgb3BhY2l0eTogMDtcXG4gICAgfVxcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZ10ge1xcbiAgICBvdXRsaW5lOiAwO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcF0ge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24pIHZhcigtLXRpbWluZy1vdmVybGF5KTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV0ge1xcbiAgICBtYXJnaW46IDhweDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV1bZGF0YS1yZW5kZXJlZD0ndHJ1ZSddXFxuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BdIHtcXG4gICAgb3BhY2l0eTogMTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudF0ge1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBwYWRkaW5nOiB2YXIoLS1uZXh0LWRpYWxvZy1wYWRkaW5nKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctY29udGVudF0gPiBbZGF0YS1uZXh0anMtZGlhbG9nLWhlYWRlcl0ge1xcbiAgICBmbGV4LXNocmluazogMDtcXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1jb250ZW50XSA+IFtkYXRhLW5leHRqcy1kaWFsb2ctYm9keV0ge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGZsZXg6IDEgMSBhdXRvO1xcbiAgfVxcblxcbiAgQG1lZGlhIChtYXgtaGVpZ2h0OiA4MTJweCkge1xcbiAgICBbZGF0YS1uZXh0anMtZGlhbG9nLW92ZXJsYXldIHtcXG4gICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAxNXB4KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7XFxuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ctcm9vdF0ge1xcbiAgICAgIC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoOiA1NDBweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XFxuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ctcm9vdF0ge1xcbiAgICAgIC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoOiA3MjBweDtcXG4gICAgfVxcbiAgfVxcblxcbiAgQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XFxuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ctcm9vdF0ge1xcbiAgICAgIC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoOiA5NjBweDtcXG4gICAgfVxcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBlSz1mdW5jdGlvbigpe3JldHVybiBufSxufXZhciBlWD1lcyhlSygpKTtmdW5jdGlvbiBlRygpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07cmV0dXJuIHQuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpfWZ1bmN0aW9uIGVRKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBlSihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gZTAoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIGUxKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBlUShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBlUShlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBlMihlLHQpe3JldHVyblwicmVzZXRcIj09PXQudHlwZT97c3RhdGU6XCJpbml0aWFsXCJ9OlwiY29waWVkXCI9PT10LnR5cGU/e3N0YXRlOlwic3VjY2Vzc1wifTpcImNvcHlpbmdcIj09PXQudHlwZT97c3RhdGU6XCJwZW5kaW5nXCJ9OlwiZXJyb3JcIj09PXQudHlwZT97c3RhdGU6XCJlcnJvclwiLGVycm9yOnQuZXJyb3J9OmV9ZnVuY3Rpb24gZTQoZSl7cmV0dXJue3N0YXRlOlwiZXJyb3JcIixlcnJvcjplfX1mdW5jdGlvbiBlNSgpe3JldHVybntzdGF0ZTpcInN1Y2Nlc3NcIn19dmFyIGUzPVwiZnVuY3Rpb25cIj09dHlwZW9mIHgudXNlQWN0aW9uU3RhdGU/ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoOCk7aVswXSE9PWU/KHQ9ZnVuY3Rpb24odCxuKXtyZXR1cm5cInJlc2V0XCI9PT1uP3tzdGF0ZTpcImluaXRpYWxcIn06XCJjb3B5XCI9PT1uP25hdmlnYXRvci5jbGlwYm9hcmQ/bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoZSkudGhlbihlNSxlNCk6e3N0YXRlOlwiZXJyb3JcIixlcnJvcjpcIkNvcHkgdG8gY2xpcGJvYXJkIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCJ9OnR9LGlbMF09ZSxpWzFdPXQpOnQ9aVsxXSxpWzJdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG49e3N0YXRlOlwiaW5pdGlhbFwifSxpWzJdPW4pOm49aVsyXTt2YXIgbD1lMSh4LnVzZUFjdGlvblN0YXRlKHQsbiksMykscz1sWzBdLGM9bFsxXSx1PWxbMl07aVszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPWZ1bmN0aW9uKCl7eC5zdGFydFRyYW5zaXRpb24oZnVuY3Rpb24oKXtjKFwiY29weVwiKX0pfSxpWzNdPXIpOnI9aVszXTt2YXIgZD1yO2lbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz1mdW5jdGlvbigpe2MoXCJyZXNldFwiKX0saVs0XT1vKTpvPWlbNF07dmFyIGY9bztyZXR1cm4gaVs1XSE9PXN8fGlbNl0hPT11PyhhPVtzLGQsZix1XSxpWzVdPXMsaVs2XT11LGlbN109YSk6YT1pWzddLGF9OmZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLEEuYykoMTIpO2xbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD17c3RhdGU6XCJpbml0aWFsXCJ9LGxbMF09dCk6dD1sWzBdO3ZhciBzPWUxKHgudXNlUmVkdWNlcihlMix0KSwyKSxjPXNbMF0sdT1zWzFdO3JldHVybiBsWzFdIT09ZXx8bFsyXSE9PWMuc3RhdGU/KG49ZnVuY3Rpb24oKXtyfHwobmF2aWdhdG9yLmNsaXBib2FyZD8odSh7dHlwZTpcImNvcHlpbmdcIn0pLG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KGUpLnRoZW4oZnVuY3Rpb24oKXt1KHt0eXBlOlwiY29waWVkXCJ9KX0sZnVuY3Rpb24oZSl7dSh7dHlwZTpcImVycm9yXCIsZXJyb3I6ZX0pfSkpOnUoe3R5cGU6XCJlcnJvclwiLGVycm9yOlwiQ29weSB0byBjbGlwYm9hcmQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIn0pKX0sbFs2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPWZ1bmN0aW9uKCl7dSh7dHlwZTpcInJlc2V0XCJ9KX0sbFs2XT1hKTphPWxbNl0sbz1hLHI9XCJwZW5kaW5nXCI9PT1jLnN0YXRlLGxbMV09ZSxsWzJdPWMuc3RhdGUsbFszXT1uLGxbNF09cixsWzVdPW8pOihuPWxbM10scj1sWzRdLG89bFs1XSksbFs3XSE9PW58fGxbOF0hPT1jfHxsWzldIT09cnx8bFsxMF0hPT1vPyhpPVtjLG4sbyxyXSxsWzddPW4sbFs4XT1jLGxbOV09cixsWzEwXT1vLGxbMTFdPWkpOmk9bFsxMV0saX07ZnVuY3Rpb24gZTYoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2PSgwLEEuYykoNDApO3ZbMF0hPT1lPyhpPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjb250ZW50XCIsXCJnZXRDb250ZW50XCIsXCJhY3Rpb25MYWJlbFwiLFwic3VjY2Vzc0xhYmVsXCIsXCJpY29uXCIsXCJkaXNhYmxlZFwiXSksbj1lLmNvbnRlbnQsbz1lLmdldENvbnRlbnQsdD1lLmFjdGlvbkxhYmVsLGw9ZS5zdWNjZXNzTGFiZWwsYT1lLmljb24scj1lLmRpc2FibGVkLHZbMF09ZSx2WzFdPXQsdlsyXT1uLHZbM109cix2WzRdPW8sdls1XT1hLHZbNl09aSx2WzddPWwpOih0PXZbMV0sbj12WzJdLHI9dlszXSxvPXZbNF0sYT12WzVdLGk9dls2XSxsPXZbN10pLHZbOF0hPT1ufHx2WzldIT09bz8ocz1mdW5jdGlvbigpe3JldHVybiBufHwobz9vKCk6XCJcIil9LHZbOF09bix2WzldPW8sdlsxMF09cyk6cz12WzEwXTt2YXIgdz1zO3ZbMTFdIT09dz8oYz13KCksdlsxMV09dyx2WzEyXT1jKTpjPXZbMTJdO3ZhciBDPWUxKGUzKGMpLDQpLF89Q1swXSxrPUNbMV0sRT1DWzJdLGo9Q1szXSxTPVwiZXJyb3JcIj09PV8uc3RhdGU/Xy5lcnJvcjpudWxsO3ZbMTNdIT09Uz8odT1mdW5jdGlvbigpe251bGwhPT1TJiZjb25zb2xlLndhcm4oUyl9LGQ9W1NdLHZbMTNdPVMsdlsxNF09dSx2WzE1XT1kKToodT12WzE0XSxkPXZbMTVdKSx4LnVzZUVmZmVjdCh1LGQpLHZbMTZdIT09Xy5zdGF0ZXx8dlsxN10hPT1FPyhmPWZ1bmN0aW9uKCl7aWYoXCJzdWNjZXNzXCI9PT1fLnN0YXRlKXt2YXIgZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RSgpfSwyZTMpO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChlKX19fSx2WzE2XT1fLnN0YXRlLHZbMTddPUUsdlsxOF09Zik6Zj12WzE4XSx2WzE5XSE9PV8uc3RhdGV8fHZbMjBdIT09anx8dlsyMV0hPT1FPyhwPVtqLF8uc3RhdGUsRV0sdlsxOV09Xy5zdGF0ZSx2WzIwXT1qLHZbMjFdPUUsdlsyMl09cCk6cD12WzIyXSx4LnVzZUVmZmVjdChmLHApO3ZhciBPPSFuYXZpZ2F0b3IuY2xpcGJvYXJkfHxqfHxyfHwhIVMsQj1cInN1Y2Nlc3NcIj09PV8uc3RhdGU/bDp0O3ZbMjNdIT09Xy5zdGF0ZXx8dlsyNF0hPT1hPyhoPVwic3VjY2Vzc1wiPT09Xy5zdGF0ZT8oMCxiLmpzeCkoZTgse30pOmF8fCgwLGIuanN4KShlOSx7d2lkdGg6MTQsaGVpZ2h0OjE0LGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwifSksdlsyM109Xy5zdGF0ZSx2WzI0XT1hLHZbMjVdPWgpOmg9dlsyNV07dmFyIFA9aCxJPVwibmV4dGpzLWRhdGEtY29weS1idXR0b24tLVwiLmNvbmNhdChfLnN0YXRlKTt2WzI2XSE9PWUuY2xhc3NOYW1lfHx2WzI3XSE9PUk/KG09ZUcoZS5jbGFzc05hbWUsXCJuZXh0anMtZGF0YS1jb3B5LWJ1dHRvblwiLEkpLHZbMjZdPWUuY2xhc3NOYW1lLHZbMjddPUksdlsyOF09bSk6bT12WzI4XSx2WzI5XSE9PWt8fHZbMzBdIT09Tz8oZz1mdW5jdGlvbigpe098fGsoKX0sdlsyOV09ayx2WzMwXT1PLHZbMzFdPWcpOmc9dlszMV07dmFyIHo9XCJlcnJvclwiPT09Xy5zdGF0ZT9cIiBcIi5jb25jYXQoXy5lcnJvcik6bnVsbDtyZXR1cm4gdlszMl0hPT1PfHx2WzMzXSE9PUJ8fHZbMzRdIT09UHx8dlszNV0hPT1pfHx2WzM2XSE9PXp8fHZbMzddIT09bXx8dlszOF0hPT1nPyh5PSgwLGIuanN4cykoXCJidXR0b25cIixlMChlSih7fSxpKSx7dHlwZTpcImJ1dHRvblwiLHRpdGxlOkIsXCJhcmlhLWxhYmVsXCI6QixcImFyaWEtZGlzYWJsZWRcIjpPLGRpc2FibGVkOk8sXCJkYXRhLW5leHRqcy1jb3B5LWJ1dHRvblwiOiEwLGNsYXNzTmFtZTptLG9uQ2xpY2s6ZyxjaGlsZHJlbjpbUCx6XX0pKSx2WzMyXT1PLHZbMzNdPUIsdlszNF09UCx2WzM1XT1pLHZbMzZdPXosdlszN109bSx2WzM4XT1nLHZbMzldPXkpOnk9dlszOV0seX1mdW5jdGlvbiBlOShlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0yLjQwNi40MzhjLS44NDUgMC0xLjUzMS42ODUtMS41MzEgMS41M3Y2LjU2M2MwIC44NDYuNjg2IDEuNTMxIDEuNTMxIDEuNTMxSDMuOTM3VjguNzVIMi40MDZhLjIxOS4yMTkgMCAwIDEtLjIxOS0uMjE5VjEuOTdjMC0uMTIxLjA5OC0uMjE5LjIyLS4yMTloNC44MTJjLjEyIDAgLjIxOC4wOTguMjE4LjIxOXYuNjU2SDguNzV2LS42NTZjMC0uODQ2LS42ODYtMS41MzItMS41MzEtMS41MzJIMi40MDZ6bTQuMzc1IDMuNWMtLjg0NSAwLTEuNTMxLjY4NS0xLjUzMSAxLjUzdjYuNTYzYzAgLjg0Ni42ODYgMS41MzEgMS41MzEgMS41MzFoNC44MTNjLjg0NSAwIDEuNTMxLS42ODUgMS41MzEtMS41M1Y1LjQ2OGMwLS44NDYtLjY4Ni0xLjUzMi0xLjUzMS0xLjUzMkg2Ljc4em0tLjIxOCAxLjUzYzAtLjEyLjA5Ny0uMjE4LjIxOC0uMjE4aDQuODEzYy4xMiAwIC4yMTkuMDk4LjIxOS4yMTl2Ni41NjJjMCAuMTIxLS4wOTguMjE5LS4yMi4yMTlINi43ODJhLjIxOS4yMTkgMCAwIDEtLjIxOC0uMjE5VjUuNDd6XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksclswXT10KTp0PXJbMF0sclsxXSE9PWU/KG49KDAsYi5qc3gpKFwic3ZnXCIsZTAoZUooe3dpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSkse2NoaWxkcmVuOnR9KSksclsxXT1lLHJbMl09bik6bj1yWzJdLG59ZnVuY3Rpb24gZTgoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7aGVpZ2h0OlwiMTZcIix4bGlua1RpdGxlOlwiY29waWVkXCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLHdpZHRoOlwiMTZcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixmaWxsOlwiY3VycmVudENvbG9yXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEzLjc4IDQuMjJhLjc1Ljc1IDAgMCAxIDAgMS4wNmwtNy4yNSA3LjI1YS43NS43NSAwIDAgMS0xLjA2IDBMMi4yMiA5LjI4YS43NTEuNzUxIDAgMCAxIC4wMTgtMS4wNDIuNzUxLjc1MSAwIDAgMSAxLjA0Mi0uMDE4TDYgMTAuOTRsNi43Mi02LjcyYS43NS43NSAwIDAgMSAxLjA2IDBaXCJ9KX0pLHRbMF09ZSk6ZT10WzBdLGV9ZnVuY3Rpb24gZTcoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIHRlKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX12YXIgdHQ9ZnVuY3Rpb24oKXtpZihcInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93KXJldHVybiExO3ZhciBlPVwiY2hyb21lXCJpbiB3aW5kb3cmJndpbmRvdy5jaHJvbWUsdD13aW5kb3cubmF2aWdhdG9yLnZlbmRvcjtyZXR1cm4gbnVsbCE9ZSYmXCJHb29nbGUgSW5jLlwiPT09dH0oKTtmdW5jdGlvbiB0bihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoPSgwLEEuYykoMTQpO3JldHVybiBoWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9e21hc2tUeXBlOlwibHVtaW5hbmNlXCJ9LGhbMF09dCk6dD1oWzBdLGhbMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obj0oMCxiLmpzeCkoXCJtYXNrXCIse2lkOlwibm9kZWpzX2ljb25fbWFza19hXCIsc3R5bGU6dCxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIwXCIseTpcIjBcIix3aWR0aDpcIjE0XCIsaGVpZ2h0OlwiMTRcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi42Ny4wODkgMS4yMDUgMy4yNTZhLjY2My42NjMgMCAwIDAtLjMzLjU3M3Y2LjMzOWMwIC4yMzcuMTI2LjQ1NS4zMy41NzRsNS40NjYgMy4xN2EuNjYuNjYgMCAwIDAgLjY2IDBsNS40NjUtMy4xN2EuNjY0LjY2NCAwIDAgMCAuMzI5LS41NzRWMy44MjlhLjY2My42NjMgMCAwIDAtLjMzLS41NzNMNy4zMy4wODlhLjY2My42NjMgMCAwIDAtLjY2MSAwXCIsZmlsbDpcIiNmZmZcIn0pfSksaFsxXT1uKTpuPWhbMV0saFsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19hKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xOC42NDggMi43MTcgMy4yNDgtNC44Ni00LjY0OCAxMS4zMWwxNS40IDcuNTggNy44OTYtMTYuMTc0elwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9iKVwifSl9KSxoWzJdPXIpOnI9aFsyXSxoWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89e21hc2tUeXBlOlwibHVtaW5hbmNlXCJ9LGhbM109byk6bz1oWzNdLGhbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxiLmpzeCkoXCJtYXNrXCIse2lkOlwibm9kZWpzX2ljb25fbWFza19jXCIsc3R5bGU6byxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIxXCIseTpcIjBcIix3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTRcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS4wMSAxMC41N2EuNjYzLjY2MyAwIDAgMCAuMTk1LjE3bDQuNjg4IDIuNzIuNzgxLjQ1YS42Ni42NiAwIDAgMCAuNTEuMDYzbDUuNzY0LTEwLjU5N2EuNjUzLjY1MyAwIDAgMC0uMTUzLS4xMjJMOS4yMTYgMS4xOCA3LjMyNS4wODdhLjY4OC42ODggMCAwIDAtLjE3MS0uMDdMMS4wMSAxMC41N3pcIixmaWxsOlwiI2ZmZlwifSl9KSxoWzRdPWEpOmE9aFs0XSxoWzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9KDAsYi5qc3gpKFwiZ1wiLHttYXNrOlwidXJsKCNub2RlanNfaWNvbl9tYXNrX2MpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTS01LjY0NyA0Ljk1OCA1LjIyNiAxOS43MzRsMTQuMzgtMTAuNjY3TDguNzM0LTUuNzEtNS42NDcgNC45NTh6XCIsZmlsbDpcInVybCgjbm9kZWpzX2ljb25fbGluZWFyX2dyYWRpZW50X2QpXCJ9KX0pLGhbNV09aSk6aT1oWzVdLGhbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obD17bWFza1R5cGU6XCJsdW1pbmFuY2VcIn0saFs2XT1sKTpsPWhbNl0saFs3XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhzPSgwLGIuanN4KShcIm1hc2tcIix7aWQ6XCJub2RlanNfaWNvbl9tYXNrX2VcIixzdHlsZTpsLG1hc2tVbml0czpcInVzZXJTcGFjZU9uVXNlXCIseDpcIjFcIix5OlwiMFwiLHdpZHRoOlwiMTNcIixoZWlnaHQ6XCIxNFwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk02LjkzNC4wMDRBLjY2NS42NjUgMCAwIDAgNi42Ny4wOUwxLjIyIDMuMjQ3bDUuODc3IDEwLjc0NmEuNjU1LjY1NSAwIDAgMCAuMjM1LS4wOGw1LjQ2NS0zLjE3YS42NjUuNjY1IDAgMCAwIC4zMTktLjQ1M0w3LjEyNi4wMTVhLjY4NC42ODQgMCAwIDAtLjE4OS0uMDFcIixmaWxsOlwiI2ZmZlwifSl9KSxoWzddPXMpOnM9aFs3XSxoWzhdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGM9KDAsYi5qc3hzKShcImdcIix7Y2hpbGRyZW46W3MsKDAsYi5qc3gpKFwiZ1wiLHttYXNrOlwidXJsKCNub2RlanNfaWNvbl9tYXNrX2UpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEuMjIuMDAydjEzLjk5MmgxMS44OTRWLjAwMkgxLjIyelwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9mKVwifSl9KV19KSxoWzhdPWMpOmM9aFs4XSxoWzldPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHU9KDAsYi5qc3hzKShcImxpbmVhckdyYWRpZW50XCIse2lkOlwibm9kZWpzX2ljb25fbGluZWFyX2dyYWRpZW50X2JcIix4MTpcIjEwLjk0M1wiLHkxOlwiLTEuMDg0XCIseDI6XCIyLjk5N1wiLHkyOlwiMTUuMDYyXCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjNcIixzdG9wQ29sb3I6XCIjM0U4NjNEXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi41XCIsc3RvcENvbG9yOlwiIzU1OTM0RlwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuOFwiLHN0b3BDb2xvcjpcIiM1QUFENDVcIn0pXX0pLGhbOV09dSk6dT1oWzldLGhbMTBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGQ9KDAsYi5qc3hzKShcImxpbmVhckdyYWRpZW50XCIse2lkOlwibm9kZWpzX2ljb25fbGluZWFyX2dyYWRpZW50X2RcIix4MTpcIi0uMTQ1XCIseTE6XCIxMi40MzFcIix4MjpcIjE0LjI3N1wiLHkyOlwiMS44MThcIixncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNTdcIixzdG9wQ29sb3I6XCIjM0U4NjNEXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi43MlwiLHN0b3BDb2xvcjpcIiM2MTk4NTdcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiMVwiLHN0b3BDb2xvcjpcIiM3NkFDNjRcIn0pXX0pLGhbMTBdPWQpOmQ9aFsxMF0saFsxMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZj0oMCxiLmpzeHMpKFwiZGVmc1wiLHtjaGlsZHJlbjpbdSxkLCgwLGIuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9mXCIseDE6XCIxLjIyNVwiLHkxOlwiNi45OThcIix4MjpcIjEzLjExNlwiLHkyOlwiNi45OThcIixncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuMTZcIixzdG9wQ29sb3I6XCIjNkJCRjQ3XCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi4zOFwiLHN0b3BDb2xvcjpcIiM3OUI0NjFcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjQ3XCIsc3RvcENvbG9yOlwiIzc1QUM2NFwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuN1wiLHN0b3BDb2xvcjpcIiM2NTlFNUFcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjlcIixzdG9wQ29sb3I6XCIjM0U4NjNEXCJ9KV19KV19KSxoWzExXT1mKTpmPWhbMTFdLGhbMTJdIT09ZT8ocD0oMCxiLmpzeHMpKFwic3ZnXCIsdGUoZTcoe3dpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSkse2NoaWxkcmVuOltuLHIsYSxpLGMsZl19KSksaFsxMl09ZSxoWzEzXT1wKTpwPWhbMTNdLHB9ZnVuY3Rpb24gdHIoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaD0oMCxBLmMpKDE0KTtyZXR1cm4gaFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PXttYXNrVHlwZTpcImx1bWluYW5jZVwifSxoWzBdPXQpOnQ9aFswXSxoWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG49KDAsYi5qc3gpKFwibWFza1wiLHtpZDpcIm5vZGVqc19pY29uX21hc2tfYVwiLHN0eWxlOnQsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMFwiLHk6XCIwXCIsd2lkdGg6XCIxNFwiLGhlaWdodDpcIjE0XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTYuNjcuMDg5IDEuMjA1IDMuMjU2YS42NjMuNjYzIDAgMCAwLS4zMy41NzN2Ni4zMzljMCAuMjM3LjEyNi40NTUuMzMuNTc0bDUuNDY2IDMuMTdhLjY2LjY2IDAgMCAwIC42NiAwbDUuNDY1LTMuMTdhLjY2NC42NjQgMCAwIDAgLjMyOS0uNTc0VjMuODI5YS42NjMuNjYzIDAgMCAwLS4zMy0uNTczTDcuMzMuMDg5YS42NjMuNjYzIDAgMCAwLS42NjEgMFwiLGZpbGw6XCIjZmZmXCJ9KX0pLGhbMV09bik6bj1oWzFdLGhbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkoXCJnXCIse21hc2s6XCJ1cmwoI25vZGVqc19pY29uX21hc2tfYSlcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTguNjQ4IDIuNzE3IDMuMjQ4LTQuODYtNC42NDYgMTEuMzFsMTUuMzk5IDcuNTggNy44OTYtMTYuMTc0elwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9iKVwifSl9KSxoWzJdPXIpOnI9aFsyXSxoWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89e21hc2tUeXBlOlwibHVtaW5hbmNlXCJ9LGhbM109byk6bz1oWzNdLGhbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT0oMCxiLmpzeCkoXCJtYXNrXCIse2lkOlwibm9kZWpzX2ljb25fbWFza19jXCIsc3R5bGU6byxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIxXCIseTpcIjBcIix3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTVcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMS4wMSAxMC41NzFhLjY2LjY2IDAgMCAwIC4xOTUuMTcybDQuNjg4IDIuNzE4Ljc4MS40NTFhLjY2LjY2IDAgMCAwIC41MS4wNjNsNS43NjQtMTAuNTk3YS42NTMuNjUzIDAgMCAwLS4xNTMtLjEyMkw5LjIxNiAxLjE4MSA3LjMyNS4wOWEuNjg4LjY4OCAwIDAgMC0uMTcxLS4wN0wxLjAxIDEwLjU3MnpcIixmaWxsOlwiI2ZmZlwifSl9KSxoWzRdPWEpOmE9aFs0XSxoWzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9KDAsYi5qc3gpKFwiZ1wiLHttYXNrOlwidXJsKCNub2RlanNfaWNvbl9tYXNrX2MpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTS01LjY0NyA0Ljk2IDUuMjI2IDE5LjczNiAxOS42MDYgOS4wNyA4LjczNC01LjcwNy01LjY0NyA0Ljk2elwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9kKVwifSl9KSxoWzVdPWkpOmk9aFs1XSxoWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGw9e21hc2tUeXBlOlwibHVtaW5hbmNlXCJ9LGhbNl09bCk6bD1oWzZdLGhbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocz0oMCxiLmpzeCkoXCJtYXNrXCIse2lkOlwibm9kZWpzX2ljb25fbWFza19lXCIsc3R5bGU6bCxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIxXCIseTpcIjBcIix3aWR0aDpcIjEzXCIsaGVpZ2h0OlwiMTRcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNNi45MzUuMDAzYS42NjUuNjY1IDAgMCAwLS4yNjQuMDg1bC01LjQ1IDMuMTU4IDUuODc3IDEwLjc0N2EuNjUzLjY1MyAwIDAgMCAuMjM1LS4wODJsNS40NjUtMy4xN2EuNjY1LjY2NSAwIDAgMCAuMzE5LS40NTJMNy4xMjcuMDE0YS42ODQuNjg0IDAgMCAwLS4xODktLjAxXCIsZmlsbDpcIiNmZmZcIn0pfSksaFs3XT1zKTpzPWhbN10saFs4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhjPSgwLGIuanN4cykoXCJnXCIse2NoaWxkcmVuOltzLCgwLGIuanN4KShcImdcIix7bWFzazpcInVybCgjbm9kZWpzX2ljb25fbWFza19lKVwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xLjIyMi4wMDF2MTMuOTkyaDExLjg5M1YwSDEuMjIyelwiLGZpbGw6XCJ1cmwoI25vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9mKVwifSl9KV19KSxoWzhdPWMpOmM9aFs4XSxoWzldPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHU9KDAsYi5qc3hzKShcImxpbmVhckdyYWRpZW50XCIse2lkOlwibm9kZWpzX2ljb25fbGluZWFyX2dyYWRpZW50X2JcIix4MTpcIjEwLjk0NFwiLHkxOlwiLTEuMDg0XCIseDI6XCIyLjk5N1wiLHkyOlwiMTUuMDYyXCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjNcIixzdG9wQ29sb3I6XCIjNjc2NzY3XCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi41XCIsc3RvcENvbG9yOlwiIzg1ODU4NVwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuOFwiLHN0b3BDb2xvcjpcIiM5ODlBOThcIn0pXX0pLGhbOV09dSk6dT1oWzldLGhbMTBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGQ9KDAsYi5qc3hzKShcImxpbmVhckdyYWRpZW50XCIse2lkOlwibm9kZWpzX2ljb25fbGluZWFyX2dyYWRpZW50X2RcIix4MTpcIi0uMTQ1XCIseTE6XCIxMi40MzNcIix4MjpcIjE0LjI3N1wiLHkyOlwiMS44MTlcIixncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuNTdcIixzdG9wQ29sb3I6XCIjNzQ3NDc0XCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi43MlwiLHN0b3BDb2xvcjpcIiM3MDcwNzBcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiMVwiLHN0b3BDb2xvcjpcIiM5MjkyOTJcIn0pXX0pLGhbMTBdPWQpOmQ9aFsxMF0saFsxMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZj0oMCxiLmpzeHMpKFwiZGVmc1wiLHtjaGlsZHJlbjpbdSxkLCgwLGIuanN4cykoXCJsaW5lYXJHcmFkaWVudFwiLHtpZDpcIm5vZGVqc19pY29uX2xpbmVhcl9ncmFkaWVudF9mXCIseDE6XCIxLjIyNlwiLHkxOlwiNi45OTdcIix4MjpcIjEzLjExN1wiLHkyOlwiNi45OTdcIixncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuMTZcIixzdG9wQ29sb3I6XCIjODc4Nzg3XCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIi4zOFwiLHN0b3BDb2xvcjpcIiNBOUE5QTlcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjQ3XCIsc3RvcENvbG9yOlwiI0E1QTVBNVwifSksKDAsYi5qc3gpKFwic3RvcFwiLHtvZmZzZXQ6XCIuN1wiLHN0b3BDb2xvcjpcIiM4RjhGOEZcIn0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiLjlcIixzdG9wQ29sb3I6XCIjNjI2MjYyXCJ9KV19KV19KSxoWzExXT1mKTpmPWhbMTFdLGhbMTJdIT09ZT8ocD0oMCxiLmpzeHMpKFwic3ZnXCIsdGUoZTcoe3dpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSkse2NoaWxkcmVuOltuLHIsYSxpLGMsZl19KSksaFsxMl09ZSxoWzEzXT1wKTpwPWhbMTNdLHB9dmFyIHRvPVwiTGVhcm4gbW9yZSBhYm91dCBlbmFibGluZyBOb2RlLmpzIGluc3BlY3RvciBmb3Igc2VydmVyIGNvZGUgd2l0aCBDaHJvbWUgRGV2VG9vbHNcIjtmdW5jdGlvbiB0YShlKXt2YXIgdCxuLHIsbz0oMCxBLmMpKDQpLGE9ZS5kZXZ0b29sc0Zyb250ZW5kVXJsfHxcIlwiO3JldHVybiBhJiZ0dD8ob1sxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLGIuanN4KSh0bix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS10b29sYmFyLWJ1dHRvbi1pY29uXCIsd2lkdGg6MTQsaGVpZ2h0OjE0fSksb1sxXT1uKTpuPW9bMV0sb1syXSE9PWE/KHI9KDAsYi5qc3gpKGU2LHtcImRhdGEtbmV4dGpzLWRhdGEtcnVudGltZS1lcnJvci1jb3B5LWRldnRvb2xzLXVybFwiOiEwLGNsYXNzTmFtZTpcIm5vZGVqcy1pbnNwZWN0b3ItYnV0dG9uXCIsYWN0aW9uTGFiZWw6XCJDb3B5IENocm9tZSBEZXZUb29scyBVUkxcIixzdWNjZXNzTGFiZWw6XCJDb3BpZWRcIixjb250ZW50OmEsaWNvbjpufSksb1syXT1hLG9bM109cik6cj1vWzNdLHIpOihvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwiYVwiLHt0aXRsZTp0byxcImFyaWEtbGFiZWxcIjp0byxjbGFzc05hbWU6XCJub2RlanMtaW5zcGVjdG9yLWJ1dHRvblwiLGhyZWY6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9jb25maWd1cmluZy9kZWJ1Z2dpbmcjc2VydmVyLXNpZGUtY29kZVwiLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIixjaGlsZHJlbjooMCxiLmpzeCkodHIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktdG9vbGJhci1idXR0b24taWNvblwiLHdpZHRoOjE0LGhlaWdodDoxNH0pfSksb1swXT10KTp0PW9bMF0sdCl9ZnVuY3Rpb24gdGkoZSl7dmFyIHQsbj0oMCxBLmMpKDMpLHI9ZS5lcnJvcixvPWUuZ2VuZXJhdGVFcnJvckluZm8sYT0hcjtyZXR1cm4gblswXSE9PW98fG5bMV0hPT1hPyh0PSgwLGIuanN4KShlNix7XCJkYXRhLW5leHRqcy1kYXRhLXJ1bnRpbWUtZXJyb3ItY29weS1zdGFja1wiOiEwLGNsYXNzTmFtZTpcImNvcHktZXJyb3ItYnV0dG9uXCIsYWN0aW9uTGFiZWw6XCJDb3B5IEVycm9yIEluZm9cIixzdWNjZXNzTGFiZWw6XCJFcnJvciBJbmZvIENvcGllZFwiLGdldENvbnRlbnQ6byxkaXNhYmxlZDphfSksblswXT1vLG5bMV09YSxuWzJdPXQpOnQ9blsyXSx0fWZ1bmN0aW9uIHRsKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB0cyhlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfWZ1bmN0aW9uIHRjKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9ZnVuY3Rpb24gdHUoZSx0KXtyZXR1cm4gdHMoZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fHRmKGUsdCl8fHRjKCl9ZnVuY3Rpb24gdGQoZSl7cmV0dXJuIHRzKGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8dGYoZSl8fHRjKCl9ZnVuY3Rpb24gdGYoZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdGwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdGwoZSx0KX19dmFyIHRwPVwiaHR0cHM6Ly9yZWFjdC5kZXYvbGluay9oeWRyYXRpb24tbWlzbWF0Y2hcIix0aD1cImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL3JlYWN0LWh5ZHJhdGlvbi1lcnJvclwiLHRtPVsvXkluIEhUTUwsICguKz8pIGNhbm5vdCBiZSBhIGNoaWxkIG9mIDwoLis/KT5cXC4oLiopXFxuVGhpcyB3aWxsIGNhdXNlIGEgaHlkcmF0aW9uIGVycm9yXFwuKC4qKS8sL15JbiBIVE1MLCAoLis/KSBjYW5ub3QgYmUgYSBkZXNjZW5kYW50IG9mIDwoLis/KT5cXC5cXG5UaGlzIHdpbGwgY2F1c2UgYSBoeWRyYXRpb24gZXJyb3JcXC4oLiopLywvXkluIEhUTUwsIHRleHQgbm9kZXMgY2Fubm90IGJlIGEgY2hpbGQgb2YgPCguKz8pPlxcLlxcblRoaXMgd2lsbCBjYXVzZSBhIGh5ZHJhdGlvbiBlcnJvclxcLi8sL15JbiBIVE1MLCB3aGl0ZXNwYWNlIHRleHQgbm9kZXMgY2Fubm90IGJlIGEgY2hpbGQgb2YgPCguKz8pPlxcLiBNYWtlIHN1cmUgeW91IGRvbid0IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiB0YWdzIG9uIGVhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlXFwuXFxuVGhpcyB3aWxsIGNhdXNlIGEgaHlkcmF0aW9uIGVycm9yXFwuL107ZnVuY3Rpb24gdGcoZSl7cmV0dXJuIHRtLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQudGVzdChlKX0pfXZhciB0eT1bXCJodHRwczovL25leHRqcy5vcmdcIixcImh0dHBzOi8vcmVhY3QuZGV2XCJdO2Z1bmN0aW9uIHR2KGUpe3JldHVybiB0eS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlLnN0YXJ0c1dpdGgodCl9KX1mdW5jdGlvbiB0YihlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoNiksaT1lLmVycm9yTWVzc2FnZTthWzBdIT09aT8odD1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbz0odD1lLG49dHYscj1BcnJheS5mcm9tKHQubWF0Y2hBbGwoL2h0dHBzPzpcXC9cXC9bXlxccy8kLj8jXS5bXlxccyknXCJdKi9naSksZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF19KSxuP3IuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBuKGUpfSk6cik7aWYoMD09PW8ubGVuZ3RoKXJldHVybiBudWxsO3ZhciBhPW9bMF07cmV0dXJuIGE9PT10cD90aDphfShpKSxhWzBdPWksYVsxXT10KTp0PWFbMV07dmFyIGw9dDtyZXR1cm4gbD8oYVszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KSh0QSx7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS10b29sYmFyLWJ1dHRvbi1pY29uXCIsd2lkdGg6MTQsaGVpZ2h0OjE0fSksYVszXT1yKTpyPWFbM10sYVs0XSE9PWw/KG89KDAsYi5qc3gpKFwiYVwiLHt0aXRsZTpcIkdvIHRvIHJlbGF0ZWQgZG9jdW1lbnRhdGlvblwiLFwiYXJpYS1sYWJlbFwiOlwiR28gdG8gcmVsYXRlZCBkb2N1bWVudGF0aW9uXCIsY2xhc3NOYW1lOlwiZG9jcy1saW5rLWJ1dHRvblwiLGhyZWY6bCx0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46cn0pLGFbNF09bCxhWzVdPW8pOm89YVs1XSxvKTooYVsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLGIuanN4KShcImJ1dHRvblwiLHt0aXRsZTpcIk5vIHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3VuZFwiLFwiYXJpYS1sYWJlbFwiOlwiTm8gcmVsYXRlZCBkb2N1bWVudGF0aW9uIGZvdW5kXCIsY2xhc3NOYW1lOlwiZG9jcy1saW5rLWJ1dHRvblwiLGRpc2FibGVkOiEwLGNoaWxkcmVuOigwLGIuanN4KSh0QSx7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS10b29sYmFyLWJ1dHRvbi1pY29uXCIsd2lkdGg6MTQsaGVpZ2h0OjE0fSl9KSxhWzJdPW4pOm49YVsyXSxuKX1mdW5jdGlvbiB0QShlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoMyk7cmV0dXJuKGFbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMCAuODc1aDQuMzc1QzUuNDQ4Ljg3NSA2LjQwMSAxLjM5IDcgMi4xODdBMy4yNzYgMy4yNzYgMCAwIDEgOS42MjUuODc1SDE0djExLjE1Nkg5LjRjLS41MjIgMC0xLjAyMy4yMDgtMS4zOTIuNTc3bC0uNTQ0LjU0M2gtLjkyOGwtLjU0NC0uNTQzYy0uMzY5LS4zNy0uODctLjU3Ny0xLjM5Mi0uNTc3SDBWLjg3NXptNi4zNDQgMy4yODFhMS45NjkgMS45NjkgMCAwIDAtMS45NjktMS45NjhIMS4zMTJ2OC41M0g0LjZjLjYyMiAwIDEuMjI1LjE3NyAxLjc0NC41MDJWNC4xNTZ6bTEuMzEyIDcuMDY0VjQuMTU2YzAtMS4wODcuODgyLTEuOTY4IDEuOTY5LTEuOTY4aDMuMDYzdjguNTNIOS40Yy0uNjIyIDAtMS4yMjUuMTc3LTEuNzQ0LjUwMnpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxhWzBdPXIpOnI9YVswXSxhWzFdIT09ZSk/KG89KDAsYi5qc3gpKFwic3ZnXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7d2lkdGg6XCIxNFwiLGhlaWdodDpcIjE0XCIsdmlld0JveDpcIjAgMCAxNCAxNFwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxlKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGFbMV09ZSxhWzJdPW8pOm89YVsyXSxvfWZ1bmN0aW9uIHR4KGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSgxMiksaT1lLmVycm9yLGw9ZS5kZWJ1Z0luZm8scz1lLmZlZWRiYWNrQnV0dG9uLGM9ZS5nZW5lcmF0ZUVycm9ySW5mbzthWzBdIT09aXx8YVsxXSE9PWM/KHQ9KDAsYi5qc3gpKHRpLHtlcnJvcjppLGdlbmVyYXRlRXJyb3JJbmZvOmN9KSxhWzBdPWksYVsxXT1jLGFbMl09dCk6dD1hWzJdLGFbM10hPT1pLm1lc3NhZ2U/KG49KDAsYi5qc3gpKHRiLHtlcnJvck1lc3NhZ2U6aS5tZXNzYWdlfSksYVszXT1pLm1lc3NhZ2UsYVs0XT1uKTpuPWFbNF07dmFyIHU9bnVsbD09bD92b2lkIDA6bC5kZXZ0b29sc0Zyb250ZW5kVXJsO3JldHVybiBhWzVdIT09dT8ocj0oMCxiLmpzeCkodGEse2RldnRvb2xzRnJvbnRlbmRVcmw6dX0pLGFbNV09dSxhWzZdPXIpOnI9YVs2XSxhWzddIT09c3x8YVs4XSE9PXR8fGFbOV0hPT1ufHxhWzEwXSE9PXI/KG89KDAsYi5qc3hzKShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS10b29sYmFyXCIsY2hpbGRyZW46W3MsdCxuLHJdfSksYVs3XT1zLGFbOF09dCxhWzldPW4sYVsxMF09cixhWzExXT1vKTpvPWFbMTFdLG99ZnVuY3Rpb24gdHcoZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwiZ1wiLHtpZDpcInRodW1iLXVwLTE2XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtpZDpcIlVuaW9uXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk02Ljg5NTMxIDIuMjM5NTlDNi43Mjk4NCAyLjEyMTQgNi41IDIuMjM5NjggNi41IDIuNDQzMDNWNS4yNDk4OUM2LjUgNi4yMTYzOSA1LjcxNjUgNi45OTk4OSA0Ljc1IDYuOTk5ODlIMi41VjEzLjQ5OTlIMTIuMTg4NEMxMi43NjIgMTMuNDk5OSAxMy4yNjIgMTMuMTA5NSAxMy40MDExIDEyLjU1MzFMMTQuNDAxMSA4LjU1MzA2QzE0LjU5ODQgNy43NjQxMiAxNC4wMDE3IDYuOTk5ODkgMTMuMTg4NCA2Ljk5OTg5SDkuMjVIOC41VjYuMjQ5ODlWMy41MTQ0NkM4LjUgMy40MzM3MiA4LjQ2MTAxIDMuMzU3OTUgOC4zOTUzMSAzLjMxMTAyTDYuODk1MzEgMi4yMzk1OVpNNSAyLjQ0MzAzQzUgMS4wMTk2MyA2LjYwODkgMC4xOTE2NTYgNy43NjcxNyAxLjAxODk5TDkuMjY3MTcgMi4wOTA0MkM5LjcyNzA2IDIuNDE4OTIgMTAgMi45NDkyOSAxMCAzLjUxNDQ2VjUuNDk5ODlIMTMuMTg4NEMxNC45Nzc1IDUuNDk5ODkgMTYuMjkwMyA3LjE4MTIxIDE1Ljg1NjMgOC45MTY4NkwxNC44NTYzIDEyLjkxNjlDMTQuNTUwMyAxNC4xNDExIDEzLjQ1MDMgMTQuOTk5OSAxMi4xODg0IDE0Ljk5OTlIMS43NUgxVjE0LjI0OTlWNi4yNDk4OVY1LjQ5OTg5SDEuNzVINC43NUM0Ljg4ODA3IDUuNDk5ODkgNSA1LjM4Nzk2IDUgNS4yNDk4OVYyLjQ0MzAzWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksYVswXT1yKTpyPWFbMF0sYVsxXSE9PWUpPyhvPSgwLGIuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjbGFzc05hbWU6XCJ0aHVtYnMtdXAtaWNvblwifSxlKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGFbMV09ZSxhWzJdPW8pOm89YVsyXSxvfWZ1bmN0aW9uIHRDKGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSgzKTtyZXR1cm4oYVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk01Ljg5NTMxIDEyLjc2MDNDNS43Mjk4NCAxMi44Nzg1IDUuNSAxMi43NjAyIDUuNSAxMi41NTY5VjkuNzVDNS41IDguNzgzNSA0LjcxNjUgOCAzLjc1IDhIMS41VjEuNUgxMS4xODg0QzExLjc2MiAxLjUgMTIuMjYyIDEuODkwMzcgMTIuNDAxMSAyLjQ0NjgzTDEzLjQwMTEgNi40NDY4M0MxMy41OTg0IDcuMjM1NzYgMTMuMDAxNyA4IDEyLjE4ODQgOEg4LjI1SDcuNVY4Ljc1VjExLjQ4NTRDNy41IDExLjU2NjIgNy40NjEwMSAxMS42NDE5IDcuMzk1MzEgMTEuNjg4OUw1Ljg5NTMxIDEyLjc2MDNaTTQgMTIuNTU2OUM0IDEzLjk4MDMgNS42MDg5IDE0LjgwODIgNi43NjcxNyAxMy45ODA5TDguMjY3MTcgMTIuOTA5NUM4LjcyNzA2IDEyLjU4MSA5IDEyLjA1MDYgOSAxMS40ODU0VjkuNUgxMi4xODg0QzEzLjk3NzUgOS41IDE1LjI5MDMgNy44MTg2OCAxNC44NTYzIDYuMDgzMDNMMTMuODU2MyAyLjA4MzAzQzEzLjU1MDMgMC44NTg4MTYgMTIuNDUwMyAwIDExLjE4ODQgMEgwLjc1SDBWMC43NVY4Ljc1VjkuNUgwLjc1SDMuNzVDMy44ODgwNyA5LjUgNCA5LjYxMTkzIDQgOS43NVYxMi41NTY5WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxiLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2xhc3NOYW1lOlwidGh1bWJzLWRvd24taWNvblwifSxlKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGFbMV09ZSxhWzJdPW8pOm89YVsyXSxvfWZ1bmN0aW9uIHRfKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB0ayhlLHQsbixyLG8sYSxpKXt0cnl7dmFyIGw9ZVthXShpKSxzPWwudmFsdWV9Y2F0Y2goZSl7bihlKTtyZXR1cm59bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiB0RShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9ZnVuY3Rpb24gdGooZSl7dmFyIHQsbixyPWUuZXJyb3JDb2RlLG89ZS5jbGFzc05hbWUsYT0odD0oMCx4LnVzZVN0YXRlKSh7fSksbj0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHRfKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHRfKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxpPWFbMF0sbD1hWzFdLHM9aVtyXSxjPXByb2Nlc3MuZW52Ll9fTkVYVF9URUxFTUVUUllfRElTQUJMRUQsdT0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4odD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhPXtsYWJlbDowLHNlbnQ6ZnVuY3Rpb24oKXtpZigxJm9bMF0pdGhyb3cgb1sxXTtyZXR1cm4gb1sxXX0sdHJ5czpbXSxvcHM6W119LGk9T2JqZWN0LmNyZWF0ZSgoXCJmdW5jdGlvblwiPT10eXBlb2YgSXRlcmF0b3I/SXRlcmF0b3I6T2JqZWN0KS5wcm90b3R5cGUpO3JldHVybiBpLm5leHQ9bCgwKSxpLnRocm93PWwoMSksaS5yZXR1cm49bCgyKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihpW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pLGk7ZnVuY3Rpb24gbChsKXtyZXR1cm4gZnVuY3Rpb24ocyl7dmFyIGM9W2wsc107aWYobil0aHJvdyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO2Zvcig7aSYmKGk9MCxjWzBdJiYoYT0wKSksYTspdHJ5e2lmKG49MSxyJiYobz0yJmNbMF0/ci5yZXR1cm46Y1swXT9yLnRocm93fHwoKG89ci5yZXR1cm4pJiZvLmNhbGwociksMCk6ci5uZXh0KSYmIShvPW8uY2FsbChyLGNbMV0pKS5kb25lKXJldHVybiBvO3N3aXRjaChyPTAsbyYmKGM9WzImY1swXSxvLnZhbHVlXSksY1swXSl7Y2FzZSAwOmNhc2UgMTpvPWM7YnJlYWs7Y2FzZSA0OnJldHVybiBhLmxhYmVsKysse3ZhbHVlOmNbMV0sZG9uZTohMX07Y2FzZSA1OmEubGFiZWwrKyxyPWNbMV0sYz1bMF07Y29udGludWU7Y2FzZSA3OmM9YS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlO2RlZmF1bHQ6aWYoIShvPShvPWEudHJ5cykubGVuZ3RoPjAmJm9bby5sZW5ndGgtMV0pJiYoNj09PWNbMF18fDI9PT1jWzBdKSl7YT0wO2NvbnRpbnVlfWlmKDM9PT1jWzBdJiYoIW98fGNbMV0+b1swXSYmY1sxXTxvWzNdKSl7YS5sYWJlbD1jWzFdO2JyZWFrfWlmKDY9PT1jWzBdJiZhLmxhYmVsPG9bMV0pe2EubGFiZWw9b1sxXSxvPWM7YnJlYWt9aWYobyYmYS5sYWJlbDxvWzJdKXthLmxhYmVsPW9bMl0sYS5vcHMucHVzaChjKTticmVha31vWzJdJiZhLm9wcy5wb3AoKSxhLnRyeXMucG9wKCk7Y29udGludWV9Yz10LmNhbGwoZSxhKX1jYXRjaChlKXtjPVs2LGVdLHI9MH1maW5hbGx5e249bz0wfWlmKDUmY1swXSl0aHJvdyBjWzFdO3JldHVybnt2YWx1ZTpjWzBdP2NbMV06dm9pZCAwLGRvbmU6ITB9fX19KHRoaXMsZnVuY3Rpb24odCl7c3dpdGNoKHQubGFiZWwpe2Nhc2UgMDpsKGZ1bmN0aW9uKHQpe3ZhciBuLG87cmV0dXJuIG49ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RFKGUsdCxuW3RdKX0pfXJldHVybiBlfSh7fSx0KSxvPW51bGwhPShvPXRFKHt9LHIsZSkpP286e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChvKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkobixlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobyxlKSl9KSxufSksdC5sYWJlbD0xO2Nhc2UgMTpyZXR1cm4gdC50cnlzLnB1c2goWzEsMywsNF0pLFs0LGZldGNoKFwiXCIuY29uY2F0KHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCIsXCIvX19uZXh0anNfZXJyb3JfZmVlZGJhY2s/XCIpLmNvbmNhdChuZXcgVVJMU2VhcmNoUGFyYW1zKHtlcnJvckNvZGU6cix3YXNIZWxwZnVsOmUudG9TdHJpbmcoKX0pKSldO2Nhc2UgMjpyZXR1cm4gdC5zZW50KCkub2t8fGNvbnNvbGUuZXJyb3IoXCJGYWlsZWQgdG8gcmVjb3JkIGZlZWRiYWNrIG9uIHRoZSBzZXJ2ZXIuXCIpLFszLDRdO2Nhc2UgMzpyZXR1cm4gY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byByZWNvcmQgZmVlZGJhY2s6XCIsdC5zZW50KCkpLFszLDRdO2Nhc2UgNDpyZXR1cm5bMl19fSl9LGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocixvKXt2YXIgYT10LmFwcGx5KGUsbik7ZnVuY3Rpb24gaShlKXt0ayhhLHIsbyxpLGwsXCJuZXh0XCIsZSl9ZnVuY3Rpb24gbChlKXt0ayhhLHIsbyxpLGwsXCJ0aHJvd1wiLGUpfWkodm9pZCAwKX0pfSkoKX0sW3JdKTtyZXR1cm4oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOmVHKFwiZXJyb3ItZmVlZGJhY2tcIixvKSxyb2xlOlwicmVnaW9uXCIsXCJhcmlhLWxhYmVsXCI6XCJFcnJvciBmZWVkYmFja1wiLGNoaWxkcmVuOnZvaWQgMCE9PXM/KDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJlcnJvci1mZWVkYmFjay10aGFua3NcIixyb2xlOlwic3RhdHVzXCIsXCJhcmlhLWxpdmVcIjpcInBvbGl0ZVwiLGNoaWxkcmVuOlwiVGhhbmtzIGZvciB5b3VyIGZlZWRiYWNrIVwifSk6KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsYi5qc3gpKFwicFwiLHtjaGlsZHJlbjooMCxiLmpzeCkoXCJhXCIse2hyZWY6XCJodHRwczovL25leHRqcy5vcmcvdGVsZW1ldHJ5I2Vycm9yLWZlZWRiYWNrXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLHRhcmdldDpcIl9ibGFua1wiLGNoaWxkcmVuOlwiV2FzIHRoaXMgaGVscGZ1bD9cIn0pfSksKDAsYi5qc3gpKFwiYnV0dG9uXCIse1wiYXJpYS1kaXNhYmxlZFwiOmM/XCJ0cnVlXCI6dm9pZCAwLFwiYXJpYS1sYWJlbFwiOlwiTWFyayBhcyBoZWxwZnVsXCIsb25DbGljazpjP3ZvaWQgMDpmdW5jdGlvbigpe3JldHVybiB1KCEwKX0sY2xhc3NOYW1lOmVHKFwiZmVlZGJhY2stYnV0dG9uXCIsITA9PT1zJiZcInZvdGVkXCIpLHRpdGxlOmM/XCJGZWVkYmFjayBkaXNhYmxlZCBkdWUgdG8gc2V0dGluZyBORVhUX1RFTEVNRVRSWV9ESVNBQkxFRFwiOnZvaWQgMCx0eXBlOlwiYnV0dG9uXCIsY2hpbGRyZW46KDAsYi5qc3gpKHR3LHtcImFyaWEtaGlkZGVuXCI6XCJ0cnVlXCJ9KX0pLCgwLGIuanN4KShcImJ1dHRvblwiLHtcImFyaWEtZGlzYWJsZWRcIjpjP1widHJ1ZVwiOnZvaWQgMCxcImFyaWEtbGFiZWxcIjpcIk1hcmsgYXMgbm90IGhlbHBmdWxcIixvbkNsaWNrOmM/dm9pZCAwOmZ1bmN0aW9uKCl7cmV0dXJuIHUoITEpfSxjbGFzc05hbWU6ZUcoXCJmZWVkYmFjay1idXR0b25cIiwhMT09PXMmJlwidm90ZWRcIiksdGl0bGU6Yz9cIkZlZWRiYWNrIGRpc2FibGVkIGR1ZSB0byBzZXR0aW5nIE5FWFRfVEVMRU1FVFJZX0RJU0FCTEVEXCI6dm9pZCAwLHR5cGU6XCJidXR0b25cIixjaGlsZHJlbjooMCxiLmpzeCkodEMse1wiYXJpYS1oaWRkZW5cIjpcInRydWVcIixzdHlsZTp7dHJhbnNsYXRlOlwiMXB4IDFweFwifX0pfSldfSl9KX1mdW5jdGlvbiB0UyhlKXt2YXIgdCxuLHI9KDAsQS5jKSg0KSxvPWUuZXJyb3JDb2RlO3JldHVybiByWzBdIT09bz8odD1vPygwLGIuanN4KSh0aix7Y2xhc3NOYW1lOlwiZXJyb3ItZmVlZGJhY2tcIixlcnJvckNvZGU6b30pOm51bGwsclswXT1vLHJbMV09dCk6dD1yWzFdLHJbMl0hPT10PyhuPSgwLGIuanN4KShcImZvb3RlclwiLHtcImRhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktZm9vdGVyXCI6ITAsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1mb290ZXJcIixjaGlsZHJlbjp0fSksclsyXT10LHJbM109bik6bj1yWzNdLG59dmFyIHRPPVwiXFxuICAuZXJyb3Itb3ZlcmxheS1mb290ZXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XFxuXFxuICAgIGdhcDogOHB4O1xcbiAgICBwYWRkaW5nOiAxMnB4O1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTIwMCk7XFxuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICB9XFxuXFxuICAuZXJyb3ItZmVlZGJhY2sge1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG5cXG4gICAgcCB7XFxuICAgICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICAgIG1hcmdpbjogMDtcXG4gICAgfVxcbiAgfVxcblxcbiAgXCIuY29uY2F0KFwiXFxuICAuZXJyb3ItZmVlZGJhY2sge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDhweDtcXG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gIH1cXG5cXG4gIC5lcnJvci1mZWVkYmFjay10aGFua3Mge1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBwYWRkaW5nLXJpZ2h0OiA0cHg7IC8qIFRvIG1hdGNoIHRoZSA0cHggaW5uZXIgcGFkZGluZyBvZiB0aGUgdGh1bWJzIHVwIGFuZCBkb3duIGljb25zICovXFxuICB9XFxuXFxuICAuZmVlZGJhY2stYnV0dG9uIHtcXG4gICAgYmFja2dyb3VuZDogbm9uZTtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kKTtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjQpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTEwMCk7XFxuICAgIH1cXG5cXG4gICAgJjphY3RpdmUge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktYWxwaGEtMjAwKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLmZlZWRiYWNrLWJ1dHRvblthcmlhLWRpc2FibGVkPSd0cnVlJ10ge1xcbiAgICBvcGFjaXR5OiAwLjc7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICB9XFxuXFxuICAuZmVlZGJhY2stYnV0dG9uLnZvdGVkIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0yMDApO1xcbiAgfVxcblxcbiAgLnRodW1icy11cC1pY29uLFxcbiAgLnRodW1icy1kb3duLWljb24ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICB9XFxuXCIsXCJcXG5cIik7ZnVuY3Rpb24gdEIoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHRQKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB0QihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB0QihlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB0SShlKXt2YXIgdCxuLHIsbyxhLGk9KDAsQS5jKSgxMiksbD1lLmVycm9yTWVzc2FnZSxzPXRQKCgwLHgudXNlU3RhdGUpKCExKSwyKSxjPXNbMF0sdT1zWzFdLGQ9dFAoKDAseC51c2VTdGF0ZSkoITEpLDIpLGY9ZFswXSxwPWRbMV0saD0oMCx4LnVzZVJlZikobnVsbCk7aVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PWZ1bmN0aW9uKCl7aC5jdXJyZW50JiZwKGguY3VycmVudC5zY3JvbGxIZWlnaHQ+MjAwKX0saVswXT10KTp0PWlbMF0saVsxXSE9PWw/KG49W2xdLGlbMV09bCxpWzJdPW4pOm49aVsyXSwoMCx4LnVzZUxheW91dEVmZmVjdCkodCxuKTt2YXIgbT1cIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjIFwiLmNvbmNhdChmJiYhYz9cInRydW5jYXRlZFwiOlwiXCIpO3JldHVybiBpWzNdIT09bHx8aVs0XSE9PW0/KHI9KDAsYi5qc3gpKFwicFwiLHtyZWY6aCxpZDpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjXCIsY2xhc3NOYW1lOm0sY2hpbGRyZW46bH0pLGlbM109bCxpWzRdPW0saVs1XT1yKTpyPWlbNV0saVs2XSE9PWN8fGlbN10hPT1mPyhvPWYmJiFjJiYoMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2dyYWRpZW50X292ZXJsYXlcIn0pLCgwLGIuanN4KShcImJ1dHRvblwiLHtvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHUoITApfSxjbGFzc05hbWU6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZXhwYW5kX2J1dHRvblwiLFwiYXJpYS1leHBhbmRlZFwiOmMsXCJhcmlhLWNvbnRyb2xzXCI6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzY1wiLGNoaWxkcmVuOlwiU2hvdyBNb3JlXCJ9KV19KSxpWzZdPWMsaVs3XT1mLGlbOF09byk6bz1pWzhdLGlbOV0hPT1yfHxpWzEwXSE9PW8/KGE9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfd3JhcHBlclwiLGNoaWxkcmVuOltyLG9dfSksaVs5XT1yLGlbMTBdPW8saVsxMV09YSk6YT1pWzExXSxhfWZ1bmN0aW9uIHR6KGUpe3ZhciB0LG49KDAsQS5jKSgyKSxyPWUuZXJyb3JUeXBlO3JldHVybiBuWzBdIT09cj8odD0oMCxiLmpzeCkoXCJzcGFuXCIse2lkOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2xhYmVsXCIsY2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX2xhYmVsXCIsY2hpbGRyZW46cn0pLG5bMF09cixuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIHRUKGUpe3ZhciB0LG4scj0oMCxBLmMpKDQpLG89ZS50aXRsZSxhPWUuY2xhc3NOYW1lO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTkuMjQ5OTYgMTIuMDYwOEw4LjcxOTYzIDExLjUzMDRMNS44OTY0MSA4LjcwNzIyQzUuNTA1ODggOC4zMTY3IDUuNTA1ODggNy42ODM1MyA1Ljg5NjQxIDcuMjkzMDFMOC43MTk2MyA0LjQ2OTc4TDkuMjQ5OTYgMy45Mzk0NUwxMC4zMTA2IDUuMDAwMTFMOS43ODAyOSA1LjUzMDQ0TDcuMzEwNjIgOC4wMDAxMUw5Ljc4MDI5IDEwLjQ2OThMMTAuMzEwNiAxMS4wMDAxTDkuMjQ5OTYgMTIuMDYwOFpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09YXx8clsyXSE9PW8/KG49KDAsYi5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcImFyaWEtbGFiZWxcIjpvLGNsYXNzTmFtZTphLGNoaWxkcmVuOnR9KSxyWzFdPWEsclsyXT1vLHJbM109bik6bj1yWzNdLG59ZnVuY3Rpb24gdEQoZSl7dmFyIHQsbixyPSgwLEEuYykoNCksbz1lLnRpdGxlLGE9ZS5jbGFzc05hbWU7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNNi43NTAxMSAzLjkzOTQ1TDcuMjgwNDQgNC40Njk3OEwxMC4xMDM3IDcuMjkzMDFDMTAuNDk0MiA3LjY4MzUzIDEwLjQ5NDIgOC4zMTY3IDEwLjEwMzcgOC43MDcyMkw3LjI4MDQ0IDExLjUzMDRMNi43NTAxMSAxMi4wNjA4TDUuNjg5NDUgMTEuMDAwMUw2LjIxOTc4IDEwLjQ2OThMOC42ODk0NSA4LjAwMDExTDYuMjE5NzggNS41MzA0NEw1LjY4OTQ1IDUuMDAwMTFMNi43NTAxMSAzLjkzOTQ1WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1hfHxyWzJdIT09bz8obj0oMCxiLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNsYXNzTmFtZTphLFwiYXJpYS1sYWJlbFwiOm8sY2hpbGRyZW46dH0pLHJbMV09YSxyWzJdPW8sclszXT1uKTpuPXJbM10sbn1mdW5jdGlvbiB0TChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdE4oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2PSgwLEEuYykoNDApLHc9ZS5ydW50aW1lRXJyb3JzLEM9ZS5hY3RpdmVJZHgsXz1lLm9uQWN0aXZlSW5kZXhDaGFuZ2U7dlswXSE9PUN8fHZbMV0hPT1fPyhyPWZ1bmN0aW9uKCl7cmV0dXJuKDAseC5zdGFydFRyYW5zaXRpb24pKGZ1bmN0aW9uKCl7Qz4wJiZfKE1hdGgubWF4KDAsQy0xKSl9KX0sdlswXT1DLHZbMV09Xyx2WzJdPXIpOnI9dlsyXTt2YXIgaz1yO3ZbM10hPT1DfHx2WzRdIT09X3x8dls1XSE9PXcubGVuZ3RoPyhvPWZ1bmN0aW9uKCl7cmV0dXJuKDAseC5zdGFydFRyYW5zaXRpb24pKGZ1bmN0aW9uKCl7Qzx3Lmxlbmd0aC0xJiZfKE1hdGgubWF4KDAsTWF0aC5taW4ody5sZW5ndGgtMSxDKzEpKSl9KX0sdlszXT1DLHZbNF09Xyx2WzVdPXcubGVuZ3RoLHZbNl09byk6bz12WzZdO3ZhciBFPW8saj0oMCx4LnVzZVJlZikobnVsbCksUz0oMCx4LnVzZVJlZikobnVsbCksTz0odD0oMCx4LnVzZVN0YXRlKShudWxsKSxuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdEwoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdEwoZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLEI9T1swXSxQPU9bMV07dls3XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPWZ1bmN0aW9uKGUpe1AoZSl9LHZbN109YSk6YT12WzddO3ZhciBJPWE7dls4XSE9PUV8fHZbOV0hPT1rfHx2WzEwXSE9PUI/KGk9ZnVuY3Rpb24oKXtpZihudWxsIT1CKXt2YXIgZT1CLmdldFJvb3ROb2RlKCksdD1zZWxmLmRvY3VtZW50LG49ZnVuY3Rpb24oZSl7XCJBcnJvd0xlZnRcIj09PWUua2V5PyhlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxrJiZrKCkpOlwiQXJyb3dSaWdodFwiPT09ZS5rZXkmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSxFJiZFKCkpfTtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLG4pLGUhPT10JiZ0LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsbiksZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsbiksZSE9PXQmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixuKX19fSxsPVtCLEUsa10sdls4XT1FLHZbOV09ayx2WzEwXT1CLHZbMTFdPWksdlsxMl09bCk6KGk9dlsxMV0sbD12WzEyXSksKDAseC51c2VFZmZlY3QpKGksbCksdlsxM10hPT1DfHx2WzE0XSE9PUJ8fHZbMTVdIT09dy5sZW5ndGg/KHM9ZnVuY3Rpb24oKXtpZihudWxsIT1CKXt2YXIgZSx0LG49Qi5nZXRSb290Tm9kZSgpO2lmKGU9bixudWxsIT0odD1TaGFkb3dSb290KSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmdFtTeW1ib2wuaGFzSW5zdGFuY2VdPyEhdFtTeW1ib2wuaGFzSW5zdGFuY2VdKGUpOmUgaW5zdGFuY2VvZiB0KXt2YXIgcj1uLmFjdGl2ZUVsZW1lbnQ7MD09PUM/ai5jdXJyZW50JiZyPT09ai5jdXJyZW50JiZqLmN1cnJlbnQuYmx1cigpOkM9PT13Lmxlbmd0aC0xJiZTLmN1cnJlbnQmJnI9PT1TLmN1cnJlbnQmJlMuY3VycmVudC5ibHVyKCl9fX0sYz1bQixDLHcubGVuZ3RoXSx2WzEzXT1DLHZbMTRdPUIsdlsxNV09dy5sZW5ndGgsdlsxNl09cyx2WzE3XT1jKToocz12WzE2XSxjPXZbMTddKSwoMCx4LnVzZUVmZmVjdCkocyxjKTt2YXIgej0wPT09QyxUPTA9PT1DO3ZbMThdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHU9KDAsYi5qc3gpKHRULHt0aXRsZTpcInByZXZpb3VzXCIsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWJ1dHRvbi1pY29uXCJ9KSx2WzE4XT11KTp1PXZbMThdLHZbMTldIT09a3x8dlsyMF0hPT16fHx2WzIxXSE9PVQ/KGQ9KDAsYi5qc3gpKFwiYnV0dG9uXCIse3JlZjpqLHR5cGU6XCJidXR0b25cIixkaXNhYmxlZDp6LFwiYXJpYS1kaXNhYmxlZFwiOlQsb25DbGljazprLFwiZGF0YS1uZXh0anMtZGlhbG9nLWVycm9yLXByZXZpb3VzXCI6ITAsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWJ1dHRvblwiLGNoaWxkcmVuOnV9KSx2WzE5XT1rLHZbMjBdPXosdlsyMV09VCx2WzIyXT1kKTpkPXZbMjJdO3ZhciBEPUMrMTt2WzIzXSE9PUN8fHZbMjRdIT09RD8oZj0oMCxiLmpzeHMpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWRpYWxvZy1lcnJvci1pbmRleFwiOkMsY2hpbGRyZW46W0QsXCIvXCJdfSksdlsyM109Qyx2WzI0XT1ELHZbMjVdPWYpOmY9dlsyNV07dmFyIEw9dy5sZW5ndGh8fDE7dlsyNl0hPT1MPyhwPSgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1kaWFsb2ctaGVhZGVyLXRvdGFsLWNvdW50XCI6ITAsY2hpbGRyZW46TH0pLHZbMjZdPUwsdlsyN109cCk6cD12WzI3XSx2WzI4XSE9PWZ8fHZbMjldIT09cD8oaD0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1jb3VudFwiLGNoaWxkcmVuOltmLHBdfSksdlsyOF09Zix2WzI5XT1wLHZbMzBdPWgpOmg9dlszMF07dmFyIE49Qz49dy5sZW5ndGgtMSxSPUM+PXcubGVuZ3RoLTE7cmV0dXJuIHZbMzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG09KDAsYi5qc3gpKHRELHt0aXRsZTpcIm5leHRcIixjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LXBhZ2luYXRpb24tYnV0dG9uLWljb25cIn0pLHZbMzFdPW0pOm09dlszMV0sdlszMl0hPT1FfHx2WzMzXSE9PU58fHZbMzRdIT09Uj8oZz0oMCxiLmpzeCkoXCJidXR0b25cIix7cmVmOlMsdHlwZTpcImJ1dHRvblwiLGRpc2FibGVkOk4sXCJhcmlhLWRpc2FibGVkXCI6UixvbkNsaWNrOkUsXCJkYXRhLW5leHRqcy1kaWFsb2ctZXJyb3ItbmV4dFwiOiEwLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b25cIixjaGlsZHJlbjptfSksdlszMl09RSx2WzMzXT1OLHZbMzRdPVIsdlszNV09Zyk6Zz12WzM1XSx2WzM2XSE9PWR8fHZbMzddIT09aHx8dlszOF0hPT1nPyh5PSgwLGIuanN4cykoXCJuYXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uIGRpYWxvZy1leGNsdWRlLWNsb3NpbmctZnJvbS1vdXRzaWRlLWNsaWNrXCIscmVmOkksY2hpbGRyZW46W2QsaCxnXX0pLHZbMzZdPWQsdlszN109aCx2WzM4XT1nLHZbMzldPXkpOnk9dlszOV0seX1mdW5jdGlvbiB0UihlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoMyk7cmV0dXJuKGFbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkoXCJjaXJjbGVcIix7Y3g6XCI3XCIsY3k6XCI3XCIscjpcIjUuNVwiLHN0cm9rZVdpZHRoOlwiM1wifSksYVswXT1yKTpyPWFbMF0sYVsxXSE9PWUpPyhvPSgwLGIuanN4KShcInN2Z1wiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe3dpZHRoOlwiMTRcIixoZWlnaHQ6XCIxNFwiLHZpZXdCb3g6XCIwIDAgMTQgMTRcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxhWzFdPWUsYVsyXT1vKTpvPWFbMl0sb31mdW5jdGlvbiB0TShlKXt2YXIgdCxuLHIsbyxhLGk9KDAsQS5jKSgzMSksbD1lLnZlcnNpb25JbmZvLHM9ZS5idW5kbGVyTmFtZSxjPWwuc3RhbGVuZXNzO2lmKGlbMF0hPT1zfHxpWzFdIT09Y3x8aVsyXSE9PWwpe3Y9U3ltYm9sLmZvcihcInJlYWN0LmVhcmx5X3JldHVybl9zZW50aW5lbFwiKTtuOnt2YXIgdT1mdW5jdGlvbihlKXt2YXIgdD1lLmluc3RhbGxlZCxuPWUuc3RhbGVuZXNzLHI9ZS5leHBlY3RlZCxvPVwiXCIsYT1cIlwiLGk9XCJcIixsPVwiTmV4dC5qcyBcIi5jb25jYXQodCk7c3dpdGNoKG4pe2Nhc2VcIm5ld2VyLXRoYW4tbnBtXCI6Y2FzZVwiZnJlc2hcIjpvPWwsYT1cIkxhdGVzdCBhdmFpbGFibGUgdmVyc2lvbiBpcyBkZXRlY3RlZCAoXCIuY29uY2F0KHQsXCIpLlwiKSxpPVwiZnJlc2hcIjticmVhaztjYXNlXCJzdGFsZS1wYXRjaFwiOmNhc2VcInN0YWxlLW1pbm9yXCI6bz1cIlwiLmNvbmNhdChsLFwiIChzdGFsZSlcIiksYT1cIlRoZXJlIGlzIGEgbmV3ZXIgdmVyc2lvbiAoXCIuY29uY2F0KHIsXCIpIGF2YWlsYWJsZSwgdXBncmFkZSByZWNvbW1lbmRlZCEgXCIpLGk9XCJzdGFsZVwiO2JyZWFrO2Nhc2VcInN0YWxlLW1ham9yXCI6bz1cIlwiLmNvbmNhdChsLFwiIChvdXRkYXRlZClcIiksYT1cIkFuIG91dGRhdGVkIHZlcnNpb24gZGV0ZWN0ZWQgKGxhdGVzdCBpcyBcIi5jb25jYXQocixcIiksIHVwZ3JhZGUgaXMgaGlnaGx5IHJlY29tbWVuZGVkIVwiKSxpPVwib3V0ZGF0ZWRcIjticmVhaztjYXNlXCJzdGFsZS1wcmVyZWxlYXNlXCI6bz1cIlwiLmNvbmNhdChsLFwiIChzdGFsZSlcIiksYT1cIlRoZXJlIGlzIGEgbmV3ZXIgY2FuYXJ5IHZlcnNpb24gKFwiLmNvbmNhdChyLFwiKSBhdmFpbGFibGUsIHBsZWFzZSB1cGdyYWRlISBcIiksaT1cInN0YWxlXCI7YnJlYWs7Y2FzZVwidW5rbm93blwiOm89XCJcIi5jb25jYXQobCxcIiAodW5rbm93bilcIiksYT1cIk5vIE5leHQuanMgdmVyc2lvbiBkYXRhIHdhcyBmb3VuZC5cIixpPVwidW5rbm93blwifXJldHVybnt0ZXh0Om8saW5kaWNhdG9yQ2xhc3M6aSx0aXRsZTphfX0obCksZD11LnRleHQsZj11LmluZGljYXRvckNsYXNzLHA9dS50aXRsZTtpZih4PWQsdz1wLG09XCJUdXJib3BhY2tcIj09PXMsYy5zdGFydHNXaXRoKFwic3RhbGVcIikpe3ZhciBoLG0sZyx5LHYseCx3LEMsXyxrPW0mJlwidHVyYm9wYWNrLXRleHRcIjtpWzEwXSE9PWs/KEM9ZUcoayksaVsxMF09ayxpWzExXT1DKTpDPWlbMTFdLGlbMTJdIT09c3x8aVsxM10hPT1DPyhfPSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOkMsY2hpbGRyZW46c30pLGlbMTJdPXMsaVsxM109QyxpWzE0XT1fKTpfPWlbMTRdLHY9KDAsYi5qc3hzKShcImFcIix7Y2xhc3NOYW1lOlwibmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci12ZXJzaW9uLXN0YXR1cyBkaWFsb2ctZXhjbHVkZS1jbG9zaW5nLWZyb20tb3V0c2lkZS1jbGlja1wiLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIixocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvdmVyc2lvbi1zdGFsZW5lc3NcIixjaGlsZHJlbjpbKDAsYi5qc3gpKHRSLHtjbGFzc05hbWU6ZUcoXCJ2ZXJzaW9uLXN0YWxlbmVzcy1pbmRpY2F0b3JcIixmKX0pLCgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy12ZXJzaW9uLWNoZWNrZXJcIjohMCx0aXRsZTp3LGNoaWxkcmVuOnh9KSxfXX0pO2JyZWFrIG59eT1cIm5leHRqcy1jb250YWluZXItYnVpbGQtZXJyb3ItdmVyc2lvbi1zdGF0dXMgZGlhbG9nLWV4Y2x1ZGUtY2xvc2luZy1mcm9tLW91dHNpZGUtY2xpY2tcIixoPXRSLGc9ZUcoXCJ2ZXJzaW9uLXN0YWxlbmVzcy1pbmRpY2F0b3JcIixmKX1pWzBdPXMsaVsxXT1jLGlbMl09bCxpWzNdPWgsaVs0XT1tLGlbNV09ZyxpWzZdPXksaVs3XT12LGlbOF09eCxpWzldPXd9ZWxzZSBoPWlbM10sbT1pWzRdLGc9aVs1XSx5PWlbNl0sdj1pWzddLHg9aVs4XSx3PWlbOV07aWYodiE9PVN5bWJvbC5mb3IoXCJyZWFjdC5lYXJseV9yZXR1cm5fc2VudGluZWxcIikpcmV0dXJuIHY7aVsxNV0hPT1ofHxpWzE2XSE9PWc/KHQ9KDAsYi5qc3gpKGgse2NsYXNzTmFtZTpnfSksaVsxNV09aCxpWzE2XT1nLGlbMTddPXQpOnQ9aVsxN10saVsxOF0hPT14fHxpWzE5XSE9PXc/KG49KDAsYi5qc3gpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLXZlcnNpb24tY2hlY2tlclwiOiEwLHRpdGxlOncsY2hpbGRyZW46eH0pLGlbMThdPXgsaVsxOV09dyxpWzIwXT1uKTpuPWlbMjBdO3ZhciBFPW0mJlwidHVyYm9wYWNrLXRleHRcIjtyZXR1cm4gaVsyMV0hPT1FPyhyPWVHKEUpLGlbMjFdPUUsaVsyMl09cik6cj1pWzIyXSxpWzIzXSE9PXN8fGlbMjRdIT09cj8obz0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpyLGNoaWxkcmVuOnN9KSxpWzIzXT1zLGlbMjRdPXIsaVsyNV09byk6bz1pWzI1XSxpWzI2XSE9PXl8fGlbMjddIT09dHx8aVsyOF0hPT1ufHxpWzI5XSE9PW8/KGE9KDAsYi5qc3hzKShcInNwYW5cIix7Y2xhc3NOYW1lOnksY2hpbGRyZW46W3QsbixvXX0pLGlbMjZdPXksaVsyN109dCxpWzI4XT1uLGlbMjldPW8saVszMF09YSk6YT1pWzMwXSxhfWZ1bmN0aW9uIHRaKGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSgxMSksaT1lLnJ1bnRpbWVFcnJvcnMsbD1lLmFjdGl2ZUlkeCxzPWUuc2V0QWN0aXZlSW5kZXgsYz1lLnZlcnNpb25JbmZvLHU9cHJvY2Vzcy5lbnYuX19ORVhUX0JVTkRMRVJ8fFwiV2VicGFja1wiO2FbMF0hPT1pPyh0PW51bGwhPWk/aTpbXSxhWzBdPWksYVsxXT10KTp0PWFbMV07dmFyIGQ9bnVsbCE9bD9sOjAsZj1udWxsIT1zP3M6dFU7cmV0dXJuIGFbMl0hPT10fHxhWzNdIT09ZHx8YVs0XSE9PWY/KG49KDAsYi5qc3gpKHRGLHtzaWRlOlwibGVmdFwiLGNoaWxkcmVuOigwLGIuanN4KSh0Tix7cnVudGltZUVycm9yczp0LGFjdGl2ZUlkeDpkLG9uQWN0aXZlSW5kZXhDaGFuZ2U6Zn0pfSksYVsyXT10LGFbM109ZCxhWzRdPWYsYVs1XT1uKTpuPWFbNV0sYVs2XSE9PWM/KHI9YyYmKDAsYi5qc3gpKHRGLHtzaWRlOlwicmlnaHRcIixjaGlsZHJlbjooMCxiLmpzeCkodE0se3ZlcnNpb25JbmZvOmMsYnVuZGxlck5hbWU6dX0pfSksYVs2XT1jLGFbN109cik6cj1hWzddLGFbOF0hPT1ufHxhWzldIT09cj8obz0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZXJyb3Itb3ZlcmxheS1uYXZcIjohMCxjaGlsZHJlbjpbbixyXX0pLGFbOF09bixhWzldPXIsYVsxMF09byk6bz1hWzEwXSxvfWZ1bmN0aW9uIHRVKCl7fWZ1bmN0aW9uIHRGKGUpe3ZhciB0LG4scj0oMCxBLmMpKDQpLG89ZS5jaGlsZHJlbixhPWUuc2lkZSxpPXZvaWQgMD09PWE/XCJsZWZ0XCI6YTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KSh0cSx7fSksclswXT10KTp0PXJbMF0sclsxXSE9PW98fHJbMl0hPT1pPyhuPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1ub3RjaFwiLFwiZGF0YS1zaWRlXCI6aSxjaGlsZHJlbjpbbyx0XX0pLHJbMV09byxyWzJdPWksclszXT1uKTpuPXJbM10sbn1mdW5jdGlvbiB0cSgpe3ZhciBlLHQsbixyPSgwLEEuYykoMyk7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT17bWFza1R5cGU6XCJhbHBoYVwifSxyWzBdPWUpOmU9clswXSxyWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3hzKShcIm1hc2tcIix7aWQ6XCJlcnJvcl9vdmVybGF5X25hdl9tYXNrMF8yNjY3XzE0Njg3XCIsc3R5bGU6ZSxtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCIwXCIseTpcIi0xXCIsd2lkdGg6XCI2MFwiLGhlaWdodDpcIjQzXCIsY2hpbGRyZW46WygwLGIuanN4cykoXCJtYXNrXCIse2lkOlwiZXJyb3Jfb3ZlcmxheV9uYXZfcGF0aF8xX291dHNpZGVfMV8yNjY3XzE0Njg3XCIsbWFza1VuaXRzOlwidXNlclNwYWNlT25Vc2VcIix4OlwiMFwiLHk6XCItMVwiLHdpZHRoOlwiNjBcIixoZWlnaHQ6XCI0M1wiLGZpbGw6XCJibGFja1wiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJyZWN0XCIse2ZpbGw6XCJ3aGl0ZVwiLHk6XCItMVwiLHdpZHRoOlwiNjBcIixoZWlnaHQ6XCI0M1wifSksKDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEgMEw4LjA3ODMgMEMxNS43NzIgMCAyMi43ODM2IDQuNDEzMjQgMjYuMTExIDExLjM1MDFMMzQuODg4OSAyOS42NDk4QzM4LjIxNjQgMzYuNTg2OCA0NS4yMjggNDEgNTIuOTIxNyA0MUg2MEgxTDEgMFpcIn0pXX0pLCgwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xIDBMOC4wNzgzIDBDMTUuNzcyIDAgMjIuNzgzNiA0LjQxMzI0IDI2LjExMSAxMS4zNTAxTDM0Ljg4ODkgMjkuNjQ5OEMzOC4yMTY0IDM2LjU4NjggNDUuMjI4IDQxIDUyLjkyMTcgNDFINjBIMUwxIDBaXCIsZmlsbDpcIndoaXRlXCJ9KSwoMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMSAwVi0xSDBWMEwxIDBaTTEgNDFIMFY0MkgxVjQxWk0zNC44ODg5IDI5LjY0OThMMzMuOTg3MyAzMC4wODIzTDM0Ljg4ODkgMjkuNjQ5OFpNMjYuMTExIDExLjM1MDFMMjcuMDEyNyAxMC45MTc3TDI2LjExMSAxMS4zNTAxWk0xIDFIOC4wNzgzVi0xSDFWMVpNNjAgNDBIMVY0Mkg2MFY0MFpNMiA0MVYwTDAgMEwwIDQxSDJaTTI1LjIwOTQgMTEuNzgyNkwzMy45ODczIDMwLjA4MjNMMzUuNzkwNiAyOS4yMTc0TDI3LjAxMjcgMTAuOTE3N0wyNS4yMDk0IDExLjc4MjZaTTUyLjkyMTcgNDJINjBWNDBINTIuOTIxN1Y0MlpNMzMuOTg3MyAzMC4wODIzQzM3LjQ4MTEgMzcuMzY2MSA0NC44NDMzIDQyIDUyLjkyMTcgNDJWNDBDNDUuNjEyNyA0MCAzOC45NTE3IDM1LjgwNzQgMzUuNzkwNiAyOS4yMTc0TDMzLjk4NzMgMzAuMDgyM1pNOC4wNzgzIDFDMTUuMzg3MyAxIDIyLjA0ODMgNS4xOTI1NyAyNS4yMDk0IDExLjc4MjZMMjcuMDEyNyAxMC45MTc3QzIzLjUxODggMy42MzM5IDE2LjE1NjcgLTEgOC4wNzgzIC0xVjFaXCIsZmlsbDpcImJsYWNrXCIsbWFzazpcInVybCgjZXJyb3Jfb3ZlcmxheV9uYXZfcGF0aF8xX291dHNpZGVfMV8yNjY3XzE0Njg3KVwifSldfSksclsxXT10KTp0PXJbMV0sclsyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhuPSgwLGIuanN4cykoXCJzdmdcIix7d2lkdGg6XCI2MFwiLGhlaWdodDpcIjQyXCIsdmlld0JveDpcIjAgMCA2MCA0MlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktbm90Y2gtdGFpbFwiLHByZXNlcnZlQXNwZWN0UmF0aW86XCJub25lXCIsY2hpbGRyZW46W3QsKDAsYi5qc3hzKShcImdcIix7bWFzazpcInVybCgjZXJyb3Jfb3ZlcmxheV9uYXZfbWFzazBfMjY2N18xNDY4NylcIixjaGlsZHJlbjpbKDAsYi5qc3hzKShcIm1hc2tcIix7aWQ6XCJlcnJvcl9vdmVybGF5X25hdl9wYXRoXzNfb3V0c2lkZV8yXzI2NjdfMTQ2ODdcIixtYXNrVW5pdHM6XCJ1c2VyU3BhY2VPblVzZVwiLHg6XCItMVwiLHk6XCIwLjAyNDQxNDFcIix3aWR0aDpcIjYwXCIsaGVpZ2h0OlwiNDNcIixmaWxsOlwiYmxhY2tcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwicmVjdFwiLHtmaWxsOlwid2hpdGVcIix4OlwiLTFcIix5OlwiMC4wMjQ0MTQxXCIsd2lkdGg6XCI2MFwiLGhlaWdodDpcIjQzXCJ9KSwoMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMCAxLjAyNDQxSDcuMDc4M0MxNC43NzIgMS4wMjQ0MSAyMS43ODM2IDUuNDM3NjUgMjUuMTExIDEyLjM3NDZMMzMuODg4OSAzMC42NzQzQzM3LjIxNjQgMzcuNjExMiA0NC4yMjggNDIuMDI0NCA1MS45MjE3IDQyLjAyNDRINTlIMEwwIDEuMDI0NDFaXCJ9KV19KSwoMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMCAxLjAyNDQxSDcuMDc4M0MxNC43NzIgMS4wMjQ0MSAyMS43ODM2IDUuNDM3NjUgMjUuMTExIDEyLjM3NDZMMzMuODg4OSAzMC42NzQzQzM3LjIxNjQgMzcuNjExMiA0NC4yMjggNDIuMDI0NCA1MS45MjE3IDQyLjAyNDRINTlIMEwwIDEuMDI0NDFaXCIsZmlsbDpcInZhcigtLWJhY2tncm91bmQtY29sb3IpXCJ9KSwoMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMCAxLjAyNDQxTDAgMC4wMjQ0MTQxSC0xVjEuMDI0NDFIMFpNMCA0Mi4wMjQ0SC0xVjQzLjAyNDRIMEwwIDQyLjAyNDRaTTMzLjg4ODkgMzAuNjc0M0wzMi45ODczIDMxLjEwNjhMMzMuODg4OSAzMC42NzQzWk0yNS4xMTEgMTIuMzc0NkwyNi4wMTI3IDExLjk0MjFMMjUuMTExIDEyLjM3NDZaTTAgMi4wMjQ0MUg3LjA3ODNWMC4wMjQ0MTQxSDBMMCAyLjAyNDQxWk01OSA0MS4wMjQ0SDBMMCA0My4wMjQ0SDU5VjQxLjAyNDRaTTEgNDIuMDI0NEwxIDEuMDI0NDFILTFMLTEgNDIuMDI0NEgxWk0yNC4yMDk0IDEyLjgwNzFMMzIuOTg3MyAzMS4xMDY4TDM0Ljc5MDYgMzAuMjQxOEwyNi4wMTI3IDExLjk0MjFMMjQuMjA5NCAxMi44MDcxWk01MS45MjE3IDQzLjAyNDRINTlWNDEuMDI0NEg1MS45MjE3VjQzLjAyNDRaTTMyLjk4NzMgMzEuMTA2OEMzNi40ODExIDM4LjM5MDUgNDMuODQzMyA0My4wMjQ0IDUxLjkyMTcgNDMuMDI0NFY0MS4wMjQ0QzQ0LjYxMjcgNDEuMDI0NCAzNy45NTE3IDM2LjgzMTggMzQuNzkwNiAzMC4yNDE4TDMyLjk4NzMgMzEuMTA2OFpNNy4wNzgzIDIuMDI0NDFDMTQuMzg3MyAyLjAyNDQxIDIxLjA0ODMgNi4yMTY5OSAyNC4yMDk0IDEyLjgwNzFMMjYuMDEyNyAxMS45NDIxQzIyLjUxODggNC42NTgzMSAxNS4xNTY3IDAuMDI0NDE0MSA3LjA3ODMgMC4wMjQ0MTQxVjIuMDI0NDFaXCIsZmlsbDpcInZhcigtLXN0cm9rZS1jb2xvcilcIixtYXNrOlwidXJsKCNlcnJvcl9vdmVybGF5X25hdl9wYXRoXzNfb3V0c2lkZV8yXzI2NjdfMTQ2ODcpXCJ9KV19KV19KSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIHRIKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn12YXIgdFY9W1wiW2RhdGEtbmV4dC1tYXJrXVwiLFwiW2RhdGEtaXNzdWVzLW9wZW5dXCIsXCIjbmV4dGpzLWRldi10b29scy1tZW51XCIsXCJbZGF0YS1uZXh0anMtZXJyb3Itb3ZlcmxheS1uYXZdXCIsXCJbZGF0YS1pbmZvLXBvcG92ZXJdXCIsXCJbZGF0YS1uZXh0anMtZGV2dG9vbHMtcGFuZWwtb3ZlcmxheV1cIixcIltkYXRhLW5leHRqcy1kZXZ0b29scy1wYW5lbC1mb290ZXJdXCIsXCJbZGF0YS1uZXh0anMtZXJyb3Itb3ZlcmxheS1mb290ZXJdXCJdLHQkPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQ9ZS5jaGlsZHJlbixmPWUuY2xhc3NOYW1lLHA9ZS5vbkNsb3NlLGg9ZVtcImFyaWEtbGFiZWxsZWRieVwiXSxtPWVbXCJhcmlhLWRlc2NyaWJlZGJ5XCJdLGc9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJjbGFzc05hbWVcIixcIm9uQ2xvc2VcIixcImFyaWEtbGFiZWxsZWRieVwiLFwiYXJpYS1kZXNjcmliZWRieVwiXSkseT14LnVzZVJlZihudWxsKSx2PSh0PXgudXNlU3RhdGUoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5oYXNGb2N1cygpP1wiZGlhbG9nXCI6dm9pZCAwKSxuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdEgoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdEgoZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLHc9dlswXSxDPXZbMV07cmV0dXJuIHI9eS5jdXJyZW50LG89dFYsYT1mdW5jdGlvbihlKXtyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLG51bGw9PXA/dm9pZCAwOnAoKX0sKHM9KDAsQS5jKSg1KSlbMF0hPT1vfHxzWzFdIT09cnx8c1syXSE9PWE/KGk9ZnVuY3Rpb24oKXtpZihudWxsIT1yJiZudWxsIT1hKXt2YXIgZT1mdW5jdGlvbihlKXshKCFyfHxyLmNvbnRhaW5zKGUudGFyZ2V0KSkmJihvLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIGUudGFyZ2V0LmNsb3Nlc3QodCl9KXx8YShlKSl9LHQ9ci5nZXRSb290Tm9kZSgpO3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsZSksdC5hZGRFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIixlLHtwYXNzaXZlOiExfSksZnVuY3Rpb24oKXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsZSksdC5yZW1vdmVFdmVudExpc3RlbmVyKFwidG91Y2hlbmRcIixlKX19fSxsPVthLHIsb10sc1swXT1vLHNbMV09cixzWzJdPWEsc1szXT1pLHNbNF09bCk6KGk9c1szXSxsPXNbNF0pLHgudXNlRWZmZWN0KGksbCkseC51c2VFZmZlY3QoZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe0MoZG9jdW1lbnQuaGFzRm9jdXMoKT9cImRpYWxvZ1wiOnZvaWQgMCl9O2lmKG51bGwhPXkuY3VycmVudClyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGUpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLGUpLGZ1bmN0aW9uKCl7d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLGUpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwiYmx1clwiLGUpfX0sW10pLHgudXNlRWZmZWN0KGZ1bmN0aW9uKCl7dmFyIGUsdCxuPXkuY3VycmVudCxyPW51bGw9PW4/dm9pZCAwOm4uZ2V0Um9vdE5vZGUoKSxvPShlPXIsbnVsbCE9KHQ9U2hhZG93Um9vdCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJnRbU3ltYm9sLmhhc0luc3RhbmNlXT8hIXRbU3ltYm9sLmhhc0luc3RhbmNlXShlKTplIGluc3RhbmNlb2YgdCk/bnVsbD09cj92b2lkIDA6ci5hY3RpdmVFbGVtZW50Om51bGw7cmV0dXJuIG51bGw9PW58fG4uZm9jdXMoKSxmdW5jdGlvbigpe251bGw9PW58fG4uYmx1cigpLG51bGw9PW98fG8uZm9jdXMoKX19LFtdKSwoMCxiLmpzeCkoXCJkaXZcIiwoYz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtyZWY6eSx0YWJJbmRleDotMSxcImRhdGEtbmV4dGpzLWRpYWxvZ1wiOiEwLFwiZGF0YS1uZXh0anMtc2Nyb2xsYWJsZS1jb250ZW50XCI6ITAscm9sZTp3LFwiYXJpYS1sYWJlbGxlZGJ5XCI6aCxcImFyaWEtZGVzY3JpYmVkYnlcIjptLFwiYXJpYS1tb2RhbFwiOlwidHJ1ZVwiLGNsYXNzTmFtZTpmLG9uS2V5RG93bjpmdW5jdGlvbihlKXtcIkVzY2FwZVwiPT09ZS5rZXkmJihudWxsPT1wfHxwKCkpfX0sZyksdT11PXtjaGlsZHJlbjpkfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhjLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHUpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHUpKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShjLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih1LGUpKX0pLGMpKX07ZnVuY3Rpb24gdFcoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjPSgwLEEuYykoMTIpO3JldHVybihjWzBdIT09ZT8oaT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY2hpbGRyZW5cIixcIm9uQ2xvc2VcIixcImZvb3RlclwiXSkscj1lLmNoaWxkcmVuLGE9ZS5vbkNsb3NlLG89ZS5mb290ZXIsY1swXT1lLGNbMV09cixjWzJdPW8sY1szXT1hLGNbNF09aSk6KHI9Y1sxXSxvPWNbMl0sYT1jWzNdLGk9Y1s0XSksY1s1XSE9PXJ8fGNbNl0hPT1hfHxjWzddIT09aSk/KGw9KDAsYi5qc3gpKHQkLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe1wiYXJpYS1sYWJlbGxlZGJ5XCI6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfbGFiZWxcIixcImFyaWEtZGVzY3JpYmVkYnlcIjpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19kZXNjXCIsY2xhc3NOYW1lOlwiZXJyb3Itb3ZlcmxheS1kaWFsb2ctc2Nyb2xsXCIsb25DbG9zZTphfSxpKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGNbNV09cixjWzZdPWEsY1s3XT1pLGNbOF09bCk6bD1jWzhdLGNbOV0hPT1vfHxjWzEwXSE9PWw/KHM9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LWRpYWxvZy1jb250YWluZXJcIixjaGlsZHJlbjpbbCxvXX0pLGNbOV09byxjWzEwXT1sLGNbMTFdPXMpOnM9Y1sxMV0sc31mdW5jdGlvbiB0WShlKXt2YXIgdCxuLHIsbz0oMCxBLmMpKDIpO3JldHVybiBvWzBdIT09ZT8ocj0oMCxiLmpzeCkoXCJkaXZcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWRpYWxvZy1oZWFkZXJcIjohMH0sZSksbj1uPXtjaGlsZHJlbjplLmNoaWxkcmVufSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxvWzBdPWUsb1sxXT1yKTpyPW9bMV0scn1mdW5jdGlvbiB0SyhlKXt2YXIgdCxuPSgwLEEuYykoMikscj1lLmNoaWxkcmVuO3JldHVybiBuWzBdIT09cj8odD0oMCxiLmpzeCkodFkse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlclwiLGNoaWxkcmVuOnJ9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiB0WChlKXt2YXIgdCxuPSgwLEEuYykoMikscj1lLmNoaWxkcmVuO3JldHVybiBuWzBdIT09cj8odD0oMCxiLmpzeCkoZVcse2NsYXNzTmFtZTpcIm5leHRqcy1jb250YWluZXItZXJyb3JzLWJvZHlcIixjaGlsZHJlbjpyfSksblswXT1yLG5bMV09dCk6dD1uWzFdLHR9dmFyIHRHPTAsdFE9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscz0oMCxBLmMpKDkpO3JldHVybihzWzBdIT09ZT8oYT1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiY2xhc3NOYW1lXCIsXCJjaGlsZHJlblwiXSksbz1lLmNsYXNzTmFtZSxyPWUuY2hpbGRyZW4sc1swXT1lLHNbMV09cixzWzJdPW8sc1szXT1hKToocj1zWzFdLG89c1syXSxhPXNbM10pLHNbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaT1bXSxzWzRdPWkpOmk9c1s0XSx4LnVzZUVmZmVjdCh0MCxpKSxzWzVdIT09cnx8c1s2XSE9PW98fHNbN10hPT1hKT8obD0oMCxiLmpzeCkoXCJkaXZcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XCI6ITAsY2xhc3NOYW1lOm99LGEpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksc1s1XT1yLHNbNl09byxzWzddPWEsc1s4XT1sKTpsPXNbOF0sbH07ZnVuY3Rpb24gdEooKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7MCE9PXRHJiYwPT0tLXRHJiYodm9pZCAwIT09dCYmKGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PXQsdD12b2lkIDApLHZvaWQgMCE9PW4mJihkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PW4sbj12b2lkIDApKX0pfWZ1bmN0aW9uIHQwKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZighKHRHKys+MCkpe3ZhciBlPXdpbmRvdy5pbm5lcldpZHRoLWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtlPjAmJih0PWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0LGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PVwiXCIuY29uY2F0KGUsXCJweFwiKSksbj1kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93LGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIn19KSx0Sn1mdW5jdGlvbiB0MSgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV0ge1xcbiAgICBwYWRkaW5nOiBpbml0aWFsO1xcbiAgICB0b3A6IDEwdmg7XFxuICB9XFxuXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIHQxPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59ZnVuY3Rpb24gdDIoZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoNik7cmV0dXJuKGlbMF0hPT1lPyhvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiXSkscj1lLmNoaWxkcmVuLGlbMF09ZSxpWzFdPXIsaVsyXT1vKToocj1pWzFdLG89aVsyXSksaVszXSE9PXJ8fGlbNF0hPT1vKT8oYT0oMCxiLmpzeCkodFEsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSxvKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGlbM109cixpWzRdPW8saVs1XT1hKTphPWlbNV0sYX12YXIgdDQ9ZXModDEoKSk7ZnVuY3Rpb24gdDUoZSl7dmFyIHQsbixyLG89KDAsQS5jKSg0KSxhPU1hdGgubWluKGUuZXJyb3JDb3VudC1lLmFjdGl2ZUlkeC0xLDIpO3JldHVybiBvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyIGVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTFcIixjaGlsZHJlbjpcIjFcIn0pLG49KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyIGVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTJcIixjaGlsZHJlbjpcIjJcIn0pLG9bMF09dCxvWzFdPW4pOih0PW9bMF0sbj1vWzFdKSxvWzJdIT09YT8ocj0oMCxiLmpzeCkoXCJkaXZcIix7XCJhcmlhLWhpZGRlblwiOiEwLGNsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJlcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1zdGFja1wiLFwiZGF0YS1zdGFjay1jb3VudFwiOmEsY2hpbGRyZW46W3Qsbl19KX0pLG9bMl09YSxvWzNdPXIpOnI9b1szXSxyfWZ1bmN0aW9uIHQzKGUpe3ZhciB0LG49KDAsQS5jKSgyKSxyPWUuZW52aXJvbm1lbnROYW1lO3JldHVybiBuWzBdIT09cj8odD0oMCxiLmpzeCkoXCJzcGFuXCIse1wiZGF0YS1uZXh0anMtZW52aXJvbm1lbnQtbmFtZS1sYWJlbFwiOiEwLGNoaWxkcmVuOnJ9KSxuWzBdPXIsblsxXT10KTp0PW5bMV0sdH1mdW5jdGlvbiB0NihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdDkoZSl7dmFyIHQsbixyPW51bGw9PWU/dm9pZCAwOmUuZ2V0Um9vdE5vZGUoKTtyZXR1cm4odD1yLG51bGwhPShuPVNoYWRvd1Jvb3QpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZuW1N5bWJvbC5oYXNJbnN0YW5jZV0/ISFuW1N5bWJvbC5oYXNJbnN0YW5jZV0odCk6dCBpbnN0YW5jZW9mIG4pP251bGw9PXI/dm9pZCAwOnIuYWN0aXZlRWxlbWVudDpudWxsfWZ1bmN0aW9uIHQ4KGUsdCxuLHIsbyl7dmFyIGEsaSxsPSgwLEEuYykoNyk7bFswXSE9PW58fGxbMV0hPT1yfHxsWzJdIT09b3x8bFszXSE9PWV8fGxbNF0hPT10PyhhPWZ1bmN0aW9uKCl7aWYobil7dmFyIGEsaT1vfHwobnVsbD09KGE9ZS5jdXJyZW50KT92b2lkIDA6YS5vd25lckRvY3VtZW50KSxsPWZ1bmN0aW9uKG4pe3ZhciBvLGEsaT1uLnRhcmdldDshKGUuY3VycmVudCYmZS5jdXJyZW50LmNvbnRhaW5zKGkpKSYmKG51bGwhPShvPWUuY3VycmVudCkmJm8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkmJm4uY2xpZW50WD49ZS5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtMTAmJm4uY2xpZW50WDw9ZS5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KzEwJiZuLmNsaWVudFk+PWUuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtMTAmJm4uY2xpZW50WTw9ZS5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSsxMHx8bnVsbCE9KGE9dC5jdXJyZW50KSYmYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSYmbi5jbGllbnRYPj10LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC0xMCYmbi5jbGllbnRYPD10LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQrMTAmJm4uY2xpZW50WT49dC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcC0xMCYmbi5jbGllbnRZPD10LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tKzEwfHxyKFwib3V0c2lkZVwiKSl9LHM9ZnVuY3Rpb24oZSl7XCJFc2NhcGVcIj09PWUua2V5JiZyKFwiZXNjYXBlXCIpfTtyZXR1cm4gbnVsbD09aXx8aS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsbCksbnVsbD09aXx8aS5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHMpLGZ1bmN0aW9uKCl7bnVsbD09aXx8aS5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsbCksbnVsbD09aXx8aS5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLHMpfX19LGk9W24scixvLGUsdF0sbFswXT1uLGxbMV09cixsWzJdPW8sbFszXT1lLGxbNF09dCxsWzVdPWEsbFs2XT1pKTooYT1sWzVdLGk9bFs2XSksKDAseC51c2VFZmZlY3QpKGEsaSl9dmFyIHQ3PVwiY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4xKVwiLG5lPSgwLHguZm9yd2FyZFJlZikoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89KDAsQS5jKSg5KSxhPWUuc3RvcCxpPWUuYmx1cixsPWUuc2lkZSxzPWUuc3R5bGUsYz1lLmhlaWdodCx1PVwiXCIuY29uY2F0KGMsXCJweFwiKTtvWzBdIT09aXx8b1sxXSE9PWF8fG9bMl0hPT1zfHxvWzNdIT09dT8obj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcIi0tc3RvcFwiOmEsXCItLWJsdXJcIjppLFwiLS1oZWlnaHRcIjp1fSxzKSxvWzBdPWksb1sxXT1hLG9bMl09cyxvWzNdPXUsb1s0XT1uKTpuPW9bNF07dmFyIGQ9bjtyZXR1cm4gb1s1XSE9PXR8fG9bNl0hPT1sfHxvWzddIT09ZD8ocj0oMCxiLmpzeCkoXCJkaXZcIix7cmVmOnQsXCJhcmlhLWhpZGRlblwiOiEwLFwiZGF0YS1uZXh0anMtc2Nyb2xsLWZhZGVyXCI6ITAsY2xhc3NOYW1lOlwibmV4dGpzLXNjcm9sbC1mYWRlclwiLFwiZGF0YS1zaWRlXCI6bCxzdHlsZTpkfSksb1s1XT10LG9bNl09bCxvWzddPWQsb1s4XT1yKTpyPW9bOF0scn0pO2Z1bmN0aW9uIG50KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBubihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbnQoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbnQoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9dmFyIG5yPSgwLHguZm9yd2FyZFJlZikoZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LHcsQyxfLGs9KDAsQS5jKSgxMyk7a1swXSE9PWU/KHY9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJtZWFzdXJlXCJdKSxnPWUuY2hpbGRyZW4seT1lLm1lYXN1cmUsa1swXT1lLGtbMV09ZyxrWzJdPXksa1szXT12KTooZz1rWzFdLHk9a1syXSx2PWtbM10pO3ZhciBFPW5uKCgwLHgudXNlU3RhdGUpKG51bGwpLDIpLGo9RVswXSxTPUVbMV0sTz1ubigobj1qLHI9eSxsPSgwLEEuYykoNyksYz0ocz1ubigoMCx4LnVzZVN0YXRlKSgwKSwyKSlbMF0sdT1zWzFdLGY9KGQ9bm4oKDAseC51c2VTdGF0ZSkoITApLDIpKVswXSxwPWRbMV0sbFswXSE9PW58fGxbMV0hPT1yPyhvPWZ1bmN0aW9uKCl7aWYociYmbil7dmFyIGUsdD1uZXcgUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24odCl7dmFyIG49bm4odCwxKVswXS5jb250ZW50UmVjdDtjbGVhclRpbWVvdXQoZSksZT13aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3AoITEpfSwxMDApLHUobi5oZWlnaHQpfSk7cmV0dXJuIHQub2JzZXJ2ZShuKSxmdW5jdGlvbigpe3JldHVybiB0LmRpc2Nvbm5lY3QoKX19fSxhPVtyLG5dLGxbMF09bixsWzFdPXIsbFsyXT1vLGxbM109YSk6KG89bFsyXSxhPWxbM10pLCgwLHgudXNlRWZmZWN0KShvLGEpLGxbNF0hPT1jfHxsWzVdIT09Zj8oaT1bYyxmXSxsWzRdPWMsbFs1XT1mLGxbNl09aSk6aT1sWzZdLGkpLDIpLEI9T1swXSxQPU9bMV0/XCJhdXRvXCI6QjtyZXR1cm4oa1s0XSE9PVA/KHc9e2hlaWdodDpQLHRyYW5zaXRpb246XCJoZWlnaHQgMjUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KVwifSxrWzRdPVAsa1s1XT13KTp3PWtbNV0sa1s2XSE9PWc/KEM9KDAsYi5qc3gpKFwiZGl2XCIse3JlZjpTLGNoaWxkcmVuOmd9KSxrWzZdPWcsa1s3XT1DKTpDPWtbN10sa1s4XSE9PXZ8fGtbOV0hPT10fHxrWzEwXSE9PXd8fGtbMTFdIT09Qyk/KF89KDAsYi5qc3gpKFwiZGl2XCIsKGg9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSx2KSxtPW09e3JlZjp0LHN0eWxlOncsY2hpbGRyZW46Q30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoaCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhtKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChtKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoaCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSxlKSl9KSxoKSksa1s4XT12LGtbOV09dCxrWzEwXT13LGtbMTFdPUMsa1sxMl09Xyk6Xz1rWzEyXSxffSk7ZnVuY3Rpb24gbm8oZSl7dmFyIHQsbixyLG89KDAsQS5jKSg2KTtvWzBdIT09ZT8obj1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89e30sYT1PYmplY3Qua2V5cyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluZGV4T2Yobik+PTB8fChvW25dPWVbbl0pO3JldHVybiBvfShlLHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBhPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sISh0LmluZGV4T2Yobik+PTApJiZPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSxuKSYmKG9bbl09ZVtuXSl9cmV0dXJuIG99KGUsW1wiZml4ZWRcIl0pLHQ9ZS5maXhlZCxvWzBdPWUsb1sxXT10LG9bMl09bik6KHQ9b1sxXSxuPW9bMl0pO3ZhciBhPSEhdHx8dm9pZCAwO3JldHVybiBvWzNdIT09bnx8b1s0XSE9PWE/KHI9KDAsYi5qc3gpKFwiZGl2XCIsZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctYmFja2Ryb3BcIjohMCxcImRhdGEtbmV4dGpzLWRpYWxvZy1iYWNrZHJvcC1maXhlZFwiOmF9LG4pKSxvWzNdPW4sb1s0XT1hLG9bNV09cik6cj1vWzVdLHJ9ZnVuY3Rpb24gbmEoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG5pKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBubChlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gbnMoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG5hKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG5hKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG5jKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix3LEMsXyxrLEUsaixTPSgwLEEuYykoNjUpLE89ZS5lcnJvck1lc3NhZ2UsQj1lLmVycm9yVHlwZSxQPWUuY2hpbGRyZW4sST1lLmVycm9yQ29kZSx6PWUuZXJyb3JDb3VudCxUPWUuZXJyb3IsRD1lLmRlYnVnSW5mbyxMPWUuaXNCdWlsZEVycm9yLE49ZS5vbkNsb3NlLFI9ZS52ZXJzaW9uSW5mbyxNPWUucnVudGltZUVycm9ycyxaPWUuYWN0aXZlSWR4LFU9ZS5zZXRBY3RpdmVJbmRleCxGPWUuaXNUdXJib3BhY2sscT1lLmRpYWxvZ1Jlc2l6ZXJSZWYsSD1lLmdlbmVyYXRlRXJyb3JJbmZvLFY9ZS5yZW5kZXJlZCwkPWUudHJhbnNpdGlvbkR1cmF0aW9uTXMsVz12b2lkIDA9PT1WfHxWLFk9XCJcIi5jb25jYXQoJCxcIm1zXCIpO1NbMF0hPT1ZPyhyPXtcIi0tdHJhbnNpdGlvbi1kdXJhdGlvblwiOll9LFNbMF09WSxTWzFdPXIpOnI9U1sxXTt2YXIgSz1yO1NbMl0hPT1XfHxTWzNdIT09Sz8obz17XCJkYXRhLXJlbmRlcmVkXCI6VyxzdHlsZTpLfSxTWzJdPVcsU1szXT1LLFNbNF09byk6bz1TWzRdO3ZhciBYPW8sRz1ucyh4LnVzZVN0YXRlKCEhJCksMiksUT1HWzBdLEo9R1sxXSxlZT14LnVzZVJlZihudWxsKSxldD0hIUksZW49eC51c2VSZWYobnVsbCk7dD1lbixuPVcsKDAseC51c2VFZmZlY3QpKGZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSl7aWYoXCJUYWJcIj09PWUua2V5JiZudWxsIT09cil7dmFyIHQsbixvLGE9KG49KHQ9ci5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24sIFtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKScpKT9bdFswXSx0W3QubGVuZ3RoLTFdXTpbXSxvPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0obil8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0obiwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdDYoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdDYoZSx0KX19KG4sbyl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGk9YVswXSxsPWFbMV0scz10OShyKTtlLnNoaWZ0S2V5P3M9PT1pJiYobnVsbD09bHx8bC5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKSk6cz09PWwmJihudWxsPT1pfHxpLmZvY3VzKCksZS5wcmV2ZW50RGVmYXVsdCgpKX19LHI9bnVsbCxvPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihyPXQuY3VycmVudCxuKW51bGw9PXJ8fHIuZm9jdXMoKSxudWxsPT1yfHxyLmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZSk7ZWxzZSB0OShyKX0pO3JldHVybiBmdW5jdGlvbigpe2NsZWFyVGltZW91dChvKSxudWxsPT1yfHxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsZSl9fSxbbl0pLFNbNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT1mdW5jdGlvbihlKXtpZihlZS5jdXJyZW50KXt2YXIgdCxuLHI9KHQ9ZS5jdXJyZW50VGFyZ2V0LnNjcm9sbFRvcC8xNyxNYXRoLm1pbihNYXRoLm1heCh0LChuPW5zKFswLDFdLDIpKVswXSksblsxXSkpO2VlLmN1cnJlbnQuc3R5bGUub3BhY2l0eT1TdHJpbmcocil9fSxTWzVdPWEpOmE9U1s1XTt2YXIgZXI9YTtTWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wcm9wZXJ0eU5hbWUsbj1lLnRhcmdldDtcInNjYWxlXCI9PT10JiZuPT09ZW4uY3VycmVudCYmSighMSl9LFNbNl09aSk6aT1TWzZdO3ZhciBlbz1pO1NbN10hPT1MPyhsPSgwLGIuanN4KShubyx7Zml4ZWQ6TH0pLFNbN109TCxTWzhdPWwpOmw9U1s4XSxTWzldIT09Wnx8U1sxMF0hPT1GfHxTWzExXSE9PU18fFNbMTJdIT09VXx8U1sxM10hPT1SPyhzPSgwLGIuanN4KSh0Wix7cnVudGltZUVycm9yczpNLGFjdGl2ZUlkeDpaLHNldEFjdGl2ZUluZGV4OlUsdmVyc2lvbkluZm86Uixpc1R1cmJvcGFjazpGfSksU1s5XT1aLFNbMTBdPUYsU1sxMV09TSxTWzEyXT1VLFNbMTNdPVIsU1sxNF09cyk6cz1TWzE0XSxTWzE1XSE9PUl8fFNbMTZdIT09ZXQ/KGM9ZXQmJigwLGIuanN4KSh0Uyx7ZXJyb3JDb2RlOkl9KSxTWzE1XT1JLFNbMTZdPWV0LFNbMTddPWMpOmM9U1sxN107dmFyIGVhPSFRO1NbMThdIT09Qj8odT0oMCxiLmpzeCkodHose2Vycm9yVHlwZTpCfSksU1sxOF09QixTWzE5XT11KTp1PVNbMTldLFNbMjBdIT09VC5lbnZpcm9ubWVudE5hbWU/KGQ9VC5lbnZpcm9ubWVudE5hbWUmJigwLGIuanN4KSh0Myx7ZW52aXJvbm1lbnROYW1lOlQuZW52aXJvbm1lbnROYW1lfSksU1syMF09VC5lbnZpcm9ubWVudE5hbWUsU1syMV09ZCk6ZD1TWzIxXSxTWzIyXSE9PXV8fFNbMjNdIT09ZD8oZj0oMCxiLmpzeHMpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWVycm9yLWxhYmVsLWdyb3VwXCI6ITAsY2hpbGRyZW46W3UsZF19KSxTWzIyXT11LFNbMjNdPWQsU1syNF09Zik6Zj1TWzI0XSxTWzI1XSE9PUR8fFNbMjZdIT09VHx8U1syN10hPT1IPyhwPSgwLGIuanN4KSh0eCx7ZXJyb3I6VCxkZWJ1Z0luZm86RCxnZW5lcmF0ZUVycm9ySW5mbzpIfSksU1syNV09RCxTWzI2XT1ULFNbMjddPUgsU1syOF09cCk6cD1TWzI4XSxTWzI5XSE9PUl8fFNbMzBdIT09Znx8U1szMV0hPT1wPyhoPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX19lcnJvcl90aXRsZVwiLFwiZGF0YS1uZXh0anMtZXJyb3ItY29kZVwiOkksY2hpbGRyZW46W2YscF19KSxTWzI5XT1JLFNbMzBdPWYsU1szMV09cCxTWzMyXT1oKTpoPVNbMzJdLFNbMzNdIT09Tz8obT0oMCxiLmpzeCkodEkse2Vycm9yTWVzc2FnZTpPfSksU1szM109TyxTWzM0XT1tKTptPVNbMzRdLFNbMzVdIT09aHx8U1szNl0hPT1tPyhnPSgwLGIuanN4cykodEsse2NoaWxkcmVuOltoLG1dfSksU1szNV09aCxTWzM2XT1tLFNbMzddPWcpOmc9U1szN10sU1szOF0hPT1QPyh5PSgwLGIuanN4KSh0WCx7Y2hpbGRyZW46UH0pLFNbMzhdPVAsU1szOV09eSk6eT1TWzM5XSxTWzQwXSE9PWd8fFNbNDFdIT09eT8odj0oMCxiLmpzeHMpKGVZLHtjaGlsZHJlbjpbZyx5XX0pLFNbNDBdPWcsU1s0MV09eSxTWzQyXT12KTp2PVNbNDJdLFNbNDNdIT09cXx8U1s0NF0hPT1lYXx8U1s0NV0hPT12Pyh3PSgwLGIuanN4KShucix7cmVmOnEsbWVhc3VyZTplYSxcImRhdGEtbmV4dGpzLWRpYWxvZy1zaXplclwiOiEwLGNoaWxkcmVuOnZ9KSxTWzQzXT1xLFNbNDRdPWVhLFNbNDVdPXYsU1s0Nl09dyk6dz1TWzQ2XTt2YXIgZWk9bnVsbCE9Wj9aOjA7cmV0dXJuIFNbNDddIT09enx8U1s0OF0hPT1laT8oQz0oMCxiLmpzeCkodDUse2Vycm9yQ291bnQ6eixhY3RpdmVJZHg6ZWl9KSxTWzQ3XT16LFNbNDhdPWVpLFNbNDldPUMpOkM9U1s0OV0sU1s1MF0hPT1ldHx8U1s1MV0hPT1OfHxTWzUyXSE9PWN8fFNbNTNdIT09d3x8U1s1NF0hPT1DPyhfPSgwLGIuanN4cykodFcse29uQ2xvc2U6TixcImRhdGEtaGFzLWZvb3RlclwiOmV0LG9uU2Nyb2xsOmVyLGZvb3RlcjpjLGNoaWxkcmVuOlt3LENdfSksU1s1MF09ZXQsU1s1MV09TixTWzUyXT1jLFNbNTNdPXcsU1s1NF09QyxTWzU1XT1fKTpfPVNbNTVdLFNbNTZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGs9KDAsYi5qc3gpKG5lLHtyZWY6ZWUsc2lkZTpcInRvcFwiLHN0b3A6XCI1MCVcIixibHVyOlwiNHB4XCIsaGVpZ2h0OjQ4fSksU1s1Nl09ayk6az1TWzU2XSxTWzU3XSE9PVh8fFNbNThdIT09X3x8U1s1OV0hPT1zPyhFPSgwLGIuanN4cykoXCJkaXZcIixubChuaSh7XCJkYXRhLW5leHRqcy1kaWFsb2ctcm9vdFwiOiEwLG9uVHJhbnNpdGlvbkVuZDplbyxyZWY6ZW59LFgpLHtjaGlsZHJlbjpbcyxfLGtdfSkpLFNbNTddPVgsU1s1OF09XyxTWzU5XT1zLFNbNjBdPUUpOkU9U1s2MF0sU1s2MV0hPT1YfHxTWzYyXSE9PUV8fFNbNjNdIT09bD8oaj0oMCxiLmpzeHMpKHQyLG5sKG5pKHt9LFgpLHtjaGlsZHJlbjpbbCxFXX0pKSxTWzYxXT1YLFNbNjJdPUUsU1s2M109bCxTWzY0XT1qKTpqPVNbNjRdLGp9dmFyIG51PVwiXFxuICBcIi5jb25jYXQodDQsXCJcXG4gIFwiKS5jb25jYXQoXCJcXG4gIC5lcnJvci1vdmVybGF5LWRpYWxvZy1jb250YWluZXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIGJvcmRlcjogdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDAgMCB2YXIoLS1uZXh0LWRpYWxvZy1yYWRpdXMpIHZhcigtLW5leHQtZGlhbG9nLXJhZGl1cyk7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1tZW51KTtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktZGlhbG9nLXNjcm9sbCB7XFxuICAgIG92ZXJmbG93LXk6IGF1dG87XFxuICAgIGhlaWdodDogMTAwJTtcXG4gIH1cXG5cIixcIlxcbiAgXCIpLmNvbmNhdChcIlxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBoMSB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0yMCk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICAgIG1hcmdpbjogY2FsYygxNnB4ICogMS41KSAwO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItdGl0bGUtaDEpO1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciBzbWFsbCB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnRzLTEpO1xcbiAgICBtYXJnaW4tbGVmdDogMTZweDtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgc21hbGwgPiBzcGFuIHtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gIH1cXG4gIC5uZXh0anMtY29udGFpbmVyLWVycm9ycy1oZWFkZXIgPiBkaXYgPiBzbWFsbCB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgbWFyZ2luLXRvcDogNHB4O1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlciA+IHAgPiBhIHtcXG4gICAgY29sb3I6IGluaGVyaXQ7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWhlYWRlclxcbiAgICA+IC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLXZlcnNpb24tc3RhdHVzIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICB0b3A6IDE2cHg7XFxuICAgIHJpZ2h0OiAxNnB4O1xcbiAgfVxcblwiLFwiXFxuICBcIikuY29uY2F0KFwiXCIsXCJcXG5cXG4gIFwiKS5jb25jYXQoXCJcXG4gIFtkYXRhLW5leHRqcy1lcnJvci1vdmVybGF5LW5hdl0ge1xcbiAgICAtLXN0cm9rZS1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICAtLWJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICB3aWR0aDogMTAwJTtcXG5cXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICB6LWluZGV4OiAyO1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgICB0cmFuc2xhdGU6IHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkgdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKTtcXG4gICAgbWF4LXdpZHRoOiB2YXIoLS1uZXh0LWRpYWxvZy1tYXgtd2lkdGgpO1xcblxcbiAgICAuZXJyb3Itb3ZlcmxheS1ub3RjaCB7XFxuICAgICAgdHJhbnNsYXRlOiBjYWxjKHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkgKiAtMSk7XFxuICAgICAgd2lkdGg6IGF1dG87XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1uZXh0LWRpYWxvZy1ub3RjaC1oZWlnaHQpO1xcbiAgICAgIHBhZGRpbmc6IDEycHg7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XFxuICAgICAgYm9yZGVyOiB2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpIHNvbGlkIHZhcigtLXN0cm9rZS1jb2xvcik7XFxuICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuXFxuICAgICAgJltkYXRhLXNpZGU9J2xlZnQnXSB7XFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmV4dC1kaWFsb2ctcmFkaXVzKSAwIDAgMDtcXG5cXG4gICAgICAgIC5lcnJvci1vdmVybGF5LW5vdGNoLXRhaWwge1xcbiAgICAgICAgICByaWdodDogLTU0cHg7XFxuICAgICAgICB9XFxuXFxuICAgICAgICA+ICo6bm90KC5lcnJvci1vdmVybGF5LW5vdGNoLXRhaWwpIHtcXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMTBweDtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgJltkYXRhLXNpZGU9J3JpZ2h0J10ge1xcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1uZXh0LWRpYWxvZy1yYWRpdXMpIDAgMDtcXG5cXG4gICAgICAgIC5lcnJvci1vdmVybGF5LW5vdGNoLXRhaWwge1xcbiAgICAgICAgICBsZWZ0OiAtNTRweDtcXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZyk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICA+ICo6bm90KC5lcnJvci1vdmVybGF5LW5vdGNoLXRhaWwpIHtcXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IC0xMnB4O1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG5cXG4gICAgICAuZXJyb3Itb3ZlcmxheS1ub3RjaC10YWlsIHtcXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgICAgIHRvcDogY2FsYyh2YXIoLS1uZXh0LWRpYWxvZy1ib3JkZXItd2lkdGgpICogLTEpO1xcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgICAgICB6LWluZGV4OiAtMTtcXG4gICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgdmFyKC0tbmV4dC1kaWFsb2ctYm9yZGVyLXdpZHRoKSk7XFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXFxuICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcXG4gICAgW2RhdGEtbmV4dGpzLWVycm9yLW92ZXJsYXktbmF2XSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmFja2dyb3VuZC1jb2xvcik7XFxuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tbmV4dC1kaWFsb2ctcmFkaXVzKSB2YXIoLS1uZXh0LWRpYWxvZy1yYWRpdXMpIDAgMDtcXG4gICAgICBib3JkZXI6IHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCkgc29saWQgdmFyKC0tc3Ryb2tlLWNvbG9yKTtcXG4gICAgICBib3JkZXItYm90dG9tOiBub25lO1xcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgICAgdHJhbnNsYXRlOiAwIHZhcigtLW5leHQtZGlhbG9nLWJvcmRlci13aWR0aCk7XFxuICAgICAgXFxuICAgICAgLmVycm9yLW92ZXJsYXktbm90Y2gge1xcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcXG4gICAgICAgIGJvcmRlcjogMDtcXG5cXG4gICAgICAgICZbZGF0YS1zaWRlPVxcXCJsZWZ0XFxcIl0sICZbZGF0YS1zaWRlPVxcXCJyaWdodFxcXCJdIHtcXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMDtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIC5lcnJvci1vdmVybGF5LW5vdGNoLXRhaWwge1xcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblwiLFwiXFxuICBcIikuY29uY2F0KFwiXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX2xhYmVsIHtcXG4gICAgcGFkZGluZzogMnB4IDZweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kLTIpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1yZWQtMTAwKTtcXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXJlZC05MDApO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICB9XFxuXCIsXCJcXG4gIFwiKS5jb25jYXQoXCJcXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfd3JhcHBlciB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gIH1cXG5cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfZGVzYyB7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgbWFyZ2luLWxlZnQ6IDRweDtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXJlZC05MDApO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTYpO1xcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMzJweDtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxuICB9XFxuXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX2Rlc2MudHJ1bmNhdGVkIHtcXG4gICAgbWF4LWhlaWdodDogMjAwcHg7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICB9XFxuXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX2dyYWRpZW50X292ZXJsYXkge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMDtcXG4gICAgbGVmdDogMDtcXG4gICAgcmlnaHQ6IDA7XFxuICAgIGhlaWdodDogODVweDtcXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxcbiAgICAgIDE4MGRlZyxcXG4gICAgICByZ2JhKDI1MCwgMjUwLCAyNTAsIDApIDAlLFxcbiAgICAgIHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKSAxMDAlXFxuICAgICk7XFxuICB9XFxuXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX2V4cGFuZF9idXR0b24ge1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogMTBweDtcXG4gICAgbGVmdDogNTAlO1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIHBhZGRpbmc6IDZweCA4cHg7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcXG4gICAgYm94LXNoYWRvdzpcXG4gICAgICAwcHggMnB4IDJweCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTEwMCksXFxuICAgICAgMHB4IDhweCA4cHggLThweCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTEwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xMyk7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzIGVhc2U7XFxuICB9XFxuXFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX2V4cGFuZF9idXR0b246aG92ZXIge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICB9XFxuXCIsXCJcXG4gIFwiKS5jb25jYXQoXCJcXG4gIC5lcnJvci1vdmVybGF5LXRvb2xiYXIge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBnYXA6IDZweDtcXG4gIH1cXG5cXG4gIC5ub2RlanMtaW5zcGVjdG9yLWJ1dHRvbixcXG4gIC5jb3B5LWVycm9yLWJ1dHRvbixcXG4gIC5kb2NzLWxpbmstYnV0dG9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuXFxuICAgIHdpZHRoOiB2YXIoLS1zaXplLTI4KTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI4KTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICAgIGJveC1zaGFkb3c6IHZhcigtLXNoYWRvdy1zbWFsbCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTQpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgIH1cXG5cXG4gICAgJjpub3QoOmRpc2FibGVkKTpob3ZlciB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS1hbHBoYS0xMDApO1xcbiAgICB9XFxuXFxuICAgICY6bm90KDpkaXNhYmxlZCk6YWN0aXZlIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTIwMCk7XFxuICAgIH1cXG5cXG4gICAgJjpkaXNhYmxlZCB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LXRvb2xiYXItYnV0dG9uLWljb24ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgfVxcblwiLFwiXFxuXFxuICBbZGF0YS1uZXh0anMtZXJyb3ItbGFiZWwtZ3JvdXBdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuICB9XFxuXCIpO2Z1bmN0aW9uIG5kKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgW2RhdGEtbmV4dGpzLWRpYWxvZy1vdmVybGF5XSB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICAvKiBzZWNvbmRhcnkgei1pbmRleCwgLTEgdGhhbiB0b2FzdCB6LWluZGV4ICovXFxuICAgIHotaW5kZXg6IDIxNDc0ODM2NDY7XFxuXFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcXG4gICAgcGFkZGluZzogMTB2aCAxNXB4IDA7XFxuICB9XFxuXFxuICBAbWVkaWEgKG1heC1oZWlnaHQ6IDgxMnB4KSB7XFxuICAgIFtkYXRhLW5leHRqcy1kaWFsb2ctb3ZlcmxheV0ge1xcbiAgICAgIHBhZGRpbmc6IDE1cHggMTVweCAwO1xcbiAgICB9XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wXSB7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgdG9wOiAwO1xcbiAgICByaWdodDogMDtcXG4gICAgYm90dG9tOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1iYWNrZHJvcCk7XFxuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcXG4gICAgcG9pbnRlci1ldmVudHM6IGFsbDtcXG4gICAgei1pbmRleDogLTE7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtZGlhbG9nLWJhY2tkcm9wLWZpeGVkXSB7XFxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XFxuICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XFxuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xcbiAgfVxcblwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiBuZD1mdW5jdGlvbigpe3JldHVybiBufSxufXZhciBuZj1lcyhuZCgpKTtmdW5jdGlvbiBucChlKXt2YXIgdCxuLHIsbyxhLGk9KDAsQS5jKSg5KSxsPWUuZmlsZSxzPWUubG9jYXRpb24sYz1udWxsIT0odD1udWxsPT1zP3ZvaWQgMDpzLmxpbmUpP3Q6MSx1PW51bGwhPShuPW51bGw9PXM/dm9pZCAwOnMuY29sdW1uKT9uOjE7aVswXSE9PWx8fGlbMV0hPT1jfHxpWzJdIT09dT8ocj17ZmlsZTpsLGxpbmUxOmMsY29sdW1uMTp1fSxpWzBdPWwsaVsxXT1jLGlbMl09dSxpWzNdPXIpOnI9aVszXTt2YXIgZD1lUyhyKSxmPXM/XCI6XCIuY29uY2F0KHMubGluZSxcIjpcIikuY29uY2F0KHMuY29sdW1uKTpudWxsO3JldHVybiBpWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89KDAsYi5qc3hzKShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsdmlld0JveDpcIjAgMCAyNCAyNFwiLGZpbGw6XCJub25lXCIsc3Ryb2tlOlwiY3VycmVudENvbG9yXCIsc3Ryb2tlV2lkdGg6XCIyXCIsc3Ryb2tlTGluZWNhcDpcInJvdW5kXCIsc3Ryb2tlTGluZWpvaW46XCJyb3VuZFwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJNMTggMTN2NmEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMlY4YTIgMiAwIDAgMSAyLTJoNlwifSksKDAsYi5qc3gpKFwicG9seWxpbmVcIix7cG9pbnRzOlwiMTUgMyAyMSAzIDIxIDlcIn0pLCgwLGIuanN4KShcImxpbmVcIix7eDE6XCIxMFwiLHkxOlwiMTRcIix4MjpcIjIxXCIseTI6XCIzXCJ9KV19KSxpWzRdPW8pOm89aVs0XSxpWzVdIT09bHx8aVs2XSE9PWR8fGlbN10hPT1mPyhhPSgwLGIuanN4cykoXCJkaXZcIix7XCJkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGlua1wiOiEwLFwiZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmstaW1wb3J0LXRyYWNlXCI6ITAscm9sZTpcImxpbmtcIixvbkNsaWNrOmQsdGl0bGU6XCJDbGljayB0byBvcGVuIGluIHlvdXIgZWRpdG9yXCIsY2hpbGRyZW46W2wsZixvXX0pLGlbNV09bCxpWzZdPWQsaVs3XT1mLGlbOF09YSk6YT1pWzhdLGF9ZnVuY3Rpb24gbmgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfXZhciBubT1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkPWUuY29udGVudCxmPXgudXNlTWVtbyhmdW5jdGlvbigpe3ZhciBlLHQsbjtyZXR1cm4gdD1mdW5jdGlvbihlKXt2YXIgdCxuLHI9ZS5zaGlmdCgpO2lmKCFyKXJldHVybiBudWxsO3ZhciBvPSh0PXIuc3BsaXQoXCI6XCIsMyksbj0zLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHQpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMyl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG5oKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG5oKGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxhPW9bMF0saT1vWzFdLGw9b1syXSxzPU51bWJlcihpKSxjPU51bWJlcihsKSx1PSFOdW1iZXIuaXNOYU4ocykmJiFOdW1iZXIuaXNOYU4oYyk7cmV0dXJue2ZpbGVOYW1lOnU/YTpyLGxvY2F0aW9uOnU/e2xpbmUxOnMsY29sdW1uMTpjfTp2b2lkIDB9fShlPWQuc3BsaXQoXCJcXG5cIikpLG49ZnVuY3Rpb24oZSl7aWYoZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybi9SZWFjdFNlcnZlckNvbXBvbmVudHNFcnJvcjovLnRlc3QoZSl9KXx8ZS5zb21lKGZ1bmN0aW9uKGUpe3JldHVybi9JbXBvcnQgdHJhY2UgZm9yIHJlcXVlc3RlZCBtb2R1bGU6Ly50ZXN0KGUpfSkpe2Zvcih2YXIgdD1bXTsvLitcXC4uKy8udGVzdChlW2UubGVuZ3RoLTFdKSYmIWVbZS5sZW5ndGgtMV0uaW5jbHVkZXMoXCI6XCIpOyl7dmFyIG49ZS5wb3AoKS50cmltKCk7dC51bnNoaWZ0KG4pfXJldHVybiB0fXJldHVybltdfShlKSx7ZmlsZTp0LHNvdXJjZTplLmpvaW4oXCJcXG5cIiksaW1wb3J0VHJhY2VGaWxlczpufX0sW2RdKSxwPWYuZmlsZSxoPWYuc291cmNlLG09Zi5pbXBvcnRUcmFjZUZpbGVzLGc9eC51c2VNZW1vKGZ1bmN0aW9uKCl7cmV0dXJuIGVVKCkuYW5zaVRvSnNvbihoLHtqc29uOiEwLHVzZV9jbGFzc2VzOiEwLHJlbW92ZV9lbXB0eTohMH0pfSxbaF0pO2NvbnNvbGUubG9nKHtmaWxlOnB9KTt2YXIgeT1lUyh7ZmlsZTpudWxsPT1wP3ZvaWQgMDpwLmZpbGVOYW1lLGxpbmUxOm51bGwhPShpPW51bGw9PXB8fG51bGw9PSh0PXAubG9jYXRpb24pP3ZvaWQgMDp0LmxpbmUxKT9pOjEsY29sdW1uMTpudWxsIT0obD1udWxsPT1wfHxudWxsPT0obj1wLmxvY2F0aW9uKT92b2lkIDA6bi5jb2x1bW4xKT9sOjF9KSx2PXtmaWxlOm51bGwhPShzPW51bGw9PXA/dm9pZCAwOnAuZmlsZU5hbWUpP3M6bnVsbCxtZXRob2ROYW1lOlwiXCIsYXJndW1lbnRzOltdLGxpbmUxOm51bGwhPShjPW51bGw9PXB8fG51bGw9PShyPXAubG9jYXRpb24pP3ZvaWQgMDpyLmxpbmUxKT9jOm51bGwsY29sdW1uMTpudWxsIT0odT1udWxsPT1wfHxudWxsPT0obz1wLmxvY2F0aW9uKT92b2lkIDA6by5jb2x1bW4xKT91Om51bGx9LEE9bnVsbD09dnx8bnVsbD09KGE9di5maWxlKT92b2lkIDA6YS5zcGxpdChcIi5cIikucG9wKCk7cmV0dXJuKDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtbmV4dGpzLWNvZGVmcmFtZVwiOiEwLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1oZWFkZXJcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtbGlua1wiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImNvZGUtZnJhbWUtaWNvblwiLGNoaWxkcmVuOigwLGIuanN4KShlVCx7bGFuZzpBfSl9KSwoMCxiLmpzeCkoXCJzcGFuXCIse1wiZGF0YS10ZXh0XCI6ITAsY2hpbGRyZW46ZWoodil9KSwoMCxiLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWxhYmVsXCI6XCJPcGVuIGluIGVkaXRvclwiLFwiZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmstc291cmNlLWZpbGVcIjohMCxvbkNsaWNrOnksY2hpbGRyZW46KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLWljb25cIixcImRhdGEtaWNvblwiOlwicmlnaHRcIixjaGlsZHJlbjooMCxiLmpzeCkoZUkse3dpZHRoOjE2LGhlaWdodDoxNn0pfSl9KV19KX0pLCgwLGIuanN4KShcInByZVwiLHtjbGFzc05hbWU6XCJjb2RlLWZyYW1lLXByZVwiLGNoaWxkcmVuOigwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiY29kZS1mcmFtZS1saW5lc1wiLGNoaWxkcmVuOltnLm1hcChmdW5jdGlvbihlLHQpe3JldHVybigwLGIuanN4KShcInNwYW5cIix7c3R5bGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7Y29sb3I6ZS5mZz9cInZhcigtLWNvbG9yLVwiLmNvbmNhdChlLmZnLFwiKVwiKTp2b2lkIDB9LFwiYm9sZFwiPT09ZS5kZWNvcmF0aW9uP3tmb250V2VpZ2h0OjUwMH06XCJpdGFsaWNcIj09PWUuZGVjb3JhdGlvbj97Zm9udFN0eWxlOlwiaXRhbGljXCJ9OnZvaWQgMCksY2hpbGRyZW46KDAsYi5qc3gpKGV2LHt0ZXh0OmUuY29udGVudH0pfSxcInRlcm1pbmFsLWVudHJ5LVwiLmNvbmNhdCh0KSl9KSxtLm1hcChmdW5jdGlvbihlKXtyZXR1cm4oMCxiLmpzeCkobnAse2lzU291cmNlRmlsZTohMSxmaWxlOmV9LGUpfSldfSl9KV19KX0sbmc9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdChcIlxcblwiKTtyZXR1cm4gZXEoKSh0WzFdfHxcIlwiKS5yZXBsYWNlKC9eRXJyb3I6IC8sXCJcIil9LG55PWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQ9KDAsQS5jKSgxOSk7ZFswXSE9PWU/KG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcIm1lc3NhZ2VcIl0pLHI9ZS5tZXNzYWdlLGRbMF09ZSxkWzFdPXIsZFsyXT1vKToocj1kWzFdLG89ZFsyXSksZFszXSE9PXI/KGE9RXJyb3IociksZFszXT1yLGRbNF09YSk6YT1kWzRdO3ZhciBmPWE7ZFs1XSE9PXI/KGw9bmcocil8fFwiRmFpbGVkIHRvIGNvbXBpbGVcIixkWzVdPXIsZFs2XT1sKTpsPWRbNl0saT1sLGRbN10hPT1pfHxkWzhdIT09cnx8ZFs5XSE9PW8udmVyc2lvbkluZm8uaW5zdGFsbGVkPyhzPWZ1bmN0aW9uKCl7dmFyIGU9W107aWYoZS5wdXNoKFwiIyMgRXJyb3IgVHlwZVxcbkJ1aWxkIEVycm9yXCIpLGkmJmUucHVzaChcIiMjIEVycm9yIE1lc3NhZ2VcXG5cIi5jb25jYXQoaSkpLHIpe3ZhciB0PWVxKCkocik7ZS5wdXNoKFwiIyMgQnVpbGQgT3V0cHV0XFxuXCIuY29uY2F0KHQpKX1yZXR1cm5cIlwiLmNvbmNhdChlLmpvaW4oXCJcXG5cXG5cIiksXCJcXG5cXG5OZXh0LmpzIHZlcnNpb246IFwiKS5jb25jYXQoby52ZXJzaW9uSW5mby5pbnN0YWxsZWQsXCIgKFwiKS5jb25jYXQocHJvY2Vzcy5lbnYuX19ORVhUX0JVTkRMRVIsXCIpXFxuXCIpfSxkWzddPWksZFs4XT1yLGRbOV09by52ZXJzaW9uSW5mby5pbnN0YWxsZWQsZFsxMF09cyk6cz1kWzEwXTt2YXIgcD1zO3JldHVybihkWzExXSE9PXI/KGM9KDAsYi5qc3gpKG5tLHtjb250ZW50OnJ9KSxkWzExXT1yLGRbMTJdPWMpOmM9ZFsxMl0sZFsxM10hPT1mfHxkWzE0XSE9PWl8fGRbMTVdIT09cHx8ZFsxNl0hPT1vfHxkWzE3XSE9PWMpPyh1PSgwLGIuanN4KShuYywodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtlcnJvclR5cGU6XCJCdWlsZCBFcnJvclwiLGVycm9yTWVzc2FnZTppLG9uQ2xvc2U6bnYsZXJyb3I6ZixnZW5lcmF0ZUVycm9ySW5mbzpwfSxvKSxuPW49e2NoaWxkcmVuOmN9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGRbMTNdPWYsZFsxNF09aSxkWzE1XT1wLGRbMTZdPW8sZFsxN109YyxkWzE4XT11KTp1PWRbMThdLHV9O2Z1bmN0aW9uIG52KCl7fXZhciBuYj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGY9KDAsQS5jKSgyNikscD1lLmZyYW1lLGg9bnVsbCE9KHQ9cC5vcmlnaW5hbFN0YWNrRnJhbWUpP3Q6cC5zb3VyY2VTdGFja0ZyYW1lLG09ISFwLm9yaWdpbmFsQ29kZUZyYW1lO2ZbMF0hPT1ofHxmWzFdIT09bT8obj1tP3tmaWxlOmguZmlsZSxsaW5lMTpudWxsIT0ocj1oLmxpbmUxKT9yOjEsY29sdW1uMTpudWxsIT0obz1oLmNvbHVtbjEpP286MX06dm9pZCAwLGZbMF09aCxmWzFdPW0sZlsyXT1uKTpuPWZbMl07dmFyIGc9ZVMobik7ZlszXSE9PWg/KGE9ZWooaCksZlszXT1oLGZbNF09YSk6YT1mWzRdO3ZhciB5PWE7aWYoIXkpcmV0dXJuIG51bGw7dmFyIHY9IW07cmV0dXJuIGZbNV0hPT1oLm1ldGhvZE5hbWU/KGk9KDAsYi5qc3gpKGV2LHt0ZXh0OmgubWV0aG9kTmFtZX0pLGZbNV09aC5tZXRob2ROYW1lLGZbNl09aSk6aT1mWzZdLGZbN10hPT1oLm1ldGhvZE5hbWV8fGZbOF0hPT1tfHxmWzldIT09Zz8obD1tJiYoMCxiLmpzeCkoXCJidXR0b25cIix7b25DbGljazpnLGNsYXNzTmFtZTpcIm9wZW4taW4tZWRpdG9yLWJ1dHRvblwiLFwiYXJpYS1sYWJlbFwiOlwiT3BlbiBcIi5jb25jYXQoaC5tZXRob2ROYW1lLFwiIGluIGVkaXRvclwiKSxjaGlsZHJlbjooMCxiLmpzeCkoZUkse3dpZHRoOjE2LGhlaWdodDoxNn0pfSksZls3XT1oLm1ldGhvZE5hbWUsZls4XT1tLGZbOV09ZyxmWzEwXT1sKTpsPWZbMTBdLGZbMTFdIT09cC5lcnJvcnx8ZlsxMl0hPT1wLnJlYXNvbj8ocz1wLmVycm9yPygwLGIuanN4KShcImJ1dHRvblwiLHtjbGFzc05hbWU6XCJzb3VyY2UtbWFwcGluZy1lcnJvci1idXR0b25cIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IocC5yZWFzb24pfSx0aXRsZTpcIlNvdXJjZW1hcHBpbmcgZmFpbGVkLiBDbGljayB0byBsb2cgY2F1c2Ugb2YgZXJyb3IuXCIsY2hpbGRyZW46KDAsYi5qc3gpKGV6LHt3aWR0aDoxNixoZWlnaHQ6MTZ9KX0pOm51bGwsZlsxMV09cC5lcnJvcixmWzEyXT1wLnJlYXNvbixmWzEzXT1zKTpzPWZbMTNdLGZbMTRdIT09aXx8ZlsxNV0hPT1sfHxmWzE2XSE9PXM/KGM9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJjYWxsLXN0YWNrLWZyYW1lLW1ldGhvZC1uYW1lXCIsY2hpbGRyZW46W2ksbCxzXX0pLGZbMTRdPWksZlsxNV09bCxmWzE2XT1zLGZbMTddPWMpOmM9ZlsxN10sZlsxOF0hPT15fHxmWzE5XSE9PW0/KHU9KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJjYWxsLXN0YWNrLWZyYW1lLWZpbGUtc291cmNlXCIsXCJkYXRhLWhhcy1zb3VyY2VcIjptLGNoaWxkcmVuOnl9KSxmWzE4XT15LGZbMTldPW0sZlsyMF09dSk6dT1mWzIwXSxmWzIxXSE9PXAuaWdub3JlZHx8ZlsyMl0hPT12fHxmWzIzXSE9PWN8fGZbMjRdIT09dT8oZD0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZVwiOiEwLFwiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZS1uby1zb3VyY2VcIjp2LFwiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1mcmFtZS1pZ25vcmVkXCI6cC5pZ25vcmVkLGNoaWxkcmVuOltjLHVdfSksZlsyMV09cC5pZ25vcmVkLGZbMjJdPXYsZlsyM109YyxmWzI0XT11LGZbMjVdPWQpOmQ9ZlsyNV0sZH07ZnVuY3Rpb24gbkEoKXt2YXIgZSx0PSgwLEEuYykoMSk7cmV0dXJuIHRbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJzdmdcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk04LjcwNzIyIDIuMzk2NDFDOC4zMTY3IDIuMDA1ODggNy42ODM1MyAyLjAwNTg4IDcuMjkzMDEgMi4zOTY0MUw0LjQ2OTc4IDUuMjE5NjNMMy45Mzk0NSA1Ljc0OTk2TDUuMDAwMTEgNi44MTA2Mkw1LjUzMDQ0IDYuMjgwMjlMOC4wMDAxMSAzLjgxMDYyTDEwLjQ2OTggNi4yODAyOUwxMS4wMDAxIDYuODEwNjJMMTIuMDYwOCA1Ljc0OTk2TDExLjUzMDQgNS4yMTk2M0w4LjcwNzIyIDIuMzk2NDFaTTUuNTMwNDQgOS43MTk2M0w1LjAwMDExIDkuMTg5M0wzLjkzOTQ1IDEwLjI1TDQuNDY5NzggMTAuNzgwM0w3LjI5MzAxIDEzLjYwMzVDNy42ODM1MyAxMy45OTQgOC4zMTY3IDEzLjk5NCA4LjcwNzIyIDEzLjYwMzVMMTEuNTMwNCAxMC43ODAzTDEyLjA2MDggMTAuMjVMMTEuMDAwMSA5LjE4OTNMMTAuNDY5OCA5LjcxOTYzTDguMDAwMTEgMTIuMTg5M0w1LjUzMDQ0IDkuNzE5NjNaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIG54KCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stY29udGFpbmVyXSB7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgbWFyZ2luLXRvcDogOHB4O1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2staGVhZGVyXSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgbWluLWhlaWdodDogdmFyKC0tc2l6ZS0yOCk7XFxuICAgIHBhZGRpbmc6IDhweCA4cHggMTJweCA0cHg7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stdGl0bGVdIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDhweDtcXG5cXG4gICAgbWFyZ2luOiAwO1xcblxcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWNvdW50XSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcblxcbiAgICB3aWR0aDogdmFyKC0tc2l6ZS0yMCk7XFxuICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICAgIGdhcDogNHB4O1xcblxcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTEpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuXFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMzAwKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWlnbm9yZWQtbGlzdC10b2dnbGUtYnV0dG9uXSB7XFxuICAgIGFsbDogdW5zZXQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGdhcDogNnB4O1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcXG4gICAgcGFkZGluZzogNHB4IDZweDtcXG4gICAgbWFyZ2luLXJpZ2h0OiAtNnB4O1xcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDE1MG1zIGVhc2U7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWdyYXktMTAwKTtcXG4gICAgfVxcblxcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgfVxcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTE2KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICB9XFxuICB9XFxuXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIG54PWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59ZnVuY3Rpb24gbncoZSl7dmFyIHQsbixyLG8sYSxpLGw9KDAsQS5jKSgxNykscz1lLmZyYW1lcyxjPWUuaXNJZ25vcmVMaXN0T3Blbix1PWUuaWdub3JlZEZyYW1lc1RhbGx5LGQ9ZS5vblRvZ2dsZUlnbm9yZUxpc3Q7cmV0dXJuIGxbMF0hPT1zLmxlbmd0aD8odD0oMCxiLmpzeHMpKFwicFwiLHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stdGl0bGVcIjohMCxjaGlsZHJlbjpbXCJDYWxsIFN0YWNrIFwiLCgwLGIuanN4KShcInNwYW5cIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWNvdW50XCI6ITAsY2hpbGRyZW46cy5sZW5ndGh9KV19KSxsWzBdPXMubGVuZ3RoLGxbMV09dCk6dD1sWzFdLGxbMl0hPT11fHxsWzNdIT09Y3x8bFs0XSE9PWQ/KG49dT4wJiYoMCxiLmpzeHMpKFwiYnV0dG9uXCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1pZ25vcmVkLWxpc3QtdG9nZ2xlLWJ1dHRvblwiOmMsb25DbGljazpkLGNoaWxkcmVuOltcIlwiLmNvbmNhdChjP1wiSGlkZVwiOlwiU2hvd1wiLFwiIFwiKS5jb25jYXQodSxcIiBpZ25vcmUtbGlzdGVkIGZyYW1lKHMpXCIpLCgwLGIuanN4KShuQSx7fSldfSksbFsyXT11LGxbM109YyxsWzRdPWQsbFs1XT1uKTpuPWxbNV0sbFs2XSE9PXR8fGxbN10hPT1uPyhyPSgwLGIuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWhlYWRlclwiOiEwLGNoaWxkcmVuOlt0LG5dfSksbFs2XT10LGxbN109bixsWzhdPXIpOnI9bFs4XSxsWzldIT09c3x8bFsxMF0hPT1jPyhsWzEyXSE9PWM/KGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hZS5pZ25vcmVkfHxjPygwLGIuanN4KShuYix7ZnJhbWU6ZX0sdCk6bnVsbH0sbFsxMl09YyxsWzEzXT1hKTphPWxbMTNdLG89cy5tYXAoYSksbFs5XT1zLGxbMTBdPWMsbFsxMV09byk6bz1sWzExXSxsWzE0XSE9PXJ8fGxbMTVdIT09bz8oaT0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtY2FsbC1zdGFjay1jb250YWluZXJcIjohMCxjaGlsZHJlbjpbcixvXX0pLGxbMTRdPXIsbFsxNV09byxsWzE2XT1pKTppPWxbMTZdLGl9dmFyIG5DPWVzKG54KCkpO2Z1bmN0aW9uIG5fKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBuayhlKXt2YXIgdCxuLHI9ZS5mcmFtZXMsbz1lLmRpYWxvZ1Jlc2l6ZXJSZWYsYT0oMCx4LnVzZVJlZikoTmFOKSxpPSh0PSgwLHgudXNlU3RhdGUpKCExKSxuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbl8oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbl8oZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGw9aVswXSxzPWlbMV0sYz0oMCx4LnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJuIHIucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUrICshIXQuaWdub3JlZH0sMCl9LFtyXSk7cmV0dXJuKDAsYi5qc3gpKG53LHtmcmFtZXM6cixpc0lnbm9yZUxpc3RPcGVuOmwsb25Ub2dnbGVJZ25vcmVMaXN0OmZ1bmN0aW9uKCl7dmFyIGU9bnVsbD09bz92b2lkIDA6by5jdXJyZW50O2lmKGUpe3ZhciB0PShudWxsPT1lP3ZvaWQgMDplLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKS5oZWlnaHQ7YS5jdXJyZW50fHwoYS5jdXJyZW50PXQpLGw/KGUuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KGEuY3VycmVudCxcInB4XCIpLGUuYWRkRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIixmdW5jdGlvbiB0KCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKFwidHJhbnNpdGlvbmVuZFwiLHQpLHMoITEpfSkpOnMoITApfX0saWdub3JlZEZyYW1lc1RhbGx5OmN9KX1mdW5jdGlvbiBuRShlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCxBLmMpKDgpO2xbMF0hPT1lPyhyPXZvaWQgMD09PWU/e306ZSxsWzBdPWUsbFsxXT1yKTpyPWxbMV07dmFyIHM9ci5jb2xsYXBzZWQ7cmV0dXJuKGxbMl0hPT1zPyhvPVwiYm9vbGVhblwiPT10eXBlb2Ygcz97c3R5bGU6e3RyYW5zZm9ybTpzP3ZvaWQgMDpcInJvdGF0ZSg5MGRlZylcIn19Ont9LGxbMl09cyxsWzNdPW8pOm89bFszXSxsWzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsYi5qc3gpKFwicGF0aFwiLHtzdHlsZTp7ZmlsbDpcInZhcigtLWNvbG9yLWZvbnQpXCJ9LGZpbGxSdWxlOlwiZXZlbm9kZFwiLGQ6XCJtNi43NSAzLjk0LjUzLjUzIDIuODI0IDIuODIzYTEgMSAwIDAgMSAwIDEuNDE0TDcuMjggMTEuNTNsLS41My41M0w1LjY5IDExbC41My0uNTNMOC42OSA4IDYuMjIgNS41MyA1LjY5IDVsMS4wNi0xLjA2WlwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSksbFs0XT1hKTphPWxbNF0sbFs1XSE9PXN8fGxbNl0hPT1vKT8oaT0oMCxiLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtcImRhdGEtbmV4dGpzLWNhbGwtc3RhY2stY2hldnJvbi1pY29uXCI6ITAsXCJkYXRhLWNvbGxhcHNlZFwiOnMsd2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsZmlsbDpcIm5vbmVcIn0sbyksbj1uPXtjaGlsZHJlbjphfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxsWzVdPXMsbFs2XT1vLGxbN109aSk6aT1sWzddLGl9ZnVuY3Rpb24gbmooZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG5TKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuaihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuaihlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBuTyhlKXt2YXIgdCxuLHIsbyxhLGksbCxzPSgwLEEuYykoMTUpLGM9ZS5yZWFjdE91dHB1dENvbXBvbmVudERpZmYsdT1uUygoMCx4LnVzZVN0YXRlKSghMCksMiksZD11WzBdLGY9dVsxXTtzWzBdIT09Yz8obj1bXSxjLnNwbGl0KFwiXFxuXCIpLmZvckVhY2goZnVuY3Rpb24oZSx0KXt2YXIgcixvLGE9XCIrXCI9PT1lWzBdfHxcIi1cIj09PWVbMF0saT1cIj5cIj09PWVbMF0sbD1hfHxpLHM9bD9lWzBdOlwiXCIsYz1sP2UuaW5kZXhPZihzKTotMSx1PW5TKGw/W2Uuc2xpY2UoMCxjKSxlLnNsaWNlKGMrMSldOltlLFwiXCJdLDIpLGQ9dVswXSxmPXVbMV07YT9uLnB1c2goKDAsYi5qc3gpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZVwiOiEwLFwiZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZlwiOlwiK1wiPT09cz9cImFkZFwiOlwicmVtb3ZlXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcInNwYW5cIix7Y2hpbGRyZW46W2QsKDAsYi5qc3gpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZS1zaWduXCI6ITAsY2hpbGRyZW46c30pLGYsXCJcXG5cIl19KX0sXCJjb21wLWRpZmZcIit0KSk6bi5wdXNoKCgwLGIuanN4cykoXCJzcGFuXCIsKHI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7XCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWxpbmVcIjohMH0saT97XCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmXCI6XCJlcnJvclwifTp2b2lkIDApLG89bz17Y2hpbGRyZW46W2QsKDAsYi5qc3gpKFwic3BhblwiLHtcImRhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZS1zaWduXCI6ITAsY2hpbGRyZW46c30pLGYsXCJcXG5cIl19LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobykpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobykpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG8sZSkpfSksciksXCJjb21wLWRpZmZcIit0KSl9KSxzWzBdPWMsc1sxXT1uKTpuPXNbMV0sdD1uO3ZhciBwPSFkO3JldHVybiBzWzJdIT09ZD8ocj1mdW5jdGlvbigpe3JldHVybiBmKCFkKX0sbz0oMCxiLmpzeCkobkUse2NvbGxhcHNlZDpkfSksc1syXT1kLHNbM109cixzWzRdPW8pOihyPXNbM10sbz1zWzRdKSxzWzVdIT09cHx8c1s2XSE9PXJ8fHNbN10hPT1vPyhhPSgwLGIuanN4KShcImJ1dHRvblwiLHtcImFyaWEtZXhwYW5kZWRcIjpwLFwiYXJpYS1sYWJlbFwiOlwiY29tcGxldGUgQ29tcG9uZW50IFN0YWNrXCIsXCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWNvbGxhcHNlLWJ1dHRvblwiOiEwLG9uQ2xpY2s6cixjaGlsZHJlbjpvfSksc1s1XT1wLHNbNl09cixzWzddPW8sc1s4XT1hKTphPXNbOF0sc1s5XSE9PXQ/KGk9KDAsYi5qc3gpKFwicHJlXCIse2NsYXNzTmFtZTpcIm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fY29tcG9uZW50LXN0YWNrXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwiY29kZVwiLHtjaGlsZHJlbjp0fSl9KSxzWzldPXQsc1sxMF09aSk6aT1zWzEwXSxzWzExXSE9PWR8fHNbMTJdIT09YXx8c1sxM10hPT1pPyhsPSgwLGIuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sXCI6ITAsXCJkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLWNvbGxhcHNlXCI6ZCxjaGlsZHJlbjpbYSxpXX0pLHNbMTFdPWQsc1sxMl09YSxzWzEzXT1pLHNbMTRdPWwpOmw9c1sxNF0sbH12YXIgbkI9U3ltYm9sLmZvcihcIk5leHRqc0Vycm9yXCIpO2Z1bmN0aW9uIG5QKGUpe3JldHVybiBlW25CXXx8bnVsbH1mdW5jdGlvbiBuSShlLHQsbixyLG8sYSxpKXt0cnl7dmFyIGw9ZVthXShpKSxzPWwudmFsdWV9Y2F0Y2goZSl7bihlKTtyZXR1cm59bC5kb25lP3Qocyk6UHJvbWlzZS5yZXNvbHZlKHMpLnRoZW4ocixvKX1mdW5jdGlvbiBueihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLG8pe3ZhciBhPWUuYXBwbHkodCxuKTtmdW5jdGlvbiBpKGUpe25JKGEscixvLGksbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe25JKGEscixvLGksbCxcInRocm93XCIsZSl9aSh2b2lkIDApfSl9fWZ1bmN0aW9uIG5UKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBuRChlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gbkwoZSx0KXt2YXIgbixyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxpPU9iamVjdC5jcmVhdGUoKFwiZnVuY3Rpb25cIj09dHlwZW9mIEl0ZXJhdG9yP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gaS5uZXh0PWwoMCksaS50aHJvdz1sKDEpLGkucmV0dXJuPWwoMiksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBjPVtsLHNdO2lmKG4pdGhyb3cgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsY1swXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZjWzBdP3IucmV0dXJuOmNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1jWzBdfHwyPT09Y1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2EubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7Yz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19fXZhciBuTj1mdW5jdGlvbihlKXtpZighZSlyZXR1cm5bXTtpZihcInVzZVwiaW4geCl7dmFyIHQ9ZS5mcmFtZXM7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBFcnJvcihcIkludmFyaWFudDogZnJhbWVzIG11c3QgYmUgYSBmdW5jdGlvbiB3aGVuIHRoZSBSZWFjdCB2ZXJzaW9uIGhhcyBSZWFjdC51c2UuIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcy5cIik7cmV0dXJuIHgudXNlKHQoKSl9aWYoIUFycmF5LmlzQXJyYXkoZS5mcmFtZXMpKXRocm93IEVycm9yKFwiSW52YXJpYW50OiBmcmFtZXMgbXVzdCBiZSBhbiBhcnJheSB3aGVuIHRoZSBSZWFjdCB2ZXJzaW9uIGRvZXMgbm90IGhhdmUgUmVhY3QudXNlLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMuXCIpO3JldHVybiBlLmZyYW1lc307ZnVuY3Rpb24gblIoZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoOCksbD1lLmVycm9yLHM9ZS5kaWFsb2dSZXNpemVyUmVmLGM9bk4obCksdT1jLmZpbmRJbmRleChuTSk7cmV0dXJuIHQ9bnVsbCE9KG49Y1t1XSk/bjpudWxsLGlbMF0hPT10PyhyPXQmJigwLGIuanN4KShlJCx7c3RhY2tGcmFtZTp0Lm9yaWdpbmFsU3RhY2tGcmFtZSxjb2RlRnJhbWU6dC5vcmlnaW5hbENvZGVGcmFtZX0pLGlbMF09dCxpWzFdPXIpOnI9aVsxXSxpWzJdIT09c3x8aVszXSE9PWM/KG89Yy5sZW5ndGg+MCYmKDAsYi5qc3gpKG5rLHtkaWFsb2dSZXNpemVyUmVmOnMsZnJhbWVzOmN9KSxpWzJdPXMsaVszXT1jLGlbNF09byk6bz1pWzRdLGlbNV0hPT1yfHxpWzZdIT09bz8oYT0oMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOltyLG9dfSksaVs1XT1yLGlbNl09byxpWzddPWEpOmE9aVs3XSxhfWZ1bmN0aW9uIG5NKGUpe3JldHVybiFlLmlnbm9yZWQmJiEhZS5vcmlnaW5hbENvZGVGcmFtZSYmISFlLm9yaWdpbmFsU3RhY2tGcmFtZX12YXIgblo9XCJcXG4gIFwiLmNvbmNhdChcIlxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWxdIHtcXG4gICAgcGFkZGluZzogOHB4IDA7XFxuICAgIG1hcmdpbjogOHB4IDA7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3ludGF4LWNvbnN0YW50KTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgbGluZS1oZWlnaHQ6IDEuMzNlbTsgLyogMTZweCBpbiAxMnB4IGZvbnQgc2l6ZSAqL1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kLTIpO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZV0ge1xcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBwYWRkaW5nLWxlZnQ6IDQwcHg7XFxuICAgIGxpbmUtaGVpZ2h0OiBjYWxjKDUgLyAzKTtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmPSdlcnJvciddIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYW1iZXItMTAwKTtcXG4gICAgYm94LXNoYWRvdzogMnB4IDAgMCAwIHZhcigtLWNvbG9yLWFtYmVyLTkwMCkgaW5zZXQ7XFxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtY29sbGFwc2UtYnV0dG9uXSB7XFxuICAgIGFsbDogdW5zZXQ7XFxuICAgIG1hcmdpbi1sZWZ0OiAxMnB4O1xcbiAgICAmOmZvY3VzIHtcXG4gICAgICBvdXRsaW5lOiBub25lO1xcbiAgICB9XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZj0nYWRkJ10ge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmVlbi0zMDApO1xcbiAgfVxcbiAgW2RhdGEtbmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtcHNldWRvLWh0bWwtbGluZS1zaWduXSB7XFxuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKDI0cHggKiAtMSk7XFxuICAgIG1hcmdpbi1yaWdodDogMjRweDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmPSdhZGQnXVxcbiAgICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lLXNpZ25dIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTkwMCk7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZj0ncmVtb3ZlJ10ge1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1yZWQtMzAwKTtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1kaWZmPSdyZW1vdmUnXVxcbiAgICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lLXNpZ25dIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXJlZC05MDApO1xcbiAgICBtYXJnaW4tbGVmdDogY2FsYygyNHB4ICogLTEpO1xcbiAgICBtYXJnaW4tcmlnaHQ6IDI0cHg7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZj0nZXJyb3InXVxcbiAgICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1saW5lLXNpZ25dIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFtYmVyLTkwMCk7XFxuICB9XFxuICBcXG4gIFtkYXRhLW5leHRqcy1jb250YWluZXItZXJyb3JzLXBzZXVkby1odG1sLS1oaW50XSB7XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gICAgZm9udC1zaXplOiAwO1xcbiAgICBoZWlnaHQ6IDA7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tdGFnLWFkamFjZW50PSdmYWxzZSddIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudHMtMSk7XFxuICB9XFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX19jb21wb25lbnQtc3RhY2sge1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC1jb2xsYXBzZT0ndHJ1ZSddXFxuICAgIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2NvbXBvbmVudC1zdGFja1xcbiAgICBjb2RlIHtcXG4gICAgbWF4LWhlaWdodDogMTIwcHg7XFxuICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20scmdiYSgwLDAsMCwwKSAwJSxibGFjayAxMCUpO1xcbiAgICBwYWRkaW5nLWJvdHRvbTogNDBweDtcXG4gIH1cXG4gIC5uZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX2NvbXBvbmVudC1zdGFjayBjb2RlIHtcXG4gICAgZGlzcGxheTogYmxvY2s7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxuICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xcbiAgICBvdmVyZmxvdy15OiBoaWRkZW47XFxuICB9XFxuICBbZGF0YS1uZXh0anMtY29udGFpbmVyLWVycm9ycy1wc2V1ZG8taHRtbC0tZGlmZl0ge1xcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogY2VudGVyO1xcbiAgfVxcbiAgLmVycm9yLW92ZXJsYXktaHlkcmF0aW9uLWVycm9yLWRpZmYtcGx1cy1pY29uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyZWVuLTkwMCk7XFxuICB9XFxuICAuZXJyb3Itb3ZlcmxheS1oeWRyYXRpb24tZXJyb3ItZGlmZi1taW51cy1pY29uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXJlZC05MDApO1xcbiAgfVxcblwiLFwiXFxuXCIpO2Z1bmN0aW9uIG5VKGUpe3JldHVybiBlJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sP1wic3ltYm9sXCI6dHlwZW9mIGV9ZnVuY3Rpb24gbkYoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIG5xKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCJodHRwczovL25leHRqcy5vcmdcIil9ZnVuY3Rpb24gbkgoZSl7dmFyIHQsbj0oMCxBLmMpKDIpLHI9ZS5tZXNzYWdlO3JldHVybiBuWzBdIT09cj8odD0oMCxiLmpzeCkoZXYse3RleHQ6cixtYXRjaGVyOm5xfSksblswXT1yLG5bMV09dCk6dD1uWzFdLHR9ZnVuY3Rpb24gblYoZSl7dmFyIHQsbixyPSgwLEEuYykoNSksbz1lLmVycm9yLGE9XCJlbnZpcm9ubWVudE5hbWVcImluIG8/by5lbnZpcm9ubWVudE5hbWU6XCJcIixpPWE/XCJbIFwiLmNvbmNhdChhLFwiIF0gXCIpOlwiXCIsbD1vLm1lc3NhZ2U7cmV0dXJuIGwuc3RhcnRzV2l0aChpKSYmKHJbMF0hPT1pLmxlbmd0aHx8clsxXSE9PWw/KHQ9bC5zbGljZShpLmxlbmd0aCksclswXT1pLmxlbmd0aCxyWzFdPWwsclsyXT10KTp0PXJbMl0sbD10KSxyWzNdIT09bD8obj0oMCxiLmpzeCkoYi5GcmFnbWVudCx7Y2hpbGRyZW46KDAsYi5qc3gpKGV2LHt0ZXh0OmwsbWF0Y2hlcjpucX0pfSksclszXT1sLHJbNF09bik6bj1yWzRdLG59dmFyIG4kPXtoeWRyYXRpb25XYXJuaW5nOm51bGwsbm90ZXM6bnVsbCxyZWFjdE91dHB1dENvbXBvbmVudERpZmY6bnVsbH07ZnVuY3Rpb24gblcoZSl7dmFyIHQsbixyPWUuZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHMsbz1lLnJ1bnRpbWVFcnJvcnMsYT1lLmRlYnVnSW5mbyxpPWUub25DbG9zZSxsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsc1wiLFwicnVudGltZUVycm9yc1wiLFwiZGVidWdJbmZvXCIsXCJvbkNsb3NlXCJdKSxzPSgwLHgudXNlUmVmKShudWxsKSxjPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbT0oMCxBLmMpKDE3KSxnPWUucnVudGltZUVycm9ycyx5PWUuZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHMsdj0oYT0oMCx4LnVzZVN0YXRlKSgwKSxpPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oYSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oYSwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gbkYoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gbkYoZSx0KX19KGEsaSl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGI9dlswXSx3PXZbMV07cz0wPT09Zy5sZW5ndGg7dmFyIEM9KHQ9bnVsbD09KGM9bnVsbCE9KHU9Z1tiXSk/dTpudWxsKT92b2lkIDA6Yy5lcnJvcixuPXksKDAseC51c2VNZW1vKShmdW5jdGlvbigpe2lmKHZvaWQgMD09PXQpcmV0dXJuIG4kO3ZhciBlLHIsbyxhPW4odCk7aWYobnVsbCE9PWEpcmV0dXJue2h5ZHJhdGlvbldhcm5pbmc6bnVsbCE9KHI9YS53YXJuaW5nKT9yOm51bGwsbm90ZXM6bnVsbCxyZWFjdE91dHB1dENvbXBvbmVudERpZmY6bnVsbCE9KG89YS5yZWFjdE91dHB1dENvbXBvbmVudERpZmYpP286bnVsbH07aWYoISh0ZygoZT10KS5tZXNzYWdlKXx8L0h5ZHJhdGlvbiBmYWlsZWQgYmVjYXVzZSB0aGUgc2VydmVyIHJlbmRlcmVkICh0ZXh0fEhUTUwpIGRpZG4ndCBtYXRjaCB0aGUgY2xpZW50XFwuLy50ZXN0KGUubWVzc2FnZSl8fC9BIHRyZWUgaHlkcmF0ZWQgYnV0IHNvbWUgYXR0cmlidXRlcyBvZiB0aGUgc2VydmVyIHJlbmRlcmVkIEhUTUwgZGlkbid0IG1hdGNoIHRoZSBjbGllbnQgcHJvcGVydGllcy4vLnRlc3QoZS5tZXNzYWdlKSkpcmV0dXJuIG4kO3ZhciBpPWZ1bmN0aW9uKGUpe3ZhciB0PWUubWVzc2FnZTtpZih0Zyh0KSl7dmFyIG49dHUodC5zcGxpdChcIlxcblxcblwiKSwyKSxyPW5bMF0sbz1uWzFdLGE9KHZvaWQgMD09PW8/XCJcIjpvKS50cmltKCk7cmV0dXJue21lc3NhZ2U6XCJcIj09PWE/dC50cmltKCk6ci50cmltKCksZGlmZjphLG5vdGVzOm51bGx9fXZhciBpPXR1KHQuc3BsaXQoXCJcIi5jb25jYXQodHApKSwyKSxsPWlbMF0scz1pWzFdLGM9bC50cmltKCk7aWYodm9pZCAwIT09cyYmcy5sZW5ndGg+MSl7dmFyIHU9W107cy5zcGxpdChcIlxcblwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1wiXCIhPT1lLnRyaW0oKSYmKGUudHJpbSgpLnN0YXJ0c1dpdGgoXCJhdCBcIil8fHUucHVzaChlKSl9KTt2YXIgZD10ZChjLnNwbGl0KFwiXFxuXFxuXCIpKSxmPWRbMF0scD1kLnNsaWNlKDEpO3JldHVybnttZXNzYWdlOmYsZGlmZjp1LmpvaW4oXCJcXG5cIiksbm90ZXM6cC5qb2luKFwiXFxuXFxuXCIpfHxudWxsfX12YXIgaD10ZChjLnNwbGl0KFwiXFxuXFxuXCIpKTtyZXR1cm57bWVzc2FnZTpoWzBdLGRpZmY6bnVsbCxub3RlczpoLnNsaWNlKDEpLmpvaW4oXCJcXG5cXG5cIil9fSh0KSxsPWkubWVzc2FnZSxzPWkubm90ZXMsYz1pLmRpZmY7cmV0dXJuIG51bGw9PT1sP24kOntoeWRyYXRpb25XYXJuaW5nOmwsbm90ZXM6cyxyZWFjdE91dHB1dENvbXBvbmVudERpZmY6Y319LFt0LG5dKSk7aWYoc3x8IWMpcmV0dXJuIG1bMF0hPT1ifHxtWzFdIT09cz8oZD17aXNMb2FkaW5nOnMsYWN0aXZlSWR4OmIsc2V0QWN0aXZlSW5kZXg6dyxhY3RpdmVFcnJvcjpudWxsLGVycm9yRGV0YWlsczpudWxsLGVycm9yQ29kZTpudWxsLGVycm9yVHlwZTpudWxsLG5vdGVzOm51bGwsaHlkcmF0aW9uV2FybmluZzpudWxsfSxtWzBdPWIsbVsxXT1zLG1bMl09ZCk6ZD1tWzJdLGQ7dmFyIF89Yy5lcnJvcjttWzNdIT09Xz8oZj0odm9pZCAwPT09KGw9Xyk/XCJ1bmRlZmluZWRcIjpuVShsKSk9PT1cIm9iamVjdFwiJiZudWxsIT09bCYmXCJfX05FWFRfRVJST1JfQ09ERVwiaW4gbCYmXCJzdHJpbmdcIj09dHlwZW9mIGwuX19ORVhUX0VSUk9SX0NPREU/bC5fX05FWFRfRVJST1JfQ09ERToodm9pZCAwPT09bD9cInVuZGVmaW5lZFwiOm5VKGwpKT09PVwib2JqZWN0XCImJm51bGwhPT1sJiZcImRpZ2VzdFwiaW4gbCYmXCJzdHJpbmdcIj09dHlwZW9mIGwuZGlnZXN0P2wuZGlnZXN0LnNwbGl0KFwiQFwiKS5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoXCJFXCIpfSk6dm9pZCAwLG1bM109XyxtWzRdPWYpOmY9bVs0XTt2YXIgaz1mO21bNV0hPT1jLnR5cGV8fG1bNl0hPT1fPyhyPV8scD1cInJlY292ZXJhYmxlXCI9PT0obz1jLnR5cGUpP1wiUmVjb3ZlcmFibGUgXCIuY29uY2F0KHIubmFtZSk6XCJjb25zb2xlXCI9PT1vP1wiQ29uc29sZSBcIi5jb25jYXQoci5uYW1lKTpcIlJ1bnRpbWUgXCIuY29uY2F0KHIubmFtZSksbVs1XT1jLnR5cGUsbVs2XT1fLG1bN109cCk6cD1tWzddO3ZhciBFPXAsaj1DLm5vdGVzLFM9Qy5oeWRyYXRpb25XYXJuaW5nO3JldHVybiBtWzhdIT09Y3x8bVs5XSE9PWJ8fG1bMTBdIT09a3x8bVsxMV0hPT1DfHxtWzEyXSE9PUV8fG1bMTNdIT09U3x8bVsxNF0hPT1zfHxtWzE1XSE9PWo/KGg9e2lzTG9hZGluZzpzLGFjdGl2ZUlkeDpiLHNldEFjdGl2ZUluZGV4OncsYWN0aXZlRXJyb3I6YyxlcnJvckRldGFpbHM6QyxlcnJvckNvZGU6ayxlcnJvclR5cGU6RSxub3RlczpqLGh5ZHJhdGlvbldhcm5pbmc6U30sbVs4XT1jLG1bOV09YixtWzEwXT1rLG1bMTFdPUMsbVsxMl09RSxtWzEzXT1TLG1bMTRdPXMsbVsxNV09aixtWzE2XT1oKTpoPW1bMTZdLGh9KHtydW50aW1lRXJyb3JzOm8sZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHM6cn0pLHU9Yy5pc0xvYWRpbmcsZD1jLmVycm9yQ29kZSxmPWMuZXJyb3JUeXBlLHA9Yy5ub3RlcyxoPWMuaHlkcmF0aW9uV2FybmluZyxtPWMuYWN0aXZlSWR4LGc9Yy5lcnJvckRldGFpbHMseT1jLmFjdGl2ZUVycm9yLHY9Yy5zZXRBY3RpdmVJbmRleCx3PW5OKHkpLEM9KDAseC51c2VNZW1vKShmdW5jdGlvbigpe3ZhciBlLHQ9dy5maW5kSW5kZXgoZnVuY3Rpb24oZSl7cmV0dXJuIWUuaWdub3JlZCYmISFlLm9yaWdpbmFsQ29kZUZyYW1lJiYhIWUub3JpZ2luYWxTdGFja0ZyYW1lfSk7cmV0dXJuIG51bGwhPShlPXdbdF0pP2U6bnVsbH0sW3ddKSxfPSgwLHgudXNlQ2FsbGJhY2spKGZ1bmN0aW9uKCl7aWYoIXkpcmV0dXJuXCJcIjt2YXIgZT1bXTtmJiZlLnB1c2goXCIjIyBFcnJvciBUeXBlXFxuXCIuY29uY2F0KGYpKTt2YXIgdD15LmVycm9yLG49dC5tZXNzYWdlO2lmKFwiZW52aXJvbm1lbnROYW1lXCJpbiB0JiZ0LmVudmlyb25tZW50TmFtZSl7dmFyIHI9XCJbIFwiLmNvbmNhdCh0LmVudmlyb25tZW50TmFtZSxcIiBdIFwiKTtuLnN0YXJ0c1dpdGgocikmJihuPW4uc2xpY2Uoci5sZW5ndGgpKX1pZihuJiZlLnB1c2goXCIjIyBFcnJvciBNZXNzYWdlXFxuXCIuY29uY2F0KG4pKSx3Lmxlbmd0aD4wKXt2YXIgbz13LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5pZ25vcmVkfSk7aWYoby5sZW5ndGg+MCl7dmFyIGE9by5tYXAoZnVuY3Rpb24oZSl7aWYoZS5vcmlnaW5hbFN0YWNrRnJhbWUpe3ZhciB0PWUub3JpZ2luYWxTdGFja0ZyYW1lLG49dC5tZXRob2ROYW1lLHI9dC5maWxlLG89dC5saW5lMSxhPXQuY29sdW1uMTtyZXR1cm5cIiAgICBhdCBcIi5jb25jYXQobixcIiAoXCIpLmNvbmNhdChyLFwiOlwiKS5jb25jYXQobyxcIjpcIikuY29uY2F0KGEsXCIpXCIpfWlmKGUuc291cmNlU3RhY2tGcmFtZSl7dmFyIGk9ZS5zb3VyY2VTdGFja0ZyYW1lLGw9aS5tZXRob2ROYW1lLHM9aS5maWxlLGM9aS5saW5lMSx1PWkuY29sdW1uMTtyZXR1cm5cIiAgICBhdCBcIi5jb25jYXQobCxcIiAoXCIpLmNvbmNhdChzLFwiOlwiKS5jb25jYXQoYyxcIjpcIikuY29uY2F0KHUsXCIpXCIpfXJldHVyblwiXCJ9KS5maWx0ZXIoQm9vbGVhbik7YS5sZW5ndGg+MCYmZS5wdXNoKFwiXFxuXCIuY29uY2F0KGEuam9pbihcIlxcblwiKSkpfX1pZihudWxsPT1DP3ZvaWQgMDpDLm9yaWdpbmFsQ29kZUZyYW1lKXt2YXIgaT1lcSgpKGVIKEMub3JpZ2luYWxDb2RlRnJhbWUpKTtlLnB1c2goXCIjIyBDb2RlIEZyYW1lXFxuXCIuY29uY2F0KGkpKX1yZXR1cm5cIlwiLmNvbmNhdChlLmpvaW4oXCJcXG5cXG5cIiksXCJcXG5cXG5OZXh0LmpzIHZlcnNpb246IFwiKS5jb25jYXQobC52ZXJzaW9uSW5mby5pbnN0YWxsZWQsXCIgKFwiKS5jb25jYXQocHJvY2Vzcy5lbnYuX19ORVhUX0JVTkRMRVIsXCIpXFxuXCIpfSxbeSxmLEMsdyxsLnZlcnNpb25JbmZvXSk7aWYodSlyZXR1cm4oMCxiLmpzeCkodFEse2NoaWxkcmVuOigwLGIuanN4KShubyx7fSl9KTtpZigheSlyZXR1cm4gbnVsbDt2YXIgaz15LmVycm9yLEU9W1wic2VydmVyXCIsXCJlZGdlLXNlcnZlclwiXS5pbmNsdWRlcyhuUChrKXx8XCJcIik7cmV0dXJuKDAsYi5qc3hzKShuYywodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHtlcnJvckNvZGU6ZCxlcnJvclR5cGU6ZixlcnJvck1lc3NhZ2U6aD8oMCxiLmpzeCkobkgse21lc3NhZ2U6aH0pOigwLGIuanN4KShuVix7ZXJyb3I6a30pLG9uQ2xvc2U6RT92b2lkIDA6aSxkZWJ1Z0luZm86YSxlcnJvcjprLHJ1bnRpbWVFcnJvcnM6byxhY3RpdmVJZHg6bSxzZXRBY3RpdmVJbmRleDp2LGRpYWxvZ1Jlc2l6ZXJSZWY6cyxnZW5lcmF0ZUVycm9ySW5mbzpffSxsKSxuPW49e2NoaWxkcmVuOlsoMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImVycm9yLW92ZXJsYXktbm90ZXMtY29udGFpbmVyXCIsY2hpbGRyZW46W3A/KDAsYi5qc3gpKGIuRnJhZ21lbnQse2NoaWxkcmVuOigwLGIuanN4KShcInBcIix7aWQ6XCJuZXh0anNfX2NvbnRhaW5lcl9lcnJvcnNfX25vdGVzXCIsY2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX19ub3Rlc1wiLGNoaWxkcmVuOnB9KX0pOm51bGwsaD8oMCxiLmpzeCkoXCJwXCIse2lkOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX19saW5rXCIsY2xhc3NOYW1lOlwibmV4dGpzX19jb250YWluZXJfZXJyb3JzX19saW5rXCIsY2hpbGRyZW46KDAsYi5qc3gpKGV2LHt0ZXh0OlwiU2VlIG1vcmUgaW5mbyBoZXJlOiBcIi5jb25jYXQodGgpfSl9KTpudWxsXX0pLGcucmVhY3RPdXRwdXRDb21wb25lbnREaWZmPygwLGIuanN4KShuTyx7cmVhY3RPdXRwdXRDb21wb25lbnREaWZmOmcucmVhY3RPdXRwdXRDb21wb25lbnREaWZmfHxcIlwifSk6bnVsbCwoMCxiLmpzeCkoeC5TdXNwZW5zZSx7ZmFsbGJhY2s6KDAsYi5qc3gpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZXJyb3Itc3VzcGVuZGVkXCI6ITB9KSxjaGlsZHJlbjooMCxiLmpzeCkoblIse2Vycm9yOnksZGlhbG9nUmVzaXplclJlZjpzfSx5LmlkLnRvU3RyaW5nKCkpfSldfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKX1mdW5jdGlvbiBuWShlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYseCx3PSgwLEEuYykoMTkpO3JldHVybih3WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46XCJwYWdlc1wifSksd1swXT1yKTpyPXdbMF0sd1sxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPSgwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOltcIlR1cmJvcGFjayBpcyBhbiBpbmNyZW1lbnRhbCBidW5kbGVyIG9wdGltaXplZCBmb3IgSmF2YVNjcmlwdCBhbmQgVHlwZVNjcmlwdCwgd3JpdHRlbiBpbiBSdXN0LCBhbmQgYnVpbHQgaW50byBOZXh0LmpzLiBUdXJib3BhY2sgY2FuIGJlIHVzZWQgaW4gTmV4dC5qcyBpbiBib3RoIHRoZVwiLFwiIFwiLHIsXCIgYW5kXCIsXCIgXCIsKDAsYi5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46XCJhcHBcIn0pLFwiIGRpcmVjdG9yaWVzIGZvciBmYXN0ZXIgbG9jYWwgZGV2ZWxvcG1lbnQuXCJdfSksd1sxXT1vKTpvPXdbMV0sd1syXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPSgwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOltcIlRvIGVuYWJsZSBUdXJib3BhY2ssIHVzZSB0aGVcIixcIiBcIiwoMCxiLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjpcIi0tdHVyYm9wYWNrXCJ9KSxcIiBmbGFnIHdoZW4gcnVubmluZyB0aGUgTmV4dC5qcyBkZXZlbG9wbWVudCBzZXJ2ZXIuXCJdfSksd1syXT1hKTphPXdbMl0sd1szXSE9PWUpPyhpPSgwLGIuanN4cykoXCJhcnRpY2xlXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tYXJ0aWNsZVwifSxlKSxuPW49e2NoaWxkcmVuOltvLGFdfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSx3WzNdPWUsd1s0XT1pKTppPXdbNF0sd1s1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhsPSgwLGIuanN4KShlNix7YWN0aW9uTGFiZWw6XCJDb3B5IE5leHQuanMgVHVyYm9wYWNrIENvbW1hbmRcIixzdWNjZXNzTGFiZWw6XCJOZXh0LmpzIFR1cmJvcGFjayBDb21tYW5kIENvcGllZFwiLGNvbnRlbnQ6XCItLXR1cmJvcGFja1wiLGNsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvcHktYnV0dG9uXCJ9KSx3WzVdPWwpOmw9d1s1XSx3WzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHM9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOlwiICBcIn0pLGM9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOlwie1wifSksd1s2XT1zLHdbN109Yyk6KHM9d1s2XSxjPXdbN10pLHdbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odT0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZVwiLGNoaWxkcmVuOltcIiAgXCIsKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24ta2V5XCIsY2hpbGRyZW46J1wic2NyaXB0c1wiJ30pLFwiOiBcIixcIntcIl19KSx3WzhdPXUpOnU9d1s4XSx3WzldPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGQ9KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24ta2V5XCIsY2hpbGRyZW46J1wiZGV2XCInfSksd1s5XT1kKTpkPXdbOV0sd1sxMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZj0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZSBkZXYtdG9vbHMtaW5mby1oaWdobGlnaHRcIixjaGlsZHJlbjpbXCIgICAgXCIsZCxcIjpcIixcIiBcIiwoMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi12YWx1ZVwiLGNoaWxkcmVuOidcIm5leHQgZGV2IC0tdHVyYm9wYWNrXCInfSksXCIsXCJdfSksd1sxMF09Zik6Zj13WzEwXSx3WzExXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhwPSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLWtleVwiLGNoaWxkcmVuOidcImJ1aWxkXCInfSksd1sxMV09cCk6cD13WzExXSx3WzEyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhoPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46W1wiICAgIFwiLHAsXCI6XCIsXCIgXCIsKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24tdmFsdWVcIixjaGlsZHJlbjonXCJuZXh0IGJ1aWxkXCInfSksXCIsXCJdfSksd1sxMl09aCk6aD13WzEyXSx3WzEzXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhtPSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLWtleVwiLGNoaWxkcmVuOidcInN0YXJ0XCInfSksd1sxM109bSk6bT13WzEzXSx3WzE0XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhnPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46W1wiICAgIFwiLG0sXCI6XCIsXCIgXCIsKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24tdmFsdWVcIixjaGlsZHJlbjonXCJuZXh0IHN0YXJ0XCInfSksXCIsXCJdfSksd1sxNF09Zyk6Zz13WzE0XSx3WzE1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh5PSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1qc29uLWtleVwiLGNoaWxkcmVuOidcImxpbnRcIid9KSx3WzE1XT15KTp5PXdbMTVdLHdbMTZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHY9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stY29udGFpbmVyXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrXCIsY2hpbGRyZW46W2wsKDAsYi5qc3gpKFwicHJlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGUtYmxvY2stcHJlXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImNvZGVcIix7Y2hpbGRyZW46W3MsYyx1LGYsaCxnLCgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46W1wiICAgIFwiLHksXCI6XCIsXCIgXCIsKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWpzb24tdmFsdWVcIixjaGlsZHJlbjonXCJuZXh0IGxpbnRcIid9KV19KSwoMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZS1ibG9jay1saW5lXCIsY2hpbGRyZW46XCIgIH1cIn0pLCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpcIn1cIn0pLCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmVcIixjaGlsZHJlbjpcIiAgXCJ9KV19KX0pXX0pfSksd1sxNl09dik6dj13WzE2XSx3WzE3XSE9PWk/KHg9KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbaSx2XX0pLHdbMTddPWksd1sxOF09eCk6eD13WzE4XSx4fWZ1bmN0aW9uIG5LKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiBuWChlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gbkcoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIG5RKGUpe3ZhciB0LG4scixvLGEsaSxsPSgwLEEuYykoMTApO2xbMF0hPT1lPyh0PW5HKGUsW1wicm91dGVyVHlwZVwiXSksbj1lLnJvdXRlclR5cGUsbFswXT1lLGxbMV09dCxsWzJdPW4pOih0PWxbMV0sbj1sWzJdKSxsWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3hzKShcInBcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tcGFyYWdyYXBoXCIsY2hpbGRyZW46W1wiVGhlIHBhdGhcIixcIiBcIiwoMCxiLmpzeCkoXCJjb2RlXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWNvZGVcIixjaGlsZHJlbjp3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9KSxcIiBcIiwnaXMgbWFya2VkIGFzIFwic3RhdGljXCIgc2luY2UgaXQgd2lsbCBiZSBwcmVyZW5kZXJlZCBkdXJpbmcgdGhlIGJ1aWxkIHRpbWUuJ119KSxsWzNdPXIpOnI9bFszXTt2YXIgcz1cInBhZ2VzXCI9PT1uP1wiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvcGFnZXMvYnVpbGRpbmcteW91ci1hcHBsaWNhdGlvbi9kYXRhLWZldGNoaW5nL2luY3JlbWVudGFsLXN0YXRpYy1yZWdlbmVyYXRpb25cIjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL2RhdGEtZmV0Y2hpbmcvaW5jcmVtZW50YWwtc3RhdGljLXJlZ2VuZXJhdGlvblwiO3JldHVybiBsWzRdIT09cz8obz0oMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpbXCJXaXRoIFN0YXRpYyBSZW5kZXJpbmcsIHJvdXRlcyBhcmUgcmVuZGVyZWQgYXQgYnVpbGQgdGltZSwgb3IgaW4gdGhlIGJhY2tncm91bmQgYWZ0ZXJcIixcIiBcIiwoMCxiLmpzeCkoXCJhXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWxpbmtcIixocmVmOnMsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLGNoaWxkcmVuOlwiZGF0YSByZXZhbGlkYXRpb25cIn0pLFwiLlwiXX0pLGxbNF09cyxsWzVdPW8pOm89bFs1XSxsWzZdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGE9KDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpcIlN0YXRpYyByZW5kZXJpbmcgaXMgdXNlZnVsIHdoZW4gYSByb3V0ZSBoYXMgZGF0YSB0aGF0IGlzIG5vdCBwZXJzb25hbGl6ZWQgdG8gdGhlIHVzZXIgYW5kIGNhbiBiZSBrbm93biBhdCBidWlsZCB0aW1lLCBzdWNoIGFzIGEgc3RhdGljIGJsb2cgcG9zdCBvciBhIHByb2R1Y3QgcGFnZS5cIn0pLGxbNl09YSk6YT1sWzZdLGxbN10hPT10fHxsWzhdIT09bz8oaT0oMCxiLmpzeHMpKFwiYXJ0aWNsZVwiLG5YKG5LKHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1hcnRpY2xlXCJ9LHQpLHtjaGlsZHJlbjpbcixvLGFdfSkpLGxbN109dCxsWzhdPW8sbFs5XT1pKTppPWxbOV0saX1mdW5jdGlvbiBuSihlKXt2YXIgdCxuLHIsbyxhLGksbCxzPSgwLEEuYykoMTEpO3JldHVybiBzWzBdIT09ZT8odD1uRyhlLFtcInJvdXRlclR5cGVcIl0pLG49ZS5yb3V0ZXJUeXBlLHNbMF09ZSxzWzFdPXQsc1syXT1uKToodD1zWzFdLG49c1syXSksc1szXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPSgwLGIuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOndpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0pLHNbM109cik6cj1zWzNdLHNbNF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz0oMCxiLmpzeHMpKFwicFwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1wYXJhZ3JhcGhcIixjaGlsZHJlbjpbXCJUaGUgcGF0aFwiLFwiIFwiLHIsXCIgXCIsJ2lzIG1hcmtlZCBhcyBcImR5bmFtaWNcIiBzaW5jZSBpdCB3aWxsIGJlIHJlbmRlcmVkIGZvciBlYWNoIHVzZXIgYXQnLFwiIFwiLCgwLGIuanN4KShcInN0cm9uZ1wiLHtjaGlsZHJlbjpcInJlcXVlc3QgdGltZVwifSksXCIuXCJdfSksYT0oMCxiLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOlwiRHluYW1pYyByZW5kZXJpbmcgaXMgdXNlZnVsIHdoZW4gYSByb3V0ZSBoYXMgZGF0YSB0aGF0IGlzIHBlcnNvbmFsaXplZCB0byB0aGUgdXNlciBvciBoYXMgaW5mb3JtYXRpb24gdGhhdCBjYW4gb25seSBiZSBrbm93biBhdCByZXF1ZXN0IHRpbWUsIHN1Y2ggYXMgY29va2llcyBvciB0aGUgVVJMJ3Mgc2VhcmNoIHBhcmFtcy5cIn0pLHNbNF09byxzWzVdPWEpOihvPXNbNF0sYT1zWzVdKSxzWzZdIT09bj8oaT1cInBhZ2VzXCI9PT1uPygwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhZ3JhcGhcIixjaGlsZHJlbjpbXCJFeHBvcnRpbmcgdGhlXCIsXCIgXCIsKDAsYi5qc3gpKFwiYVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1saW5rXCIsaHJlZjpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL3BhZ2VzL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vZGF0YS1mZXRjaGluZy9nZXQtc2VydmVyLXNpZGUtcHJvcHNcIix0YXJnZXQ6XCJfYmxhbmtcIixyZWw6XCJub29wZW5lciBub3JlZmVycmVyXCIsY2hpbGRyZW46XCJnZXRTZXJ2ZXJTaWRlUHJvcHNcIn0pLFwiIFwiLFwiZnVuY3Rpb24gd2lsbCBvcHQgdGhlIHJvdXRlIGludG8gZHluYW1pYyByZW5kZXJpbmcuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYnkgdGhlIHNlcnZlciBvbiBldmVyeSByZXF1ZXN0LlwiXX0pOigwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXBhcmFncmFwaFwiLGNoaWxkcmVuOltcIkR1cmluZyByZW5kZXJpbmcsIGlmIGFcIixcIiBcIiwoMCxiLmpzeCkoXCJhXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWxpbmtcIixocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzI2R5bmFtaWMtYXBpc1wiLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vb3BlbmVyIG5vcmVmZXJyZXJcIixjaGlsZHJlbjpcIkR5bmFtaWMgQVBJXCJ9KSxcIiBcIixcIm9yIGFcIixcIiBcIiwoMCxiLmpzeCkoXCJhXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWxpbmtcIixocmVmOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2FwaS1yZWZlcmVuY2UvZnVuY3Rpb25zL2ZldGNoXCIsdGFyZ2V0OlwiX2JsYW5rXCIscmVsOlwibm9vcGVuZXIgbm9yZWZlcnJlclwiLGNoaWxkcmVuOlwiZmV0Y2hcIn0pLFwiIFwiLFwib3B0aW9uIG9mXCIsXCIgXCIsKDAsYi5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46XCJ7IGNhY2hlOiAnbm8tc3RvcmUnIH1cIn0pLFwiIFwiLFwiaXMgZGlzY292ZXJlZCwgTmV4dC5qcyB3aWxsIHN3aXRjaCB0byBkeW5hbWljYWxseSByZW5kZXJpbmcgdGhlIHdob2xlIHJvdXRlLlwiXX0pLHNbNl09bixzWzddPWkpOmk9c1s3XSxzWzhdIT09dHx8c1s5XSE9PWk/KGw9KDAsYi5qc3hzKShcImFydGljbGVcIixuWChuSyh7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tYXJ0aWNsZVwifSx0KSx7Y2hpbGRyZW46W28sYSxpXX0pKSxzWzhdPXQsc1s5XT1pLHNbMTBdPWwpOmw9c1sxMF0sbH12YXIgbjA9e3BhZ2VzOntzdGF0aWM6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9wYWdlcy9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zdGF0aWMtc2l0ZS1nZW5lcmF0aW9uXCIsZHluYW1pYzpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL3BhZ2VzL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1zaWRlLXJlbmRlcmluZ1wifSxhcHA6e3N0YXRpYzpcImh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9idWlsZGluZy15b3VyLWFwcGxpY2F0aW9uL3JlbmRlcmluZy9zZXJ2ZXItY29tcG9uZW50cyNzdGF0aWMtcmVuZGVyaW5nLWRlZmF1bHRcIixkeW5hbWljOlwiaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvYXBwL2J1aWxkaW5nLXlvdXItYXBwbGljYXRpb24vcmVuZGVyaW5nL3NlcnZlci1jb21wb25lbnRzI2R5bmFtaWMtcmVuZGVyaW5nXCJ9fTtmdW5jdGlvbiBuMShlKXt2YXIgdCxuLHIsbyxhPSgwLEEuYykoOCk7cmV0dXJuIGFbMF0hPT1lPyhuPW5HKGUsW1wicm91dGVyVHlwZVwiLFwiaXNTdGF0aWNSb3V0ZVwiXSkscj1lLnJvdXRlclR5cGUsdD1lLmlzU3RhdGljUm91dGUsYVswXT1lLGFbMV09dCxhWzJdPW4sYVszXT1yKToodD1hWzFdLG49YVsyXSxyPWFbM10pLGFbNF0hPT10fHxhWzVdIT09bnx8YVs2XSE9PXI/KG89dD8oMCxiLmpzeCkoblEsbksoe3JvdXRlclR5cGU6cn0sbikpOigwLGIuanN4KShuSixuSyh7cm91dGVyVHlwZTpyfSxuKSksYVs0XT10LGFbNV09bixhWzZdPXIsYVs3XT1vKTpvPWFbN10sb31mdW5jdGlvbiBuMigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsZmlsbDpcIm5vbmVcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGw6XCJjdXJyZW50Q29sb3JcIixmaWxsUnVsZTpcImV2ZW5vZGRcIixkOlwibS4xOTEgMi4wNjMuNTYuNDk4IDEzLjUgMTIgLjU2MS40OTguOTk3LTEuMTIxLS41Ni0uNDk4LTEuODEtMS42MDggMi44OC0zLjM0MnYtLjk4bC0zLjIwNC0zLjcyQzEwLjY0NS45MjMgNi4zNjUuNjg2IDMuNTk0IDMuMDhMMS43NDggMS40NCAxLjE4OC45NC4xOSAyLjA2M1pNMTQuNzYxIDhsLTIuNDQyIDIuODM2LTEuNjUtMS40NjZhMy4wMDEgMy4wMDEgMCAwIDAtNC4zNDItMy44NmwtMS42LTEuNDIyYTUuMjUzIDUuMjUzIDAgMCAxIDcuMjUxLjY4MkwxNC43NiA4Wk03LjUyNiA2LjU3NmwxLjk0MiAxLjcyN2ExLjQ5OSAxLjQ5OSAwIDAgMC0xLjk0Mi0xLjcyN1ptLTcuODQ1LjkzNSAxLjcyMi0yIDEuMTM3Ljk3OUwxLjI0IDhsMi43ODIgMy4yM0E1LjI1IDUuMjUgMCAwIDAgOS45IDEyLjcwM2wuNTQgMS40YTYuNzUxIDYuNzUxIDAgMCAxLTcuNTU1LTEuODkyTC0uMzE4IDguNDl2LS45OFpcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBuNCgpe3ZhciBlLHQsbj0oMCxBLmMpKDIpO3JldHVybiBuWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwiZ1wiLHtjbGlwUGF0aDpcInVybCgjbGlnaHRfaWNvbl9jbGlwX3BhdGgpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsOlwiY3VycmVudENvbG9yXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsZDpcIk04Ljc1Ljc1VjBoLTEuNXYyaDEuNVYuNzVaTTMuMjYgNC4zMmwtLjUzLS41My0uMzU0LS4zNTMtLjUzLS41MyAxLjA2LTEuMDYxLjUzLjUzLjM1NC4zNTQuNTMuNTMtMS4wNiAxLjA2Wm04LjQyLTEuMDYuNTMtLjUzLjM1My0uMzU0LjUzLS41MyAxLjA2MSAxLjA2LS41My41My0uMzU0LjM1NC0uNTMuNTMtMS4wNi0xLjA2Wk04IDExLjI1YTMuMjUgMy4yNSAwIDEgMCAwLTYuNSAzLjI1IDMuMjUgMCAwIDAgMCA2LjVabTAgMS41YTQuNzUgNC43NSAwIDEgMCAwLTkuNSA0Ljc1IDQuNzUgMCAwIDAgMCA5LjVabTYtNS41aDJ2MS41aC0ydi0xLjVabS0xMy4yNSAwSDB2MS41aDJ2LTEuNUguNzVabTEuNjIgNS4zMi0uNTMuNTMgMS4wNiAxLjA2LjUzLS41My4zNTQtLjM1My41My0uNTMtMS4wNi0xLjA2MS0uNTMuNTMtLjM1NC4zNTRabTEwLjIgMS4wNi41My41MyAxLjA2LTEuMDYtLjUzLS41My0uMzU0LS4zNTQtLjUzLS41My0xLjA2IDEuMDYuNTMuNTMuMzUzLjM1NFpNOC43NSAxNHYyaC0xLjV2LTJoMS41WlwiLGNsaXBSdWxlOlwiZXZlbm9kZFwifSl9KSxuWzBdPWUpOmU9blswXSxuWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3hzKShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIyMFwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAxNiAxNlwiLGZpbGw6XCJub25lXCIsY2hpbGRyZW46W2UsKDAsYi5qc3gpKFwiZGVmc1wiLHtjaGlsZHJlbjooMCxiLmpzeCkoXCJjbGlwUGF0aFwiLHtpZDpcImxpZ2h0X2ljb25fY2xpcF9wYXRoXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsOlwiY3VycmVudENvbG9yXCIsZDpcIk0wIDBoMTZ2MTZIMHpcIn0pfSl9KV19KSxuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIG41KCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse1wiZGF0YS10ZXN0aWRcIjpcImdlaXN0LWljb25cIixoZWlnaHQ6XCIxNlwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsd2lkdGg6XCIxNlwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xLjUgOC4wMDAwNUMxLjUgNS41MzA4OSAyLjk5MTk4IDMuNDA5MzIgNS4xMjM0OSAyLjQ4ODg5QzQuODgxMzYgMy4xOTg1OCA0Ljc1IDMuOTU5MzYgNC43NSA0Ljc1MDFDNC43NSA4LjYxNjA5IDcuODg0MDEgMTEuNzUwMSAxMS43NSAxMS43NTAxQzExLjg5OTUgMTEuNzUwMSAxMi4wNDggMTEuNzQ1NCAxMi4xOTUzIDExLjczNjFDMTEuMDk1NSAxMy4xMTY0IDkuNDAwNDcgMTQuMDAwMSA3LjUgMTQuMDAwMUM0LjE4NjI5IDE0LjAwMDEgMS41IDExLjMxMzggMS41IDguMDAwMDVaTTYuNDE3MDYgMC41Nzc3NTlDMi43ODc4NCAxLjEwMzEgMCA0LjIyNTM2IDAgOC4wMDAwNUMwIDEyLjE0MjIgMy4zNTc4NiAxNS41MDAxIDcuNSAxNS41MDAxQzEwLjU3OTggMTUuNTAwMSAxMy4yMjQ0IDEzLjY0MzggMTQuMzc5MiAxMC45OTIxTDEzLjQ1ODggOS45Nzk3QzEyLjkyMTggMTAuMTU1IDEyLjM0NzggMTAuMjUwMSAxMS43NSAxMC4yNTAxQzguNzEyNDMgMTAuMjUwMSA2LjI1IDcuNzg3NjcgNi4yNSA0Ljc1MDFDNi4yNSAzLjYzNDMxIDYuNTgxNDYgMi41OTgyMyA3LjE1MTExIDEuNzMyMTdMNi40MTcwNiAwLjU3Nzc1OVpNMTMuMjUgMVYxLjc1VjIuNzVMMTQuMjUgMi43NUgxNVY0LjI1SDE0LjI1SDEzLjI1VjUuMjVWNkgxMS43NVY1LjI1VjQuMjVIMTAuNzVMMTAgNC4yNVYyLjc1SDEwLjc1TDExLjc1IDIuNzVWMS43NVYxSDEzLjI1WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBuMygpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsOlwiY3VycmVudENvbG9yXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsZDpcIk0wIDJhMSAxIDAgMCAxIDEtMWgxNGExIDEgMCAwIDEgMSAxdjguNWExIDEgMCAwIDEtMSAxSDguNzV2M2gxLjc1VjE2aC01di0xLjVoMS43NXYtM0gxYTEgMSAwIDAgMS0xLTFWMlptMS41LjVWMTBoMTNWMi41aC0xM1pcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBuNihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gbjkoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fG43KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gbjgoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIG42KGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fG43KGUpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiBuNyhlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBuNihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBuNihlLHQpfX1mdW5jdGlvbiByZSgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gIC5zaG9ydGN1dC1yZWNvcmRlciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBnYXA6IDhweDtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1zYW5zKTtcXG5cXG4gICAgLnNob3J0Y3V0LXJlY29yZGVyLWJ1dHRvbiB7XFxuICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgIGdhcDogNHB4O1xcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xcbiAgICAgIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1jb2xvci1ncmF5LTUwMCk7XFxuICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1sZyk7XFxuICAgICAgcGFkZGluZzogNnB4IDhweDtcXG4gICAgICBmb250LXdlaWdodDogNDAwO1xcbiAgICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDE1MG1zIHZhcigtLXRpbWluZy1zd2lmdCk7XFxuXFxuICAgICAgJltkYXRhLWhhcy1zaG9ydGN1dD0ndHJ1ZSddIHtcXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG5cXG4gICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNTAwKTtcXG4gICAgICAgIH1cXG4gICAgICB9XFxuXFxuICAgICAgJjpob3ZlciB7XFxuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNjAwKTtcXG4gICAgICB9XFxuXFxuICAgICAgJjo6cGxhY2Vob2xkZXIge1xcbiAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgICB9XFxuXFxuICAgICAgJltkYXRhLXByaXN0aW5lPSdmYWxzZSddOjpwbGFjZWhvbGRlciB7XFxuICAgICAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgICAgfVxcblxcbiAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICAgIG91dGxpbmUtb2Zmc2V0OiAtMXB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICBrYmQge1xcbiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stc2Fucyk7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0yMDApO1xcbiAgICAgIG1pbi13aWR0aDogMjBweDtcXG4gICAgICBoZWlnaHQ6IDIwcHg7XFxuICAgICAgZm9udC1zaXplOiAxNHB4O1xcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG5cXG4gICAgICAmW2RhdGEtc3ltYm9sPSdmYWxzZSddIHtcXG4gICAgICAgIHBhZGRpbmc6IDAgNHB4O1xcbiAgICAgIH1cXG4gICAgfVxcblxcbiAgICAuc2hvcnRjdXQtcmVjb3JkZXItY2xlYXItYnV0dG9uIHtcXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgICAgd2lkdGg6IDIwcHg7XFxuICAgICAgaGVpZ2h0OiAyMHB4O1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAxNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpO1xcblxcbiAgICAgICY6aG92ZXIge1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0zMDApO1xcbiAgICAgIH1cXG5cXG4gICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgfVxcblxcbiAgICAgIHN2ZyB7XFxuICAgICAgICB3aWR0aDogMTRweDtcXG4gICAgICAgIGhlaWdodDogMTRweDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5zaG9ydGN1dC1yZWNvcmRlci1rZXlzIHtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDJweDtcXG4gIH1cXG5cXG4gIC5zaG9ydGN1dC1yZWNvcmRlci10b29sdGlwIHtcXG4gICAgLS1nYXA6IDhweDtcXG4gICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMDApO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgcGFkZGluZzogNHB4IDhweDtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICAgIGJvdHRvbTogY2FsYygxMDAlICsgdmFyKC0tZ2FwKSk7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgb3BhY2l0eTogMDtcXG4gICAgc2NhbGU6IDAuOTY7XFxuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICB0cmFuc2l0aW9uOlxcbiAgICAgIG9wYWNpdHkgMTUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KSxcXG4gICAgICBzY2FsZSAxNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpO1xcblxcbiAgICAmW2RhdGEtc2hvdz0ndHJ1ZSddIHtcXG4gICAgICBvcGFjaXR5OiAxO1xcbiAgICAgIHNjYWxlOiAxO1xcbiAgICB9XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gICAgICBib3R0b206IC02cHg7XFxuICAgICAgbGVmdDogNTAlO1xcbiAgICB9XFxuXFxuICAgIC5zaG9ydGN1dC1yZWNvcmRlci1zdGF0dXMge1xcbiAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICBnYXA6IDZweDtcXG4gICAgfVxcblxcbiAgICAuc2hvcnRjdXQtcmVjb3JkZXItc3RhdHVzLWljb24ge1xcbiAgICAgIHdpZHRoOiA3cHg7XFxuICAgICAgaGVpZ2h0OiA3cHg7XFxuICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICAgIGZsZXgtc2hyaW5rOiAwO1xcbiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLXJlZC03MDApO1xcblxcbiAgICAgICZbZGF0YS1zdWNjZXNzPSd0cnVlJ10ge1xcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JlZW4tNzAwKTtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cIl0sdHx8KHQ9ZS5zbGljZSgwKSksT2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLHtyYXc6e3ZhbHVlOk9iamVjdC5mcmVlemUodCl9fSkpKTtyZXR1cm4gcmU9ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbn12YXIgcnQ9W1wiTWV0YVwiLFwiQ29udHJvbFwiLFwiQ3RybFwiLFwiQWx0XCIsXCJPcHRpb25cIixcIlNoaWZ0XCJdO2Z1bmN0aW9uIHJuKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGg9KDAsQS5jKSgzMyksbT1lLnZhbHVlLGc9ZS5vbkNoYW5nZSx5PW45KCgwLHgudXNlU3RhdGUpKCEwKSwyKSx2PXlbMF0sdz15WzFdLEM9bjkoKDAseC51c2VTdGF0ZSkoITEpLDIpLF89Q1swXSxrPUNbMV07aFswXSE9PW0/KHQ9bnVsbCE9bT9tOltdLGhbMF09bSxoWzFdPXQpOnQ9aFsxXTt2YXIgRT1uOSgoMCx4LnVzZVN0YXRlKSh0KSwyKSxqPUVbMF0sUz1FWzFdLE89bjkoKDAseC51c2VTdGF0ZSkoITEpLDIpLEI9T1swXSxQPU9bMV0sST0oMCx4LnVzZVJlZikobnVsbCksej0oMCx4LnVzZVJlZikobnVsbCksVD0hIW18fGoubGVuZ3RoPjA7aFsyXSE9PWd8fGhbM10hPT12fHxoWzRdIT09Xz8obj1mdW5jdGlvbihlKXtpZihlLnRhcmdldD09PXouY3VycmVudCYmXCJUYWJcIiE9PWUua2V5KXtJLmN1cnJlbnQmJmNsZWFyVGltZW91dChJLmN1cnJlbnQpLF98fGsoITApLHYmJihTKFtdKSx3KCExKSk7dmFyIHQ9ZnVuY3Rpb24oZSl7SS5jdXJyZW50PXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7UCghMCksZyhlLmpvaW4oXCIrXCIpKSxJLmN1cnJlbnQ9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtrKCExKX0sMWUzKX0sMTgwKX07ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksUyhmdW5jdGlvbihuKXtpZihuLmluY2x1ZGVzKGUuY29kZSl8fG4uaW5jbHVkZXMoZS5rZXkpKXJldHVybiBuO2lmKCFydC5pbmNsdWRlcyhlLmtleSkpe3ZhciByPW4uZmluZEluZGV4KHJhKTtpZigtMSE9PXIpe3ZhciBvPW44KG4pO3JldHVybiBvW3JdPWUuY29kZSx0KG8pLG99dmFyIGE9bjgobikuY29uY2F0KFtlLmNvZGVdKTtyZXR1cm4gdChhKSxhfWZvcih2YXIgaT1uOChuKSxsPXJ0LmluZGV4T2YoZS5rZXkpLHM9MCxjPTA7YzxpLmxlbmd0aDtjKyspaWYocnQuaW5jbHVkZXMoaVtjXSkpe2lmKGw8cnQuaW5kZXhPZihpW2NdKSl7cz1jO2JyZWFrfXM9YysxfWVsc2UgYnJlYWs7cmV0dXJuIGkuc3BsaWNlKHMsMCxlLmtleSksdChpKSxpfSl9fSxoWzJdPWcsaFszXT12LGhbNF09XyxoWzVdPW4pOm49aFs1XTt2YXIgRD1uO2hbNl0hPT1nPyhyPWZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09KGU9ei5jdXJyZW50KXx8ZS5mb2N1cygpLFMoW10pLFAoITEpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtrKCEwKX0pLGcobnVsbCl9LGhbNl09ZyxoWzddPXIpOnI9aFs3XTt2YXIgTD1yO2hbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obz1mdW5jdGlvbigpe1AoITEpLGsoITEpLHcoITApfSxoWzhdPW8pOm89aFs4XTt2YXIgTj1vO2hbOV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYT1mdW5jdGlvbigpe3ZhciBlO0kuY3VycmVudCYmY2xlYXJUaW1lb3V0KEkuY3VycmVudCksayghMCksbnVsbD09KGU9ei5jdXJyZW50KXx8ZS5mb2N1cygpfSxoWzldPWEpOmE9aFs5XTt2YXIgUj1hO2hbMTBdIT09VHx8aFsxMV0hPT1qPyhpPVQ/KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyLWtleXNcIixjaGlsZHJlbjpqLm1hcChybyl9KTpcIlJlY29yZCBTaG9ydGN1dFwiLGhbMTBdPVQsaFsxMV09aixoWzEyXT1pKTppPWhbMTJdLGhbMTNdIT09THx8aFsxNF0hPT1UPyhsPVQmJigwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlci1jbGVhci1idXR0b25cIixyb2xlOlwiYnV0dG9uXCIsb25DbGljazpMLG9uRm9jdXM6cnIsb25LZXlEb3duOmZ1bmN0aW9uKGUpeyhcIkVudGVyXCI9PT1lLmtleXx8XCIgXCI9PT1lLmtleSkmJihMKCksZS5zdG9wUHJvcGFnYXRpb24oKSl9LFwiYXJpYS1sYWJlbFwiOlwiQ2xlYXIgc2hvcnRjdXRcIix0YWJJbmRleDowLGNoaWxkcmVuOigwLGIuanN4KShyYyx7fSl9KSxoWzEzXT1MLGhbMTRdPVQsaFsxNV09bCk6bD1oWzE1XSxoWzE2XSE9PUR8fGhbMTddIT09VHx8aFsxOF0hPT1pfHxoWzE5XSE9PWw/KHM9KDAsYi5qc3hzKShcImJ1dHRvblwiLHtjbGFzc05hbWU6XCJzaG9ydGN1dC1yZWNvcmRlci1idXR0b25cIixyZWY6eixvbkNsaWNrOlIsb25Gb2N1czpSLG9uQmx1cjpOLG9uS2V5RG93bjpELFwiZGF0YS1oYXMtc2hvcnRjdXRcIjpULFwiZGF0YS1zaG9ydGN1dC1yZWNvcmRlclwiOlwidHJ1ZVwiLGNoaWxkcmVuOltpLGxdfSksaFsxNl09RCxoWzE3XT1ULGhbMThdPWksaFsxOV09bCxoWzIwXT1zKTpzPWhbMjBdLGhbMjFdIT09Qj8oYz0oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXItc3RhdHVzLWljb25cIixcImRhdGEtc3VjY2Vzc1wiOkJ9KSxoWzIxXT1CLGhbMjJdPWMpOmM9aFsyMl07dmFyIE09Qj9cIlNob3J0Y3V0IHNldFwiOlwiUmVjb3JkaW5nXCI7cmV0dXJuIGhbMjNdIT09TXx8aFsyNF0hPT1jPyh1PSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2hvcnRjdXQtcmVjb3JkZXItc3RhdHVzXCIsY2hpbGRyZW46W2MsTV19KSxoWzIzXT1NLGhbMjRdPWMsaFsyNV09dSk6dT1oWzI1XSxoWzI2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhkPSgwLGIuanN4KShyaSx7fSksaFsyNl09ZCk6ZD1oWzI2XSxoWzI3XSE9PV98fGhbMjhdIT09dT8oZj0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyLXRvb2x0aXBcIixcImRhdGEtc2hvd1wiOl8sY2hpbGRyZW46W3UsZF19KSxoWzI3XT1fLGhbMjhdPXUsaFsyOV09Zik6Zj1oWzI5XSxoWzMwXSE9PWZ8fGhbMzFdIT09cz8ocD0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNob3J0Y3V0LXJlY29yZGVyXCIsY2hpbGRyZW46W3MsZl19KSxoWzMwXT1mLGhbMzFdPXMsaFszMl09cCk6cD1oWzMyXSxwfWZ1bmN0aW9uIHJyKGUpe3JldHVybiBlLnN0b3BQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHJvKGUpe3JldHVybigwLGIuanN4KShybCx7Y2hpbGRyZW46ZX0sZSl9ZnVuY3Rpb24gcmEoZSl7cmV0dXJuIXJ0LmluY2x1ZGVzKGUpfWZ1bmN0aW9uIHJpKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse2ZpbGw6XCJub25lXCIsaGVpZ2h0OlwiNlwiLHZpZXdCb3g6XCIwIDAgMTQgNlwiLHdpZHRoOlwiMTRcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTEzLjgyODQgMEgwLjE3MTU3QzAuNzAyMDAzIDAgMS4yMTA3MSAwLjIxMDcxNCAxLjU4NTc4IDAuNTg1Nzg3TDUuNTg1NzggNC41ODU3OUM2LjM2NjgzIDUuMzY2ODQgNy42MzMxNiA1LjM2NjgzIDguNDE0MjEgNC41ODU3OUwxMi40MTQyIDAuNTg1Nzg2QzEyLjc4OTMgMC4yMTA3MTQgMTMuMjk4IDAgMTMuODI4NCAwWlwiLGZpbGw6XCJ2YXIoLS1iYWNrZ3JvdW5kKVwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIHJsKGUpe3ZhciB0LG4scixvLGE9KDAsQS5jKSg5KSxpPWUuY2hpbGRyZW47YVswXSE9PWk/KHQ9ZnVuY3Rpb24oZSl7c3dpdGNoKGUpe2Nhc2VcIk1ldGFcIjpyZXR1cm4oMCxiLmpzeCkocnMse30pO2Nhc2VcIkFsdFwiOmNhc2VcIk9wdGlvblwiOnJldHVyblwi4oylXCI7Y2FzZVwiQ29udHJvbFwiOmNhc2VcIkN0cmxcIjpyZXR1cm5cIkN0cmxcIjtjYXNlXCJTaGlmdFwiOnJldHVyblwi4oenXCI7Y2FzZVwiRW50ZXJcIjpyZXR1cm5cIuKPjlwiO2Nhc2VcIkVzY2FwZVwiOmNhc2VcIkVzY1wiOnJldHVyblwiRXNjXCI7Y2FzZVwiIFwiOmNhc2VcIlNwYWNlXCI6Y2FzZVwiU3BhY2ViYXJcIjpyZXR1cm5cIlNwYWNlXCI7Y2FzZVwiQXJyb3dVcFwiOnJldHVyblwi4oaRXCI7Y2FzZVwiQXJyb3dEb3duXCI6cmV0dXJuXCLihpNcIjtjYXNlXCJBcnJvd0xlZnRcIjpyZXR1cm5cIuKGkFwiO2Nhc2VcIkFycm93UmlnaHRcIjpyZXR1cm5cIuKGklwiO2Nhc2VcIlRhYlwiOnJldHVyblwiVGFiXCI7Y2FzZVwiQmFja3NwYWNlXCI6cmV0dXJuXCLijKtcIjtjYXNlXCJEZWxldGVcIjpyZXR1cm5cIuKMplwiO2RlZmF1bHQ6aWYoMT09PWkubGVuZ3RoKXJldHVybiBpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGl9fSxhWzBdPWksYVsxXT10KTp0PWFbMV07dmFyIGw9dDtpZihhWzJdIT09aXx8YVszXSE9PWwpe3ZhciBzPWwoaSk7bj1cInN0cmluZ1wiPT10eXBlb2YgcyYmMT09PXMubGVuZ3RoLHI9ZnVuY3Rpb24oZSl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUpcmV0dXJuIGU7dmFyIHQ9e01pbnVzOlwiLVwiLEVxdWFsOlwiPVwiLEJyYWNrZXRMZWZ0OlwiW1wiLEJyYWNrZXRSaWdodDpcIl1cIixCYWNrc2xhc2g6XCJcXFxcXCIsU2VtaWNvbG9uOlwiO1wiLFF1b3RlOlwiJ1wiLENvbW1hOlwiLFwiLFBlcmlvZDpcIi5cIixCYWNrcXVvdGU6XCJgXCIsU3BhY2U6XCIgXCIsU2xhc2g6XCIvXCIsSW50bEJhY2tzbGFzaDpcIlxcXFxcIn07cmV0dXJuIHRbZV0/dFtlXTovXktleShbQS1aXSkkLy50ZXN0KGUpP2UucmVwbGFjZSgvXktleS8sXCJcIik6L15EaWdpdChbMC05XSkkLy50ZXN0KGUpP2UucmVwbGFjZSgvXkRpZ2l0LyxcIlwiKTovXk51bXBhZChbMC05XSkkLy50ZXN0KGUpP2UucmVwbGFjZSgvXk51bXBhZC8sXCJcIik6XCJOdW1wYWRBZGRcIj09PWU/XCIrXCI6XCJOdW1wYWRTdWJ0cmFjdFwiPT09ZT9cIi1cIjpcIk51bXBhZE11bHRpcGx5XCI9PT1lP1wiKlwiOlwiTnVtcGFkRGl2aWRlXCI9PT1lP1wiL1wiOlwiTnVtcGFkRGVjaW1hbFwiPT09ZT9cIi5cIjpcIk51bXBhZEVudGVyXCI9PT1lP1wiRW50ZXJcIjplfShzKSxhWzJdPWksYVszXT1sLGFbNF09bixhWzVdPXJ9ZWxzZSBuPWFbNF0scj1hWzVdO3JldHVybiBhWzZdIT09bnx8YVs3XSE9PXI/KG89KDAsYi5qc3gpKFwia2JkXCIse1wiZGF0YS1zeW1ib2xcIjpuLGNoaWxkcmVuOnJ9KSxhWzZdPW4sYVs3XT1yLGFbOF09byk6bz1hWzhdLG99ZnVuY3Rpb24gcnMoKXt2YXIgZSx0LG4scixvLGE9KDAsQS5jKSg2KSxpPW45KCgwLHgudXNlU3RhdGUpKFwiXFx4YTBcIiksMiksbD1pWzBdLHM9aVsxXTthWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9cmQoL15NYWMvKXx8cmQoL15pUGhvbmUvKXx8cmQoL15pUGFkLyl8fHJkKC9eTWFjLykmJm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz4xLGFbMF09ZSk6ZT1hWzBdO3ZhciBjPWU7cmV0dXJuIGFbMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD1mdW5jdGlvbigpeyEwPT09YyYmcyhcIuKMmFwiKSwhMT09PWMmJnMoXCJDdHJsXCIpfSxuPVtjXSxhWzFdPXQsYVsyXT1uKToodD1hWzFdLG49YVsyXSksKDAseC51c2VFZmZlY3QpKHQsbiksYVszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhyPXttaW5XaWR0aDpcIjFlbVwiLGRpc3BsYXk6XCJpbmxpbmUtYmxvY2tcIn0sYVszXT1yKTpyPWFbM10sYVs0XSE9PWw/KG89KDAsYi5qc3gpKFwic3BhblwiLHtzdHlsZTpyLGNoaWxkcmVuOmx9KSxhWzRdPWwsYVs1XT1vKTpvPWFbNV0sb31mdW5jdGlvbiByYygpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHtoZWlnaHQ6XCIxNlwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsd2lkdGg6XCIxNlwiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk0xMi40Njk3IDEzLjUzMDNMMTMgMTQuMDYwN0wxNC4wNjA3IDEzTDEzLjUzMDMgMTIuNDY5N0w5LjA2MDY1IDcuOTk5OTlMMTMuNTMwMyAzLjUzMDMyTDE0LjA2MDcgMi45OTk5OUwxMyAxLjkzOTMzTDEyLjQ2OTcgMi40Njk2Nkw3Ljk5OTk5IDYuOTM5MzNMMy41MzAzMiAyLjQ2OTY2TDIuOTk5OTkgMS45MzkzM0wxLjkzOTMzIDIuOTk5OTlMMi40Njk2NiAzLjUzMDMyTDYuOTM5MzMgNy45OTk5OUwyLjQ2OTY2IDEyLjQ2OTdMMS45MzkzMyAxM0wyLjk5OTk5IDE0LjA2MDdMMy41MzAzMiAxMy41MzAzTDcuOTk5OTkgOS4wNjA2NUwxMi40Njk3IDEzLjUzMDNaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfXZhciBydT1lcyhyZSgpKTtmdW5jdGlvbiByZChlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZudWxsIT13aW5kb3cubmF2aWdhdG9yP2UudGVzdCh3aW5kb3cubmF2aWdhdG9yLnBsYXRmb3JtKTp2b2lkIDB9ZnVuY3Rpb24gcmYoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJwKGUsdCxuLHIsbyxhLGkpe3RyeXt2YXIgbD1lW2FdKGkpLHM9bC52YWx1ZX1jYXRjaChlKXtuKGUpO3JldHVybn1sLmRvbmU/dChzKTpQcm9taXNlLnJlc29sdmUocykudGhlbihyLG8pfXZhciByaD1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi9kaXN0L2NvbXBpbGVkL3pvZC9pbmRleC5janNcIikscm09cmguei5vYmplY3Qoe3RoZW1lOnJoLnouZW51bShbXCJsaWdodFwiLFwiZGFya1wiLFwic3lzdGVtXCJdKS5vcHRpb25hbCgpLGRpc2FibGVEZXZJbmRpY2F0b3I6cmguei5ib29sZWFuKCkub3B0aW9uYWwoKSxkZXZUb29sc1Bvc2l0aW9uOnJoLnouZW51bShbXCJ0b3AtbGVmdFwiLFwidG9wLXJpZ2h0XCIsXCJib3R0b20tbGVmdFwiLFwiYm90dG9tLXJpZ2h0XCJdKS5vcHRpb25hbCgpLGRldlRvb2xzUGFuZWxQb3NpdGlvbjpyaC56LnJlY29yZChyaC56LnN0cmluZygpLHJoLnouZW51bShbXCJ0b3AtbGVmdFwiLFwidG9wLXJpZ2h0XCIsXCJib3R0b20tbGVmdFwiLFwiYm90dG9tLXJpZ2h0XCJdKSkub3B0aW9uYWwoKSxkZXZUb29sc1BhbmVsU2l6ZTpyaC56LnJlY29yZChyaC56LnN0cmluZygpLHJoLnoub2JqZWN0KHt3aWR0aDpyaC56Lm51bWJlcigpLGhlaWdodDpyaC56Lm51bWJlcigpfSkpLm9wdGlvbmFsKCksc2NhbGU6cmguei5udW1iZXIoKS5vcHRpb25hbCgpLGhpZGVTaG9ydGN1dDpyaC56LnN0cmluZygpLm51bGxhYmxlKCkub3B0aW9uYWwoKX0pO2Z1bmN0aW9uIHJnKGUpe3JldHVybiBlJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sP1wic3ltYm9sXCI6dHlwZW9mIGV9dmFyIHJ5PXt9LHJ2PW51bGw7ZnVuY3Rpb24gcmIoKXtpZigwIT09T2JqZWN0LmtleXMocnkpLmxlbmd0aCl7dmFyIGU9SlNPTi5zdHJpbmdpZnkocnkpO3J5PXt9LGZldGNoKFwiL19fbmV4dGpzX2RldnRvb2xzX2NvbmZpZ1wiLHttZXRob2Q6XCJQT1NUXCIsaGVhZGVyczp7XCJDb250ZW50LVR5cGVcIjpcImFwcGxpY2F0aW9uL2pzb25cIn0sYm9keTplLGtlZXBhbGl2ZTohMH0pLmNhdGNoKGZ1bmN0aW9uKHQpe2NvbnNvbGUud2FybihcIltOZXh0LmpzIERldlRvb2xzXSBGYWlsZWQgdG8gc2F2ZSBjb25maWc6XCIse2RhdGE6ZSxlcnJvcjp0fSl9KX19ZnVuY3Rpb24gckEoZSl7dmFyIHQ9cm0uc2FmZVBhcnNlKGUpO2lmKCF0LnN1Y2Nlc3MpcmV0dXJuIHZvaWQgY29uc29sZS53YXJuKFwiW05leHQuanMgRGV2VG9vbHNdIEludmFsaWQgY29uZmlnIHBhdGNoOlwiLHQuZXJyb3IubWVzc2FnZSk7cnk9ZnVuY3Rpb24gZSh0LG4pe2lmKCFufHwodm9pZCAwPT09bj9cInVuZGVmaW5lZFwiOnJnKG4pKSE9PVwib2JqZWN0XCJ8fEFycmF5LmlzQXJyYXkobil8fCF0fHwodm9pZCAwPT09dD9cInVuZGVmaW5lZFwiOnJnKHQpKSE9PVwib2JqZWN0XCJ8fEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIG47dmFyIHI9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSx0KTtmb3IodmFyIG8gaW4gbil7dmFyIGE9bltvXSxpPXRbb107dm9pZCAwIT09YSYmKGEmJih2b2lkIDA9PT1hP1widW5kZWZpbmVkXCI6cmcoYSkpPT09XCJvYmplY3RcIiYmIUFycmF5LmlzQXJyYXkoYSkmJmkmJih2b2lkIDA9PT1pP1widW5kZWZpbmVkXCI6cmcoaSkpPT09XCJvYmplY3RcIiYmIUFycmF5LmlzQXJyYXkoaSk/cltvXT1lKGksYSk6cltvXT1hKX1yZXR1cm4gcn0ocnksZSkscnYmJmNsZWFyVGltZW91dChydikscnY9c2V0VGltZW91dChyYiwxMjApfWZ1bmN0aW9uIHJ4KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBydygpe3ZhciBlLHQsbj0oZT1bXCJcXG4gIC5wcmVmZXJlbmNlcy1jb250YWluZXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG5cXG4gIEBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkge1xcbiAgICAucHJlZmVyZW5jZXMtY29udGFpbmVyIHtcXG4gICAgICB3aWR0aDogNDgwcHg7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLXNlY3Rpb246Zmlyc3QtY2hpbGQge1xcbiAgICBwYWRkaW5nLXRvcDogMDtcXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLXNlY3Rpb24ge1xcbiAgICBwYWRkaW5nOiAxMnB4IDA7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiAyNHB4O1xcbiAgfVxcblxcbiAgLnByZWZlcmVuY2Utc2VjdGlvbjpsYXN0LWNoaWxkIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZTtcXG4gIH1cXG5cXG4gIC5wcmVmZXJlbmNlLWhlYWRlciB7XFxuICAgIG1hcmdpbi1ib3R0b206IDA7XFxuICAgIGZsZXg6IDE7XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1oZWFkZXIgbGFiZWwge1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcblxcbiAgLnByZWZlcmVuY2UtZGVzY3JpcHRpb24ge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuXFxuICAuc2VsZWN0LWJ1dHRvbixcXG4gIC5hY3Rpb24tYnV0dG9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA4cHg7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKTtcXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIHBhZGRpbmc6IDZweCA4cHg7XFxuICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAxNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLWdyYXktNTAwKTtcXG4gICAgfVxcblxcbiAgICBzdmcge1xcbiAgICAgIHdpZHRoOiAxNHB4O1xcbiAgICAgIGhlaWdodDogMTRweDtcXG4gICAgICBvdmVyZmxvdzogdmlzaWJsZTtcXG4gICAgfVxcbiAgfVxcblxcbiAgLnNlbGVjdC1idXR0b24ge1xcbiAgICAmOmZvY3VzLXdpdGhpbiB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XFxuICAgIH1cXG5cXG4gICAgc2VsZWN0IHtcXG4gICAgICBhbGw6IHVuc2V0O1xcbiAgICB9XFxuXFxuICAgIG9wdGlvbiB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0xMDApO1xcbiAgICB9XFxuICB9XFxuXFxuICAucHJlZmVyZW5jZS1zZWN0aW9uIGJ1dHRvbjpkaXNhYmxlZCB7XFxuICAgIG9wYWNpdHk6IDAuNjtcXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcXG4gIH1cXG5cXG4gIDpnbG9iYWwoLmljb24pIHtcXG4gICAgd2lkdGg6IDE4cHg7XFxuICAgIGhlaWdodDogMThweDtcXG4gICAgY29sb3I6ICM2NjY7XFxuICB9XFxuXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIHJ3PWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59ZnVuY3Rpb24gckMoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LHcsQyxfLGssRSxqLFMsQixQLEkseixULEQsTCxOLFIsTSxaLFUsRixxLEgsViwkLFcsWT0oMCxBLmMpKDY1KSxLPWUudGhlbWUsWD1lLmhpZGUsRz1lLmhpZGVTaG9ydGN1dCxRPWUuc2V0SGlkZVNob3J0Y3V0LEo9ZS5zY2FsZSxlZT1lLnNldFBvc2l0aW9uLGV0PWUuc2V0U2NhbGUsZW49ZS5wb3NpdGlvbixlcj0obz0odD0oMCx4LnVzZVN0YXRlKSghMSksbj0yLHI9ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gcmYoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gcmYoZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpWzBdLGE9clsxXSx7cmVzdGFydFNlcnZlcjpmdW5jdGlvbihlKXt2YXIgdCxuPWUuaW52YWxpZGF0ZVBlcnNpc3RlbnRDYWNoZTtyZXR1cm4odD1mdW5jdGlvbigpe3ZhciBlLHQscixvLGksbDtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbixyLG8sYT17bGFiZWw6MCxzZW50OmZ1bmN0aW9uKCl7aWYoMSZvWzBdKXRocm93IG9bMV07cmV0dXJuIG9bMV19LHRyeXM6W10sb3BzOltdfSxpPU9iamVjdC5jcmVhdGUoKFwiZnVuY3Rpb25cIj09dHlwZW9mIEl0ZXJhdG9yP0l0ZXJhdG9yOk9iamVjdCkucHJvdG90eXBlKTtyZXR1cm4gaS5uZXh0PWwoMCksaS50aHJvdz1sKDEpLGkucmV0dXJuPWwoMiksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoaVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxpO2Z1bmN0aW9uIGwobCl7cmV0dXJuIGZ1bmN0aW9uKHMpe3ZhciBjPVtsLHNdO2lmKG4pdGhyb3cgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtmb3IoO2kmJihpPTAsY1swXSYmKGE9MCkpLGE7KXRyeXtpZihuPTEsciYmKG89MiZjWzBdP3IucmV0dXJuOmNbMF0/ci50aHJvd3x8KChvPXIucmV0dXJuKSYmby5jYWxsKHIpLDApOnIubmV4dCkmJiEobz1vLmNhbGwocixjWzFdKSkuZG9uZSlyZXR1cm4gbztzd2l0Y2gocj0wLG8mJihjPVsyJmNbMF0sby52YWx1ZV0pLGNbMF0pe2Nhc2UgMDpjYXNlIDE6bz1jO2JyZWFrO2Nhc2UgNDpyZXR1cm4gYS5sYWJlbCsrLHt2YWx1ZTpjWzFdLGRvbmU6ITF9O2Nhc2UgNTphLmxhYmVsKysscj1jWzFdLGM9WzBdO2NvbnRpbnVlO2Nhc2UgNzpjPWEub3BzLnBvcCgpLGEudHJ5cy5wb3AoKTtjb250aW51ZTtkZWZhdWx0OmlmKCEobz0obz1hLnRyeXMpLmxlbmd0aD4wJiZvW28ubGVuZ3RoLTFdKSYmKDY9PT1jWzBdfHwyPT09Y1swXSkpe2E9MDtjb250aW51ZX1pZigzPT09Y1swXSYmKCFvfHxjWzFdPm9bMF0mJmNbMV08b1szXSkpe2EubGFiZWw9Y1sxXTticmVha31pZig2PT09Y1swXSYmYS5sYWJlbDxvWzFdKXthLmxhYmVsPW9bMV0sbz1jO2JyZWFrfWlmKG8mJmEubGFiZWw8b1syXSl7YS5sYWJlbD1vWzJdLGEub3BzLnB1c2goYyk7YnJlYWt9b1syXSYmYS5vcHMucG9wKCksYS50cnlzLnBvcCgpO2NvbnRpbnVlfWM9dC5jYWxsKGUsYSl9Y2F0Y2goZSl7Yz1bNixlXSxyPTB9ZmluYWxseXtuPW89MH1pZig1JmNbMF0pdGhyb3cgY1sxXTtyZXR1cm57dmFsdWU6Y1swXT9jWzFdOnZvaWQgMCxkb25lOiEwfX19fSh0aGlzLGZ1bmN0aW9uKHMpe3N3aXRjaChzLmxhYmVsKXtjYXNlIDA6YSghMCksZT1uP1wiL19fbmV4dGpzX3Jlc3RhcnRfZGV2P2ludmFsaWRhdGVQZXJzaXN0ZW50Q2FjaGU9MVwiOlwiL19fbmV4dGpzX3Jlc3RhcnRfZGV2XCIsdD0hMSxzLmxhYmVsPTE7Y2FzZSAxOnJldHVybiBzLnRyeXMucHVzaChbMSwxMSwxMiwxM10pLFs0LGZldGNoKFwiL19fbmV4dGpzX3NlcnZlcl9zdGF0dXNcIikudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5qc29uKCl9KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4ZWN1dGlvbklkfSkuY2F0Y2goZnVuY3Rpb24oZSl7cmV0dXJuIGNvbnNvbGUubG9nKFwiW05leHQuanMgRGV2VG9vbHNdIEZhaWxlZCB0byBmZXRjaCBzZXJ2ZXIgc3RhdHVzIHdoaWxlIHJlc3RhcnRpbmcgZGV2IHNlcnZlci5cIixlKSxudWxsfSldO2Nhc2UgMjppZighKHI9cy5zZW50KCkpKXJldHVybiBjb25zb2xlLmxvZyhcIltOZXh0LmpzIERldlRvb2xzXSBGYWlsZWQgdG8gZ2V0IHRoZSBjdXJyZW50IHNlcnZlciBleGVjdXRpb24gSUQgd2hpbGUgcmVzdGFydGluZyBkZXYgc2VydmVyLlwiKSxbMl07cmV0dXJuWzQsZmV0Y2goZSx7bWV0aG9kOlwiUE9TVFwifSldO2Nhc2UgMzppZighKG89cy5zZW50KCkpLm9rKXJldHVybiBjb25zb2xlLmxvZyhcIltOZXh0LmpzIERldlRvb2xzXSBGYWlsZWQgdG8gZmV0Y2ggcmVzdGFydCBzZXJ2ZXIgZW5kcG9pbnQuIFN0YXR1czpcIixvLnN0YXR1cyksWzJdO2k9MCxzLmxhYmVsPTQ7Y2FzZSA0OmlmKCEoaTwxMCkpcmV0dXJuWzMsMTBdO3JldHVybls0LG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe3JldHVybiBzZXRUaW1lb3V0KGUsMWUzKX0pXTtjYXNlIDU6cy5zZW50KCkscy5sYWJlbD02O2Nhc2UgNjpyZXR1cm4gcy50cnlzLnB1c2goWzYsOCwsOV0pLFs0LGZldGNoKFwiL19fbmV4dGpzX3NlcnZlcl9zdGF0dXNcIikudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gZS5qc29uKCl9KS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLmV4ZWN1dGlvbklkfSldO2Nhc2UgNzppZihsPXMuc2VudCgpLHIhPT1sKXJldHVybiB0PSEwLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSxbMl07cmV0dXJuWzMsOV07Y2FzZSA4OnJldHVybiBzLnNlbnQoKSxbMyw5XTtjYXNlIDk6cmV0dXJuIGkrKyxbMyw0XTtjYXNlIDEwOnJldHVybiBjb25zb2xlLmxvZyhcIltOZXh0LmpzIERldlRvb2xzXSBGYWlsZWQgdG8gcmVzdGFydCBzZXJ2ZXIuIEV4aGF1c3RlZCBhbGwgcG9sbGluZyBhdHRlbXB0cy5cIiksWzJdO2Nhc2UgMTE6cmV0dXJuIGNvbnNvbGUubG9nKFwiW05leHQuanMgRGV2VG9vbHNdIEZhaWxlZCB0byByZXN0YXJ0IHNlcnZlci5cIixzLnNlbnQoKSksWzJdO2Nhc2UgMTI6cmV0dXJuIHR8fGEoITEpLFs3XTtjYXNlIDEzOnJldHVyblsyXX19KX0sZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49YXJndW1lbnRzO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLG8pe3ZhciBhPXQuYXBwbHkoZSxuKTtmdW5jdGlvbiBpKGUpe3JwKGEscixvLGksbCxcIm5leHRcIixlKX1mdW5jdGlvbiBsKGUpe3JwKGEscixvLGksbCxcInRocm93XCIsZSl9aSh2b2lkIDApfSl9KSgpfSxpc1BlbmRpbmc6b30pLGVvPWVyLnJlc3RhcnRTZXJ2ZXIsZWE9ZXIuaXNQZW5kaW5nLGVpPWRhKCkuc2hhZG93Um9vdDtZWzBdIT09ZWkuaG9zdD8oaT1mdW5jdGlvbihlKXt2YXIgdD1laS5ob3N0O2lmKFwic3lzdGVtXCI9PT1lLnRhcmdldC52YWx1ZSl7dC5jbGFzc0xpc3QucmVtb3ZlKFwiZGFya1wiKSx0LmNsYXNzTGlzdC5yZW1vdmUoXCJsaWdodFwiKSxyQSh7dGhlbWU6XCJzeXN0ZW1cIn0pO3JldHVybn1cImRhcmtcIj09PWUudGFyZ2V0LnZhbHVlPyh0LmNsYXNzTGlzdC5hZGQoXCJkYXJrXCIpLHQuY2xhc3NMaXN0LnJlbW92ZShcImxpZ2h0XCIpLHJBKHt0aGVtZTpcImRhcmtcIn0pKToodC5jbGFzc0xpc3QucmVtb3ZlKFwiZGFya1wiKSx0LmNsYXNzTGlzdC5hZGQoXCJsaWdodFwiKSxyQSh7dGhlbWU6XCJsaWdodFwifSkpfSxZWzBdPWVpLmhvc3QsWVsxXT1pKTppPVlbMV07dmFyIGVsPWk7WVsyXSE9PWVlPyhsPWZ1bmN0aW9uKGUpe2VlKGUudGFyZ2V0LnZhbHVlKSxyQSh7ZGV2VG9vbHNQb3NpdGlvbjplLnRhcmdldC52YWx1ZX0pfSxZWzJdPWVlLFlbM109bCk6bD1ZWzNdO3ZhciBlcz1sO1lbNF0hPT1ldD8ocz1mdW5jdGlvbihlKXt2YXIgdD1OdW1iZXIoZS50YXJnZXQudmFsdWUpO2V0KHQpLHJBKHtzY2FsZTp0fSl9LFlbNF09ZXQsWVs1XT1zKTpzPVlbNV07dmFyIGVjPXM7cmV0dXJuIFlbNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oYz0oMCxiLmpzeCkoXCJoMlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1zZWN0aW9uLXRpdGxlXCIsY2hpbGRyZW46XCJHZW5lcmFsXCJ9KSxZWzZdPWMpOmM9WVs2XSxZWzddPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHU9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJsYWJlbFwiLHtodG1sRm9yOlwidGhlbWVcIixjaGlsZHJlbjpcIlRoZW1lXCJ9KSwoMCxiLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIlNlbGVjdCB5b3VyIHRoZW1lIHByZWZlcmVuY2UuXCJ9KV19KSxZWzddPXUpOnU9WVs3XSxZWzhdIT09Sz8oZD0oMCxiLmpzeCkockUse3RoZW1lOkt9KSxZWzhdPUssWVs5XT1kKTpkPVlbOV0sWVsxMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocD0oMCxiLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJzeXN0ZW1cIixjaGlsZHJlbjpcIlN5c3RlbVwifSksaD0oMCxiLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJsaWdodFwiLGNoaWxkcmVuOlwiTGlnaHRcIn0pLGY9KDAsYi5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwiZGFya1wiLGNoaWxkcmVuOlwiRGFya1wifSksWVsxMF09ZixZWzExXT1wLFlbMTJdPWgpOihmPVlbMTBdLHA9WVsxMV0saD1ZWzEyXSksWVsxM10hPT1lbHx8WVsxNF0hPT1kfHxZWzE1XSE9PUs/KG09KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbdSwoMCxiLmpzeHMpKHJrLHtpZDpcInRoZW1lXCIsbmFtZTpcInRoZW1lXCIscHJlZml4OmQsdmFsdWU6SyxvbkNoYW5nZTplbCxjaGlsZHJlbjpbcCxoLGZdfSldfSksWVsxM109ZWwsWVsxNF09ZCxZWzE1XT1LLFlbMTZdPW0pOm09WVsxNl0sWVsxN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZz0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLGIuanN4KShcImxhYmVsXCIse2h0bWxGb3I6XCJwb3NpdGlvblwiLGNoaWxkcmVuOlwiUG9zaXRpb25cIn0pLCgwLGIuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiQWRqdXN0IHRoZSBwbGFjZW1lbnQgb2YgeW91ciBkZXYgdG9vbHMuXCJ9KV19KSxZWzE3XT1nKTpnPVlbMTddLFlbMThdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHk9KDAsYi5qc3gpKFwib3B0aW9uXCIse3ZhbHVlOlwiYm90dG9tLWxlZnRcIixjaGlsZHJlbjpcIkJvdHRvbSBMZWZ0XCJ9KSx2PSgwLGIuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcImJvdHRvbS1yaWdodFwiLGNoaWxkcmVuOlwiQm90dG9tIFJpZ2h0XCJ9KSx3PSgwLGIuanN4KShcIm9wdGlvblwiLHt2YWx1ZTpcInRvcC1sZWZ0XCIsY2hpbGRyZW46XCJUb3AgTGVmdFwifSksQz0oMCxiLmpzeCkoXCJvcHRpb25cIix7dmFsdWU6XCJ0b3AtcmlnaHRcIixjaGlsZHJlbjpcIlRvcCBSaWdodFwifSksWVsxOF09eSxZWzE5XT12LFlbMjBdPXcsWVsyMV09Qyk6KHk9WVsxOF0sdj1ZWzE5XSx3PVlbMjBdLEM9WVsyMV0pLFlbMjJdIT09ZXN8fFlbMjNdIT09ZW4/KF89KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbZywoMCxiLmpzeHMpKHJrLHtpZDpcInBvc2l0aW9uXCIsbmFtZTpcInBvc2l0aW9uXCIsdmFsdWU6ZW4sb25DaGFuZ2U6ZXMsY2hpbGRyZW46W3ksdix3LENdfSldfSksWVsyMl09ZXMsWVsyM109ZW4sWVsyNF09Xyk6Xz1ZWzI0XSxZWzI1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhrPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwibGFiZWxcIix7aHRtbEZvcjpcInNpemVcIixjaGlsZHJlbjpcIlNpemVcIn0pLCgwLGIuanN4KShcInBcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1kZXNjcmlwdGlvblwiLGNoaWxkcmVuOlwiQWRqdXN0IHRoZSBzaXplIG9mIHlvdXIgZGV2IHRvb2xzLlwifSldfSksWVsyNV09ayk6az1ZWzI1XSxZWzI2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhFPU9iamVjdC5lbnRyaWVzKE8pLm1hcChyXyksWVsyNl09RSk6RT1ZWzI2XSxZWzI3XSE9PWVjfHxZWzI4XSE9PUo/KGo9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLXNlY3Rpb25cIixjaGlsZHJlbjpbaywoMCxiLmpzeCkocmsse2lkOlwic2l6ZVwiLG5hbWU6XCJzaXplXCIsdmFsdWU6SixvbkNoYW5nZTplYyxjaGlsZHJlbjpFfSldfSksWVsyN109ZWMsWVsyOF09SixZWzI5XT1qKTpqPVlbMjldLFlbMzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KFM9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJsYWJlbFwiLHtpZDpcImhpZGUtZGV2LXRvb2xzXCIsY2hpbGRyZW46XCJIaWRlIERldiBUb29scyBmb3IgdGhpcyBzZXNzaW9uXCJ9KSwoMCxiLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIkhpZGUgRGV2IFRvb2xzIHVudGlsIHlvdSByZXN0YXJ0IHlvdXIgZGV2IHNlcnZlciwgb3IgMSBkYXkuXCJ9KV19KSxZWzMwXT1TKTpTPVlbMzBdLFlbMzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KEI9KDAsYi5qc3gpKG4yLHt9KSxQPSgwLGIuanN4KShcInNwYW5cIix7Y2hpbGRyZW46XCJIaWRlXCJ9KSxZWzMxXT1CLFlbMzJdPVApOihCPVlbMzFdLFA9WVszMl0pLFlbMzNdIT09WD8oST0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOltTLCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWNvbnRyb2xcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiYnV0dG9uXCIse1wiYXJpYS1kZXNjcmliZWRieVwiOlwiaGlkZS1kZXYtdG9vbHNcIixuYW1lOlwiaGlkZS1kZXYtdG9vbHNcIixcImRhdGEtaGlkZS1kZXYtdG9vbHNcIjohMCxjbGFzc05hbWU6XCJhY3Rpb24tYnV0dG9uXCIsb25DbGljazpYLGNoaWxkcmVuOltCLFBdfSl9KV19KSxZWzMzXT1YLFlbMzRdPUkpOkk9WVszNF0sWVszNV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oej0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLGIuanN4KShcImxhYmVsXCIse2lkOlwiaGlkZS1kZXYtdG9vbHNcIixjaGlsZHJlbjpcIkhpZGUgRGV2IFRvb2xzIHNob3J0Y3V0XCJ9KSwoMCxiLmpzeCkoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpcIlNldCBhIGN1c3RvbSBrZXlib2FyZCBzaG9ydGN1dCB0byB0b2dnbGUgdmlzaWJpbGl0eS5cIn0pXX0pLFlbMzVdPXopOno9WVszNV0sWVszNl0hPT1HPyhUPW51bGwhPShEPW51bGw9PUc/dm9pZCAwOkcuc3BsaXQoXCIrXCIpKT9EOm51bGwsWVszNl09RyxZWzM3XT1UKTpUPVlbMzddLFlbMzhdIT09UXx8WVszOV0hPT1UPyhMPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46W3osKDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtY29udHJvbFwiLGNoaWxkcmVuOigwLGIuanN4KShybix7dmFsdWU6VCxvbkNoYW5nZTpRfSl9KV19KSxZWzM4XT1RLFlbMzldPVQsWVs0MF09TCk6TD1ZWzQwXSxZWzQxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhOPSgwLGIuanN4KShcImxhYmVsXCIse2NoaWxkcmVuOlwiRGlzYWJsZSBEZXYgVG9vbHMgZm9yIHRoaXMgcHJvamVjdFwifSksWVs0MV09Tik6Tj1ZWzQxXSxZWzQyXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhSPSgwLGIuanN4KShcImNvZGVcIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY29kZVwiLGNoaWxkcmVuOlwiZGV2SW5kaWNhdG9yczogZmFsc2VcIn0pLFlbNDJdPVIpOlI9WVs0Ml0sWVs0M109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oTT0oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1zZWN0aW9uXCIsY2hpbGRyZW46KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWhlYWRlclwiLGNoaWxkcmVuOltOLCgwLGIuanN4cykoXCJwXCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtZGVzY3JpcHRpb25cIixjaGlsZHJlbjpbXCJUbyBkaXNhYmxlIHRoaXMgVUkgY29tcGxldGVseSwgc2V0XCIsXCIgXCIsUixcIiBcIixcImluIHlvdXIgXCIsKDAsYi5qc3gpKFwiY29kZVwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5mby1jb2RlXCIsY2hpbGRyZW46XCJuZXh0LmNvbmZpZ1wifSksXCIgXCIsXCJmaWxlLlwiXX0pXX0pfSksWVs0M109TSk6TT1ZWzQzXSxZWzQ0XSE9PW18fFlbNDVdIT09X3x8WVs0Nl0hPT1qfHxZWzQ3XSE9PUl8fFlbNDhdIT09TD8oWj0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2VzLWNvbnRhaW5lclwiLGNoaWxkcmVuOlttLF8saixJLEwsTV19KSxZWzQ0XT1tLFlbNDVdPV8sWVs0Nl09aixZWzQ3XT1JLFlbNDhdPUwsWVs0OV09Wik6Wj1ZWzQ5XSxZWzUwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhVPSgwLGIuanN4KShcImgyXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLXNlY3Rpb24tdGl0bGVcIixjaGlsZHJlbjpcIkRldmVsb3BtZW50IFNlcnZlclwifSksWVs1MF09VSk6VT1ZWzUwXSxZWzUxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhGPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwicHJlZmVyZW5jZS1oZWFkZXJcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwibGFiZWxcIix7aWQ6XCJyZXN0YXJ0LWRldi1zZXJ2ZXJcIixjaGlsZHJlbjpcIlJlc3RhcnQgRGV2IFNlcnZlclwifSksKDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJSZXN0YXJ0cyB0aGUgZGV2ZWxvcG1lbnQgc2VydmVyIHdpdGhvdXQgbmVlZGluZyB0byBsZWF2ZSB0aGUgYnJvd3Nlci5cIn0pXX0pLFlbNTFdPUYpOkY9WVs1MV0sWVs1Ml0hPT1lbz8ocT1mdW5jdGlvbigpe3JldHVybiBlbyh7aW52YWxpZGF0ZVBlcnNpc3RlbnRDYWNoZTohMX0pfSxZWzUyXT1lbyxZWzUzXT1xKTpxPVlbNTNdLFlbNTRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KEg9KDAsYi5qc3gpKFwic3BhblwiLHtjaGlsZHJlbjpcIlJlc3RhcnRcIn0pLFlbNTRdPUgpOkg9WVs1NF0sWVs1NV0hPT1lYXx8WVs1Nl0hPT1xPyhWPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlcy1jb250YWluZXJcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOltGLCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWNvbnRyb2xcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJidXR0b25cIix7XCJhcmlhLWRlc2NyaWJlZGJ5XCI6XCJyZXN0YXJ0LWRldi1zZXJ2ZXJcIix0aXRsZTpcIlJlc3RhcnRzIHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgd2l0aG91dCBuZWVkaW5nIHRvIGxlYXZlIHRoZSBicm93c2VyLlwiLG5hbWU6XCJyZXN0YXJ0LWRldi1zZXJ2ZXJcIixcImRhdGEtcmVzdGFydC1kZXYtc2VydmVyXCI6ITAsY2xhc3NOYW1lOlwiYWN0aW9uLWJ1dHRvblwiLG9uQ2xpY2s6cSxkaXNhYmxlZDplYSxjaGlsZHJlbjpIfSl9KV19KX0pLFlbNTVdPWVhLFlbNTZdPXEsWVs1N109Vik6Vj1ZWzU3XSxZWzU4XSE9PWVhfHxZWzU5XSE9PWVvPygkPXByb2Nlc3MuZW52Ll9fTkVYVF9CVU5ETEVSX0hBU19QRVJTSVNURU5UX0NBQ0hFPygwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlcy1jb250YWluZXJcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2Utc2VjdGlvblwiLGNoaWxkcmVuOlsoMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtaGVhZGVyXCIsY2hpbGRyZW46WygwLGIuanN4KShcImxhYmVsXCIse2lkOlwicmVzZXQtYnVuZGxlci1jYWNoZVwiLGNoaWxkcmVuOlwiUmVzZXQgQnVuZGxlciBDYWNoZVwifSksKDAsYi5qc3gpKFwicFwiLHtjbGFzc05hbWU6XCJwcmVmZXJlbmNlLWRlc2NyaXB0aW9uXCIsY2hpbGRyZW46XCJDbGVhcnMgdGhlIGJ1bmRsZXIgY2FjaGUgYW5kIHJlc3RhcnRzIHRoZSBkZXYgc2VydmVyLiBIZWxwZnVsIGlmIHlvdSBhcmUgc2VlaW5nIHN0YWxlIGVycm9ycyBvciBjaGFuZ2VzIGFyZSBub3QgYXBwZWFyaW5nLlwifSldfSksKDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInByZWZlcmVuY2UtY29udHJvbFwiLGNoaWxkcmVuOigwLGIuanN4KShcImJ1dHRvblwiLHtcImFyaWEtZGVzY3JpYmVkYnlcIjpcInJlc2V0LWJ1bmRsZXItY2FjaGVcIix0aXRsZTpcIkNsZWFycyB0aGUgYnVuZGxlciBjYWNoZSBhbmQgcmVzdGFydHMgdGhlIGRldiBzZXJ2ZXIuIEhlbHBmdWwgaWYgeW91IGFyZSBzZWVpbmcgc3RhbGUgZXJyb3JzIG9yIGNoYW5nZXMgYXJlIG5vdCBhcHBlYXJpbmcuXCIsbmFtZTpcInJlc2V0LWJ1bmRsZXItY2FjaGVcIixcImRhdGEtcmVzZXQtYnVuZGxlci1jYWNoZVwiOiEwLGNsYXNzTmFtZTpcImFjdGlvbi1idXR0b25cIixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGVvKHtpbnZhbGlkYXRlUGVyc2lzdGVudENhY2hlOiEwfSl9LGRpc2FibGVkOmVhLGNoaWxkcmVuOigwLGIuanN4KShcInNwYW5cIix7Y2hpbGRyZW46XCJSZXNldCBDYWNoZVwifSl9KX0pXX0pfSk6bnVsbCxZWzU4XT1lYSxZWzU5XT1lbyxZWzYwXT0kKTokPVlbNjBdLFlbNjFdIT09Wnx8WVs2Ml0hPT1WfHxZWzYzXSE9PSQ/KFc9KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbYyxaLFUsViwkXX0pLFlbNjFdPVosWVs2Ml09VixZWzYzXT0kLFlbNjRdPVcpOlc9WVs2NF0sV31mdW5jdGlvbiByXyhlKXt2YXIgdCxuLHI9KG49MixmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfSh0PWUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHQsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJ4KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJ4KGUsdCl9fSh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxvPXJbMF0sYT1yWzFdO3JldHVybigwLGIuanN4KShcIm9wdGlvblwiLHt2YWx1ZTphLGNoaWxkcmVuOm99LG8pfWZ1bmN0aW9uIHJrKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYz0oMCxBLmMpKDExKTtyZXR1cm4oY1swXSE9PWU/KGE9ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfShlLFtcImNoaWxkcmVuXCIsXCJwcmVmaXhcIl0pLHI9ZS5jaGlsZHJlbixvPWUucHJlZml4LGNbMF09ZSxjWzFdPXIsY1syXT1vLGNbM109YSk6KHI9Y1sxXSxvPWNbMl0sYT1jWzNdKSxjWzRdIT09cnx8Y1s1XSE9PWEpPyhpPSgwLGIuanN4KShcInNlbGVjdFwiLCh0PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX0oe30sYSksbj1uPXtjaGlsZHJlbjpyfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxjWzRdPXIsY1s1XT1hLGNbNl09aSk6aT1jWzZdLGNbN109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obD0oMCxiLmpzeCkoclMse30pLGNbN109bCk6bD1jWzddLGNbOF0hPT1vfHxjWzldIT09aT8ocz0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlbGVjdC1idXR0b25cIixjaGlsZHJlbjpbbyxpLGxdfSksY1s4XT1vLGNbOV09aSxjWzEwXT1zKTpzPWNbMTBdLHN9ZnVuY3Rpb24gckUoZSl7dmFyIHQsbixyLG89KDAsQS5jKSgzKTtzd2l0Y2goZS50aGVtZSl7Y2FzZVwic3lzdGVtXCI6cmV0dXJuIG9bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkobjMse30pLG9bMF09dCk6dD1vWzBdLHQ7Y2FzZVwiZGFya1wiOnJldHVybiBvWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG49KDAsYi5qc3gpKG41LHt9KSxvWzFdPW4pOm49b1sxXSxuO2Nhc2VcImxpZ2h0XCI6cmV0dXJuIG9bMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj0oMCxiLmpzeCkobjQse30pLG9bMl09cik6cj1vWzJdLHI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIHJqPWVzKHJ3KCkpO2Z1bmN0aW9uIHJTKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixcImFyaWEtaGlkZGVuXCI6ITAsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTE0LjA2MDcgNS40OTk5OUwxMy41MzAzIDYuMDMwMzJMOC43MDcxIDEwLjg1MzVDOC4zMTY1OCAxMS4yNDQxIDcuNjgzNDEgMTEuMjQ0MSA3LjI5Mjg5IDEwLjg1MzVMMi40Njk2NiA2LjAzMDMyTDEuOTM5MzMgNS40OTk5OUwyLjk5OTk5IDQuNDM5MzNMMy41MzAzMiA0Ljk2OTY2TDcuOTk5OTkgOS40MzkzM0wxMi40Njk3IDQuOTY5NjZMMTMgNC40MzkzM0wxNC4wNjA3IDUuNDk5OTlaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIHJPKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgW2RhdGEtbmV4dGpzLWlzc3VlLWZlZWRiYWNrLWJ1dHRvbi1ncm91cF0ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtYWxsKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1pc3N1ZS1mZWVkYmFjay1idXR0b24tZ3JvdXBdIGJ1dHRvbiB7XFxuICAgIGhlaWdodDogMTAwJTtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtaXNzdWUtZmVlZGJhY2stYnV0dG9uLWdyb3VwXSBidXR0b246Zmlyc3QtY2hpbGQge1xcbiAgICBwYWRkaW5nOiA0cHggM3B4IDRweCA1cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCkgMCAwIHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtaXNzdWUtZmVlZGJhY2stYnV0dG9uLWdyb3VwXSBidXR0b246bGFzdC1jaGlsZCB7XFxuICAgIHBhZGRpbmc6IDRweCA1cHggNHB4IDNweDtcXG4gICAgYm9yZGVyLXJhZGl1czogMCB2YXIoLS1yb3VuZGVkLWZ1bGwpIHZhcigtLXJvdW5kZWQtZnVsbCkgMDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1pc3N1ZS1mZWVkYmFjay1zZXBhcmF0b3JdIHtcXG4gICAgd2lkdGg6IDFweDtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTQwMCk7XFxuICB9XFxuXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIHJPPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59dmFyIHJCPWVzKHJPKCkpO2Z1bmN0aW9uIHJQKCl7dmFyIGUsdCxuPShlPVtcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgICBcIixcIlxcbiAgICAgICAgXCIsXCJcXG4gICAgICAgIFwiLFwiXFxuICAgICAgXCJdLHR8fCh0PWUuc2xpY2UoMCkpLE9iamVjdC5mcmVlemUoT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSx7cmF3Ont2YWx1ZTpPYmplY3QuZnJlZXplKHQpfX0pKSk7cmV0dXJuIHJQPWZ1bmN0aW9uKCl7cmV0dXJuIG59LG59ZnVuY3Rpb24gckkoKXtyZXR1cm4oMCxiLmpzeCkoXCJzdHlsZVwiLHtjaGlsZHJlbjplcyhyUCgpLFwiXFxuICAubmV4dGpzLWRhdGEtY29weS1idXR0b24ge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNik7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgfVxcbiAgfVxcbiAgLm5leHRqcy1kYXRhLWNvcHktYnV0dG9uOmRpc2FibGVkIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgfVxcbiAgLm5leHRqcy1kYXRhLWNvcHktYnV0dG9uLS1pbml0aWFsOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgfVxcbiAgLm5leHRqcy1kYXRhLWNvcHktYnV0dG9uLS1lcnJvcjpub3QoOmRpc2FibGVkKSxcXG4gIC5uZXh0anMtZGF0YS1jb3B5LWJ1dHRvbi0tZXJyb3I6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItYW5zaS1yZWQpO1xcbiAgfVxcbiAgLm5leHRqcy1kYXRhLWNvcHktYnV0dG9uLS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWFuc2ktZ3JlZW4pO1xcbiAgfVxcblwiLCdcXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lLW5vLXNvdXJjZV0ge1xcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XFxuXFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtbGcpO1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWUtbm8tc291cmNlXTpsYXN0LWNoaWxkIHtcXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jYWxsLXN0YWNrLWZyYW1lLWlnbm9yZWQ9XCJ0cnVlXCJdIHtcXG4gICAgb3BhY2l0eTogMC42O1xcbiAgfVxcblxcbiAgW2RhdGEtbmV4dGpzLWNhbGwtc3RhY2stZnJhbWVdIHtcXG4gICAgdXNlci1zZWxlY3Q6IHRleHQ7XFxuICAgIGRpc3BsYXk6IGJsb2NrO1xcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcblxcbiAgICB1c2VyLXNlbGVjdDogdGV4dDtcXG4gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcXG4gICAgLW1vei11c2VyLXNlbGVjdDogdGV4dDtcXG4gICAgLW1zLXVzZXItc2VsZWN0OiB0ZXh0O1xcblxcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xcblxcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWxnKTtcXG4gIH1cXG5cXG4gIC5jYWxsLXN0YWNrLWZyYW1lLW1ldGhvZC1uYW1lIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA0cHg7XFxuXFxuICAgIG1hcmdpbi1ib3R0b206IDRweDtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTIwKTtcXG5cXG4gICAgc3ZnIHtcXG4gICAgICB3aWR0aDogdmFyKC0tc2l6ZS0xNnB4KTtcXG4gICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTZweCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5vcGVuLWluLWVkaXRvci1idXR0b24sIC5zb3VyY2UtbWFwcGluZy1lcnJvci1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgcGFkZGluZzogNHB4O1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZm9udCk7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jYWxsLXN0YWNrLWZyYW1lLWZpbGUtc291cmNlIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMjApO1xcbiAgfVxcbicsbkMsXCJcXG4gIFtkYXRhLW5leHRqcy1lbnZpcm9ubWVudC1uYW1lLWxhYmVsXSB7XFxuICAgIHBhZGRpbmc6IDJweCA2cHg7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1tZC0yKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS0xMDApO1xcbiAgICBmb250LXdlaWdodDogNjAwO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tc2l6ZS0yMCk7XFxuICB9XFxuXCIsbmYsZVgsbnUsdE8sXCJcXG4gIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllciB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IHZhcigtLXN0YWNrLWxheWVyLWhlaWdodCk7XFxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLXhsKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgICB0cmFuc2l0aW9uOlxcbiAgICAgIHRyYW5zbGF0ZSAzNTBtcyB2YXIoLS10aW1pbmctc3dpZnQpLFxcbiAgICAgIGJveC1zaGFkb3cgMzUwbXMgdmFyKC0tdGltaW5nLXN3aWZ0KTtcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0xIHtcXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXNpemUtMjQpKTtcXG4gIH1cXG5cXG4gIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0yIHtcXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXNpemUtNDgpKTtcXG4gICAgei1pbmRleDogLTE7XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2sge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICBib3R0b206IC0xcHg7XFxuICAgIGhlaWdodDogMDtcXG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stc3RhY2sge1xcbiAgICAtLXN0YWNrLWxheWVyLWhlaWdodDogNDRweDtcXG4gICAgLS1zdGFjay1sYXllci1oZWlnaHQtaGFsZjogY2FsYyh2YXIoLS1zdGFjay1sYXllci1oZWlnaHQpIC8gMik7XFxuICAgIC0tc3RhY2stbGF5ZXItdHJpbTogMTNweDtcXG4gICAgLS1zaGFkb3c6IDBweCAwLjkyNXB4IDAuOTI1cHggMHB4IHJnYmEoMCwgMCwgMCwgMC4wMiksXFxuICAgICAgMHB4IDMuN3B4IDcuNHB4IC0zLjdweCByZ2JhKDAsIDAsIDAsIDAuMDQpLFxcbiAgICAgIDBweCAxNC44cHggMjIuMnB4IC03LjRweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xcblxcbiAgICBkaXNwbGF5OiBncmlkO1xcbiAgICBwbGFjZS1pdGVtczogY2VudGVyIGNlbnRlcjtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHBvc2l0aW9uOiBmaXhlZDtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgei1pbmRleDogLTE7XFxuICAgIG1heC13aWR0aDogdmFyKC0tbmV4dC1kaWFsb2ctbWF4LXdpZHRoKTtcXG5cXG4gICAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyIHtcXG4gICAgICBncmlkLWFyZWE6IDEgLyAxO1xcbiAgICAgIC8qIEhpZGUgKi9cXG4gICAgICB0cmFuc2xhdGU6IDAgY2FsYyh2YXIoLS1zdGFjay1sYXllci1oZWlnaHQpICogLTEpO1xcbiAgICB9XFxuXFxuICAgICZbZGF0YS1zdGFjay1jb3VudD0nMSddLFxcbiAgICAmW2RhdGEtc3RhY2stY291bnQ9JzInXSB7XFxuICAgICAgLmVycm9yLW92ZXJsYXktYm90dG9tLXN0YWNrLWxheWVyLTEge1xcbiAgICAgICAgdHJhbnNsYXRlOiAwXFxuICAgICAgICAgIGNhbGModmFyKC0tc3RhY2stbGF5ZXItaGVpZ2h0LWhhbGYpICogLTEgLSB2YXIoLS1zdGFjay1sYXllci10cmltKSk7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgICZbZGF0YS1zdGFjay1jb3VudD0nMiddIHtcXG4gICAgICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMiB7XFxuICAgICAgICB0cmFuc2xhdGU6IDAgY2FsYyh2YXIoLS1zdGFjay1sYXllci10cmltKSAqIC0xICogMik7XFxuICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8qIE9ubHkgdGhlIGJvdHRvbSBzdGFjayBzaG91bGQgaGF2ZSB0aGUgc2hhZG93ICovXFxuICAgICZbZGF0YS1zdGFjay1jb3VudD0nMSddIC5lcnJvci1vdmVybGF5LWJvdHRvbS1zdGFjay1sYXllci0xIHtcXG4gICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cpO1xcbiAgICB9XFxuXFxuICAgICZbZGF0YS1zdGFjay1jb3VudD0nMiddIHtcXG4gICAgICAuZXJyb3Itb3ZlcmxheS1ib3R0b20tc3RhY2stbGF5ZXItMiB7XFxuICAgICAgICBib3gtc2hhZG93OiB2YXIoLS1zaGFkb3cpO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblwiLFwiXFxuICAuZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uIHtcXG4gICAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDhweDtcXG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1jb3VudCB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTE0KTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xcbiAgfVxcblxcbiAgLmVycm9yLW92ZXJsYXktcGFnaW5hdGlvbi1idXR0b24ge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG5cXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjQpO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMjQpO1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTMwMCk7XFxuICAgIGZsZXgtc2hyaW5rOiAwO1xcblxcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgfVxcblxcbiAgICAmOm5vdCg6ZGlzYWJsZWQpOmFjdGl2ZSB7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS01MDApO1xcbiAgICB9XFxuXFxuICAgICY6ZGlzYWJsZWQge1xcbiAgICAgIG9wYWNpdHk6IDAuNTtcXG4gICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xcbiAgICB9XFxuICB9XFxuXFxuICAuZXJyb3Itb3ZlcmxheS1wYWdpbmF0aW9uLWJ1dHRvbi1pY29uIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktMTAwMCk7XFxuICB9XFxuXCIsJ1xcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0ge1xcbiAgICAtLWNvZGUtZnJhbWUtcGFkZGluZzogMTJweDtcXG4gICAgLS1jb2RlLWZyYW1lLWxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTE2KTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItYmFja2dyb3VuZC0yMDApO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktNDAwKTtcXG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tY29kZS1mcmFtZS1saW5lLWhlaWdodCk7XFxuICAgIG1hcmdpbjogOHB4IDA7XFxuXFxuICAgIHN2ZyB7XFxuICAgICAgd2lkdGg6IHZhcigtLXNpemUtMTYpO1xcbiAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0xNik7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC5jb2RlLWZyYW1lLWxpbmssXFxuICAuY29kZS1mcmFtZS1wcmUge1xcbiAgICBwYWRkaW5nOiB2YXIoLS1jb2RlLWZyYW1lLXBhZGRpbmcpO1xcbiAgfVxcblxcbiAgLmNvZGUtZnJhbWUtbGluayBzdmcge1xcbiAgICBmbGV4LXNocmluazogMDtcXG4gIH1cXG5cXG4gIC5jb2RlLWZyYW1lLWxpbmVzIHtcXG4gICAgbWluLXdpZHRoOiBtYXgtY29udGVudDtcXG4gIH1cXG5cXG4gIC5jb2RlLWZyYW1lLWxpbmsgW2RhdGEtdGV4dF0ge1xcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgICBtYXJnaW46IGF1dG8gNnB4O1xcbiAgfVxcblxcbiAgLmNvZGUtZnJhbWUtaGVhZGVyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMTAwbXMgZWFzZS1vdXQ7XFxuICAgIGJvcmRlci1yYWRpdXM6IDhweCA4cHggMCAwO1xcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgfVxcblxcbiAgW2RhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rLXNvdXJjZS1maWxlXSB7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgbWFyZ2luOiAtNHB4IDAgLTRweCBhdXRvO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG5cXG4gICAgJjpmb2N1cy12aXNpYmxlIHtcXG4gICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICBvdXRsaW5lLW9mZnNldDogLTJweDtcXG4gICAgfVxcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdOjpzZWxlY3Rpb24sXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSAqOjpzZWxlY3Rpb24ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXNlbGVjdGlvbik7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtY29kZWZyYW1lXSAqOm5vdChhKSB7XFxuICAgIGNvbG9yOiBpbmhlcml0O1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWUtbGluZV1bZGF0YS1uZXh0anMtY29kZWZyYW1lLWxpbmUtLWVycm9yZWQ9XCJ0cnVlXCJdIHtcXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgICBpc29sYXRpb246IGlzb2xhdGU7XFxuXFxuICAgID4gc3BhbiB7IFxcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICB6LWluZGV4OiAxO1xcbiAgICB9XFxuXFxuICAgICY6OmFmdGVyIHtcXG4gICAgICBjb250ZW50OiBcIlwiO1xcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1jb2RlLWZyYW1lLXBhZGRpbmcpICogMik7XFxuICAgICAgaGVpZ2h0OiB2YXIoLS1jb2RlLWZyYW1lLWxpbmUtaGVpZ2h0KTtcXG4gICAgICBsZWZ0OiBjYWxjKC0xICogdmFyKC0tY29kZS1mcmFtZS1wYWRkaW5nKSk7XFxuICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcmVkLTIwMCk7XFxuICAgICAgYm94LXNoYWRvdzogMnB4IDAgMCAwIHZhcigtLWNvbG9yLXJlZC05MDApIGluc2V0O1xcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgfVxcbiAgfVxcblxcblxcbiAgW2RhdGEtbmV4dGpzLWNvZGVmcmFtZV0gPiAqIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgfVxcblxcbiAgLmNvZGUtZnJhbWUtbGluayB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIG1hcmdpbjogMDtcXG4gICAgb3V0bGluZTogMDtcXG4gIH1cXG4gIC5jb2RlLWZyYW1lLWxpbmsgW2RhdGEtaWNvbj1cXCdyaWdodFxcJ10ge1xcbiAgICBtYXJnaW4tbGVmdDogYXV0bztcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIGRpdiA+IHByZSB7XFxuICAgIG92ZXJmbG93OiBoaWRkZW47XFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcXG4gIH1cXG5cXG4gIFtkYXRhLW5leHRqcy1jb2RlZnJhbWVdIHN2ZyB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1ncmF5LTkwMCk7XFxuICB9XFxuJyxcIlxcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXTo6c2VsZWN0aW9uLFxcbiAgW2RhdGEtbmV4dGpzLXRlcm1pbmFsXSAqOjpzZWxlY3Rpb24ge1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLXNlbGVjdGlvbik7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdICoge1xcbiAgICBjb2xvcjogaW5oZXJpdDtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250LXN0YWNrLW1vbm9zcGFjZSk7XFxuICB9XFxuXFxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdID4gZGl2ID4gcCB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICBtYXJnaW46IDA7XFxuICB9XFxuICBbZGF0YS1uZXh0anMtdGVybWluYWxdID4gZGl2ID4gcDpob3ZlciB7XFxuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDtcXG4gIH1cXG4gIFtkYXRhLW5leHRqcy10ZXJtaW5hbF0gZGl2ID4gcHJlIHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgfVxcblwiLFwiXFxuICBbZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmtdIHN2ZyB7XFxuICAgIHdpZHRoOiBhdXRvO1xcbiAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTQpO1xcbiAgICBtYXJnaW4tbGVmdDogOHB4O1xcbiAgfVxcbiAgW2RhdGEtd2l0aC1vcGVuLWluLWVkaXRvci1saW5rXSB7XFxuICAgIGN1cnNvcjogcG9pbnRlcjtcXG4gIH1cXG4gIFtkYXRhLXdpdGgtb3Blbi1pbi1lZGl0b3ItbGlua106aG92ZXIge1xcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZSBkb3R0ZWQ7XFxuICB9XFxuICBbZGF0YS13aXRoLW9wZW4taW4tZWRpdG9yLWxpbmstaW1wb3J0LXRyYWNlXSB7XFxuICAgIG1hcmdpbi1sZWZ0OiAxNnB4O1xcbiAgfVxcblwiLFwiXCIsXCJcXG4gIC5uZXh0anMtZXJyb3Itd2l0aC1zdGF0aWMge1xcbiAgICBib3R0b206IGNhbGMoMTZweCAqIDQuNSk7XFxuICB9XFxuICBwLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fbGluayB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tc2l6ZS0xNCk7XFxuICB9XFxuICBwLm5leHRqc19fY29udGFpbmVyX2Vycm9yc19fbm90ZXMge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3RhY2stbm90ZXMpO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTQpO1xcbiAgICBsaW5lLWhlaWdodDogMS41O1xcbiAgfVxcbiAgLm5leHRqcy1jb250YWluZXItZXJyb3JzLWJvZHkgPiBoMjpub3QoOmZpcnN0LWNoaWxkKSB7XFxuICAgIG1hcmdpbi10b3A6IGNhbGMoMTZweCArIDhweCk7XFxuICB9XFxuICAubmV4dGpzLWNvbnRhaW5lci1lcnJvcnMtYm9keSA+IGgyIHtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXRpdGxlLWNvbG9yKTtcXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMjApO1xcbiAgfVxcbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50IHtcXG4gICAgY3Vyc29yOiBwb2ludGVyO1xcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlO1xcbiAgfVxcbiAgLm5leHRqcy10b2FzdC1lcnJvcnMtcGFyZW50OmhvdmVyIHtcXG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xcbiAgfVxcbiAgLm5leHRqcy10b2FzdC1lcnJvcnMge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XFxuICB9XFxuICAubmV4dGpzLXRvYXN0LWVycm9ycyA+IHN2ZyB7XFxuICAgIG1hcmdpbi1yaWdodDogOHB4O1xcbiAgfVxcbiAgLm5leHRqcy10b2FzdC1oaWRlLWJ1dHRvbiB7XFxuICAgIG1hcmdpbi1sZWZ0OiAyNHB4O1xcbiAgICBib3JkZXI6IG5vbmU7XFxuICAgIGJhY2tncm91bmQ6IG5vbmU7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hbnNpLWJyaWdodC13aGl0ZSk7XFxuICAgIHBhZGRpbmc6IDA7XFxuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4yNXMgZWFzZTtcXG4gICAgb3BhY2l0eTogMC43O1xcbiAgfVxcbiAgLm5leHRqcy10b2FzdC1oaWRlLWJ1dHRvbjpob3ZlciB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAubmV4dGpzX19jb250YWluZXJfZXJyb3JzX19lcnJvcl90aXRsZSB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgbWFyZ2luLWJvdHRvbTogMTRweDtcXG4gIH1cXG4gIC5lcnJvci1vdmVybGF5LW5vdGVzLWNvbnRhaW5lciB7XFxuICAgIG1hcmdpbjogOHB4IDJweDtcXG4gIH1cXG4gIC5lcnJvci1vdmVybGF5LW5vdGVzLWNvbnRhaW5lciBwIHtcXG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xcbiAgfVxcblwiLG5aLFwiXFxuICAubmV4dGpzLWNvbnRhaW5lci1idWlsZC1lcnJvci12ZXJzaW9uLXN0YXR1cyB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBnYXA6IDRweDtcXG5cXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI2KTtcXG4gICAgcGFkZGluZzogNnB4IDhweCA2cHggNnB4O1xcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLWdyYXktYWxwaGEtNDAwKTtcXG4gICAgYm94LXNoYWRvdzogdmFyKC0tc2hhZG93LXNtYWxsKTtcXG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG5cXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLWdyYXktOTAwKTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLXNpemUtMTYpO1xcbiAgfVxcblxcbiAgYS5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLXZlcnNpb24tc3RhdHVzIHtcXG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS05MDApO1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ncmF5LTEwMCk7XFxuICAgIH1cXG5cXG4gICAgJjpmb2N1cyB7XFxuICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgIH1cXG4gIH1cXG5cXG4gIC52ZXJzaW9uLXN0YWxlbmVzcy1pbmRpY2F0b3IuZnJlc2gge1xcbiAgICBmaWxsOiB2YXIoLS1jb2xvci1ncmVlbi04MDApO1xcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWdyZWVuLTMwMCk7XFxuICB9XFxuICAudmVyc2lvbi1zdGFsZW5lc3MtaW5kaWNhdG9yLnN0YWxlIHtcXG4gICAgZmlsbDogdmFyKC0tY29sb3ItYW1iZXItODAwKTtcXG4gICAgc3Ryb2tlOiB2YXIoLS1jb2xvci1hbWJlci0zMDApO1xcbiAgfVxcbiAgLnZlcnNpb24tc3RhbGVuZXNzLWluZGljYXRvci5vdXRkYXRlZCB7XFxuICAgIGZpbGw6IHZhcigtLWNvbG9yLXJlZC04MDApO1xcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLXJlZC0zMDApO1xcbiAgfVxcbiAgLnZlcnNpb24tc3RhbGVuZXNzLWluZGljYXRvci51bmtub3duIHtcXG4gICAgZmlsbDogdmFyKC0tY29sb3ItZ3JheS04MDApO1xcbiAgICBzdHJva2U6IHZhcigtLWNvbG9yLWdyYXktMzAwKTtcXG4gIH1cXG5cXG4gIC5uZXh0anMtY29udGFpbmVyLWJ1aWxkLWVycm9yLXZlcnNpb24tc3RhdHVzID4gLnR1cmJvcGFjay10ZXh0IHtcXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxcbiAgICAgIHRvIHJpZ2h0LFxcbiAgICAgIHZhcigtLWNvbG9yLXR1cmJvcGFjay10ZXh0LXJlZCkgMCUsXFxuICAgICAgdmFyKC0tY29sb3ItdHVyYm9wYWNrLXRleHQtYmx1ZSkgMTAwJVxcbiAgICApO1xcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7XFxuICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0O1xcbiAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICB9XFxuXCIsXCJcXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlIHtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItZ3JheS00MDApO1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3ItZ3JheS0xMDAwKTtcXG4gICAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnQtc3RhY2stbW9ub3NwYWNlKTtcXG4gICAgcGFkZGluZzogMnB4IDRweDtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTMpO1xcbiAgICB3aGl0ZS1zcGFjZTogYnJlYWstc3BhY2VzO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kLTIpO1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2stY29udGFpbmVyIHtcXG4gICAgcGFkZGluZzogNnB4O1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2sge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMjAwKTtcXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kLTIpO1xcbiAgICBtaW4td2lkdGg6IDMyNnB4O1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2stcHJlIHtcXG4gICAgbWFyZ2luOiAwO1xcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udC1zdGFjay1tb25vc3BhY2UpO1xcbiAgICBmb250LXNpemU6IHZhcigtLXNpemUtMTIpO1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvcHktYnV0dG9uIHtcXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xcblxcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgcmlnaHQ6IDhweDtcXG4gICAgdG9wOiA4cHg7XFxuICAgIHBhZGRpbmc6IDRweDtcXG4gICAgaGVpZ2h0OiB2YXIoLS1zaXplLTI0KTtcXG4gICAgd2lkdGg6IHZhcigtLXNpemUtMjQpO1xcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLW1kLTIpO1xcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMCk7XFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJhY2tncm91bmQtMTAwKTtcXG4gIH1cXG5cXG4gIC5kZXYtdG9vbHMtaW5mby1jb2RlLWJsb2NrLWxpbmUge1xcbiAgICBkaXNwbGF5OiBibG9jaztcXG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcXG4gICAgcGFkZGluZzogMCAxNnB4O1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2stbGluZS5kZXYtdG9vbHMtaW5mby1oaWdobGlnaHQge1xcbiAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkIHZhcigtLWNvbG9yLWJsdWUtOTAwKTtcXG4gICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmx1ZS00MDApO1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi1rZXkge1xcbiAgICBjb2xvcjogdmFyKC0tY29sb3Itc3ludGF4LWtleXdvcmQpO1xcbiAgfVxcblxcbiAgLmRldi10b29scy1pbmZvLWNvZGUtYmxvY2stanNvbi12YWx1ZSB7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1zeW50YXgtbGluayk7XFxuICB9XFxuXCIsXCJcIixyaiwnXFxuICAubmV4dGpzLXNjcm9sbC1mYWRlciB7XFxuICAgIC0tYmx1cjogMXB4O1xcbiAgICAtLXN0b3A6IDI1JTtcXG4gICAgLS1oZWlnaHQ6IDE1MHB4O1xcbiAgICAtLWNvbG9yLWJnOiB2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMCk7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgIHVzZXItc2VsZWN0OiBub25lO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiB2YXIoLS1oZWlnaHQpO1xcbiAgICBsZWZ0OiAwO1xcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIodmFyKC0tYmx1cikpO1xcblxcbiAgICAmW2RhdGEtc2lkZT1cInRvcFwiXSB7XFxuICAgICAgdG9wOiAwO1xcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHRyYW5zcGFyZW50LCB2YXIoLS1jb2xvci1iZykpO1xcbiAgICAgIG1hc2staW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHZhcigtLWNvbG9yLWJnKSB2YXIoLS1zdG9wKSwgdHJhbnNwYXJlbnQpO1xcbiAgICB9XFxuICB9XFxuJyxyQixydSl9KX1mdW5jdGlvbiByeihlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gclQoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJ6KGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJ6KGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIHJEKGUsdCl7dmFyIG4scixvLGEsaT0oMCxBLmMpKDEwKSxsPXZvaWQgMCE9PWUmJmU7aVswXSE9PXQ/KG49dm9pZCAwPT09dD97fTp0LGlbMF09dCxpWzFdPW4pOm49aVsxXTt2YXIgcz1uLGM9clQoKDAseC51c2VTdGF0ZSkobCksMiksdT1jWzBdLGQ9Y1sxXSxmPXJUKCgwLHgudXNlU3RhdGUpKCExKSwyKSxwPWZbMF0saD1mWzFdLG09cy5lbnRlckRlbGF5LGc9cy5leGl0RGVsYXkseT12b2lkIDA9PT1tPzE6bSx2PXZvaWQgMD09PWc/MDpnO3JldHVybiBpWzJdIT09bHx8aVszXSE9PXl8fGlbNF0hPT12PyhyPWZ1bmN0aW9uKCl7dmFyIGUsdDtyZXR1cm4gbD8oZCghMCkseTw9MD9oKCEwKTplPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtoKCEwKX0seSkpOihoKCExKSx2PD0wP2QoITEpOnQ9c2V0VGltZW91dChmdW5jdGlvbigpe2QoITEpfSx2KSksZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQoZSksY2xlYXJUaW1lb3V0KHQpfX0sbz1bbCx5LHZdLGlbMl09bCxpWzNdPXksaVs0XT12LGlbNV09cixpWzZdPW8pOihyPWlbNV0sbz1pWzZdKSwoMCx4LnVzZUVmZmVjdCkocixvKSxpWzddIT09dXx8aVs4XSE9PXA/KGE9e21vdW50ZWQ6dSxyZW5kZXJlZDpwfSxpWzddPXUsaVs4XT1wLGlbOV09YSk6YT1pWzldLGF9ZnVuY3Rpb24gckwoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIHJOKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiByUihlKXt2YXIgdCxuLHIsbyxhLGksbCxzPSgwLEEuYykoMTgpLGM9ZS5zdGF0ZSx1PWUuZGlzcGF0Y2gsZD1lLmdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzLGY9ZS5ydW50aW1lRXJyb3JzLHA9ZS5lcnJvckNvdW50LGg9ISFwcm9jZXNzLmVudi5UVVJCT1BBQ0s7c1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PXtleGl0RGVsYXk6MjAwfSxzWzBdPXQpOnQ9c1swXTt2YXIgbT1yRChjLmlzRXJyb3JPdmVybGF5T3Blbix0KSxnPW0ubW91bnRlZCx5PW0ucmVuZGVyZWQ7c1sxXSE9PXB8fHNbMl0hPT15fHxzWzNdIT09Yy52ZXJzaW9uSW5mbz8obj17cmVuZGVyZWQ6eSx0cmFuc2l0aW9uRHVyYXRpb25NczoyMDAsaXNUdXJib3BhY2s6aCx2ZXJzaW9uSW5mbzpjLnZlcnNpb25JbmZvLGVycm9yQ291bnQ6cH0sc1sxXT1wLHNbMl09eSxzWzNdPWMudmVyc2lvbkluZm8sc1s0XT1uKTpuPXNbNF07dmFyIHY9bjtyZXR1cm4gbnVsbCE9PWMuYnVpbGRFcnJvcj8oc1s1XSE9PXZ8fHNbNl0hPT1jLmJ1aWxkRXJyb3I/KHI9KDAsYi5qc3gpKG55LHJOKHJMKHt9LHYpLHttZXNzYWdlOmMuYnVpbGRFcnJvcixyZW5kZXJlZDohMH0pKSxzWzVdPXYsc1s2XT1jLmJ1aWxkRXJyb3Isc1s3XT1yKTpyPXNbN10scik6Zi5sZW5ndGg/Zz8oc1sxMF0hPT11PyhpPWZ1bmN0aW9uKCl7dSh7dHlwZTpGfSl9LHNbMTBdPXUsc1sxMV09aSk6aT1zWzExXSxzWzEyXSE9PXZ8fHNbMTNdIT09ZHx8c1sxNF0hPT1mfHxzWzE1XSE9PWMuZGVidWdJbmZvfHxzWzE2XSE9PWk/KGw9KDAsYi5qc3gpKG5XLHJOKHJMKHt9LHYpLHtkZWJ1Z0luZm86Yy5kZWJ1Z0luZm8sZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHM6ZCxydW50aW1lRXJyb3JzOmYsb25DbG9zZTppfSkpLHNbMTJdPXYsc1sxM109ZCxzWzE0XT1mLHNbMTVdPWMuZGVidWdJbmZvLHNbMTZdPWksc1sxN109bCk6bD1zWzE3XSxsKTooc1s5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhhPSgwLGIuanN4KSh4LlN1c3BlbnNlLHt9KSxzWzldPWEpOmE9c1s5XSxhKTooc1s4XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPSgwLGIuanN4KSh4LlN1c3BlbnNlLHt9KSxzWzhdPW8pOm89c1s4XSxvKX1mdW5jdGlvbiByTShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gclooZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIHJVKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtyWihlLHQsblt0XSl9KX1yZXR1cm4gZX1mdW5jdGlvbiByRihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gck0oZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gck0oZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9dmFyIHJxPWZ1bmN0aW9uKGUpe3ZhciB0LG4scj0oMCxBLmMpKDQpO3JldHVybiBlLnN0YXRlLmJ1aWxkRXJyb3I/KHJbMF0hPT1lPyh0PSgwLGIuanN4KShyVixyVSh7fSxlKSksclswXT1lLHJbMV09dCk6dD1yWzFdLHQpOihyWzJdIT09ZT8obj0oMCxiLmpzeCkockgsclUoe30sZSkpLHJbMl09ZSxyWzNdPW4pOm49clszXSxuKX0sckg9ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoMTIpLGw9ZS5jaGlsZHJlbixzPWUuc3RhdGUsYz1lLmlzQXBwRGlyLHU9cy5lcnJvcnM7aVswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PXt9LGlbMF09dCk6dD1pWzBdO3ZhciBkPXJGKCgwLHgudXNlU3RhdGUpKHQpLDIpLGY9ZFswXSxwPWRbMV07aWYoaVsxXSE9PXV8fGlbMl0hPT1mKXtmb3IodmFyIGg9W10sbT1udWxsLGc9MDtnPHUubGVuZ3RoOysrZyl7dmFyIHk9dVtnXSx2PXkuaWQ7aWYodiBpbiBmKXtoLnB1c2goZlt2XSk7Y29udGludWV9bT15O2JyZWFrfW49W2gsbV0saVsxXT11LGlbMl09ZixpWzNdPW59ZWxzZSBuPWlbM107dmFyIGI9ckYobiwyKSx3PWJbMF0sQz1iWzFdO2lbNF0hPT1jfHxpWzVdIT09Qz8ocj1mdW5jdGlvbigpe2lmKG51bGwhPUMpe3ZhciBlLHQsbj0hMDtyZXR1cm4oZT1DLHQ9YyxueihmdW5jdGlvbigpe3ZhciBuLHIsbztyZXR1cm4gbkwodGhpcyxmdW5jdGlvbihhKXtzd2l0Y2goYS5sYWJlbCl7Y2FzZSAwOnZhciBpLGw7aWYobj17aWQ6ZS5pZCxydW50aW1lOiEwLGVycm9yOmUuZXJyb3IsdHlwZTplLnR5cGV9LCEoXCJ1c2VcImluIHgpKXJldHVyblszLDFdO3JldHVyblsyLG5EKG5UKHt9LG4pLHtmcmFtZXM6KGw9KGk9ZnVuY3Rpb24oKXtyZXR1cm4gbnooZnVuY3Rpb24oKXtyZXR1cm4gbkwodGhpcyxmdW5jdGlvbihuKXtzd2l0Y2gobi5sYWJlbCl7Y2FzZSAwOnJldHVybls0LGVFKGUuZnJhbWVzLG5QKGUuZXJyb3IpLHQpXTtjYXNlIDE6cmV0dXJuWzIsbi5zZW50KCldfX0pfSkoKX0pKCksZnVuY3Rpb24oKXtyZXR1cm4gbH0pfSldO2Nhc2UgMTpyZXR1cm4gcj1bblQoe30sbildLG89e30sWzQsZUUoZS5mcmFtZXMsblAoZS5lcnJvciksdCldO2Nhc2UgMjpyZXR1cm5bMixuRC5hcHBseSh2b2lkIDAsci5jb25jYXQoWyhvLmZyYW1lcz1hLnNlbnQoKSxvKV0pKV07Y2FzZSAzOnJldHVyblsyXX19KX0pKCkpLnRoZW4oZnVuY3Rpb24oZSl7biYmcChmdW5jdGlvbih0KXt2YXIgbixyO3JldHVybiBuPXJVKHt9LHQpLHI9bnVsbCE9KHI9clooe30sZS5pZCxlKSk/cjp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHIpKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLGUpKX0pLG59KX0pLGZ1bmN0aW9uKCl7bj0hMX19fSxvPVtDLGNdLGlbNF09YyxpWzVdPUMsaVs2XT1yLGlbN109byk6KHI9aVs2XSxvPWlbN10pLCgwLHgudXNlRWZmZWN0KShyLG8pO3ZhciBfPXUubGVuZ3RoO3JldHVybiBpWzhdIT09bHx8aVs5XSE9PXd8fGlbMTBdIT09Xz8oYT1sKHtydW50aW1lRXJyb3JzOncsdG90YWxFcnJvckNvdW50Ol99KSxpWzhdPWwsaVs5XT13LGlbMTBdPV8saVsxMV09YSk6YT1pWzExXSxhfSxyVj1mdW5jdGlvbihlKXtyZXR1cm4oMCxlLmNoaWxkcmVuKSh7cnVudGltZUVycm9yczpbXSx0b3RhbEVycm9yQ291bnQ6MX0pfTtmdW5jdGlvbiByJCgpe3ZhciBlLHQsbj0oMCxBLmMpKDQpLHI9ZGEoKSxvPXIuc2hhZG93Um9vdCxhPXIuc3RhdGU7cmV0dXJuIG5bMF0hPT1vfHxuWzFdIT09YS5zY2FsZT8oZT1mdW5jdGlvbigpeyhudWxsPT1vP3ZvaWQgMDpvLmhvc3QpJiZvLmhvc3Quc3R5bGUuc2V0UHJvcGVydHkoXCItLW5leHRqcy1kZXYtdG9vbHMtc2NhbGVcIixTdHJpbmcoYS5zY2FsZXx8MSkpfSx0PVtvLGEuc2NhbGVdLG5bMF09byxuWzFdPWEuc2NhbGUsblsyXT1lLG5bM109dCk6KGU9blsyXSx0PW5bM10pLCgwLHgudXNlTGF5b3V0RWZmZWN0KShlLHQpLG51bGx9dmFyIHJXPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9kZXZ0b29scy1pbmRpY2F0b3IvZGV2dG9vbHMtaW5kaWNhdG9yLmNzc1wiKSxyWT17fTtmdW5jdGlvbiBySyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gclgoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHJHKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByWChlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByWChlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiByUShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gckooZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTMuMDg4ODkgMTEuODM4NEwyLjYyNDg2IDEyLjMwMjRMMS42OTY3OCAxMS4zNzQ0TDIuMTYwODIgMTAuOTEwM0w2LjA3MTc4IDYuOTk5MzdMMi4xNjA4MiAzLjA4ODQxTDEuNjk2NzggMi42MjQzN0wyLjYyNDg2IDEuNjk2MjlMMy4wODg4OSAyLjE2MDMzTDYuOTk5ODYgNi4wNzEyOUwxMC45MTA4IDIuMTYwMzNMMTEuMzc0OSAxLjY5NjI5TDEyLjMwMjkgMi42MjQzN0wxMS44Mzg5IDMuMDg4NDFMNy45Mjc5MyA2Ljk5OTM3TDExLjgzODkgMTAuOTEwM0wxMi4zMDI5IDExLjM3NDRMMTEuMzc0OSAxMi4zMDI0TDEwLjkxMDggMTEuODM4NEw2Ljk5OTg2IDcuOTI3NDRMMy4wODg4OSAxMS44Mzg0WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLGFbMF09cik6cj1hWzBdLGFbMV0hPT1lKT8obz0oMCxiLmpzeCkoXCJzdmdcIiwodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt3aWR0aDpcIjEyXCIsaGVpZ2h0OlwiMTJcIix2aWV3Qm94OlwiMCAwIDE0IDE0XCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJ9LGUpLG49bj17Y2hpbGRyZW46cn0sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXModCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdChuKSkuZm9yRWFjaChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKSl9KSx0KSksYVsxXT1lLGFbMl09byk6bz1hWzJdLG99ZnVuY3Rpb24gcjAoZSl7dmFyIHQsbixyLG8sYT0oMCxBLmMpKDMpO3JldHVybihhWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTMuOTgwNzEgMS4xMjVMMS4xMjUgMy45ODA3MUwxLjEyNSA4LjAxOTI5TDMuOTgwNzEgMTAuODc1SDguMDE5MjlMMTAuODc1IDguMDE5MjlWMy45ODA3MUw4LjAxOTI5IDEuMTI1SDMuOTgwNzFaTTMuODI1MzggMEMzLjYyNjQ3IDAgMy40MzU3IDAuMDc5MDE3NiAzLjI5NTA1IDAuMjE5NjdMMC4yMTk2NyAzLjI5NTA1QzAuMDc5MDE3NiAzLjQzNTcgMCAzLjYyNjQ3IDAgMy44MjUzOFY4LjE3NDYyQzAgOC4zNzM1MyAwLjA3OTAxNzggOC41NjQzIDAuMjE5NjcgOC43MDQ5NUwzLjI5NTA1IDExLjc4MDNDMy40MzU3IDExLjkyMSAzLjYyNjQ3IDEyIDMuODI1MzggMTJIOC4xNzQ2MkM4LjM3MzUzIDEyIDguNTY0MyAxMS45MjEgOC43MDQ5NSAxMS43ODAzTDExLjc4MDMgOC43MDQ5NUMxMS45MjEgOC41NjQzIDEyIDguMzczNTMgMTIgOC4xNzQ2MlYzLjgyNTM4QzEyIDMuNjI2NDcgMTEuOTIxIDMuNDM1NyAxMS43ODAzIDMuMjk1MDVMOC43MDQ5NSAwLjIxOTY3QzguNTY0MyAwLjA3OTAxNzcgOC4zNzM1MyAwIDguMTc0NjIgMEgzLjgyNTM4Wk02LjU2MjUgMi44MTI1VjMuMzc1VjZWNi41NjI1SDUuNDM3NVY2VjMuMzc1VjIuODEyNUg2LjU2MjVaTTYgOUM2LjQxNDIxIDkgNi43NSA4LjY2NDIxIDYuNzUgOC4yNUM2Ljc1IDcuODM1NzkgNi40MTQyMSA3LjUgNiA3LjVDNS41ODU3OSA3LjUgNS4yNSA3LjgzNTc5IDUuMjUgOC4yNUM1LjI1IDguNjY0MjEgNS41ODU3OSA5IDYgOVpcIixmaWxsOlwiY3VycmVudENvbG9yXCJ9KSxhWzBdPXIpOnI9YVswXSxhWzFdIT09ZSk/KG89KDAsYi5qc3gpKFwic3ZnXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7d2lkdGg6XCIxMlwiLGhlaWdodDpcIjEyXCIsdmlld0JveDpcIjAgMCAxMiAxMlwiLGZpbGw6XCJub25lXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wifSxlKSxuPW49e2NoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGFbMV09ZSxhWzJdPW8pOm89YVsyXSxvfXJZLnN0eWxlVGFnVHJhbnNmb3JtPWgoKSxyWS5zZXRBdHRyaWJ1dGVzPXUoKSxyWS5pbnNlcnQ9cygpLHJZLmRvbUFQST1pKCksclkuaW5zZXJ0U3R5bGVFbGVtZW50PWYoKSxvKCkoclcuWixyWSksclcuWiYmclcuWi5sb2NhbHMmJnJXLloubG9jYWxzO3ZhciByMT0oMCx4LmNyZWF0ZUNvbnRleHQpKG51bGwpLHIyPWZ1bmN0aW9uKCl7cmV0dXJuKDAseC51c2VDb250ZXh0KShyMSl9O2Z1bmN0aW9uIHI0KGUpe3JldHVybiBvQSszNi9lLnNjYWxlKzl9ZnVuY3Rpb24gcjUoZSx0KXsobnVsbD09dHx8dD5lLmxlbmd0aCkmJih0PWUubGVuZ3RoKTtmb3IodmFyIG49MCxyPUFycmF5KHQpO248dDtuKyspcltuXT1lW25dO3JldHVybiByfWZ1bmN0aW9uIHIzKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiByNihlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gcjkoZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz1mdW5jdGlvbihlLHQpe2lmKG51bGw9PWUpcmV0dXJue307dmFyIG4scixvPXt9LGE9T2JqZWN0LmtleXMoZSk7Zm9yKHI9MDtyPGEubGVuZ3RoO3IrKyluPWFbcl0sdC5pbmRleE9mKG4pPj0wfHwob1tuXT1lW25dKTtyZXR1cm4gb30oZSx0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLCEodC5pbmRleE9mKG4pPj0wKSYmT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihvW25dPWVbbl0pfXJldHVybiBvfWZ1bmN0aW9uIHI4KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KGUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLCF0fHxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLHQpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiByNShlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiByNShlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiByNygpe3ZhciBlLHQsbj0oZT1bXCJcXG4gICAgICAgICAgW2RhdGEtbmV4dC1iYWRnZS1yb290XSB7XFxuICAgICAgICAgICAgLS10aW1pbmc6IGN1YmljLWJlemllcigwLjIzLCAwLjg4LCAwLjI2LCAwLjkyKTtcXG4gICAgICAgICAgICAtLWR1cmF0aW9uLWxvbmc6IDI1MG1zO1xcbiAgICAgICAgICAgIC0tY29sb3Itb3V0ZXItYm9yZGVyOiAjMTcxNzE3O1xcbiAgICAgICAgICAgIC0tY29sb3ItaW5uZXItYm9yZGVyOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjE0KTtcXG4gICAgICAgICAgICAtLWNvbG9yLWhvdmVyLWFscGhhLXN1YnRsZTogaHNsYSgwLCAwJSwgMTAwJSwgMC4xMyk7XFxuICAgICAgICAgICAgLS1jb2xvci1ob3Zlci1hbHBoYS1lcnJvcjogaHNsYSgwLCAwJSwgMTAwJSwgMC4yKTtcXG4gICAgICAgICAgICAtLWNvbG9yLWhvdmVyLWFscGhhLWVycm9yLTI6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMjUpO1xcbiAgICAgICAgICAgIC0tbWFyay1zaXplOiBjYWxjKHZhcigtLXNpemUpIC0gdmFyKC0tc2l6ZS0yKSAqIDIpO1xcblxcbiAgICAgICAgICAgIC0tZm9jdXMtY29sb3I6IHZhcigtLWNvbG9yLWJsdWUtODAwKTtcXG4gICAgICAgICAgICAtLWZvY3VzLXJpbmc6IDJweCBzb2xpZCB2YXIoLS1mb2N1cy1jb2xvcik7XFxuXFxuICAgICAgICAgICAgJjpoYXMoW2RhdGEtbmV4dC1iYWRnZV1bZGF0YS1lcnJvcj0ndHJ1ZSddKSB7XFxuICAgICAgICAgICAgICAtLWZvY3VzLWNvbG9yOiAjZmZmO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1kaXNhYmxlZC1pY29uXSB7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1uZXh0LWJhZGdlXSB7XFxuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXNpemUpO1xcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZSk7XFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcXG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcXG4gICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7XFxuICAgICAgICAgICAgYm94LXNoYWRvdzpcXG4gICAgICAgICAgICAgIDAgMCAwIDFweCB2YXIoLS1jb2xvci1vdXRlci1ib3JkZXIpLFxcbiAgICAgICAgICAgICAgaW5zZXQgMCAwIDAgMXB4IHZhcigtLWNvbG9yLWlubmVyLWJvcmRlciksXFxuICAgICAgICAgICAgICAwcHggMTZweCAzMnB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjI0KTtcXG4gICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNDhweCk7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTtcXG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XFxuICAgICAgICAgICAgc2NhbGU6IDE7XFxuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcXG4gICAgICAgICAgICB3aWxsLWNoYW5nZTogc2NhbGUsIGJveC1zaGFkb3csIHdpZHRoLCBiYWNrZ3JvdW5kO1xcbiAgICAgICAgICAgIHRyYW5zaXRpb246XFxuICAgICAgICAgICAgICBzY2FsZSB2YXIoLS1kdXJhdGlvbi1zaG9ydCkgdmFyKC0tdGltaW5nKSxcXG4gICAgICAgICAgICAgIHdpZHRoIHZhcigtLWR1cmF0aW9uLWxvbmcpIHZhcigtLXRpbWluZyksXFxuICAgICAgICAgICAgICBib3gtc2hhZG93IHZhcigtLWR1cmF0aW9uLWxvbmcpIHZhcigtLXRpbWluZyksXFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLXNob3J0KSBlYXNlO1xcblxcbiAgICAgICAgICAgICY6YWN0aXZlW2RhdGEtZXJyb3I9J2ZhbHNlJ10ge1xcbiAgICAgICAgICAgICAgc2NhbGU6IDAuOTU7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICZbZGF0YS1hbmltYXRlPSd0cnVlJ106bm90KDpob3Zlcikge1xcbiAgICAgICAgICAgICAgc2NhbGU6IDEuMDI7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICZbZGF0YS1lcnJvcj0nZmFsc2UnXTpoYXMoW2RhdGEtbmV4dC1tYXJrXTpmb2N1cy12aXNpYmxlKSB7XFxuICAgICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAzcHg7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICZbZGF0YS1lcnJvcj0ndHJ1ZSddIHtcXG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNjYTJhMzA7XFxuICAgICAgICAgICAgICAtLWNvbG9yLWlubmVyLWJvcmRlcjogI2U1NDg0ZDtcXG5cXG4gICAgICAgICAgICAgIFtkYXRhLW5leHQtbWFya10ge1xcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ob3Zlci1hbHBoYS1lcnJvcik7XFxuICAgICAgICAgICAgICAgIG91dGxpbmUtb2Zmc2V0OiAwcHg7XFxuXFxuICAgICAgICAgICAgICAgICY6Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgICAgICAgICAgICAgb3V0bGluZS1vZmZzZXQ6IC0xcHg7XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItaG92ZXItYWxwaGEtZXJyb3ItMik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJltkYXRhLWVycm9yLWV4cGFuZGVkPSdmYWxzZSddW2RhdGEtZXJyb3I9J3RydWUnXSB+IFtkYXRhLWRvdF0ge1xcbiAgICAgICAgICAgICAgc2NhbGU6IDE7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgID4gZGl2IHtcXG4gICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb2xsYXBzZV06Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICAgICAgb3V0bGluZTogdmFyKC0tZm9jdXMtcmluZyk7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzXTpoYXMoW2RhdGEtaXNzdWVzLW9wZW5dOmZvY3VzLXZpc2libGUpIHtcXG4gICAgICAgICAgICBvdXRsaW5lOiB2YXIoLS1mb2N1cy1yaW5nKTtcXG4gICAgICAgICAgICBvdXRsaW5lLW9mZnNldDogLTFweDtcXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1kb3RdIHtcXG4gICAgICAgICAgICBjb250ZW50OiAnJztcXG4gICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZS04KTtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtOCk7XFxuICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjtcXG4gICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAxcHggdmFyKC0tY29sb3Itb3V0ZXItYm9yZGVyKTtcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xcbiAgICAgICAgICAgIHRvcDogMnB4O1xcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XFxuICAgICAgICAgICAgc2NhbGU6IDA7XFxuICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XFxuICAgICAgICAgICAgdHJhbnNpdGlvbjogc2NhbGUgMjAwbXMgdmFyKC0tdGltaW5nKTtcXG4gICAgICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiB2YXIoLS1kdXJhdGlvbi1zaG9ydCk7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzXSB7XFxuICAgICAgICAgICAgLS1wYWRkaW5nLWxlZnQ6IDhweDtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGdhcDogMnB4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7XFxuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogOHB4O1xcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0zMik7XFxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLXNob3J0KSBlYXNlO1xcblxcbiAgICAgICAgICAgICY6aGFzKFtkYXRhLWlzc3Vlcy1vcGVuXTpob3Zlcikge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItaG92ZXItYWxwaGEtZXJyb3IpO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAmOmhhcyhbZGF0YS1pc3N1ZXMtY29sbGFwc2VdKSB7XFxuICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBjYWxjKHZhcigtLXBhZGRpbmctbGVmdCkgLyAyKTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgW2RhdGEtY3Jvc3NdIHtcXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZTogMHB4IC0xcHg7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLWlzc3Vlcy1vcGVuXSB7XFxuICAgICAgICAgICAgZm9udC1zaXplOiB2YXIoLS1zaXplLTEzKTtcXG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XFxuICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50O1xcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICAgICAgICAgIGdhcDogMnB4O1xcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgICAgICAgICAgbWFyZ2luOiAwO1xcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1zaXplLTM2KTtcXG4gICAgICAgICAgICBmb250LXdlaWdodDogNTAwO1xcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XFxuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcXG5cXG4gICAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgW2RhdGEtaXNzdWVzLWNvbGxhcHNlXSB7XFxuICAgICAgICAgICAgd2lkdGg6IHZhcigtLXNpemUtMjQpO1xcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tc2l6ZS0yNCk7XFxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC1mdWxsKTtcXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIHZhcigtLWR1cmF0aW9uLXNob3J0KSBlYXNlO1xcblxcbiAgICAgICAgICAgICY6aG92ZXIge1xcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItaG92ZXItYWxwaGEtZXJyb3IpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1jcm9zc10ge1xcbiAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1zaXplLTEyKTtcXG4gICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtMTIpO1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIFtkYXRhLW5leHQtbWFya10ge1xcbiAgICAgICAgICAgIHdpZHRoOiB2YXIoLS1tYXJrLXNpemUpO1xcbiAgICAgICAgICAgIGhlaWdodDogdmFyKC0tbWFyay1zaXplKTtcXG4gICAgICAgICAgICBtYXJnaW46IDAgMnB4O1xcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLWZ1bGwpO1xcbiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgdmFyKC0tZHVyYXRpb24tbG9uZykgdmFyKC0tdGltaW5nKTtcXG5cXG4gICAgICAgICAgICAmOmZvY3VzLXZpc2libGUge1xcbiAgICAgICAgICAgICAgb3V0bGluZTogMDtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgJjpob3ZlciB7XFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1ob3Zlci1hbHBoYS1zdWJ0bGUpO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBzdmcge1xcbiAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7XFxuICAgICAgICAgICAgICB3aWR0aDogdmFyKC0tc2l6ZS00MCk7XFxuICAgICAgICAgICAgICBoZWlnaHQ6IHZhcigtLXNpemUtNDApO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtYW5pbWF0aW9uXSB7XFxuICAgICAgICAgICAgZGlzcGxheTogZ3JpZDtcXG4gICAgICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyIGNlbnRlcjtcXG4gICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zO1xcblxcbiAgICAgICAgICAgICZbZGF0YS1hbmltYXRlPSdmYWxzZSddIHtcXG4gICAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1leGl0XSxcXG4gICAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1lbnRlcl0ge1xcbiAgICAgICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDBtcztcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgPiAqIHtcXG4gICAgICAgICAgICAgIGdyaWQtYXJlYTogMSAvIDE7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1leGl0XSB7XFxuICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVPdXQgMzAwbXMgdmFyKC0tdGltaW5nKSBmb3J3YXJkcztcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWVudGVyXSB7XFxuICAgICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAzMDBtcyB2YXIoLS10aW1pbmcpIGZvcndhcmRzO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBbZGF0YS1pc3N1ZXMtY291bnQtcGx1cmFsXSB7XFxuICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgICAgICAgICAgICZbZGF0YS1hbmltYXRlPSd0cnVlJ10ge1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW4gMzAwbXMgdmFyKC0tdGltaW5nKSBmb3J3YXJkcztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgLnBhdGgwIHtcXG4gICAgICAgICAgICBhbmltYXRpb246IGRyYXcwIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgLnBhdGgxIHtcXG4gICAgICAgICAgICBhbmltYXRpb246IGRyYXcxIDEuNXMgZWFzZS1vdXQgaW5maW5pdGU7XFxuICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjNzO1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIC5wYXVzZWQge1xcbiAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIEBrZXlmcmFtZXMgZmFkZUluIHtcXG4gICAgICAgICAgICAwJSB7XFxuICAgICAgICAgICAgICBvcGFjaXR5OiAwO1xcbiAgICAgICAgICAgICAgZmlsdGVyOiBibHVyKDJweCk7XFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgMTAwJSB7XFxuICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xcbiAgICAgICAgICAgICAgZmlsdGVyOiBibHVyKDBweCk7XFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIEBrZXlmcmFtZXMgZmFkZU91dCB7XFxuICAgICAgICAgICAgMCUge1xcbiAgICAgICAgICAgICAgb3BhY2l0eTogMTtcXG4gICAgICAgICAgICAgIGZpbHRlcjogYmx1cigwcHgpO1xcbiAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAxMDAlIHtcXG4gICAgICAgICAgICAgIG9wYWNpdHk6IDA7XFxuICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEycHgpO1xcbiAgICAgICAgICAgICAgZmlsdGVyOiBibHVyKDJweCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICB9XFxuXFxuICAgICAgICAgIEBrZXlmcmFtZXMgZHJhdzAge1xcbiAgICAgICAgICAgIDAlLFxcbiAgICAgICAgICAgIDI1JSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogLTI5LjY7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDI1JSxcXG4gICAgICAgICAgICA1MCUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDUwJSxcXG4gICAgICAgICAgICA3NSUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IDA7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIDc1JSxcXG4gICAgICAgICAgICAxMDAlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAyOS42O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgfVxcblxcbiAgICAgICAgICBAa2V5ZnJhbWVzIGRyYXcxIHtcXG4gICAgICAgICAgICAwJSxcXG4gICAgICAgICAgICAyMCUge1xcbiAgICAgICAgICAgICAgc3Ryb2tlLWRhc2hvZmZzZXQ6IC0xMS42O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAyMCUsXFxuICAgICAgICAgICAgNTAlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICA1MCUsXFxuICAgICAgICAgICAgNzUlIHtcXG4gICAgICAgICAgICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAwO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICA3NSUsXFxuICAgICAgICAgICAgMTAwJSB7XFxuICAgICAgICAgICAgICBzdHJva2UtZGFzaG9mZnNldDogMTEuNjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uKSB7XFxuICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LWV4aXRdLFxcbiAgICAgICAgICAgIFtkYXRhLWlzc3Vlcy1jb3VudC1lbnRlcl0sXFxuICAgICAgICAgICAgW2RhdGEtaXNzdWVzLWNvdW50LXBsdXJhbF0ge1xcbiAgICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwbXMgIWltcG9ydGFudDtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgIH1cXG4gICAgICAgIFwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiByNz1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIG9lKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix3LEMsXyxrLEUsaixTLE8sQixQLEkseixULEQsTCxOLFIsTSxaLHEsSCxWLCQsVyxZPSgwLEEuYykoNDApO1lbMF0hPT1lPyhEPXI5KGUsW1wib25UcmlnZ2VyQ2xpY2tcIl0pLEw9ZS5vblRyaWdnZXJDbGljayxZWzBdPWUsWVsxXT1ELFlbMl09TCk6KEQ9WVsxXSxMPVlbMl0pO3ZhciBLPWRhKCksWD1LLnN0YXRlLEc9Sy5kaXNwYXRjaCxRPXU0KCkudG90YWxFcnJvckNvdW50LEo9MzYvWC5zY2FsZSxlZT1yMigpLGV0PWVlLnBhbmVsLGVuPWVlLnRyaWdnZXJSZWYsZXI9ZWUuc2V0UGFuZWwsZW89XCJwYW5lbC1zZWxlY3RvclwiPT09ZXQsZWE9UT4wLGVpPXI4KCgwLHgudXNlU3RhdGUpKGVhKSwyKSxlbD1laVswXSxlYz1laVsxXSxldT1yOCgoMCx4LnVzZVN0YXRlKShlYSksMiksZWQ9ZXVbMF0sZWY9ZXVbMV07ZWQhPT1lYSYmKGVmKGVhKSxlYyhlYSkpO3ZhciBlcD1yOCgoMCx4LnVzZVN0YXRlKSghMSksMiksZWg9ZXBbMF0sZW09ZXBbMV0sZWc9KHQ9USxuPTE1MCxhPSgwLEEuYykoNCksaT1uLGw9KDAseC51c2VSZWYpKG51bGwpLGQ9KHM9KDAseC51c2VTdGF0ZSkoITEpLGM9Mix1PWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHMpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHMsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJLKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJLKGUsdCl9fShzLGMpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKVswXSxmPXVbMV0sYVswXSE9PWl8fGFbMV0hPT10PyhyPWZ1bmN0aW9uKCl7aWYodD4wKXt2YXIgZT1sLmN1cnJlbnQ/RGF0ZS5ub3coKS1sLmN1cnJlbnQ6LTE7aWYobC5jdXJyZW50PURhdGUubm93KCksIShlPD1pKSl7ZighMCk7dmFyIG49d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtmKCExKX0saSk7cmV0dXJuIGZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KG4pfX19fSxvPVt0LGldLGFbMF09aSxhWzFdPXQsYVsyXT1yLGFbM109byk6KHI9YVsyXSxvPWFbM10pLCgwLHgudXNlRWZmZWN0KShyLG8pLGQpLGV5PSgwLHgudXNlUmVmKShudWxsKSxldj0ocD1leSxnPSgwLEEuYykoNCksdj0oeT1yRygoMCx4LnVzZVN0YXRlKSgwKSwyKSlbMF0sdz15WzFdLGdbMF0hPT1wLmN1cnJlbnQ/KGg9ZnVuY3Rpb24oKXt2YXIgZT1wLmN1cnJlbnQ7aWYoZSl7dmFyIHQ9bmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uKGUpe3cockcoZSwxKVswXS5jb250ZW50UmVjdC53aWR0aCl9KTtyZXR1cm4gdC5vYnNlcnZlKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHQuZGlzY29ubmVjdCgpfX19LGdbMF09cC5jdXJyZW50LGdbMV09aCk6aD1nWzFdLGdbMl0hPT1wPyhtPVtwXSxnWzJdPXAsZ1szXT1tKTptPWdbM10sKDAseC51c2VFZmZlY3QpKGgsbSksdiksZWI9KEM9WC5idWlsZGluZ0luZGljYXRvcnx8WC5yZW5kZXJpbmdJbmRpY2F0b3IsRT0oMCxBLmMpKDQpLGo9NzUwLFA9KFM9KDAseC51c2VTdGF0ZSkoITEpLE89MixCPWZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KFMpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KFMsMil8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIHJRKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIHJRKGUsdCl9fShTLE8pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKVswXSxJPUJbMV0sej0oMCx4LnVzZVJlZikobnVsbCksVD0oMCx4LnVzZVJlZikobnVsbCksRVswXSE9PWp8fEVbMV0hPT1DPyhfPWZ1bmN0aW9uKCl7aWYoVC5jdXJyZW50JiYoY2xlYXJUaW1lb3V0KFQuY3VycmVudCksVC5jdXJyZW50PW51bGwpLEMpbnVsbD09PXouY3VycmVudCYmKHouY3VycmVudD1EYXRlLm5vdygpKSxJKCEwKTtlbHNlIGlmKG51bGw9PT16LmN1cnJlbnQpSSghMSk7ZWxzZXt2YXIgZT1EYXRlLm5vdygpLXouY3VycmVudCx0PWoqTWF0aC5jZWlsKGUvaiktZTt0PjA/VC5jdXJyZW50PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtJKCExKSx6LmN1cnJlbnQ9bnVsbH0sdCk6KEkoITEpLHouY3VycmVudD1udWxsKX1yZXR1cm4gZnVuY3Rpb24oKXtULmN1cnJlbnQmJmNsZWFyVGltZW91dChULmN1cnJlbnQpfX0saz1bQyxqXSxFWzBdPWosRVsxXT1DLEVbMl09XyxFWzNdPWspOihfPUVbMl0saz1FWzNdKSwoMCx4LnVzZUVmZmVjdCkoXyxrKSxQKSxlQT1lbHx8WC5kaXNhYmxlRGV2SW5kaWNhdG9yLGV4PTA9PT1ldj9cImF1dG9cIjpldixldz1cIlwiLmNvbmNhdChKLFwicHhcIiksZUM9WC5kaXNhYmxlRGV2SW5kaWNhdG9yJiYoIWVhfHxlaCk/XCJub25lXCI6XCJibG9ja1wiO1lbM10hPT1ld3x8WVs0XSE9PWVDPyhOPXtcIi0tc2l6ZVwiOmV3LFwiLS1kdXJhdGlvbi1zaG9ydFwiOlwiXCIuY29uY2F0KDE1MCxcIm1zXCIpLGRpc3BsYXk6ZUN9LFlbM109ZXcsWVs0XT1lQyxZWzVdPU4pOk49WVs1XTt2YXIgZV89TjtyZXR1cm4gWVs2XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhSPSgwLGIuanN4KShcInN0eWxlXCIse2NoaWxkcmVuOmVzKHI3KCkpfSksWVs2XT1SKTpSPVlbNl0sWVs3XSE9PWV4PyhNPXt3aWR0aDpleH0sWVs3XT1leCxZWzhdPU0pOk09WVs4XSxZWzldIT09RHx8WVsxMF0hPT1lYnx8WVsxMV0hPT1lb3x8WVsxMl0hPT1MfHxZWzEzXSE9PVguYnVpbGRpbmdJbmRpY2F0b3J8fFlbMTRdIT09WC5kaXNhYmxlRGV2SW5kaWNhdG9yfHxZWzE1XSE9PWVuPyhaPSFYLmRpc2FibGVEZXZJbmRpY2F0b3ImJigwLGIuanN4KShcImJ1dHRvblwiLHI2KHIzKHtpZDpcIm5leHQtbG9nb1wiLHJlZjplbixcImRhdGEtbmV4dC1tYXJrXCI6ITAsXCJkYXRhLW5leHQtbWFyay1sb2FkaW5nXCI6ZWIsb25DbGljazpMLGRpc2FibGVkOlguZGlzYWJsZURldkluZGljYXRvcixcImFyaWEtaGFzcG9wdXBcIjpcIm1lbnVcIixcImFyaWEtZXhwYW5kZWRcIjplbyxcImFyaWEtY29udHJvbHNcIjpcIm5leHRqcy1kZXYtdG9vbHMtbWVudVwiLFwiYXJpYS1sYWJlbFwiOlwiXCIuY29uY2F0KGVvP1wiQ2xvc2VcIjpcIk9wZW5cIixcIiBOZXh0LmpzIERldiBUb29sc1wiKSxcImRhdGEtbmV4dGpzLWRldi10b29scy1idXR0b25cIjohMH0sRCkse2NoaWxkcmVuOigwLGIuanN4KShvbix7aXNMb2FkaW5nOmViLGlzRGV2QnVpbGRpbmc6WC5idWlsZGluZ0luZGljYXRvcn0pfSkpLFlbOV09RCxZWzEwXT1lYixZWzExXT1lbyxZWzEyXT1MLFlbMTNdPVguYnVpbGRpbmdJbmRpY2F0b3IsWVsxNF09WC5kaXNhYmxlRGV2SW5kaWNhdG9yLFlbMTVdPWVuLFlbMTZdPVopOlo9WVsxNl0sWVsxN10hPT1HfHxZWzE4XSE9PWVBfHxZWzE5XSE9PWVnfHxZWzIwXSE9PWVyfHxZWzIxXSE9PVguYnVpbGRFcnJvcnx8WVsyMl0hPT1YLmRpc2FibGVEZXZJbmRpY2F0b3J8fFlbMjNdIT09WC5pc0Vycm9yT3ZlcmxheU9wZW58fFlbMjRdIT09UXx8WVsyNV0hPT1lbj8ocT1lQSYmKDAsYi5qc3hzKShcImRpdlwiLHtcImRhdGEtaXNzdWVzXCI6ITAsY2hpbGRyZW46WygwLGIuanN4cykoXCJidXR0b25cIix7XCJkYXRhLWlzc3Vlcy1vcGVuXCI6ITAsXCJhcmlhLWxhYmVsXCI6XCJPcGVuIGlzc3VlcyBvdmVybGF5XCIsb25DbGljazpmdW5jdGlvbigpe2lmKFguaXNFcnJvck92ZXJsYXlPcGVuKXJldHVybiB2b2lkIEcoe3R5cGU6Rn0pO0coe3R5cGU6VX0pLGVyKG51bGwpfSxjaGlsZHJlbjpbWC5kaXNhYmxlRGV2SW5kaWNhdG9yJiYoMCxiLmpzeCkoXCJkaXZcIix7XCJkYXRhLWRpc2FibGVkLWljb25cIjohMCxjaGlsZHJlbjooMCxiLmpzeCkocjAse30pfSksKDAsYi5qc3gpKG90LHthbmltYXRlOmVnLFwiZGF0YS1pc3N1ZXMtY291bnQtYW5pbWF0aW9uXCI6ITAsY2hpbGRyZW46UX0sUSksXCIgXCIsKDAsYi5qc3hzKShcImRpdlwiLHtjaGlsZHJlbjpbXCJJc3N1ZVwiLFE+MSYmKDAsYi5qc3gpKFwic3BhblwiLHtcImFyaWEtaGlkZGVuXCI6ITAsXCJkYXRhLWlzc3Vlcy1jb3VudC1wbHVyYWxcIjohMCxcImRhdGEtYW5pbWF0ZVwiOmVnJiYyPT09USxjaGlsZHJlbjpcInNcIn0pXX0pXX0pLCFYLmJ1aWxkRXJyb3ImJigwLGIuanN4KShcImJ1dHRvblwiLHtcImRhdGEtaXNzdWVzLWNvbGxhcHNlXCI6ITAsXCJhcmlhLWxhYmVsXCI6XCJDb2xsYXBzZSBpc3N1ZXMgYmFkZ2VcIixvbkNsaWNrOmZ1bmN0aW9uKCl7dmFyIGU7WC5kaXNhYmxlRGV2SW5kaWNhdG9yP2VtKCEwKTplYyghMSksbnVsbD09KGU9ZW4uY3VycmVudCl8fGUuZm9jdXMoKX0sY2hpbGRyZW46KDAsYi5qc3gpKHJKLHtcImRhdGEtY3Jvc3NcIjohMH0pfSldfSksWVsxN109RyxZWzE4XT1lQSxZWzE5XT1lZyxZWzIwXT1lcixZWzIxXT1YLmJ1aWxkRXJyb3IsWVsyMl09WC5kaXNhYmxlRGV2SW5kaWNhdG9yLFlbMjNdPVguaXNFcnJvck92ZXJsYXlPcGVuLFlbMjRdPVEsWVsyNV09ZW4sWVsyNl09cSk6cT1ZWzI2XSxZWzI3XSE9PVp8fFlbMjhdIT09cT8oSD0oMCxiLmpzeHMpKFwiZGl2XCIse3JlZjpleSxjaGlsZHJlbjpbWixxXX0pLFlbMjddPVosWVsyOF09cSxZWzI5XT1IKTpIPVlbMjldLFlbMzBdIT09ZWF8fFlbMzFdIT09ZUF8fFlbMzJdIT09ZWd8fFlbMzNdIT09TXx8WVszNF0hPT1IPyhWPSgwLGIuanN4KShcImRpdlwiLHtcImRhdGEtbmV4dC1iYWRnZVwiOiEwLFwiZGF0YS1lcnJvclwiOmVhLFwiZGF0YS1lcnJvci1leHBhbmRlZFwiOmVBLFwiZGF0YS1hbmltYXRlXCI6ZWcsc3R5bGU6TSxjaGlsZHJlbjpIfSksWVszMF09ZWEsWVszMV09ZUEsWVszMl09ZWcsWVszM109TSxZWzM0XT1ILFlbMzVdPVYpOlY9WVszNV0sWVszNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oJD0oMCxiLmpzeCkoXCJkaXZcIix7XCJhcmlhLWhpZGRlblwiOiEwLFwiZGF0YS1kb3RcIjohMH0pLFlbMzZdPSQpOiQ9WVszNl0sWVszN10hPT1WfHxZWzM4XSE9PWVfPyhXPSgwLGIuanN4cykoXCJkaXZcIix7XCJkYXRhLW5leHQtYmFkZ2Utcm9vdFwiOiEwLHN0eWxlOmVfLGNoaWxkcmVuOltSLFYsJF19KSxZWzM3XT1WLFlbMzhdPWVfLFlbMzldPVcpOlc9WVszOV0sV31mdW5jdGlvbiBvdChlKXt2YXIgdCxuLHIsbyxhLGksbD0oMCxBLmMpKDEzKTtsWzBdIT09ZT8obj1yOShlLFtcImNoaWxkcmVuXCIsXCJhbmltYXRlXCJdKSx0PWUuY2hpbGRyZW4scj1lLmFuaW1hdGUsbFswXT1lLGxbMV09dCxsWzJdPW4sbFszXT1yKToodD1sWzFdLG49bFsyXSxyPWxbM10pO3ZhciBzPXZvaWQgMD09PXJ8fHIsYz10LTE7cmV0dXJuIGxbNF0hPT1jPyhvPSgwLGIuanN4KShcImRpdlwiLHtcImFyaWEtaGlkZGVuXCI6ITAsXCJkYXRhLWlzc3Vlcy1jb3VudC1leGl0XCI6ITAsY2hpbGRyZW46Y30pLGxbNF09YyxsWzVdPW8pOm89bFs1XSxsWzZdIT09dD8oYT0oMCxiLmpzeCkoXCJkaXZcIix7XCJkYXRhLWlzc3Vlcy1jb3VudFwiOiEwLFwiZGF0YS1pc3N1ZXMtY291bnQtZW50ZXJcIjohMCxjaGlsZHJlbjp0fSksbFs2XT10LGxbN109YSk6YT1sWzddLGxbOF0hPT1zfHxsWzldIT09bnx8bFsxMF0hPT1vfHxsWzExXSE9PWE/KGk9KDAsYi5qc3hzKShcImRpdlwiLHI2KHIzKHt9LG4pLHtcImRhdGEtYW5pbWF0ZVwiOnMsY2hpbGRyZW46W28sYV19KSksbFs4XT1zLGxbOV09bixsWzEwXT1vLGxbMTFdPWEsbFsxMl09aSk6aT1sWzEyXSxpfWZ1bmN0aW9uIG9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYz0oMCxBLmMpKDE5KSx1PWUuaXNMb2FkaW5nLGQ9ZS5pc0RldkJ1aWxkaW5nP1wicmdiYSgyNTUsMjU1LDI1NSwwLjcpXCI6XCJ3aGl0ZVwiLGY9dT9cInBhdGgwXCI6XCJwYXVzZWRcIjtjWzBdIT09Zj8odD0oMCxiLmpzeCkoXCJwYXRoXCIse2NsYXNzTmFtZTpmLGQ6XCJNMTMuMyAxNS4yIEwyLjM0IDEgVjEyLjZcIixmaWxsOlwibm9uZVwiLHN0cm9rZTpcInVybCgjbmV4dF9sb2dvX3BhaW50MF9saW5lYXJfMTM1N18xMDg1MylcIixzdHJva2VXaWR0aDpcIjEuODZcIixtYXNrOlwidXJsKCNuZXh0X2xvZ29fbWFzazApXCIsc3Ryb2tlRGFzaGFycmF5OlwiMjkuNlwiLHN0cm9rZURhc2hvZmZzZXQ6XCIyOS42XCJ9KSxjWzBdPWYsY1sxXT10KTp0PWNbMV07dmFyIHA9dT9cInBhdGgxXCI6XCJwYXVzZWRcIjtyZXR1cm4gY1syXSE9PXA/KG49KDAsYi5qc3gpKFwicGF0aFwiLHtjbGFzc05hbWU6cCxkOlwiTTExLjgyNSAxLjUgVjEzLjFcIixzdHJva2VXaWR0aDpcIjEuODZcIixzdHJva2U6XCJ1cmwoI25leHRfbG9nb19wYWludDFfbGluZWFyXzEzNTdfMTA4NTMpXCIsc3Ryb2tlRGFzaGFycmF5OlwiMTEuNlwiLHN0cm9rZURhc2hvZmZzZXQ6XCIxMS42XCJ9KSxjWzJdPXAsY1szXT1uKTpuPWNbM10sY1s0XSE9PXR8fGNbNV0hPT1uPyhyPSgwLGIuanN4cykoXCJnXCIse3RyYW5zZm9ybTpcInRyYW5zbGF0ZSg4LjUsIDEzKVwiLGNoaWxkcmVuOlt0LG5dfSksY1s0XT10LGNbNV09bixjWzZdPXIpOnI9Y1s2XSxjWzddIT09ZD8obz0oMCxiLmpzeHMpKFwibGluZWFyR3JhZGllbnRcIix7aWQ6XCJuZXh0X2xvZ29fcGFpbnQwX2xpbmVhcl8xMzU3XzEwODUzXCIseDE6XCI5Ljk1NTU1XCIseTE6XCIxMS4xMjI2XCIseDI6XCIxNS40Nzc4XCIseTI6XCIxNy45NjcxXCIsZ3JhZGllbnRVbml0czpcInVzZXJTcGFjZU9uVXNlXCIsY2hpbGRyZW46WygwLGIuanN4KShcInN0b3BcIix7c3RvcENvbG9yOmR9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjAuNjA0MDcyXCIsc3RvcENvbG9yOmQsc3RvcE9wYWNpdHk6XCIwXCJ9KSwoMCxiLmpzeCkoXCJzdG9wXCIse29mZnNldDpcIjFcIixzdG9wQ29sb3I6ZCxzdG9wT3BhY2l0eTpcIjBcIn0pXX0pLGNbN109ZCxjWzhdPW8pOm89Y1s4XSxjWzldIT09ZD8oYT0oMCxiLmpzeHMpKFwibGluZWFyR3JhZGllbnRcIix7aWQ6XCJuZXh0X2xvZ29fcGFpbnQxX2xpbmVhcl8xMzU3XzEwODUzXCIseDE6XCIxMS44MjIyXCIseTE6XCIxLjQwMDM5XCIseDI6XCIxMS43OTFcIix5MjpcIjkuNjI1NDJcIixncmFkaWVudFVuaXRzOlwidXNlclNwYWNlT25Vc2VcIixjaGlsZHJlbjpbKDAsYi5qc3gpKFwic3RvcFwiLHtzdG9wQ29sb3I6ZH0pLCgwLGIuanN4KShcInN0b3BcIix7b2Zmc2V0OlwiMVwiLHN0b3BDb2xvcjpkLHN0b3BPcGFjaXR5OlwiMFwifSldfSksY1s5XT1kLGNbMTBdPWEpOmE9Y1sxMF0sY1sxMV09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oaT0oMCxiLmpzeHMpKFwibWFza1wiLHtpZDpcIm5leHRfbG9nb19tYXNrMFwiLGNoaWxkcmVuOlsoMCxiLmpzeCkoXCJyZWN0XCIse3dpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIixmaWxsOlwid2hpdGVcIn0pLCgwLGIuanN4KShcInJlY3RcIix7d2lkdGg6XCI1XCIsaGVpZ2h0OlwiMS41XCIsZmlsbDpcImJsYWNrXCJ9KV19KSxjWzExXT1pKTppPWNbMTFdLGNbMTJdIT09b3x8Y1sxM10hPT1hPyhsPSgwLGIuanN4cykoXCJkZWZzXCIse2NoaWxkcmVuOltvLGEsaV19KSxjWzEyXT1vLGNbMTNdPWEsY1sxNF09bCk6bD1jWzE0XSxjWzE1XSE9PXV8fGNbMTZdIT09cnx8Y1sxN10hPT1sPyhzPSgwLGIuanN4cykoXCJzdmdcIix7d2lkdGg6XCI0MFwiLGhlaWdodDpcIjQwXCIsdmlld0JveDpcIjAgMCA0MCA0MFwiLGZpbGw6XCJub25lXCIsXCJkYXRhLW5leHQtbWFyay1sb2FkaW5nXCI6dSxjaGlsZHJlbjpbcixsXX0pLGNbMTVdPXUsY1sxNl09cixjWzE3XT1sLGNbMThdPXMpOnM9Y1sxOF0sc312YXIgb3I9eC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvLGEsaSxsLHMsYyx1LGQ9KDAsQS5jKSgxNSk7cmV0dXJuKGRbMF0hPT1lPyhsPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJvbkNsaWNrXCIsXCJjaGlsZHJlblwiLFwiY2xhc3NOYW1lXCJdKSxpPWUub25DbGljayxvPWUuY2hpbGRyZW4sYT1lLmNsYXNzTmFtZSxkWzBdPWUsZFsxXT1vLGRbMl09YSxkWzNdPWksZFs0XT1sKToobz1kWzFdLGE9ZFsyXSxpPWRbM10sbD1kWzRdKSxkWzVdIT09aT8ocz1mdW5jdGlvbihlKXtyZXR1cm4gZS50YXJnZXQuY2xvc2VzdChcImFcIil8fGUucHJldmVudERlZmF1bHQoKSxudWxsPT1pP3ZvaWQgMDppKCl9LGRbNV09aSxkWzZdPXMpOnM9ZFs2XSxkWzddIT09YT8oYz1lRyhcIm5leHRqcy10b2FzdFwiLGEpLGRbN109YSxkWzhdPWMpOmM9ZFs4XSxkWzldIT09b3x8ZFsxMF0hPT1sfHxkWzExXSE9PXR8fGRbMTJdIT09c3x8ZFsxM10hPT1jKT8odT0oMCxiLmpzeCkoXCJkaXZcIiwobj1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LGwpLHI9cj17cmVmOnQsb25DbGljazpzLGNsYXNzTmFtZTpjLGNoaWxkcmVuOm99LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QocikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSksbikpLGRbOV09byxkWzEwXT1sLGRbMTFdPXQsZFsxMl09cyxkWzEzXT1jLGRbMTRdPXUpOnU9ZFsxNF0sdX0pO2Z1bmN0aW9uIG9vKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX12YXIgb2E9KDAseC5jcmVhdGVDb250ZXh0KShudWxsKTtmdW5jdGlvbiBvaShlKXt2YXIgdD1lLmNoaWxkcmVuLG49ZS5kaXNhYmxlZCxyPXZvaWQgMCE9PW4mJm4sbz0oMCx4LnVzZVJlZikobmV3IFNldCksYT0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtvLmN1cnJlbnQuYWRkKGUpfSxbXSksaT0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtvLmN1cnJlbnQuZGVsZXRlKGUpfSxbXSksbD0oMCx4LnVzZU1lbW8pKGZ1bmN0aW9uKCl7cmV0dXJue3JlZ2lzdGVyOmEsdW5yZWdpc3RlcjppLGhhbmRsZXM6by5jdXJyZW50LGRpc2FibGVkOnJ9fSxbYSxpLHJdKTtyZXR1cm4oMCxiLmpzeCkob2EuUHJvdmlkZXIse3ZhbHVlOmwsY2hpbGRyZW46dH0pfWZ1bmN0aW9uIG9sKCl7cmV0dXJuKDAseC51c2VDb250ZXh0KShvYSl9ZnVuY3Rpb24gb3MoZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmPSgwLEEuYykoMTkpO2ZbMF0hPT1lPyhvPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJjaGlsZHJlblwiLFwicmVmXCJdKSxyPWUuY2hpbGRyZW4sYT1lLnJlZixmWzBdPWUsZlsxXT1yLGZbMl09byxmWzNdPWEpOihyPWZbMV0sbz1mWzJdLGE9ZlszXSk7dmFyIHA9KDAseC51c2VSZWYpKG51bGwpLGg9b2woKTtmWzRdIT09YT8oaT1mdW5jdGlvbihlKXtpZihwLmN1cnJlbnQ9bnVsbCE9ZT9lOm51bGwsXCJmdW5jdGlvblwiPT10eXBlb2YgYSlhKGUpO2Vsc2V7dmFyIHQ7YSYmKHZvaWQgMD09PWE/XCJ1bmRlZmluZWRcIjoodD1hKSYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbD9cInN5bWJvbFwiOnR5cGVvZiB0KT09XCJvYmplY3RcIiYmKGEuY3VycmVudD1lKX19LGZbNF09YSxmWzVdPWkpOmk9Zls1XTt2YXIgbT1pO2ZbNl0hPT1oPyhsPWZ1bmN0aW9uKCl7aWYoaCYmcC5jdXJyZW50JiYhaC5kaXNhYmxlZCl7dmFyIGU9cC5jdXJyZW50O3JldHVybiBoLnJlZ2lzdGVyKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIGgudW5yZWdpc3RlcihlKX19fSxzPVtoXSxmWzZdPWgsZls3XT1sLGZbOF09cyk6KGw9Zls3XSxzPWZbOF0pLCgwLHgudXNlRWZmZWN0KShsLHMpO3ZhciBnPShudWxsPT1oP3ZvaWQgMDpoLmRpc2FibGVkKT9cImRlZmF1bHRcIjpcImdyYWJcIjtyZXR1cm4oZls5XSE9PW8uc3R5bGU/KGM9by5zdHlsZXx8e30sZls5XT1vLnN0eWxlLGZbMTBdPWMpOmM9ZlsxMF0sZlsxMV0hPT1nfHxmWzEyXSE9PWM/KHU9b28oe2N1cnNvcjpnfSxjKSxmWzExXT1nLGZbMTJdPWMsZlsxM109dSk6dT1mWzEzXSxmWzE0XSE9PXJ8fGZbMTVdIT09b3x8ZlsxNl0hPT1tfHxmWzE3XSE9PXUpPyhkPSgwLGIuanN4KShcImRpdlwiLCh0PW9vKHtyZWY6bX0sbyksbj1uPXtzdHlsZTp1LGNoaWxkcmVuOnJ9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpLGZbMTRdPXIsZlsxNV09byxmWzE2XT1tLGZbMTddPXUsZlsxOF09ZCk6ZD1mWzE4XSxkfWZ1bmN0aW9uIG9jKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBvdShlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9ZnVuY3Rpb24gb2QoZSx0KXtyZXR1cm4gdD1udWxsIT10P3Q6e30sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSk6KGZ1bmN0aW9uKGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn0pKE9iamVjdCh0KSkuZm9yRWFjaChmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxuKSl9KSxlfWZ1bmN0aW9uIG9mKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb31mdW5jdGlvbiBvcChlKXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gb2MoZSl9KGUpfHxmdW5jdGlvbihlKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1lW1N5bWJvbC5pdGVyYXRvcl18fG51bGwhPWVbXCJAQGl0ZXJhdG9yXCJdKXJldHVybiBBcnJheS5mcm9tKGUpfShlKXx8b2goZSl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfWZ1bmN0aW9uIG9oKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG9jKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9jKGUsdCl9fWZ1bmN0aW9uIG9tKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwPSgwLEEuYykoMTgpO3BbMF0hPT1lPyhzPW9mKGUsW1wiY2hpbGRyZW5cIixcInBhZGRpbmdcIixcInBvc2l0aW9uXCIsXCJzZXRQb3NpdGlvblwiLFwib25EcmFnU3RhcnRcIixcImRyYWdIYW5kbGVTZWxlY3RvclwiLFwiZGlzYWJsZURyYWdcIixcImF2b2lkWm9uZVwiXSkscj1lLmNoaWxkcmVuLGw9ZS5wYWRkaW5nLG89ZS5wb3NpdGlvbixjPWUuc2V0UG9zaXRpb24saT1lLm9uRHJhZ1N0YXJ0LGE9ZS5kcmFnSGFuZGxlU2VsZWN0b3IsdT1lLmRpc2FibGVEcmFnLG49ZS5hdm9pZFpvbmUscFswXT1lLHBbMV09bixwWzJdPXIscFszXT1vLHBbNF09YSxwWzVdPWkscFs2XT1sLHBbN109cyxwWzhdPWMscFs5XT11KToobj1wWzFdLHI9cFsyXSxvPXBbM10sYT1wWzRdLGk9cFs1XSxsPXBbNl0scz1wWzddLGM9cFs4XSx1PXBbOV0pO3ZhciBoPWZ1bmN0aW9uKGUpe3ZhciB0PSgwLHgudXNlUmVmKShudWxsKSxuPSgwLHgudXNlUmVmKSh7c3RhdGU6XCJpZGxlXCJ9KSxyPSgwLHgudXNlUmVmKShudWxsKSxvPSgwLHgudXNlUmVmKSh7eDowLHk6MH0pLGE9KDAseC51c2VSZWYpKHt4OjAseTowfSksaT0oMCx4LnVzZVJlZikoMCksbD0oMCx4LnVzZVJlZikoW10pLHM9KDAseC51c2VDYWxsYmFjaykoZnVuY3Rpb24oKXt2YXIgZSxvO1wiZHJhZ1wiPT09bi5jdXJyZW50LnN0YXRlJiYobnVsbD09KG89dC5jdXJyZW50KXx8by5yZWxlYXNlUG9pbnRlckNhcHR1cmUobi5jdXJyZW50LnBvaW50ZXJJZCkpLG4uY3VycmVudD1cImRyYWdcIj09PW4uY3VycmVudC5zdGF0ZT97c3RhdGU6XCJkcmFnLWVuZFwifTp7c3RhdGU6XCJpZGxlXCJ9LG51bGwhPT1yLmN1cnJlbnQmJihyLmN1cnJlbnQoKSxyLmN1cnJlbnQ9bnVsbCksbC5jdXJyZW50PVtdLG51bGw9PShlPXQuY3VycmVudCl8fGUuY2xhc3NMaXN0LnJlbW92ZShcImRldi10b29scy1ncmFiYmluZ1wiKSxkb2N1bWVudC5ib2R5LnN0eWxlLnJlbW92ZVByb3BlcnR5KFwidXNlci1zZWxlY3RcIiksZG9jdW1lbnQuYm9keS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIi13ZWJraXQtdXNlci1zZWxlY3RcIil9LFtdKTtmdW5jdGlvbiBjKGUpe3QuY3VycmVudCYmKGEuY3VycmVudD1lLHQuY3VycmVudC5zdHlsZS50cmFuc2xhdGU9XCJcIi5jb25jYXQoZS54LFwicHggXCIpLmNvbmNhdChlLnksXCJweFwiKSl9ZnVuY3Rpb24gdShuKXt2YXIgcj10LmN1cnJlbnQ7bnVsbCE9PXImJihyLnN0eWxlLnRyYW5zaXRpb249XCJ0cmFuc2xhdGUgNDkxLjIybXMgdmFyKC0tdGltaW5nLWJvdW5jZSlcIixyLmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFuc2l0aW9uZW5kXCIsZnVuY3Rpb24gdChvKXtpZihcInRyYW5zbGF0ZVwiPT09by5wcm9wZXJ0eU5hbWUpe3ZhciBpO251bGw9PShpPWUub25BbmltYXRpb25FbmQpfHxpLmNhbGwoZSxuKSxhLmN1cnJlbnQ9e3g6MCx5OjB9LHIuc3R5bGUudHJhbnNpdGlvbj1cIlwiLHIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRyYW5zaXRpb25lbmRcIix0KX19KSxjKG4udHJhbnNsYXRpb24pKX1mdW5jdGlvbiBkKGUpe2lmKFwiZHJhZy1lbmRcIj09PW4uY3VycmVudC5zdGF0ZSl7dmFyIHI7ZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCksbi5jdXJyZW50PXtzdGF0ZTpcImlkbGVcIn0sbnVsbD09KHI9dC5jdXJyZW50KXx8ci5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIixkKX19ZnVuY3Rpb24gZihyKXtpZihcInByZXNzXCI9PT1uLmN1cnJlbnQuc3RhdGUpe3ZhciBzLHUsZCxmLHA9ci5jbGllbnRYLW8uY3VycmVudC54LGg9ci5jbGllbnRZLW8uY3VycmVudC55O01hdGguc3FydChwKnAraCpoKT49ZS50aHJlc2hvbGQmJihuLmN1cnJlbnQ9e3N0YXRlOlwiZHJhZ1wiLHBvaW50ZXJJZDpyLnBvaW50ZXJJZH0sbnVsbD09KHU9dC5jdXJyZW50KXx8dS5zZXRQb2ludGVyQ2FwdHVyZShyLnBvaW50ZXJJZCksbnVsbD09KGQ9dC5jdXJyZW50KXx8ZC5jbGFzc0xpc3QuYWRkKFwiZGV2LXRvb2xzLWdyYWJiaW5nXCIpLGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdD1cIm5vbmVcIixkb2N1bWVudC5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9XCJub25lXCIsbnVsbD09KGY9ZS5vbkRyYWdTdGFydCl8fGYuY2FsbChlKSl9aWYoXCJkcmFnXCI9PT1uLmN1cnJlbnQuc3RhdGUpe3ZhciBtPXt4OnIuY2xpZW50WCx5OnIuY2xpZW50WX0sZz1tLngtby5jdXJyZW50LngseT1tLnktby5jdXJyZW50Lnk7by5jdXJyZW50PW0sYyh7eDphLmN1cnJlbnQueCtnLHk6YS5jdXJyZW50LnkreX0pO3ZhciB2PURhdGUubm93KCk7di1pLmN1cnJlbnQ+PTEwJiYobC5jdXJyZW50PW9wKGwuY3VycmVudC5zbGljZSgtNSkpLmNvbmNhdChbe3Bvc2l0aW9uOm0sdGltZXN0YW1wOnZ9XSkpLGkuY3VycmVudD12LG51bGw9PShzPWUub25EcmFnKXx8cy5jYWxsKGUsYS5jdXJyZW50KX19ZnVuY3Rpb24gcCgpe3ZhciB0LG49ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGg8MilyZXR1cm57eDowLHk6MH07dmFyIHQ9ZVswXSxuPWVbZS5sZW5ndGgtMV0scj1uLnRpbWVzdGFtcC10LnRpbWVzdGFtcDtyZXR1cm4gMD09PXI/e3g6MCx5OjB9Ont4OjFlMyooKG4ucG9zaXRpb24ueC10LnBvc2l0aW9uLngpL3IpLHk6MWUzKigobi5wb3NpdGlvbi55LXQucG9zaXRpb24ueSkvcil9fShsLmN1cnJlbnQpO3MoKSxudWxsPT0odD1lLm9uRHJhZ0VuZCl8fHQuY2FsbChlLGEuY3VycmVudCxuKX1yZXR1cm4oMCx4LnVzZUxheW91dEVmZmVjdCkoZnVuY3Rpb24oKXtlLmRpc2FibGVkJiZzKCl9LFtzLGUuZGlzYWJsZWRdKSxlLmRpc2FibGVkP3tyZWY6dCxhbmltYXRlOnV9OntyZWY6dCxvblBvaW50ZXJEb3duOmZ1bmN0aW9uKGEpe3ZhciBpOzA9PT1hLmJ1dHRvbiYmZnVuY3Rpb24obil7aWYoIW58fCF0LmN1cnJlbnQpcmV0dXJuITA7aWYoZS5oYW5kbGVzJiZlLmhhbmRsZXMuc2l6ZT4wKXtmb3IodmFyIHI9bjtyJiZyIT09dC5jdXJyZW50Oyl7aWYoZS5oYW5kbGVzLmhhcyhyKSlyZXR1cm4hMDtyPXIucGFyZW50RWxlbWVudH1yZXR1cm4hMX1yZXR1cm4hZS5kcmFnSGFuZGxlU2VsZWN0b3J8fG51bGwhPT1uLmNsb3Nlc3QoZS5kcmFnSGFuZGxlU2VsZWN0b3IpfShhLnRhcmdldCkmJihvLmN1cnJlbnQ9e3g6YS5jbGllbnRYLHk6YS5jbGllbnRZfSxuLmN1cnJlbnQ9e3N0YXRlOlwicHJlc3NcIn0sd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVybW92ZVwiLGYpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcnVwXCIscCksbnVsbCE9PXIuY3VycmVudCYmKHIuY3VycmVudCgpLHIuY3VycmVudD1udWxsKSxyLmN1cnJlbnQ9ZnVuY3Rpb24oKXt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJtb3ZlXCIsZiksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVydXBcIixwKX0sbnVsbD09KGk9dC5jdXJyZW50KXx8aS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixkKSl9LGFuaW1hdGU6dX19KHtkaXNhYmxlZDp2b2lkIDAhPT11JiZ1LGhhbmRsZXM6bnVsbD09KHQ9b2woKSk/dm9pZCAwOnQuaGFuZGxlcyx0aHJlc2hvbGQ6NSxvbkRyYWdTdGFydDppLG9uRHJhZ0VuZDpmdW5jdGlvbihlLHQpe3ZhciByLGEsaSxzLGMsdSxkLGYscCxoLHksdixiLEEseCx3LEMsXztpZigwPT09TWF0aC5zcXJ0KGUueCplLngrZS55KmUueSkpe251bGw9PShyPW0uY3VycmVudCl8fHIuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ0cmFuc2xhdGVcIik7cmV0dXJufWcoKGI9KGE9e3g6ZS54K295KHQueCkseTplLnkrb3kodC55KX0pLngsQT1hLnksdz1PYmplY3QuZW50cmllcyh4PShjPTIqbCx1PShudWxsPT0oaT1tLmN1cnJlbnQpP3ZvaWQgMDppLm9mZnNldFdpZHRoKXx8MCxkPShudWxsPT0ocz1tLmN1cnJlbnQpP3ZvaWQgMDpzLm9mZnNldEhlaWdodCl8fDAsZj13aW5kb3cuaW5uZXJXaWR0aC1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgsaD0ocD1mdW5jdGlvbihlKXt2YXIgdD1lLmluY2x1ZGVzKFwicmlnaHRcIikscj1lLmluY2x1ZGVzKFwiYm90dG9tXCIpLG89dD93aW5kb3cuaW5uZXJXaWR0aC1mLWMtdTowLGE9cj93aW5kb3cuaW5uZXJIZWlnaHQtYy1kOjA7aWYobiYmbi5jb3JuZXI9PT1lKXt2YXIgaT1uLnNxdWFyZStuLnBhZGRpbmc7cj9hLT1pOmErPWl9cmV0dXJue3g6byx5OmF9fSkobykse1widG9wLWxlZnRcIjooeT1mdW5jdGlvbihlKXtyZXR1cm57eDplLngtaC54LHk6ZS55LWgueX19KShwKFwidG9wLWxlZnRcIikpLFwidG9wLXJpZ2h0XCI6eShwKFwidG9wLXJpZ2h0XCIpKSxcImJvdHRvbS1sZWZ0XCI6eShwKFwiYm90dG9tLWxlZnRcIikpLFwiYm90dG9tLXJpZ2h0XCI6eShwKFwiYm90dG9tLXJpZ2h0XCIpKX0pKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQsbixyPShuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odD1lKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fSh0LDIpfHxvaCh0LG4pfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpKSxvPXJbMF0sYT1yWzFdO3JldHVybntrZXk6byxkaXN0YW5jZTpNYXRoLnNxcnQoTWF0aC5wb3coYi1hLngsMikrTWF0aC5wb3coQS1hLnksMikpfX0pLEM9KHY9TWF0aCkubWluLmFwcGx5KHYsb3Aody5tYXAob2cpKSksKF89dy5maW5kKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc3RhbmNlPT09Q30pKT97dHJhbnNsYXRpb246eFtfLmtleV0sY29ybmVyOl8ua2V5fTp7Y29ybmVyOm8sdHJhbnNsYXRpb246eFtvXX0pKX0sb25BbmltYXRpb25FbmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5jb3JuZXI7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBlO251bGw9PShlPW0uY3VycmVudCl8fGUuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ0cmFuc2xhdGVcIiksYyh0KX0pfSxkcmFnSGFuZGxlU2VsZWN0b3I6YX0pLG09aC5yZWYsZz1oLmFuaW1hdGUseT1vZihoLFtcInJlZlwiLFwiYW5pbWF0ZVwiXSk7cmV0dXJuIHBbMTBdIT09cy5zdHlsZT8oZD1vdSh7dG91Y2hBY3Rpb246XCJub25lXCIsdXNlclNlbGVjdDpcIm5vbmVcIixXZWJraXRVc2VyU2VsZWN0Olwibm9uZVwifSxzLnN0eWxlKSxwWzEwXT1zLnN0eWxlLHBbMTFdPWQpOmQ9cFsxMV0scFsxMl0hPT1yfHxwWzEzXSE9PXl8fHBbMTRdIT09c3x8cFsxNV0hPT1tfHxwWzE2XSE9PWQ/KGY9KDAsYi5qc3gpKFwiZGl2XCIsb2Qob3Uob2Qob3Uoe30scykse3JlZjptfSkseSkse3N0eWxlOmQsY2hpbGRyZW46cn0pKSxwWzEyXT1yLHBbMTNdPXkscFsxNF09cyxwWzE1XT1tLHBbMTZdPWQscFsxN109Zik6Zj1wWzE3XSxmfWZ1bmN0aW9uIG9nKGUpe3JldHVybiBlLmRpc3RhbmNlfWZ1bmN0aW9uIG95KGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTouOTk5O3JldHVybiBlLzFlMyp0LygxLXQpfWZ1bmN0aW9uIG92KGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiBvYihlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIG9BPTIwO2Z1bmN0aW9uIG94KCl7dmFyIGUsdCxuLHIsbyxhLGksbCxzLGM9KDAsQS5jKSgyMCksdT1kYSgpLGQ9dS5zdGF0ZSxmPXUuZGlzcGF0Y2gscD1yMigpLGg9cC5wYW5lbCxtPXAuc2V0UGFuZWwsZz1wLnNldFNlbGVjdGVkSW5kZXgseT1vdygpO2NbMF0hPT1kLmRldlRvb2xzUG9zaXRpb24/KG49ZC5kZXZUb29sc1Bvc2l0aW9uLnNwbGl0KFwiLVwiLDIpLGNbMF09ZC5kZXZUb29sc1Bvc2l0aW9uLGNbMV09bik6bj1jWzFdO3ZhciB2PSh0PTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZT1uKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSxhLmxlbmd0aCE9PXQpO2k9ITApO31jYXRjaChlKXtsPSEwLHI9ZX1maW5hbGx5e3RyeXtpfHxudWxsPT1vLnJldHVybnx8by5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgcn19cmV0dXJuIGF9fShlLDIpfHxmdW5jdGlvbihlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiBvdihlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiBvdihlLHQpfX0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKSkseD12WzBdLHc9dlsxXTtjWzJdIT09d3x8Y1szXSE9PXg/KG9iKG89e1wiLS1hbmltYXRlLW91dC1kdXJhdGlvbi1tc1wiOlwiXCIuY29uY2F0KDIwMCxcIm1zXCIpLFwiLS1hbmltYXRlLW91dC10aW1pbmctZnVuY3Rpb25cIjp0Nyxib3hTaGFkb3c6XCJub25lXCJ9LHgsXCJcIi5jb25jYXQob0EsXCJweFwiKSksb2Iobyx3LFwiXCIuY29uY2F0KG9BLFwicHhcIikpLHI9byxjWzJdPXcsY1szXT14LGNbNF09cik6cj1jWzRdO3ZhciBDPXIsXz1udWxsIT09aDtyZXR1cm4gY1s1XSE9PWZ8fGNbNl0hPT15PyhhPWZ1bmN0aW9uKGUpe2Yoe3R5cGU6WSxkZXZUb29sc1Bvc2l0aW9uOmV9KSxyQSh7ZGV2VG9vbHNQb3NpdGlvbjplfSkseShlKX0sY1s1XT1mLGNbNl09eSxjWzddPWEpOmE9Y1s3XSxjWzhdIT09aHx8Y1s5XSE9PW18fGNbMTBdIT09Zz8oaT0oMCxiLmpzeCkob2Use29uVHJpZ2dlckNsaWNrOmZ1bmN0aW9uKCl7dmFyIGU9XCJwYW5lbC1zZWxlY3RvclwiPT09aD9udWxsOlwicGFuZWwtc2VsZWN0b3JcIjtpZihtKGUpLCFlKXJldHVybiB2b2lkIGcoLTEpfX0pLGNbOF09aCxjWzldPW0sY1sxMF09ZyxjWzExXT1pKTppPWNbMTFdLGNbMTJdIT09ZC5kZXZUb29sc1Bvc2l0aW9ufHxjWzEzXSE9PV98fGNbMTRdIT09YXx8Y1sxNV0hPT1pPyhsPSgwLGIuanN4KShvbSx7ZGlzYWJsZURyYWc6XyxwYWRkaW5nOm9BLHBvc2l0aW9uOmQuZGV2VG9vbHNQb3NpdGlvbixzZXRQb3NpdGlvbjphLGNoaWxkcmVuOml9KSxjWzEyXT1kLmRldlRvb2xzUG9zaXRpb24sY1sxM109XyxjWzE0XT1hLGNbMTVdPWksY1sxNl09bCk6bD1jWzE2XSxjWzE3XSE9PUN8fGNbMThdIT09bD8ocz0oMCxiLmpzeCkob3Ise2lkOlwiZGV2dG9vbHMtaW5kaWNhdG9yXCIsXCJkYXRhLW5leHRqcy10b2FzdFwiOiEwLHN0eWxlOkMsY2hpbGRyZW46bH0pLGNbMTddPUMsY1sxOF09bCxjWzE5XT1zKTpzPWNbMTldLHN9dmFyIG93PWZ1bmN0aW9uKCl7dmFyIGUsdD0oMCxBLmMpKDMpLG49ZGEoKSxyPW4uc3RhdGUsbz1uLmRpc3BhdGNoO3JldHVybiB0WzBdIT09b3x8dFsxXSE9PXIuZGV2VG9vbHNQYW5lbFBvc2l0aW9uPyhlPWZ1bmN0aW9uKGUpe28oe3R5cGU6SyxkZXZUb29sc1BhbmVsUG9zaXRpb246ZSxrZXk6ZXR9KTt2YXIgdD1PYmplY3Qua2V5cyhyLmRldlRvb2xzUGFuZWxQb3NpdGlvbikuZmlsdGVyKG9DKSxuPW9iKHt9LGV0LGUpO3QuZm9yRWFjaChmdW5jdGlvbih0KXtvKHt0eXBlOkssZGV2VG9vbHNQYW5lbFBvc2l0aW9uOmUsa2V5OnR9KSxuW3RdPWV9KSxyQSh7ZGV2VG9vbHNQYW5lbFBvc2l0aW9uOm59KX0sdFswXT1vLHRbMV09ci5kZXZUb29sc1BhbmVsUG9zaXRpb24sdFsyXT1lKTplPXRbMl0sZX07ZnVuY3Rpb24gb0MoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChRKX1mdW5jdGlvbiBvXyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gb2soZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIG9FKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtvayhlLHQsblt0XSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBvaihlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9ZnVuY3Rpb24gb1MoZSx0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0oZSl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksIXR8fGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KGUsdCl8fGZ1bmN0aW9uKGUsdCl7aWYoZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpcmV0dXJuIG9fKGUsdCk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpLnNsaWNlKDgsLTEpO2lmKFwiT2JqZWN0XCI9PT1uJiZlLmNvbnN0cnVjdG9yJiYobj1lLmNvbnN0cnVjdG9yLm5hbWUpLFwiTWFwXCI9PT1ufHxcIlNldFwiPT09bilyZXR1cm4gQXJyYXkuZnJvbShuKTtpZihcIkFyZ3VtZW50c1wiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3QobikpcmV0dXJuIG9fKGUsdCl9fShlLHQpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxcXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpfSgpfXZhciBvTz0oMCx4LmNyZWF0ZUNvbnRleHQpKHt9KTtmdW5jdGlvbiBvQihlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoPSgwLEEuYykoMzcpO2hbMF0hPT1lPyhhPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbixyLG89ZnVuY3Rpb24oZSx0KXtpZihudWxsPT1lKXJldHVybnt9O3ZhciBuLHIsbz17fSxhPU9iamVjdC5rZXlzKGUpO2ZvcihyPTA7cjxhLmxlbmd0aDtyKyspbj1hW3JdLHQuaW5kZXhPZihuKT49MHx8KG9bbl09ZVtuXSk7cmV0dXJuIG99KGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSwhKHQuaW5kZXhPZihuKT49MCkmJk9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChlLG4pJiYob1tuXT1lW25dKX1yZXR1cm4gb30oZSxbXCJpbmRleFwiLFwibGFiZWxcIixcInZhbHVlXCIsXCJvbkNsaWNrXCIsXCJocmVmXCJdKSxuPWUuaW5kZXgscj1lLmxhYmVsLGk9ZS52YWx1ZSxvPWUub25DbGljayx0PWUuaHJlZixoWzBdPWUsaFsxXT10LGhbMl09bixoWzNdPXIsaFs0XT1vLGhbNV09YSxoWzZdPWkpOih0PWhbMV0sbj1oWzJdLHI9aFszXSxvPWhbNF0sYT1oWzVdLGk9aFs2XSk7dmFyIG09XCJmdW5jdGlvblwiPT10eXBlb2Ygb3x8XCJzdHJpbmdcIj09dHlwZW9mIHQsZz0oMCx4LnVzZUNvbnRleHQpKG9PKSx5PWcuY2xvc2VNZW51LHY9Zy5zZWxlY3RlZEluZGV4LHc9Zy5zZXRTZWxlY3RlZEluZGV4LEM9dj09PW47aFs3XSE9PXl8fGhbOF0hPT10fHxoWzldIT09bXx8aFsxMF0hPT1vPyhsPWZ1bmN0aW9uKCl7bSYmKG51bGw9PW98fG8oKSxudWxsPT15fHx5KCksdCYmd2luZG93Lm9wZW4odCxcIl9ibGFua1wiLFwibm9vcGVuZXIsIG5vcmVmZXJyZXJcIikpfSxoWzddPXksaFs4XT10LGhbOV09bSxoWzEwXT1vLGhbMTFdPWwpOmw9aFsxMV07dmFyIF89bDtoWzEyXSE9PW58fGhbMTNdIT09bXx8aFsxNF0hPT12fHxoWzE1XSE9PXc/KHM9ZnVuY3Rpb24oKXttJiZ2b2lkIDAhPT1uJiZ2IT09biYmdyhuKX0saFsxMl09bixoWzEzXT1tLGhbMTRdPXYsaFsxNV09dyxoWzE2XT1zKTpzPWhbMTZdLGhbMTddIT09dz8oYz1mdW5jdGlvbigpe3JldHVybiB3KC0xKX0saFsxN109dyxoWzE4XT1jKTpjPWhbMThdLGhbMTldIT09Xz8odT1mdW5jdGlvbihlKXsoXCJFbnRlclwiPT09ZS5rZXl8fFwiIFwiPT09ZS5rZXkpJiZfKCl9LGhbMTldPV8saFsyMF09dSk6dT1oWzIwXTt2YXIgaz1tP1wibWVudWl0ZW1cIjp2b2lkIDAsRT1DPzA6LTE7cmV0dXJuIGhbMjFdIT09cj8oZD0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmRpY2F0b3ItbGFiZWxcIixjaGlsZHJlbjpyfSksaFsyMV09cixoWzIyXT1kKTpkPWhbMjJdLGhbMjNdIT09aT8oZj0oMCxiLmpzeCkoXCJzcGFuXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmRpY2F0b3ItdmFsdWVcIixjaGlsZHJlbjppfSksaFsyM109aSxoWzI0XT1mKTpmPWhbMjRdLGhbMjVdIT09X3x8aFsyNl0hPT1ufHxoWzI3XSE9PWF8fGhbMjhdIT09Q3x8aFsyOV0hPT1zfHxoWzMwXSE9PWN8fGhbMzFdIT09dXx8aFszMl0hPT1rfHxoWzMzXSE9PUV8fGhbMzRdIT09ZHx8aFszNV0hPT1mPyhwPSgwLGIuanN4cykoXCJkaXZcIixvaihvRSh7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZGljYXRvci1pdGVtXCIsXCJkYXRhLWluZGV4XCI6bixcImRhdGEtc2VsZWN0ZWRcIjpDLG9uQ2xpY2s6Xyxvbk1vdXNlTW92ZTpzLG9uTW91c2VMZWF2ZTpjLG9uS2V5RG93bjp1LHJvbGU6ayx0YWJJbmRleDpFfSxhKSx7Y2hpbGRyZW46W2QsZl19KSksaFsyNV09XyxoWzI2XT1uLGhbMjddPWEsaFsyOF09QyxoWzI5XT1zLGhbMzBdPWMsaFszMV09dSxoWzMyXT1rLGhbMzNdPUUsaFszNF09ZCxoWzM1XT1mLGhbMzZdPXApOnA9aFszNl0scH12YXIgb1A9ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLmNsb3NlT25DbGlja091dHNpZGUscj12b2lkIDA9PT1ufHxuLG89ZS5pdGVtcyxhPWRhKCkuc3RhdGUsaT1yMigpLGw9aS5zZXRQYW5lbCxzPWkudHJpZ2dlclJlZixjPWkuc2V0U2VsZWN0ZWRJbmRleCx1PWkuc2VsZWN0ZWRJbmRleCxkPXVYKCkubW91bnRlZCxmPW9TKGEuZGV2VG9vbHNQb3NpdGlvbi5zcGxpdChcIi1cIiwyKSwyKSxwPWZbMF0saD1mWzFdLG09KDAseC51c2VSZWYpKG51bGwpO3Q4KG0scyxyJiZkLGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJlc2NhcGVcIjpsKG51bGwpLGMoLTEpO3JldHVybjtjYXNlXCJvdXRzaWRlXCI6aWYoIXIpcmV0dXJuO2wobnVsbCksYygtMSk7cmV0dXJuO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSksKDAseC51c2VMYXlvdXRFZmZlY3QpKGZ1bmN0aW9uKCl7dmFyIGU7bnVsbD09KGU9bS5jdXJyZW50KXx8ZS5mb2N1cygpLG9EKHtpbmRleDotMT09PXU/XCJmaXJzdFwiOnUsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pfSxbXSk7dmFyIGc9cjQoYSkseT1vUyhhLmRldlRvb2xzUG9zaXRpb24uc3BsaXQoXCItXCIsMiksMiksdj15WzBdLEE9eVsxXSx3PXA9PT12JiZoPT09QT9nOm9BLEM9KG9rKHQ9e30scCxcIlwiLmNvbmNhdCh3LFwicHhcIikpLG9rKHQsaCxcIlwiLmNvbmNhdChvQSxcInB4XCIpKSxvayh0LFwidG9wXCI9PT1wP1wiYm90dG9tXCI6XCJ0b3BcIixcImF1dG9cIiksb2sodCxcImxlZnRcIj09PWg/XCJyaWdodFwiOlwibGVmdFwiLFwiYXV0b1wiKSx0KSxfPW8uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiEhZX0pLGs9Xy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZm9vdGVyfSksRT1fLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5mb290ZXJ9KTtyZXR1cm4oMCxiLmpzeCkoXCJkaXZcIix7cmVmOm0sb25LZXlEb3duOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTt2YXIgdD1fLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkNsaWNrfSkubGVuZ3RoO3N3aXRjaChlLmtleSl7Y2FzZVwiQXJyb3dEb3duXCI6b0Qoe2luZGV4OnU+PXQtMT8wOnUrMSxtZW51UmVmOm0sc2V0U2VsZWN0ZWRJbmRleDpjfSk7YnJlYWs7Y2FzZVwiQXJyb3dVcFwiOm9EKHtpbmRleDp1PD0wP3QtMTp1LTEsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pO2JyZWFrO2Nhc2VcIkhvbWVcIjpvRCh7aW5kZXg6XCJmaXJzdFwiLG1lbnVSZWY6bSxzZXRTZWxlY3RlZEluZGV4OmN9KTticmVhaztjYXNlXCJFbmRcIjpvRCh7aW5kZXg6XCJsYXN0XCIsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pO2JyZWFrO2Nhc2VcIm5cIjplLmN0cmxLZXkmJm9EKHtpbmRleDp1Pj10LTE/MDp1KzEsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pO2JyZWFrO2Nhc2VcInBcIjplLmN0cmxLZXkmJm9EKHtpbmRleDp1PD0wP3QtMTp1LTEsbWVudVJlZjptLHNldFNlbGVjdGVkSW5kZXg6Y30pfX0saWQ6XCJuZXh0anMtZGV2LXRvb2xzLW1lbnVcIixyb2xlOlwibWVudVwiLGRpcjpcImx0clwiLFwiYXJpYS1vcmllbnRhdGlvblwiOlwidmVydGljYWxcIixcImFyaWEtbGFiZWxcIjpcIk5leHQuanMgRGV2IFRvb2xzIEl0ZW1zXCIsdGFiSW5kZXg6LTEsc3R5bGU6b0Uoe291dGxpbmU6MCxXZWJraXRGb250U21vb3RoaW5nOlwiYW50aWFsaWFzZWRcIixkaXNwbGF5OlwiZmxleFwiLGZsZXhEaXJlY3Rpb246XCJjb2x1bW5cIixhbGlnbkl0ZW1zOlwiZmxleC1zdGFydFwiLGJhY2tncm91bmQ6XCJ2YXIoLS1jb2xvci1iYWNrZ3JvdW5kLTEwMClcIixiYWNrZ3JvdW5kQ2xpcDpcInBhZGRpbmctYm94XCIsYm94U2hhZG93OlwidmFyKC0tc2hhZG93LW1lbnUpXCIsYm9yZGVyUmFkaXVzOlwidmFyKC0tcm91bmRlZC14bClcIixwb3NpdGlvbjpcImZpeGVkXCIsZm9udEZhbWlseTpcInZhcigtLWZvbnQtc3RhY2stc2FucylcIix6SW5kZXg6XCJ2YXIoLS10b3Atei1pbmRleClcIixvdmVyZmxvdzpcImhpZGRlblwiLG9wYWNpdHk6MSxtaW5XaWR0aDpcIjI0OHB4XCIsdHJhbnNpdGlvbjpcIm9wYWNpdHkgdmFyKC0tYW5pbWF0ZS1vdXQtZHVyYXRpb24tbXMpIHZhcigtLWFuaW1hdGUtb3V0LXRpbWluZy1mdW5jdGlvbilcIixib3JkZXI6XCIxcHggc29saWQgdmFyKC0tY29sb3ItZ3JheS1hbHBoYS00MDApXCJ9LEMpLGNoaWxkcmVuOigwLGIuanN4cykob08se3ZhbHVlOntzZWxlY3RlZEluZGV4OnUsc2V0U2VsZWN0ZWRJbmRleDpjfSxjaGlsZHJlbjpbKDAsYi5qc3gpKFwiZGl2XCIse3N0eWxlOntwYWRkaW5nOlwiNnB4XCIsd2lkdGg6XCIxMDAlXCJ9LGNoaWxkcmVuOmsubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDAsYi5qc3gpKG9CLG9FKHt0aXRsZTplLnRpdGxlLGxhYmVsOmUubGFiZWwsdmFsdWU6ZS52YWx1ZSxvbkNsaWNrOmUub25DbGljayxpbmRleDplLm9uQ2xpY2s/b0koayx0KTp2b2lkIDB9LGUuYXR0cmlidXRlcyksZS5sYWJlbCl9KX0pLCgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5kaWNhdG9yLWZvb3RlclwiLGNoaWxkcmVuOkUubWFwKGZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuKDAsYi5qc3gpKG9CLG9qKG9FKHt0aXRsZTplLnRpdGxlLGxhYmVsOmUubGFiZWwsdmFsdWU6ZS52YWx1ZSxvbkNsaWNrOmUub25DbGlja30sZS5hdHRyaWJ1dGVzKSx7aW5kZXg6ZS5vbkNsaWNrP29JKEUsdCkrKG49aykuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9uQ2xpY2t9KS5sZW5ndGg6dm9pZCAwfSksZS5sYWJlbCl9KX0pXX0pfSl9O2Z1bmN0aW9uIG9JKGUsdCl7Zm9yKHZhciBuPTAscj0wO3I8PXQmJnI8ZS5sZW5ndGg7cisrKWlmKGVbcl0ub25DbGljayl7aWYocj09PXQpcmV0dXJuIG47bisrfXJldHVybiBufWZ1bmN0aW9uIG96KGUpe3ZhciB0LG4scj0oMCxBLmMpKDQpLG89ZS5jaGlsZHJlbixhPW8+MDtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZGljYXRvci1pc3N1ZS1jb3VudC1pbmRpY2F0b3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1vfHxyWzJdIT09YT8obj0oMCxiLmpzeHMpKFwic3BhblwiLHtjbGFzc05hbWU6XCJkZXYtdG9vbHMtaW5kaWNhdG9yLWlzc3VlLWNvdW50XCIsXCJkYXRhLWhhcy1pc3N1ZXNcIjphLGNoaWxkcmVuOlt0LG9dfSksclsxXT1vLHJbMl09YSxyWzNdPW4pOm49clszXSxufWZ1bmN0aW9uIG9UKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse3htbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIix3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcIm5vbmVcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGw6XCIjNjY2XCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsY2xpcFJ1bGU6XCJldmVub2RkXCIsZDpcIk01LjUwMDExIDEuOTM5NDVMNi4wMzA0NCAyLjQ2OTc4TDEwLjg1MzcgNy4yOTNDMTEuMjQ0MiA3LjY4MzUzIDExLjI0NDIgOC4zMTY2OSAxMC44NTM3IDguNzA3MjJMNi4wMzA0NCAxMy41MzA0TDUuNTAwMTEgMTQuMDYwOEw0LjQzOTQ1IDEzLjAwMDFMNC45Njk3OCAxMi40Njk4TDkuNDM5NDUgOC4wMDAxMUw0Ljk2OTc4IDMuNTMwNDRMNC40Mzk0NSAzLjAwMDExTDUuNTAwMTEgMS45Mzk0NVpcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiBvRChlKXt2YXIgdCxuPWUuaW5kZXgscj1lLm1lbnVSZWYsbz1lLnNldFNlbGVjdGVkSW5kZXg7aWYoXCJmaXJzdFwiPT09bilyZXR1cm4gdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGUsdD1udWxsPT0oZT1yLmN1cnJlbnQpP3ZvaWQgMDplLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPVwibWVudWl0ZW1cIl0nKTt0JiZvRCh7aW5kZXg6TnVtYmVyKHRbMF0uZ2V0QXR0cmlidXRlKFwiZGF0YS1pbmRleFwiKSksbWVudVJlZjpyLHNldFNlbGVjdGVkSW5kZXg6b30pfSk7aWYoXCJsYXN0XCI9PT1uKXJldHVybiB2b2lkIHNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgZSx0PW51bGw9PShlPXIuY3VycmVudCk/dm9pZCAwOmUucXVlcnlTZWxlY3RvckFsbCgnW3JvbGU9XCJtZW51aXRlbVwiXScpO3QmJm9EKHtpbmRleDp0Lmxlbmd0aC0xLG1lbnVSZWY6cixzZXRTZWxlY3RlZEluZGV4Om99KX0pO3ZhciBhPW51bGw9PSh0PXIuY3VycmVudCk/dm9pZCAwOnQucXVlcnlTZWxlY3RvcignW2RhdGEtaW5kZXg9XCInLmNvbmNhdChuLCdcIl0nKSk7YSYmKG8obiksbnVsbD09YXx8YS5mb2N1cygpKX1mdW5jdGlvbiBvTChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9dmFyIG9OPSgwLHguY3JlYXRlQ29udGV4dCkobnVsbCksb1I9ZnVuY3Rpb24oZSl7dmFyIHQ9Ljk1KndpbmRvdy5pbm5lcldpZHRoLG49Ljk1KndpbmRvdy5pbm5lckhlaWdodDtyZXR1cm57d2lkdGg6TWF0aC5taW4odCxNYXRoLm1heChlLm1pbldpZHRoLGUud2lkdGgpKSxoZWlnaHQ6TWF0aC5taW4obixNYXRoLm1heChlLm1pbkhlaWdodCxlLmhlaWdodCkpfX0sb009ZnVuY3Rpb24oZSl7dmFyIHQsbixyLG8sYSxpLGwscz1lLnZhbHVlLGM9ZS5jaGlsZHJlbix1PW51bGwhPShhPXMubWluV2lkdGgpP2E6MTAwLGQ9bnVsbCE9KGk9cy5taW5IZWlnaHQpP2k6ODAsZj1zLm1heFdpZHRoLHA9cy5tYXhIZWlnaHQsaD0odD0oMCx4LnVzZVN0YXRlKShudWxsKSxuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb0woZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb0woZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLG09aFswXSxnPWhbMV0seT1udWxsIT0obD1zLnN0b3JhZ2VLZXkpP2w6ZWUsdj0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbigpe2lmKHMucmVzaXplUmVmLmN1cnJlbnQmJm51bGw9PT1tKXt2YXIgZT1zLmRldlRvb2xzUGFuZWxTaXplW3ldO2lmKGUpe3ZhciB0LG4scj1vUigodD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9KHt9LGUpLG49bj17bWluV2lkdGg6bnVsbCE9dT91OjEwMCxtaW5IZWlnaHQ6bnVsbCE9ZD9kOjgwfSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KG4pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpKX0pLHQpKSxvPXIuaGVpZ2h0LGE9ci53aWR0aDtyZXR1cm4gcy5yZXNpemVSZWYuY3VycmVudC5zdHlsZS53aWR0aD1cIlwiLmNvbmNhdChhLFwicHhcIikscy5yZXNpemVSZWYuY3VycmVudC5zdHlsZS5oZWlnaHQ9XCJcIi5jb25jYXQobyxcInB4XCIpLCEwfX19LFtzLnJlc2l6ZVJlZixtLHksdSxkLHMuZGV2VG9vbHNQYW5lbFNpemVdKTtyZXR1cm4oMCx4LnVzZUxheW91dEVmZmVjdCkoZnVuY3Rpb24oKXt2YXIgZTtpZighdigpJiZzLnJlc2l6ZVJlZi5jdXJyZW50JiYobnVsbD09KGU9cy5pbml0aWFsU2l6ZSk/dm9pZCAwOmUuaGVpZ2h0KSYmcy5pbml0aWFsU2l6ZS53aWR0aCl7dmFyIHQ9b1Ioe2hlaWdodDpzLmluaXRpYWxTaXplLmhlaWdodCx3aWR0aDpzLmluaXRpYWxTaXplLndpZHRoLG1pbldpZHRoOm51bGwhPXU/dToxMDAsbWluSGVpZ2h0Om51bGwhPWQ/ZDo4MH0pLG49dC5oZWlnaHQscj10LndpZHRoO3MucmVzaXplUmVmLmN1cnJlbnQuc3R5bGUud2lkdGg9XCJcIi5jb25jYXQocixcInB4XCIpLHMucmVzaXplUmVmLmN1cnJlbnQuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KG4sXCJweFwiKX19LFtdKSwoMCx4LnVzZUxheW91dEVmZmVjdCkoZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix2KSxmdW5jdGlvbigpe3JldHVybiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHYpfX0sW3YsbnVsbD09KHI9cy5pbml0aWFsU2l6ZSk/dm9pZCAwOnIuaGVpZ2h0LG51bGw9PShvPXMuaW5pdGlhbFNpemUpP3ZvaWQgMDpvLndpZHRoLHMucmVzaXplUmVmXSksKDAsYi5qc3gpKG9OLlByb3ZpZGVyLHt2YWx1ZTp7cmVzaXplUmVmOnMucmVzaXplUmVmLG1pbldpZHRoOnUsbWluSGVpZ2h0OmQsbWF4V2lkdGg6ZixtYXhIZWlnaHQ6cCxkcmFnZ2luZ0RpcmVjdGlvbjptLHNldERyYWdnaW5nRGlyZWN0aW9uOmcsc3RvcmFnZUtleTp5fSxjaGlsZHJlbjpjfSl9LG9aPWZ1bmN0aW9uKCl7dmFyIGU9KDAseC51c2VDb250ZXh0KShvTik7aWYoIWUpdGhyb3cgRXJyb3IoXCJ1c2VSZXNpemUgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIFJlc2l6ZSBwcm92aWRlclwiKTtyZXR1cm4gZX0sb1U9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL2RldnRvb2xzLXBhbmVsL3Jlc2l6ZS9yZXNpemUtaGFuZGxlLmNzc1wiKSxvRj17fTtmdW5jdGlvbiBvcShlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9b0Yuc3R5bGVUYWdUcmFuc2Zvcm09aCgpLG9GLnNldEF0dHJpYnV0ZXM9dSgpLG9GLmluc2VydD1zKCksb0YuZG9tQVBJPWkoKSxvRi5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKShvVS5aLG9GKSxvVS5aJiZvVS5aLmxvY2FscyYmb1UuWi5sb2NhbHM7dmFyIG9IPWZ1bmN0aW9uKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQ9KDAsQS5jKSgzMiksZj1lLmRpcmVjdGlvbixwPWUucG9zaXRpb24saD1vWigpLG09aC5yZXNpemVSZWYsZz1oLm1pbldpZHRoLHk9aC5taW5IZWlnaHQsdj1oLm1heFdpZHRoLHc9aC5tYXhIZWlnaHQsQz1oLnN0b3JhZ2VLZXksXz1oLmRyYWdnaW5nRGlyZWN0aW9uLGs9aC5zZXREcmFnZ2luZ0RpcmVjdGlvbjtkWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHI9e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxkWzBdPXIpOnI9ZFswXTt2YXIgRT0odD0oMCx4LnVzZVN0YXRlKShyKSxuPTIsZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlyZXR1cm4gZX0odCl8fGZ1bmN0aW9uKGUsdCl7dmFyIG4scixvPW51bGw9PWU/bnVsbDpcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZlW1N5bWJvbC5pdGVyYXRvcl18fGVbXCJAQGl0ZXJhdG9yXCJdO2lmKG51bGwhPW8pe3ZhciBhPVtdLGk9ITAsbD0hMTt0cnl7Zm9yKG89by5jYWxsKGUpOyEoaT0obj1vLm5leHQoKSkuZG9uZSkmJihhLnB1c2gobi52YWx1ZSksYS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0odCwyKXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb3EoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb3EoZSx0KX19KHQsbil8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGo9RVswXSxTPUVbMV07ZFsxXSE9PW0uY3VycmVudD8obz1mdW5jdGlvbigpe2lmKG0uY3VycmVudCl7dmFyIGU9bS5jdXJyZW50LHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSk7Uyh7dG9wOnBhcnNlRmxvYXQodC5ib3JkZXJUb3BXaWR0aCl8fDAscmlnaHQ6cGFyc2VGbG9hdCh0LmJvcmRlclJpZ2h0V2lkdGgpfHwwLGJvdHRvbTpwYXJzZUZsb2F0KHQuYm9yZGVyQm90dG9tV2lkdGgpfHwwLGxlZnQ6cGFyc2VGbG9hdCh0LmJvcmRlckxlZnRXaWR0aCl8fDB9KX19LGRbMV09bS5jdXJyZW50LGRbMl09byk6bz1kWzJdLGRbM10hPT1tPyhhPVttXSxkWzNdPW0sZFs0XT1hKTphPWRbNF0sKDAseC51c2VMYXlvdXRFZmZlY3QpKG8sYSksZFs1XSE9PWZ8fGRbNl0hPT13fHxkWzddIT09dnx8ZFs4XSE9PXl8fGRbOV0hPT1nfHxkWzEwXSE9PW0uY3VycmVudHx8ZFsxMV0hPT1rfHxkWzEyXSE9PUM/KGk9ZnVuY3Rpb24oZSl7aWYoZS5wcmV2ZW50RGVmYXVsdCgpLG0uY3VycmVudCl7ayhmKTt2YXIgdD1tLmN1cnJlbnQsbj10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9ZS5jbGllbnRYLG89ZS5jbGllbnRZLGE9ZnVuY3Rpb24oZSl7dmFyIGE9b1YoZixlLmNsaWVudFgtcixlLmNsaWVudFktbyxuLGcseSx2LHcpLGk9YS5uZXdXaWR0aCxsPWEubmV3SGVpZ2h0O3ZvaWQgMCE9PWkmJih0LnN0eWxlLndpZHRoPVwiXCIuY29uY2F0KGksXCJweFwiKSksdm9pZCAwIT09bCYmKHQuc3R5bGUuaGVpZ2h0PVwiXCIuY29uY2F0KGwsXCJweFwiKSl9LGk9ZnVuY3Rpb24oKXtpZihrKG51bGwpLGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixhKSxkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLGkpLG0uY3VycmVudCl7dmFyIGUsdCxuLHI9bS5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89ci53aWR0aCxsPXIuaGVpZ2h0O3JBKHtkZXZUb29sc1BhbmVsU2l6ZTooZT17fSx0PUMsbj17d2lkdGg6byxoZWlnaHQ6bH0sdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZSl9KX19O2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixhKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwibW91c2V1cFwiLGkpfX0sZFs1XT1mLGRbNl09dyxkWzddPXYsZFs4XT15LGRbOV09ZyxkWzEwXT1tLmN1cnJlbnQsZFsxMV09ayxkWzEyXT1DLGRbMTNdPWkpOmk9ZFsxM107dmFyIE89aTtpZighKCFwLnNwbGl0KFwiLVwiKS5pbmNsdWRlcyhmKSYmKCFmLmluY2x1ZGVzKFwiLVwiKXx8Zj09PW8kKHApKSkpcmV0dXJuIG51bGw7dmFyIEI9ai5sZWZ0K2oucmlnaHQsUD1qLnRvcCtqLmJvdHRvbTtkWzE0XSE9PWY/KGw9Zi5pbmNsdWRlcyhcIi1cIiksZFsxNF09ZixkWzE1XT1sKTpsPWRbMTVdO3ZhciBJPWwsej1cInJlc2l6ZS1jb250YWluZXIgXCIuY29uY2F0KGYsXCIgXCIpLmNvbmNhdChfJiZfIT09Zj9cIm5vLWhvdmVyXCI6XCJcIik7cmV0dXJuIGRbMTZdIT09T3x8ZFsxN10hPT16PyhzPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6eixvbk1vdXNlRG93bjpPfSksZFsxNl09TyxkWzE3XT16LGRbMThdPXMpOnM9ZFsxOF0sZFsxOV0hPT1qLmJvdHRvbXx8ZFsyMF0hPT1qLmxlZnR8fGRbMjFdIT09ai5yaWdodHx8ZFsyMl0hPT1qLnRvcHx8ZFsyM10hPT1mfHxkWzI0XSE9PV98fGRbMjVdIT09SXx8ZFsyNl0hPT1CfHxkWzI3XSE9PVA/KGM9IUkmJigwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJyZXNpemUtbGluZSBcIi5jb25jYXQoZixcIiBcIikuY29uY2F0KF89PT1mP1wiZHJhZ2dpbmdcIjpcIlwiKSxzdHlsZTp7XCItLWJvcmRlci1ob3Jpem9udGFsXCI6XCJcIi5jb25jYXQoQixcInB4XCIpLFwiLS1ib3JkZXItdmVydGljYWxcIjpcIlwiLmNvbmNhdChQLFwicHhcIiksXCItLWJvcmRlci10b3BcIjpcIlwiLmNvbmNhdChqLnRvcCxcInB4XCIpLFwiLS1ib3JkZXItcmlnaHRcIjpcIlwiLmNvbmNhdChqLnJpZ2h0LFwicHhcIiksXCItLWJvcmRlci1ib3R0b21cIjpcIlwiLmNvbmNhdChqLmJvdHRvbSxcInB4XCIpLFwiLS1ib3JkZXItbGVmdFwiOlwiXCIuY29uY2F0KGoubGVmdCxcInB4XCIpfX0pLGRbMTldPWouYm90dG9tLGRbMjBdPWoubGVmdCxkWzIxXT1qLnJpZ2h0LGRbMjJdPWoudG9wLGRbMjNdPWYsZFsyNF09XyxkWzI1XT1JLGRbMjZdPUIsZFsyN109UCxkWzI4XT1jKTpjPWRbMjhdLGRbMjldIT09c3x8ZFszMF0hPT1jPyh1PSgwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46W3MsY119KSxkWzI5XT1zLGRbMzBdPWMsZFszMV09dSk6dT1kWzMxXSx1fSxvVj1mdW5jdGlvbihlLHQsbixyLG8sYSxpLGwpe3ZhciBzPW51bGwhPWk/aTouOTUqd2luZG93LmlubmVyV2lkdGgsYz1udWxsIT1sP2w6Ljk1KndpbmRvdy5pbm5lckhlaWdodDtzd2l0Y2goZSl7Y2FzZVwicmlnaHRcIjpyZXR1cm57bmV3V2lkdGg6TWF0aC5taW4ocyxNYXRoLm1heChvLHIud2lkdGgrdCkpLG5ld0hlaWdodDpyLmhlaWdodH07Y2FzZVwibGVmdFwiOnJldHVybntuZXdXaWR0aDpNYXRoLm1pbihzLE1hdGgubWF4KG8sci53aWR0aC10KSksbmV3SGVpZ2h0OnIuaGVpZ2h0fTtjYXNlXCJib3R0b21cIjpyZXR1cm57bmV3V2lkdGg6ci53aWR0aCxuZXdIZWlnaHQ6TWF0aC5taW4oYyxNYXRoLm1heChhLHIuaGVpZ2h0K24pKX07Y2FzZVwidG9wXCI6cmV0dXJue25ld1dpZHRoOnIud2lkdGgsbmV3SGVpZ2h0Ok1hdGgubWluKGMsTWF0aC5tYXgoYSxyLmhlaWdodC1uKSl9O2Nhc2VcInRvcC1sZWZ0XCI6cmV0dXJue25ld1dpZHRoOk1hdGgubWluKHMsTWF0aC5tYXgobyxyLndpZHRoLXQpKSxuZXdIZWlnaHQ6TWF0aC5taW4oYyxNYXRoLm1heChhLHIuaGVpZ2h0LW4pKX07Y2FzZVwidG9wLXJpZ2h0XCI6cmV0dXJue25ld1dpZHRoOk1hdGgubWluKHMsTWF0aC5tYXgobyxyLndpZHRoK3QpKSxuZXdIZWlnaHQ6TWF0aC5taW4oYyxNYXRoLm1heChhLHIuaGVpZ2h0LW4pKX07Y2FzZVwiYm90dG9tLWxlZnRcIjpyZXR1cm57bmV3V2lkdGg6TWF0aC5taW4ocyxNYXRoLm1heChvLHIud2lkdGgtdCkpLG5ld0hlaWdodDpNYXRoLm1pbihjLE1hdGgubWF4KGEsci5oZWlnaHQrbikpfTtjYXNlXCJib3R0b20tcmlnaHRcIjpyZXR1cm57bmV3V2lkdGg6TWF0aC5taW4ocyxNYXRoLm1heChvLHIud2lkdGgrdCkpLG5ld0hlaWdodDpNYXRoLm1pbihjLE1hdGgubWF4KGEsci5oZWlnaHQrbikpfTtkZWZhdWx0OnJldHVybiBudWxsfX07ZnVuY3Rpb24gbyQoZSl7c3dpdGNoKGUpe2Nhc2VcInRvcC1sZWZ0XCI6cmV0dXJuXCJib3R0b20tcmlnaHRcIjtjYXNlXCJ0b3AtcmlnaHRcIjpyZXR1cm5cImJvdHRvbS1sZWZ0XCI7Y2FzZVwiYm90dG9tLWxlZnRcIjpyZXR1cm5cInRvcC1yaWdodFwiO2Nhc2VcImJvdHRvbS1yaWdodFwiOnJldHVyblwidG9wLWxlZnRcIjtkZWZhdWx0OnJldHVybiBudWxsfX12YXIgb1c9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9wYW5lbC9keW5hbWljLXBhbmVsLmNzc1wiKSxvWT17fTtmdW5jdGlvbiBvSyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gb1goZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfWZ1bmN0aW9uIG9HKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXtvWChlLHQsblt0XSl9KX1yZXR1cm4gZX1mdW5jdGlvbiBvUShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gb0soZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gb0soZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9ZnVuY3Rpb24gb0ooZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOlwid2lkdGhcIjtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO24uc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiLG4uc3R5bGUudmlzaWJpbGl0eT1cImhpZGRlblwiLFwid2lkdGhcIj09PXQ/bi5zdHlsZS53aWR0aD1lOm4uc3R5bGUuaGVpZ2h0PWUsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKTt2YXIgcj1cIndpZHRoXCI9PT10P24ub2Zmc2V0V2lkdGg6bi5vZmZzZXRIZWlnaHQ7cmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobikscn1mdW5jdGlvbiBvMChlKXt2YXIgdCxuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoLG0sZz1lLmhlYWRlcix5PWUuY2hpbGRyZW4sdj1lLmRyYWdnYWJsZSx3PXZvaWQgMCE9PXYmJnYsQz1lLnNpemVDb25maWcsXz12b2lkIDA9PT1DP3traW5kOlwicmVzaXphYmxlXCIsbWluV2lkdGg6NDAwLG1pbkhlaWdodDozNTAsbWF4V2lkdGg6MWUzLG1heEhlaWdodDoxZTMsaW5pdGlhbFNpemU6e2hlaWdodDo0MDAsd2lkdGg6NTAwfX06QyxrPWUuY2xvc2VPbkNsaWNrT3V0c2lkZSxFPXZvaWQgMCE9PWsmJmssaj1lLnNoYXJlUGFuZWxTaXplR2xvYmFsbHksUz1lLnNoYXJlUGFuZWxQb3NpdGlvbkdsb2JhbGx5LE89ZS5jb250YWluZXJQcm9wcyxCPXIyKCkuc2V0UGFuZWwsUD11WCgpLEk9UC5uYW1lLHo9UC5tb3VudGVkLFQ9dm9pZCAwPT09anx8aj9lZTpcIlwiLmNvbmNhdChKLFwiX1wiKS5jb25jYXQoSSksRD12b2lkIDA9PT1TfHxTP2V0OlwiXCIuY29uY2F0KFEsXCJfXCIpLmNvbmNhdChJKSxMPWRhKCksTj1MLmRpc3BhdGNoLFI9TC5zdGF0ZSxNPW51bGwhPShoPVIuZGV2VG9vbHNQYW5lbFBvc2l0aW9uW0RdKT9oOlIuZGV2VG9vbHNQb3NpdGlvbixaPW9RKE0uc3BsaXQoXCItXCIsMiksMiksVT1aWzBdLEY9WlsxXSxxPSgwLHgudXNlUmVmKShudWxsKTt0OChxLHIyKCkudHJpZ2dlclJlZix6LGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJlc2NhcGVcIjpyZXR1cm4gdm9pZCBCKFwicGFuZWwtc2VsZWN0b3JcIik7Y2FzZVwib3V0c2lkZVwiOkUmJkIoXCJwYW5lbC1zZWxlY3RvclwiKTtyZXR1cm47ZGVmYXVsdDpyZXR1cm4gbnVsbH19KTt2YXIgSD1yNChSKSxWPW9RKFIuZGV2VG9vbHNQb3NpdGlvbi5zcGxpdChcIi1cIiwyKSwyKSwkPVZbMF0sVz1WWzFdLFk9VT09PSQmJkY9PT1XP0g6b0EsWD0ob1gobT17fSxVLFwiXCIuY29uY2F0KFksXCJweFwiKSksb1gobSxGLFwiXCIuY29uY2F0KG9BLFwicHhcIikpLG9YKG0sXCJ0b3BcIj09PVU/XCJib3R0b21cIjpcInRvcFwiLFwiYXV0b1wiKSxvWChtLFwibGVmdFwiPT09Rj9cInJpZ2h0XCI6XCJsZWZ0XCIsXCJhdXRvXCIpLG0pLEc9XCJyZXNpemFibGVcIj09PV8ua2luZCxlbj0odD1HP18ubWluV2lkdGg6dm9pZCAwLG49Rz9fLm1pbkhlaWdodDp2b2lkIDAscj1HP18ubWF4V2lkdGg6dm9pZCAwLG89Rz9fLm1heEhlaWdodDp2b2lkIDAsKHM9KDAsQS5jKSgxMSkpWzBdIT09b3x8c1sxXSE9PXJ8fHNbMl0hPT1ufHxzWzNdIT09dD8oYT1mdW5jdGlvbigpe3JldHVybnttaW5XaWR0aDp0P29KKHQsXCJ3aWR0aFwiKTp2b2lkIDAsbWluSGVpZ2h0Om4/b0oobixcImhlaWdodFwiKTp2b2lkIDAsbWF4V2lkdGg6cj9vSihyLFwid2lkdGhcIik6dm9pZCAwLG1heEhlaWdodDpvP29KKG8sXCJoZWlnaHRcIik6dm9pZCAwfX0sc1swXT1vLHNbMV09cixzWzJdPW4sc1szXT10LHNbNF09YSk6YT1zWzRdLHU9KGM9b1EoKDAseC51c2VTdGF0ZSkoYSksMikpWzBdLGQ9Y1sxXSxzWzVdIT09b3x8c1s2XSE9PXJ8fHNbN10hPT1ufHxzWzhdIT09dD8oaT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7ZCh7bWluV2lkdGg6dD9vSih0LFwid2lkdGhcIik6dm9pZCAwLG1pbkhlaWdodDpuP29KKG4sXCJoZWlnaHRcIik6dm9pZCAwLG1heFdpZHRoOnI/b0oocixcIndpZHRoXCIpOnZvaWQgMCxtYXhIZWlnaHQ6bz9vSihvLFwiaGVpZ2h0XCIpOnZvaWQgMH0pfTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIixlKSxmdW5jdGlvbigpe3JldHVybiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLGUpfX0sbD1bdCxuLHIsb10sc1s1XT1vLHNbNl09cixzWzddPW4sc1s4XT10LHNbOV09aSxzWzEwXT1sKTooaT1zWzldLGw9c1sxMF0pLCgwLHgudXNlRWZmZWN0KShpLGwpLHUpLGVyPWVuLm1pbldpZHRoLGVvPWVuLm1pbkhlaWdodCxlYT1lbi5tYXhXaWR0aCxlaT1lbi5tYXhIZWlnaHQsZWw9ST9cIlwiLmNvbmNhdChKLFwiX1wiKS5jb25jYXQoSSk6ZWUsZXM9Ui5kZXZUb29sc1BhbmVsU2l6ZVtlbF07cmV0dXJuKDAsYi5qc3gpKG9NLHt2YWx1ZTp7cmVzaXplUmVmOnEsaW5pdGlhbFNpemU6XCJyZXNpemFibGVcIj09PV8ua2luZD9fLmluaXRpYWxTaXplOl8sbWluV2lkdGg6ZXIsbWluSGVpZ2h0OmVvLG1heFdpZHRoOmVhLG1heEhlaWdodDplaSxkZXZUb29sc1Bvc2l0aW9uOlIuZGV2VG9vbHNQb3NpdGlvbixkZXZUb29sc1BhbmVsU2l6ZTpSLmRldlRvb2xzUGFuZWxTaXplLHN0b3JhZ2VLZXk6VH0sY2hpbGRyZW46KDAsYi5qc3gpKFwiZGl2XCIse3RhYkluZGV4Oi0xLHJlZjpxLGNsYXNzTmFtZTpcImR5bmFtaWMtcGFuZWwtY29udGFpbmVyXCIsc3R5bGU6b0coe1wiLS1wYW5lbC10b3BcIjpYLnRvcCxcIi0tcGFuZWwtYm90dG9tXCI6WC5ib3R0b20sXCItLXBhbmVsLWxlZnRcIjpYLmxlZnQsXCItLXBhbmVsLXJpZ2h0XCI6WC5yaWdodH0sRz97XCItLXBhbmVsLW1pbi13aWR0aFwiOmVyP1wiXCIuY29uY2F0KGVyLFwicHhcIik6dm9pZCAwLFwiLS1wYW5lbC1taW4taGVpZ2h0XCI6ZW8/XCJcIi5jb25jYXQoZW8sXCJweFwiKTp2b2lkIDAsXCItLXBhbmVsLW1heC13aWR0aFwiOmVhP1wiXCIuY29uY2F0KGVhLFwicHhcIik6dm9pZCAwLFwiLS1wYW5lbC1tYXgtaGVpZ2h0XCI6ZWk/XCJcIi5jb25jYXQoZWksXCJweFwiKTp2b2lkIDB9OntcIi0tcGFuZWwtaGVpZ2h0XCI6XCJcIi5jb25jYXQoZXM/ZXMuaGVpZ2h0Ol8uaGVpZ2h0LFwicHhcIiksXCItLXBhbmVsLXdpZHRoXCI6XCJcIi5jb25jYXQoZXM/ZXMud2lkdGg6Xy53aWR0aCxcInB4XCIpfSksY2hpbGRyZW46KDAsYi5qc3gpKG9pLHtkaXNhYmxlZDohdyxjaGlsZHJlbjooMCxiLmpzeCkob20se2RyYWdIYW5kbGVTZWxlY3RvcjpcIi5yZXNpemUtY29udGFpbmVyXCIsYXZvaWRab25lOntjb3JuZXI6Ui5kZXZUb29sc1Bvc2l0aW9uLHNxdWFyZToyNS9SLnNjYWxlLHBhZGRpbmc6b0F9LHBhZGRpbmc6b0EscG9zaXRpb246TSxzZXRQb3NpdGlvbjpmdW5jdGlvbihlKXtOKHt0eXBlOkssZGV2VG9vbHNQYW5lbFBvc2l0aW9uOmUsa2V5OkR9KSxcInJlc2l6YWJsZVwiPT09Xy5raW5kJiZyQSh7ZGV2VG9vbHNQYW5lbFBvc2l0aW9uOm9YKHt9LEQsZSl9KX0sc3R5bGU6e292ZXJmbG93OlwiYXV0b1wiLHdpZHRoOlwiMTAwJVwiLGhlaWdodDpcIjEwMCVcIn0sZGlzYWJsZURyYWc6IXcsY2hpbGRyZW46KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsYi5qc3hzKShcImRpdlwiLChmPW9HKHt9LE8pLHA9cD17Y2xhc3NOYW1lOlwicGFuZWwtY29udGVudC1jb250YWluZXIgXCIuY29uY2F0KChudWxsPT1PP3ZvaWQgMDpPLmNsYXNzTmFtZSl8fFwiXCIpLHN0eWxlOm9HKHt9LG51bGw9PU8/dm9pZCAwOk8uc3R5bGUpLGNoaWxkcmVuOlsoMCxiLmpzeCkob3Mse2NoaWxkcmVuOmd9KSwoMCxiLmpzeCkoXCJkaXZcIix7XCJkYXRhLW5leHRqcy1zY3JvbGxhYmxlLWNvbnRlbnRcIjohMCxjbGFzc05hbWU6XCJkcmFnZ2FibGUtY29udGVudFwiLGNoaWxkcmVuOnl9KV19LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGYsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QocCkpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGYsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHAsZSkpfSksZikpLEcmJigwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46WyghXy5zaWRlc3x8Xy5zaWRlcy5pbmNsdWRlcyhcInZlcnRpY2FsXCIpKSYmKDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsYi5qc3gpKG9ILHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcInRvcFwifSksKDAsYi5qc3gpKG9ILHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcImJvdHRvbVwifSldfSksKCFfLnNpZGVzfHxfLnNpZGVzLmluY2x1ZGVzKFwiaG9yaXpvbnRhbFwiKSkmJigwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46WygwLGIuanN4KShvSCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJyaWdodFwifSksKDAsYi5qc3gpKG9ILHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcImxlZnRcIn0pXX0pLCghXy5zaWRlc3x8Xy5zaWRlcy5pbmNsdWRlcyhcImRpYWdvbmFsXCIpKSYmKDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsYi5qc3gpKG9ILHtwb3NpdGlvbjpNLGRpcmVjdGlvbjpcInRvcC1sZWZ0XCJ9KSwoMCxiLmpzeCkob0gse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwidG9wLXJpZ2h0XCJ9KSwoMCxiLmpzeCkob0gse3Bvc2l0aW9uOk0sZGlyZWN0aW9uOlwiYm90dG9tLWxlZnRcIn0pLCgwLGIuanN4KShvSCx7cG9zaXRpb246TSxkaXJlY3Rpb246XCJib3R0b20tcmlnaHRcIn0pXX0pXX0pXX0pfSl9KX0pfSl9b1kuc3R5bGVUYWdUcmFuc2Zvcm09aCgpLG9ZLnNldEF0dHJpYnV0ZXM9dSgpLG9ZLmluc2VydD1zKCksb1kuZG9tQVBJPWkoKSxvWS5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKShvVy5aLG9ZKSxvVy5aJiZvVy5aLmxvY2FscyYmb1cuWi5sb2NhbHM7dmFyIG8xPV9fd2VicGFja19yZXF1aXJlX18oXCIuLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY3NzLWxvYWRlckA3LjEuMl9AcnNwYWNrK2NvcmVAMS40LjVfQHN3YytoZWxwZXJzQDAuNS4xNV9fd2VicGFja0A1Ljk4LjBfQHN3Yytjb3JlQDEuMTEuMjRfQHN3X3dtN2VlNWljNG1vZnJoaXN1ZHdvbjRxcHE0L25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vc3JjL25leHQtZGV2dG9vbHMvZGV2LW92ZXJsYXkvY29tcG9uZW50cy9vdmVydmlldy9zZWdtZW50LWV4cGxvcmVyLmNzc1wiKSxvMj17fTtmdW5jdGlvbiBvNChlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1udWxsIT1hcmd1bWVudHNbdF0/YXJndW1lbnRzW3RdOnt9LHI9T2JqZWN0LmtleXMobik7XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyYmKHI9ci5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhuKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobixlKS5lbnVtZXJhYmxlfSkpKSxyLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIHIsbyxhO3I9ZSxvPXQsYT1uW3RdLG8gaW4gcj9PYmplY3QuZGVmaW5lUHJvcGVydHkocixvLHt2YWx1ZTphLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6cltvXT1hfSl9cmV0dXJuIGV9bzIuc3R5bGVUYWdUcmFuc2Zvcm09aCgpLG8yLnNldEF0dHJpYnV0ZXM9dSgpLG8yLmluc2VydD1zKCksbzIuZG9tQVBJPWkoKSxvMi5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKShvMS5aLG8yKSxvMS5aJiZvMS5aLmxvY2FscyYmbzEuWi5sb2NhbHM7dmFyIG81PW5ldyBTZXQsbzM9e3N1YnNjcmliZTpmdW5jdGlvbihlKXtyZXR1cm4gbzUuYWRkKGUpLGZ1bmN0aW9uKCl7cmV0dXJuIG81LmRlbGV0ZShlKX19LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7cmV0dXJuIG83LmdldFJvb3QoKX0sZ2V0U2VydmVyU25hcHNob3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbzcuZ2V0Um9vdCgpfX0sbzY9bzMuc3Vic2NyaWJlLG85PW8zLmdldFNuYXBzaG90LG84PW8zLmdldFNlcnZlclNuYXBzaG90LG83PWZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0Q2hhcmFjdGVycyxuPXZvaWQgMD09PXQ/ZnVuY3Rpb24oZSl7cmV0dXJuW2VdfTp0LHI9ZS5jb21wYXJlLG89dm9pZCAwPT09cj9mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dH06cixhPXt2YWx1ZTp2b2lkIDAsY2hpbGRyZW46e319O2Z1bmN0aW9uIGkoKXt2YXIgZT0hMCx0PSExLG49dm9pZCAwO3RyeXtmb3IodmFyIHIsbz1vNVtTeW1ib2wuaXRlcmF0b3JdKCk7IShlPShyPW8ubmV4dCgpKS5kb25lKTtlPSEwKSgwLHIudmFsdWUpKCl9Y2F0Y2goZSl7dD0hMCxuPWV9ZmluYWxseXt0cnl7ZXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZih0KXRocm93IG59fX1yZXR1cm57aW5zZXJ0OmZ1bmN0aW9uKGUpe3ZhciB0PWEscj1uKGUpLG89ITAsbD0hMSxzPXZvaWQgMDt0cnl7Zm9yKHZhciBjLHU9cltTeW1ib2wuaXRlcmF0b3JdKCk7IShvPShjPXUubmV4dCgpKS5kb25lKTtvPSEwKXt2YXIgZD1jLnZhbHVlO3QuY2hpbGRyZW5bZF18fCh0LmNoaWxkcmVuW2RdPXt2YWx1ZTp2b2lkIDAsY2hpbGRyZW46e319KSx0PXQuY2hpbGRyZW5bZF19fWNhdGNoKGUpe2w9ITAscz1lfWZpbmFsbHl7dHJ5e298fG51bGw9PXUucmV0dXJufHx1LnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyBzfX10LnZhbHVlPWUsYT1vNCh7fSxhKSxpKCl9LHJlbW92ZTpmdW5jdGlvbihlKXt2YXIgdD1hLHI9bihlKSxsPVtdLHM9ITAsYz0hMCx1PSExLGQ9dm9pZCAwO3RyeXtmb3IodmFyIGYscD1yW1N5bWJvbC5pdGVyYXRvcl0oKTshKGM9KGY9cC5uZXh0KCkpLmRvbmUpO2M9ITApe3ZhciBoPWYudmFsdWU7aWYoIXQuY2hpbGRyZW5baF0pe3M9ITE7YnJlYWt9bC5wdXNoKHQpLHQ9dC5jaGlsZHJlbltoXX19Y2F0Y2goZSl7dT0hMCxkPWV9ZmluYWxseXt0cnl7Y3x8bnVsbD09cC5yZXR1cm58fHAucmV0dXJuKCl9ZmluYWxseXtpZih1KXRocm93IGR9fWlmKHMmJm8odC52YWx1ZSxlKSl7dC52YWx1ZT12b2lkIDA7Zm9yKHZhciBtPWwubGVuZ3RoLTE7bT49MDttLS0pe3ZhciBnPWxbbV0seT1yW21dOzA9PT1PYmplY3Qua2V5cyhnLmNoaWxkcmVuW3ldLmNoaWxkcmVuKS5sZW5ndGgmJmRlbGV0ZSBnLmNoaWxkcmVuW3ldfWE9bzQoe30sYSksaSgpfX0sZ2V0Um9vdDpmdW5jdGlvbigpe3JldHVybiBhfX19KHtjb21wYXJlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuISFlJiYhIXQmJmUucGFnZVBhdGg9PT10LnBhZ2VQYXRoJiZlLnR5cGU9PT10LnR5cGUmJmUuYm91bmRhcnlUeXBlPT09dC5ib3VuZGFyeVR5cGV9LGdldENoYXJhY3RlcnM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFnZVBhdGguc3BsaXQoXCIvXCIpfX0pLGFlPW83Lmluc2VydCxhdD1vNy5yZW1vdmUsYW49X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9jb21wb25lbnRzL292ZXJ2aWV3L3NlZ21lbnQtYm91bmRhcnktdHJpZ2dlci5jc3NcIiksYXI9e307YXIuc3R5bGVUYWdUcmFuc2Zvcm09aCgpLGFyLnNldEF0dHJpYnV0ZXM9dSgpLGFyLmluc2VydD1zKCksYXIuZG9tQVBJPWkoKSxhci5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKShhbi5aLGFyKSxhbi5aJiZhbi5aLmxvY2FscyYmYW4uWi5sb2NhbHM7bGV0IGFvPXt9O2Z1bmN0aW9uIGFhKGUsdCl7bGV0IG49eC51c2VSZWYoYW8pO3JldHVybiBuLmN1cnJlbnQ9PT1hbyYmKG4uY3VycmVudD1lKHQpKSxufWxldCBhaT1bXTtmdW5jdGlvbiBhbChlKXt4LnVzZUVmZmVjdChlLGFpKX1jbGFzcyBhc3tzdGF0aWMgY3JlYXRlKCl7cmV0dXJuIG5ldyBhc31jdXJyZW50SWQ9MDtzdGFydChlLHQpe3RoaXMuY2xlYXIoKSx0aGlzLmN1cnJlbnRJZD1zZXRUaW1lb3V0KCgpPT57dGhpcy5jdXJyZW50SWQ9MCx0KCl9LGUpfWlzU3RhcnRlZCgpe3JldHVybiAwIT09dGhpcy5jdXJyZW50SWR9Y2xlYXI9KCk9PnswIT09dGhpcy5jdXJyZW50SWQmJihjbGVhclRpbWVvdXQodGhpcy5jdXJyZW50SWQpLHRoaXMuY3VycmVudElkPTApfTtkaXNwb3NlRWZmZWN0PSgpPT50aGlzLmNsZWFyfWZ1bmN0aW9uIGFjKCl7bGV0IGU9YWEoYXMuY3JlYXRlKS5jdXJyZW50O3JldHVybiBhbChlLmRpc3Bvc2VFZmZlY3QpLGV9bGV0IGF1PXdbYHVzZUluc2VydGlvbkVmZmVjdCR7TWF0aC5yYW5kb20oKS50b0ZpeGVkKDEpfWAuc2xpY2UoMCwtMyldLGFkPWF1JiZhdSE9PXgudXNlTGF5b3V0RWZmZWN0P2F1OmU9PmUoKTtmdW5jdGlvbiBhZihlKXtsZXQgdD1hYShhcCkuY3VycmVudDtyZXR1cm4gdC5uZXh0PWUsYWQodC5lZmZlY3QpLHQudHJhbXBvbGluZX1mdW5jdGlvbiBhcCgpe2xldCBlPXtuZXh0OnZvaWQgMCxjYWxsYmFjazphaCx0cmFtcG9saW5lOiguLi50KT0+ZS5jYWxsYmFjaz8uKC4uLnQpLGVmZmVjdDooKT0+e2UuY2FsbGJhY2s9ZS5uZXh0fX07cmV0dXJuIGV9ZnVuY3Rpb24gYWgoKXt9ZnVuY3Rpb24gYW0oe2NvbnRyb2xsZWQ6ZSxkZWZhdWx0OnQsbmFtZTpuLHN0YXRlOnI9XCJ2YWx1ZVwifSl7bGV0e2N1cnJlbnQ6b309eC51c2VSZWYodm9pZCAwIT09ZSksW2EsaV09eC51c2VTdGF0ZSh0KSxsPXgudXNlQ2FsbGJhY2soZT0+e298fGkoZSl9LFtdKTtyZXR1cm5bbz9lOmEsbF19bGV0IGFnPXsuLi53fSxheT0wLGF2PWFnLnVzZUlkO2Z1bmN0aW9uIGFiKGUsdCl7aWYodm9pZCAwIT09YXYpe2xldCBuPWF2KCk7cmV0dXJuIGU/Pyh0P2Ake3R9LSR7bn1gOm4pfXJldHVybiBmdW5jdGlvbihlLHQ9XCJtdWlcIil7bGV0W24scl09eC51c2VTdGF0ZShlKSxvPWV8fG47cmV0dXJuIHgudXNlRWZmZWN0KCgpPT57bnVsbD09biYmKGF5Kz0xLHIoYCR7dH0tJHtheX1gKSl9LFtuLHRdKSxvfShlLHQpfWZ1bmN0aW9uIGFBKCl7bGV0IGU9bmV3IE1hcDtyZXR1cm57ZW1pdCh0LG4pe2UuZ2V0KHQpPy5mb3JFYWNoKGU9PmUobikpfSxvbih0LG4pe2UuaGFzKHQpfHxlLnNldCh0LG5ldyBTZXQpLGUuZ2V0KHQpLmFkZChuKX0sb2ZmKHQsbil7ZS5nZXQodCk/LmRlbGV0ZShuKX19fWxldCBheD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQ/eC51c2VMYXlvdXRFZmZlY3Q6KCk9Pnt9LGF3PXguY3JlYXRlQ29udGV4dChudWxsKSxhQz14LmNyZWF0ZUNvbnRleHQobnVsbCksYV89KCk9PngudXNlQ29udGV4dChhdyk/LmlkfHxudWxsLGFrPSgpPT54LnVzZUNvbnRleHQoYUMpO2Z1bmN0aW9uIGFFKGUpe2xldHtjaGlsZHJlbjp0LGlkOm59PWUscj1hXygpO3JldHVybigwLGIuanN4KShhdy5Qcm92aWRlcix7dmFsdWU6eC51c2VNZW1vKCgpPT4oe2lkOm4scGFyZW50SWQ6cn0pLFtuLHJdKSxjaGlsZHJlbjp0fSl9ZnVuY3Rpb24gYWooZSl7bGV0e2NoaWxkcmVuOnR9PWUsbj14LnVzZVJlZihbXSkscj14LnVzZUNhbGxiYWNrKGU9PntuLmN1cnJlbnQ9Wy4uLm4uY3VycmVudCxlXX0sW10pLG89eC51c2VDYWxsYmFjayhlPT57bi5jdXJyZW50PW4uY3VycmVudC5maWx0ZXIodD0+dCE9PWUpfSxbXSksW2FdPXgudXNlU3RhdGUoKCk9PmFBKCkpO3JldHVybigwLGIuanN4KShhQy5Qcm92aWRlcix7dmFsdWU6eC51c2VNZW1vKCgpPT4oe25vZGVzUmVmOm4sYWRkTm9kZTpyLHJlbW92ZU5vZGU6byxldmVudHM6YX0pLFtyLG8sYV0pLGNoaWxkcmVuOnR9KX1mdW5jdGlvbiBhUyhlKXtsZXR7b3Blbjp0PSExLG9uT3BlbkNoYW5nZTpuLGVsZW1lbnRzOnJ9PWUsbz1hYigpLGE9eC51c2VSZWYoe30pLFtpXT14LnVzZVN0YXRlKCgpPT5hQSgpKSxsPW51bGwhPWFfKCksW3MsY109eC51c2VTdGF0ZShyLnJlZmVyZW5jZSksdT1hZigoZSx0LHIpPT57YS5jdXJyZW50Lm9wZW5FdmVudD1lP3Q6dm9pZCAwLGkuZW1pdChcIm9wZW5jaGFuZ2VcIix7b3BlbjplLGV2ZW50OnQscmVhc29uOnIsbmVzdGVkOmx9KSxuPy4oZSx0LHIpfSksZD14LnVzZU1lbW8oKCk9Pih7c2V0UG9zaXRpb25SZWZlcmVuY2U6Y30pLFtdKSxmPXgudXNlTWVtbygoKT0+KHtyZWZlcmVuY2U6c3x8ci5yZWZlcmVuY2V8fG51bGwsZmxvYXRpbmc6ci5mbG9hdGluZ3x8bnVsbCxkb21SZWZlcmVuY2U6ci5yZWZlcmVuY2V9KSxbcyxyLnJlZmVyZW5jZSxyLmZsb2F0aW5nXSk7cmV0dXJuIHgudXNlTWVtbygoKT0+KHtkYXRhUmVmOmEsb3Blbjp0LG9uT3BlbkNoYW5nZTp1LGVsZW1lbnRzOmYsZXZlbnRzOmksZmxvYXRpbmdJZDpvLHJlZnM6ZH0pLFt0LHUsZixpLG8sZF0pfWZ1bmN0aW9uIGFPKCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvd31mdW5jdGlvbiBhQihlKXtyZXR1cm4gYXooZSk/KGUubm9kZU5hbWV8fFwiXCIpLnRvTG93ZXJDYXNlKCk6XCIjZG9jdW1lbnRcIn1mdW5jdGlvbiBhUChlKXt2YXIgdDtyZXR1cm4obnVsbD09ZXx8bnVsbD09KHQ9ZS5vd25lckRvY3VtZW50KT92b2lkIDA6dC5kZWZhdWx0Vmlldyl8fHdpbmRvd31mdW5jdGlvbiBhSShlKXt2YXIgdDtyZXR1cm4gbnVsbD09KHQ9KGF6KGUpP2Uub3duZXJEb2N1bWVudDplLmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KT92b2lkIDA6dC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gYXooZSl7cmV0dXJuISFhTygpJiYoZSBpbnN0YW5jZW9mIE5vZGV8fGUgaW5zdGFuY2VvZiBhUChlKS5Ob2RlKX1mdW5jdGlvbiBhVChlKXtyZXR1cm4hIWFPKCkmJihlIGluc3RhbmNlb2YgRWxlbWVudHx8ZSBpbnN0YW5jZW9mIGFQKGUpLkVsZW1lbnQpfWZ1bmN0aW9uIGFEKGUpe3JldHVybiEhYU8oKSYmKGUgaW5zdGFuY2VvZiBIVE1MRWxlbWVudHx8ZSBpbnN0YW5jZW9mIGFQKGUpLkhUTUxFbGVtZW50KX1mdW5jdGlvbiBhTChlKXtyZXR1cm4hIWFPKCkmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTaGFkb3dSb290JiYoZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3R8fGUgaW5zdGFuY2VvZiBhUChlKS5TaGFkb3dSb290KX1sZXQgYU49bmV3IFNldChbXCJpbmxpbmVcIixcImNvbnRlbnRzXCJdKTtmdW5jdGlvbiBhUihlKXtsZXR7b3ZlcmZsb3c6dCxvdmVyZmxvd1g6bixvdmVyZmxvd1k6cixkaXNwbGF5Om99PWFLKGUpO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbnxjbGlwLy50ZXN0KHQrcituKSYmIWFOLmhhcyhvKX1sZXQgYU09bmV3IFNldChbXCJ0YWJsZVwiLFwidGRcIixcInRoXCJdKSxhWj1bXCI6cG9wb3Zlci1vcGVuXCIsXCI6bW9kYWxcIl07ZnVuY3Rpb24gYVUoZSl7cmV0dXJuIGFaLnNvbWUodD0+e3RyeXtyZXR1cm4gZS5tYXRjaGVzKHQpfWNhdGNoKGUpe3JldHVybiExfX0pfWxldCBhRj1bXCJ0cmFuc2Zvcm1cIixcInRyYW5zbGF0ZVwiLFwic2NhbGVcIixcInJvdGF0ZVwiLFwicGVyc3BlY3RpdmVcIl0sYXE9W1widHJhbnNmb3JtXCIsXCJ0cmFuc2xhdGVcIixcInNjYWxlXCIsXCJyb3RhdGVcIixcInBlcnNwZWN0aXZlXCIsXCJmaWx0ZXJcIl0sYUg9W1wicGFpbnRcIixcImxheW91dFwiLFwic3RyaWN0XCIsXCJjb250ZW50XCJdO2Z1bmN0aW9uIGFWKGUpe2xldCB0PWEkKCksbj1hVChlKT9hSyhlKTplO3JldHVybiBhRi5zb21lKGU9PiEhbltlXSYmXCJub25lXCIhPT1uW2VdKXx8ISFuLmNvbnRhaW5lclR5cGUmJlwibm9ybWFsXCIhPT1uLmNvbnRhaW5lclR5cGV8fCF0JiYhIW4uYmFja2Ryb3BGaWx0ZXImJlwibm9uZVwiIT09bi5iYWNrZHJvcEZpbHRlcnx8IXQmJiEhbi5maWx0ZXImJlwibm9uZVwiIT09bi5maWx0ZXJ8fGFxLnNvbWUoZT0+KG4ud2lsbENoYW5nZXx8XCJcIikuaW5jbHVkZXMoZSkpfHxhSC5zb21lKGU9PihuLmNvbnRhaW58fFwiXCIpLmluY2x1ZGVzKGUpKX1mdW5jdGlvbiBhJCgpe3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBDU1MmJiEhQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoXCItd2Via2l0LWJhY2tkcm9wLWZpbHRlclwiLFwibm9uZVwiKX1sZXQgYVc9bmV3IFNldChbXCJodG1sXCIsXCJib2R5XCIsXCIjZG9jdW1lbnRcIl0pO2Z1bmN0aW9uIGFZKGUpe3JldHVybiBhVy5oYXMoYUIoZSkpfWZ1bmN0aW9uIGFLKGUpe3JldHVybiBhUChlKS5nZXRDb21wdXRlZFN0eWxlKGUpfWZ1bmN0aW9uIGFYKGUpe3JldHVybiBhVChlKT97c2Nyb2xsTGVmdDplLnNjcm9sbExlZnQsc2Nyb2xsVG9wOmUuc2Nyb2xsVG9wfTp7c2Nyb2xsTGVmdDplLnNjcm9sbFgsc2Nyb2xsVG9wOmUuc2Nyb2xsWX19ZnVuY3Rpb24gYUcoZSl7aWYoXCJodG1sXCI9PT1hQihlKSlyZXR1cm4gZTtsZXQgdD1lLmFzc2lnbmVkU2xvdHx8ZS5wYXJlbnROb2RlfHxhTChlKSYmZS5ob3N0fHxhSShlKTtyZXR1cm4gYUwodCk/dC5ob3N0OnR9ZnVuY3Rpb24gYVEoZSx0LG4pe3ZhciByO3ZvaWQgMD09PXQmJih0PVtdKSx2b2lkIDA9PT1uJiYobj0hMCk7bGV0IG89ZnVuY3Rpb24gZSh0KXtsZXQgbj1hRyh0KTtyZXR1cm4gYVkobik/dC5vd25lckRvY3VtZW50P3Qub3duZXJEb2N1bWVudC5ib2R5OnQuYm9keTphRChuKSYmYVIobik/bjplKG4pfShlKSxhPW89PT0obnVsbD09KHI9ZS5vd25lckRvY3VtZW50KT92b2lkIDA6ci5ib2R5KSxpPWFQKG8pO2lmKGEpe2xldCBlPWFKKGkpO3JldHVybiB0LmNvbmNhdChpLGkudmlzdWFsVmlld3BvcnR8fFtdLGFSKG8pP286W10sZSYmbj9hUShlKTpbXSl9cmV0dXJuIHQuY29uY2F0KG8sYVEobyxbXSxuKSl9ZnVuY3Rpb24gYUooZSl7cmV0dXJuIGUucGFyZW50JiZPYmplY3QuZ2V0UHJvdG90eXBlT2YoZS5wYXJlbnQpP2UuZnJhbWVFbGVtZW50Om51bGx9ZnVuY3Rpb24gYTAoZSl7bGV0IHQ9YWEoYTEsZSkuY3VycmVudDtyZXR1cm4gdC5uZXh0PWUsYXgodC5lZmZlY3QpLHR9ZnVuY3Rpb24gYTEoZSl7bGV0IHQ9e2N1cnJlbnQ6ZSxuZXh0OmUsZWZmZWN0OigpPT57dC5jdXJyZW50PXQubmV4dH19O3JldHVybiB0fWxldCBhMj1cInVuZGVmaW5lZFwiIT10eXBlb2YgbmF2aWdhdG9yLGE0PWZ1bmN0aW9uKCl7aWYoIWEyKXJldHVybntwbGF0Zm9ybTpcIlwiLG1heFRvdWNoUG9pbnRzOi0xfTtsZXQgZT1uYXZpZ2F0b3IudXNlckFnZW50RGF0YTtyZXR1cm4gZT8ucGxhdGZvcm0/e3BsYXRmb3JtOmUucGxhdGZvcm0sbWF4VG91Y2hQb2ludHM6bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfTp7cGxhdGZvcm06bmF2aWdhdG9yLnBsYXRmb3JtPz9cIlwiLG1heFRvdWNoUG9pbnRzOm5hdmlnYXRvci5tYXhUb3VjaFBvaW50cz8/LTF9fSgpLGE1PWZ1bmN0aW9uKCl7aWYoIWEyKXJldHVyblwiXCI7bGV0IGU9bmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7cmV0dXJuIGU/LnBsYXRmb3JtP2UucGxhdGZvcm06bmF2aWdhdG9yLnBsYXRmb3JtPz9cIlwifSgpLGEzPWZ1bmN0aW9uKCl7aWYoIWEyKXJldHVyblwiXCI7bGV0IGU9bmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7cmV0dXJuIGUmJkFycmF5LmlzQXJyYXkoZS5icmFuZHMpP2UuYnJhbmRzLm1hcCgoe2JyYW5kOmUsdmVyc2lvbjp0fSk9PmAke2V9LyR7dH1gKS5qb2luKFwiIFwiKTpuYXZpZ2F0b3IudXNlckFnZW50fSgpLGE2PVwidW5kZWZpbmVkXCIhPXR5cGVvZiBDU1MmJiEhQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoXCItd2Via2l0LWJhY2tkcm9wLWZpbHRlcjpub25lXCIpLGE5PVwiTWFjSW50ZWxcIj09PWE0LnBsYXRmb3JtJiZhNC5tYXhUb3VjaFBvaW50cz4xfHwvaVAoaG9uZXxhZHxvZCl8aU9TLy50ZXN0KGE0LnBsYXRmb3JtKTthMiYmL2ZpcmVmb3gvaS50ZXN0KGEzKTtsZXQgYTg9YTImJi9hcHBsZS9pLnRlc3QobmF2aWdhdG9yLnZlbmRvciksYTc9YTImJi9hbmRyb2lkL2kudGVzdChhNSl8fC9hbmRyb2lkL2kudGVzdChhMyksaWU9YTImJmE1LnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChcIm1hY1wiKSYmIW5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyxpdD1hMy5pbmNsdWRlcyhcImpzZG9tL1wiKTtmdW5jdGlvbiBpcihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBpbyhlKXtyZXR1cm4gMD09PWUubW96SW5wdXRTb3VyY2UmJiEhZS5pc1RydXN0ZWR8fChhNyYmZS5wb2ludGVyVHlwZT9cImNsaWNrXCI9PT1lLnR5cGUmJjE9PT1lLmJ1dHRvbnM6MD09PWUuZGV0YWlsJiYhZS5wb2ludGVyVHlwZSl9ZnVuY3Rpb24gaWEoZSl7cmV0dXJuIWl0JiYoIWE3JiYwPT09ZS53aWR0aCYmMD09PWUuaGVpZ2h0fHxhNyYmMT09PWUud2lkdGgmJjE9PT1lLmhlaWdodCYmMD09PWUucHJlc3N1cmUmJjA9PT1lLmRldGFpbCYmXCJtb3VzZVwiPT09ZS5wb2ludGVyVHlwZXx8ZS53aWR0aDwxJiZlLmhlaWdodDwxJiYwPT09ZS5wcmVzc3VyZSYmMD09PWUuZGV0YWlsJiZcInRvdWNoXCI9PT1lLnBvaW50ZXJUeXBlKX1mdW5jdGlvbiBpaShlLHQpe2xldCBuPVtcIm1vdXNlXCIsXCJwZW5cIl07cmV0dXJuIHR8fG4ucHVzaChcIlwiLHZvaWQgMCksbi5pbmNsdWRlcyhlKX1sZXQgaWw9XCJkYXRhLWJhc2UtdWktZm9jdXNhYmxlXCIsaXM9XCJhY3RpdmVcIixpYz1cInNlbGVjdGVkXCIsaXU9XCJBcnJvd0xlZnRcIixpZD1cIkFycm93UmlnaHRcIixpcD1cIkFycm93VXBcIixpaD1cIkFycm93RG93blwiO2Z1bmN0aW9uIGltKGUpe2xldCB0PWUuYWN0aXZlRWxlbWVudDtmb3IoO3Q/LnNoYWRvd1Jvb3Q/LmFjdGl2ZUVsZW1lbnQhPW51bGw7KXQ9dC5zaGFkb3dSb290LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHR9ZnVuY3Rpb24gaWcoZSx0KXtpZighZXx8IXQpcmV0dXJuITE7bGV0IG49dC5nZXRSb290Tm9kZT8uKCk7aWYoZS5jb250YWlucyh0KSlyZXR1cm4hMDtpZihuJiZhTChuKSl7bGV0IG49dDtmb3IoO247KXtpZihlPT09bilyZXR1cm4hMDtuPW4ucGFyZW50Tm9kZXx8bi5ob3N0fX1yZXR1cm4hMX1mdW5jdGlvbiBpeShlKXtyZXR1cm5cImNvbXBvc2VkUGF0aFwiaW4gZT9lLmNvbXBvc2VkUGF0aCgpWzBdOmUudGFyZ2V0fWZ1bmN0aW9uIGl2KGUsdCl7cmV0dXJuIG51bGwhPXQmJihcImNvbXBvc2VkUGF0aFwiaW4gZT9lLmNvbXBvc2VkUGF0aCgpLmluY2x1ZGVzKHQpOm51bGwhPWUudGFyZ2V0JiZ0LmNvbnRhaW5zKGUudGFyZ2V0KSl9ZnVuY3Rpb24gaWIoZSl7cmV0dXJuIGU/Lm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWZ1bmN0aW9uIGlBKGUpe3JldHVybiBhRChlKSYmZS5tYXRjaGVzKFwiaW5wdXQ6bm90KFt0eXBlPSdoaWRkZW4nXSk6bm90KFtkaXNhYmxlZF0pLFtjb250ZW50ZWRpdGFibGVdOm5vdChbY29udGVudGVkaXRhYmxlPSdmYWxzZSddKSx0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSlcIil9ZnVuY3Rpb24gaXgoZSl7cmV0dXJuISFlJiZcImNvbWJvYm94XCI9PT1lLmdldEF0dHJpYnV0ZShcInJvbGVcIikmJmlBKGUpfWZ1bmN0aW9uIGl3KGUpe3JldHVybiBlP2UuaGFzQXR0cmlidXRlKGlsKT9lOmUucXVlcnlTZWxlY3RvcihgWyR7aWx9XWApfHxlOm51bGx9ZnVuY3Rpb24gaUMoZSl7cmV0dXJuYGRhdGEtYmFzZS11aS0ke2V9YH1sZXQgaV89aUMoXCJzYWZlLXBvbHlnb25cIik7ZnVuY3Rpb24gaWsoZSx0LG4pe2lmKG4mJiFpaShuKSlyZXR1cm4gMDtpZihcIm51bWJlclwiPT10eXBlb2YgZSlyZXR1cm4gZTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXtsZXQgbj1lKCk7cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIG4/bjpuPy5bdF19cmV0dXJuIGU/Llt0XX1mdW5jdGlvbiBpRShlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2UoKTplfWZ1bmN0aW9uIGlqKGUsdD17fSl7bGV0e29wZW46bixvbk9wZW5DaGFuZ2U6cixkYXRhUmVmOm8sZXZlbnRzOmEsZWxlbWVudHM6aX09ZSx7ZW5hYmxlZDpsPSEwLGRlbGF5OnM9MCxoYW5kbGVDbG9zZTpjPW51bGwsbW91c2VPbmx5OnU9ITEscmVzdE1zOmQ9MCxtb3ZlOmY9ITB9PXQscD1haygpLGg9YV8oKSxtPWEwKGMpLGc9YTAocykseT1hMChuKSx2PWEwKGQpLGI9eC51c2VSZWYodm9pZCAwKSxBPWFjKCksdz14LnVzZVJlZih2b2lkIDApLEM9YWMoKSxfPXgudXNlUmVmKCEwKSxrPXgudXNlUmVmKCExKSxFPXgudXNlUmVmKCgpPT57fSksaj14LnVzZVJlZighMSksUz1hZigoKT0+e2xldCBlPW8uY3VycmVudC5vcGVuRXZlbnQ/LnR5cGU7cmV0dXJuIGU/LmluY2x1ZGVzKFwibW91c2VcIikmJlwibW91c2Vkb3duXCIhPT1lfSk7eC51c2VFZmZlY3QoKCk9PntpZihsKXJldHVybiBhLm9uKFwib3BlbmNoYW5nZVwiLGUpLCgpPT57YS5vZmYoXCJvcGVuY2hhbmdlXCIsZSl9O2Z1bmN0aW9uIGUoe29wZW46ZX0pe2V8fChBLmNsZWFyKCksQy5jbGVhcigpLF8uY3VycmVudD0hMCxqLmN1cnJlbnQ9ITEpfX0sW2wsYSxBLENdKSx4LnVzZUVmZmVjdCgoKT0+e2lmKCFsfHwhbS5jdXJyZW50fHwhbilyZXR1cm47ZnVuY3Rpb24gZShlKXtTKCkmJnIoITEsZSxcImhvdmVyXCIpfWxldCB0PWliKGkuZmxvYXRpbmcpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGUpLCgpPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGUpfX0sW2kuZmxvYXRpbmcsbixyLGwsbSxTXSk7bGV0IE89eC51c2VDYWxsYmFjaygoZSx0PSEwLG49XCJob3ZlclwiKT0+e2xldCBvPWlrKGcuY3VycmVudCxcImNsb3NlXCIsYi5jdXJyZW50KTtvJiYhdy5jdXJyZW50P0Euc3RhcnQobywoKT0+cighMSxlLG4pKTp0JiYoQS5jbGVhcigpLHIoITEsZSxuKSl9LFtnLHIsQV0pLEI9YWYoKCk9PntFLmN1cnJlbnQoKSx3LmN1cnJlbnQ9dm9pZCAwfSksUD1hZigoKT0+e2lmKGsuY3VycmVudCl7bGV0IGU9aWIoaS5mbG9hdGluZykuYm9keTtlLnN0eWxlLnBvaW50ZXJFdmVudHM9XCJcIixlLnJlbW92ZUF0dHJpYnV0ZShpXyksay5jdXJyZW50PSExfX0pLEk9YWYoKCk9PiEhby5jdXJyZW50Lm9wZW5FdmVudCYmW1wiY2xpY2tcIixcIm1vdXNlZG93blwiXS5pbmNsdWRlcyhvLmN1cnJlbnQub3BlbkV2ZW50LnR5cGUpKTt4LnVzZUVmZmVjdCgoKT0+e2lmKGwmJmFUKGkuZG9tUmVmZXJlbmNlKSl7bGV0IHI9aS5kb21SZWZlcmVuY2Usbz1pLmZsb2F0aW5nO3JldHVybiBuJiZyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsYSksZiYmci5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsZSx7b25jZTohMH0pLHIuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlZW50ZXJcIixlKSxyLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsdCksbyYmKG8uYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixhKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIscyksby5hZGRFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLGMpKSwoKT0+e24mJnIucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixhKSxmJiZyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIixlKSxyLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWVudGVyXCIsZSksci5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VsZWF2ZVwiLHQpLG8mJihvLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWxlYXZlXCIsYSksby5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2VlbnRlclwiLHMpLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbGVhdmVcIixjKSl9fWZ1bmN0aW9uIGUoZSl7aWYoQS5jbGVhcigpLF8uY3VycmVudD0hMSx1JiYhaWkoYi5jdXJyZW50KXx8aUUodi5jdXJyZW50KT4wJiYhaWsoZy5jdXJyZW50LFwib3BlblwiKSlyZXR1cm47bGV0IHQ9aWsoZy5jdXJyZW50LFwib3BlblwiLGIuY3VycmVudCk7dD9BLnN0YXJ0KHQsKCk9Pnt5LmN1cnJlbnR8fHIoITAsZSxcImhvdmVyXCIpfSk6bnx8cighMCxlLFwiaG92ZXJcIil9ZnVuY3Rpb24gdChlKXtpZihJKCkpcmV0dXJuIHZvaWQgUCgpO0UuY3VycmVudCgpO2xldCB0PWliKGkuZmxvYXRpbmcpO2lmKEMuY2xlYXIoKSxqLmN1cnJlbnQ9ITEsbS5jdXJyZW50JiZvLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0KXtufHxBLmNsZWFyKCksdy5jdXJyZW50PW0uY3VycmVudCh7Li4uby5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCx0cmVlOnAseDplLmNsaWVudFgseTplLmNsaWVudFksb25DbG9zZSgpe1AoKSxCKCksSSgpfHxPKGUsITAsXCJzYWZlLXBvbHlnb25cIil9fSk7bGV0IHI9dy5jdXJyZW50O3QuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHIpLEUuY3VycmVudD0oKT0+e3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHIpfTtyZXR1cm59XCJ0b3VjaFwiPT09Yi5jdXJyZW50JiZpZyhpLmZsb2F0aW5nLGUucmVsYXRlZFRhcmdldCl8fE8oZSl9ZnVuY3Rpb24gYShlKXshSSgpJiZvLmN1cnJlbnQuZmxvYXRpbmdDb250ZXh0JiZtLmN1cnJlbnQ/Lih7Li4uby5jdXJyZW50LmZsb2F0aW5nQ29udGV4dCx0cmVlOnAseDplLmNsaWVudFgseTplLmNsaWVudFksb25DbG9zZSgpe1AoKSxCKCksSSgpfHxPKGUpfX0pKGUpfWZ1bmN0aW9uIHMoKXtBLmNsZWFyKCl9ZnVuY3Rpb24gYyhlKXtJKCl8fE8oZSwhMSl9fSxbaSxsLGUsdSxmLE8sQixQLHIsbix5LHAsZyxtLG8sSSx2LEEsQ10pLGF4KCgpPT57aWYobCYmbiYmbS5jdXJyZW50Py5fX29wdGlvbnM/LmJsb2NrUG9pbnRlckV2ZW50cyYmUygpKXtrLmN1cnJlbnQ9ITA7bGV0IGU9aS5mbG9hdGluZztpZihhVChpLmRvbVJlZmVyZW5jZSkmJmUpe2xldCB0PWliKGkuZmxvYXRpbmcpLmJvZHk7dC5zZXRBdHRyaWJ1dGUoaV8sXCJcIik7bGV0IG49aS5kb21SZWZlcmVuY2Uscj1wPy5ub2Rlc1JlZi5jdXJyZW50LmZpbmQoZT0+ZS5pZD09PWgpPy5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZztyZXR1cm4gciYmKHIuc3R5bGUucG9pbnRlckV2ZW50cz1cIlwiKSx0LnN0eWxlLnBvaW50ZXJFdmVudHM9XCJub25lXCIsbi5zdHlsZS5wb2ludGVyRXZlbnRzPVwiYXV0b1wiLGUuc3R5bGUucG9pbnRlckV2ZW50cz1cImF1dG9cIiwoKT0+e3Quc3R5bGUucG9pbnRlckV2ZW50cz1cIlwiLG4uc3R5bGUucG9pbnRlckV2ZW50cz1cIlwiLGUuc3R5bGUucG9pbnRlckV2ZW50cz1cIlwifX19fSxbbCxuLGgsaSxwLG0sU10pLGF4KCgpPT57bnx8KGIuY3VycmVudD12b2lkIDAsai5jdXJyZW50PSExLEIoKSxQKCkpfSxbbixCLFBdKSx4LnVzZUVmZmVjdCgoKT0+KCk9PntCKCksQS5jbGVhcigpLEMuY2xlYXIoKSxQKCl9LFtsLGkuZG9tUmVmZXJlbmNlLEIsUCxBLENdKTtsZXQgej14LnVzZU1lbW8oKCk9PntmdW5jdGlvbiBlKGUpe2IuY3VycmVudD1lLnBvaW50ZXJUeXBlfXJldHVybntvblBvaW50ZXJEb3duOmUsb25Qb2ludGVyRW50ZXI6ZSxvbk1vdXNlTW92ZShlKXtsZXR7bmF0aXZlRXZlbnQ6dH09ZTtmdW5jdGlvbiBvKCl7Xy5jdXJyZW50fHx5LmN1cnJlbnR8fHIoITAsdCxcImhvdmVyXCIpfSghdXx8aWkoYi5jdXJyZW50KSkmJiFuJiYwIT09aUUodi5jdXJyZW50KSYmKGouY3VycmVudCYmZS5tb3ZlbWVudFgqKjIrZS5tb3ZlbWVudFkqKjI8Mnx8KEMuY2xlYXIoKSxcInRvdWNoXCI9PT1iLmN1cnJlbnQ/bygpOihqLmN1cnJlbnQ9ITAsQy5zdGFydChpRSh2LmN1cnJlbnQpLG8pKSkpfX19LFt1LHIsbix5LHYsQ10pO3JldHVybiB4LnVzZU1lbW8oKCk9Pmw/e3JlZmVyZW5jZTp6fTp7fSxbbCx6XSl9ZnVuY3Rpb24gaVMoZSx0LG49ITApe3JldHVybiBlLmZpbHRlcihlPT5lLnBhcmVudElkPT09dCYmKCFufHxlLmNvbnRleHQ/Lm9wZW4pKS5mbGF0TWFwKHQ9Plt0LC4uLmlTKGUsdC5pZCxuKV0pfWZ1bmN0aW9uIGlPKGUsdCl7bGV0IG49W10scj1lLmZpbmQoZT0+ZS5pZD09PXQpPy5wYXJlbnRJZDtmb3IoO3I7KXtsZXQgdD1lLmZpbmQoZT0+ZS5pZD09PXIpO3I9dD8ucGFyZW50SWQsdCYmKG49bi5jb25jYXQodCkpfXJldHVybiBufWZ1bmN0aW9uIGlCKGUsdCl7bGV0W24scl09ZSxvPSExLGE9dC5sZW5ndGg7Zm9yKGxldCBlPTAsaT1hLTE7ZTxhO2k9ZSsrKXtsZXRbYSxsXT10W2VdfHxbMCwwXSxbcyxjXT10W2ldfHxbMCwwXTtsPj1yIT1jPj1yJiZuPD0ocy1hKSooci1sKS8oYy1sKSthJiYobz0hbyl9cmV0dXJuIG99ZnVuY3Rpb24gaVAoZT17fSl7bGV0e2J1ZmZlcjp0PS41LGJsb2NrUG9pbnRlckV2ZW50czpuPSExLHJlcXVpcmVJbnRlbnQ6cj0hMH09ZSxvPW5ldyBhcyxhPSExLGk9bnVsbCxsPW51bGwscz1cInVuZGVmaW5lZFwiIT10eXBlb2YgcGVyZm9ybWFuY2U/cGVyZm9ybWFuY2Uubm93KCk6MCxjPSh7eDplLHk6bixwbGFjZW1lbnQ6YyxlbGVtZW50czp1LG9uQ2xvc2U6ZCxub2RlSWQ6Zix0cmVlOnB9KT0+ZnVuY3Rpb24oaCl7dmFyIG0sZztmdW5jdGlvbiB5KCl7by5jbGVhcigpLGQoKX1pZihvLmNsZWFyKCksIXUuZG9tUmVmZXJlbmNlfHwhdS5mbG9hdGluZ3x8bnVsbD09Y3x8bnVsbD09ZXx8bnVsbD09bilyZXR1cm47bGV0e2NsaWVudFg6dixjbGllbnRZOmJ9PWgsQT1bdixiXSx4PWl5KGgpLHc9XCJtb3VzZWxlYXZlXCI9PT1oLnR5cGUsQz1pZyh1LmZsb2F0aW5nLHgpLF89aWcodS5kb21SZWZlcmVuY2UseCksaz11LmRvbVJlZmVyZW5jZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxFPXUuZmxvYXRpbmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaj1jLnNwbGl0KFwiLVwiKVswXSxTPWU+RS5yaWdodC1FLndpZHRoLzIsTz1uPkUuYm90dG9tLUUuaGVpZ2h0LzIsQj0obT1BLGc9ayxtWzBdPj1nLngmJm1bMF08PWcueCtnLndpZHRoJiZtWzFdPj1nLnkmJm1bMV08PWcueStnLmhlaWdodCksUD1FLndpZHRoPmsud2lkdGgsST1FLmhlaWdodD5rLmhlaWdodCx6PShQP2s6RSkubGVmdCxUPShQP2s6RSkucmlnaHQsRD0oST9rOkUpLnRvcCxMPShJP2s6RSkuYm90dG9tO2lmKEMmJihhPSEwLCF3KSlyZXR1cm47aWYoXyYmKGE9ITEpLF8mJiF3KXthPSEwO3JldHVybn1pZih3JiZhVChoLnJlbGF0ZWRUYXJnZXQpJiZpZyh1LmZsb2F0aW5nLGgucmVsYXRlZFRhcmdldCl8fHAmJmlTKHAubm9kZXNSZWYuY3VycmVudCxmKS5zb21lKCh7Y29udGV4dDplfSk9PmU/Lm9wZW4pKXJldHVybjtpZihcInRvcFwiPT09aiYmbj49ay5ib3R0b20tMXx8XCJib3R0b21cIj09PWomJm48PWsudG9wKzF8fFwibGVmdFwiPT09aiYmZT49ay5yaWdodC0xfHxcInJpZ2h0XCI9PT1qJiZlPD1rLmxlZnQrMSlyZXR1cm4geSgpO2xldCBOPVtdO3N3aXRjaChqKXtjYXNlXCJ0b3BcIjpOPVtbeixrLnRvcCsxXSxbeixFLmJvdHRvbS0xXSxbVCxFLmJvdHRvbS0xXSxbVCxrLnRvcCsxXV07YnJlYWs7Y2FzZVwiYm90dG9tXCI6Tj1bW3osRS50b3ArMV0sW3osay5ib3R0b20tMV0sW1Qsay5ib3R0b20tMV0sW1QsRS50b3ArMV1dO2JyZWFrO2Nhc2VcImxlZnRcIjpOPVtbRS5yaWdodC0xLExdLFtFLnJpZ2h0LTEsRF0sW2subGVmdCsxLERdLFtrLmxlZnQrMSxMXV07YnJlYWs7Y2FzZVwicmlnaHRcIjpOPVtbay5yaWdodC0xLExdLFtrLnJpZ2h0LTEsRF0sW0UubGVmdCsxLERdLFtFLmxlZnQrMSxMXV19aWYoIWlCKFt2LGJdLE4pKXtpZihhJiYhQilyZXR1cm4geSgpO2lmKCF3JiZyKXtsZXQgZT1mdW5jdGlvbihlLHQpe2xldCBuPXBlcmZvcm1hbmNlLm5vdygpLHI9bi1zO2lmKG51bGw9PT1pfHxudWxsPT09bHx8MD09PXIpcmV0dXJuIGk9ZSxsPXQscz1uLG51bGw7bGV0IG89ZS1pLGE9dC1sLGM9TWF0aC5zcXJ0KG8qbythKmEpO3JldHVybiBpPWUsbD10LHM9bixjL3J9KGguY2xpZW50WCxoLmNsaWVudFkpO2lmKG51bGwhPT1lJiZlPC4xKXJldHVybiB5KCl9aUIoW3YsYl0sZnVuY3Rpb24oW2Usbl0pe3N3aXRjaChqKXtjYXNlXCJ0b3BcIjp7bGV0IHI9W1tFLmxlZnQsU3x8UD9FLmJvdHRvbS10OkUudG9wXSxbRS5yaWdodCxTP1A/RS5ib3R0b20tdDpFLnRvcDpFLmJvdHRvbS10XV07cmV0dXJuW1tQP2UrdC8yOlM/ZSs0KnQ6ZS00KnQsbit0KzFdLFtQP2UtdC8yOlM/ZSs0KnQ6ZS00KnQsbit0KzFdLC4uLnJdfWNhc2VcImJvdHRvbVwiOntsZXQgcj1bW0UubGVmdCxTfHxQP0UudG9wK3Q6RS5ib3R0b21dLFtFLnJpZ2h0LFM/UD9FLnRvcCt0OkUuYm90dG9tOkUudG9wK3RdXTtyZXR1cm5bW1A/ZSt0LzI6Uz9lKzQqdDplLTQqdCxuLXRdLFtQP2UtdC8yOlM/ZSs0KnQ6ZS00KnQsbi10XSwuLi5yXX1jYXNlXCJsZWZ0XCI6cmV0dXJuW1tPfHxJP0UucmlnaHQtdDpFLmxlZnQsRS50b3BdLFtPP0k/RS5yaWdodC10OkUubGVmdDpFLnJpZ2h0LXQsRS5ib3R0b21dLFtlK3QrMSxJP24rdC8yOk8/bis0KnQ6bi00KnRdLFtlK3QrMSxJP24tdC8yOk8/bis0KnQ6bi00KnRdXTtjYXNlXCJyaWdodFwiOntsZXQgcj1bW098fEk/RS5sZWZ0K3Q6RS5yaWdodCxFLnRvcF0sW08/ST9FLmxlZnQrdDpFLnJpZ2h0OkUubGVmdCt0LEUuYm90dG9tXV07cmV0dXJuW1tlLXQsST9uK3QvMjpPP24rNCp0Om4tNCp0XSxbZS10LEk/bi10LzI6Tz9uKzQqdDpuLTQqdF0sLi4ucl19ZGVmYXVsdDpyZXR1cm5bXX19KFtlLG5dKSk/IWEmJnImJm8uc3RhcnQoNDAseSk6eSgpfX07cmV0dXJuIGMuX19vcHRpb25zPXtibG9ja1BvaW50ZXJFdmVudHM6bn0sY31sZXQgaUk9aWUmJmE4O2Z1bmN0aW9uIGl6KGUsdD17fSl7bGV0e29wZW46bixvbk9wZW5DaGFuZ2U6cixldmVudHM6byxkYXRhUmVmOmEsZWxlbWVudHM6aX09ZSx7ZW5hYmxlZDpsPSEwLHZpc2libGVPbmx5OnM9ITB9PXQsYz14LnVzZVJlZighMSksdT1hYygpLGQ9eC51c2VSZWYoITApO3gudXNlRWZmZWN0KCgpPT57aWYoIWwpcmV0dXJuO2xldCBlPWFQKGkuZG9tUmVmZXJlbmNlKTtmdW5jdGlvbiB0KCl7IW4mJmFEKGkuZG9tUmVmZXJlbmNlKSYmaS5kb21SZWZlcmVuY2U9PT1pbShpYihpLmRvbVJlZmVyZW5jZSkpJiYoYy5jdXJyZW50PSEwKX1mdW5jdGlvbiByKCl7ZC5jdXJyZW50PSEwfWZ1bmN0aW9uIG8oKXtkLmN1cnJlbnQ9ITF9cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIix0KSxpSSYmKGUuYWRkRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixyLCEwKSxlLmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLG8sITApKSwoKT0+e2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImJsdXJcIix0KSxpSSYmKGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIixyLCEwKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLG8sITApKX19LFtpLmRvbVJlZmVyZW5jZSxuLGxdKSx4LnVzZUVmZmVjdCgoKT0+e2lmKGwpcmV0dXJuIG8ub24oXCJvcGVuY2hhbmdlXCIsZSksKCk9PntvLm9mZihcIm9wZW5jaGFuZ2VcIixlKX07ZnVuY3Rpb24gZSh7cmVhc29uOmV9KXsoXCJyZWZlcmVuY2UtcHJlc3NcIj09PWV8fFwiZXNjYXBlLWtleVwiPT09ZSkmJihjLmN1cnJlbnQ9ITApfX0sW28sbF0pO2xldCBmPXgudXNlTWVtbygoKT0+KHtvbk1vdXNlTGVhdmUoKXtjLmN1cnJlbnQ9ITF9LG9uRm9jdXMoZSl7aWYoYy5jdXJyZW50KXJldHVybjtsZXQgdD1peShlLm5hdGl2ZUV2ZW50KTtpZihzJiZhVCh0KSl7aWYoaUkmJiFlLnJlbGF0ZWRUYXJnZXQpe2lmKCFkLmN1cnJlbnQmJiFpQSh0KSlyZXR1cm59ZWxzZSBpZighZnVuY3Rpb24oZSl7aWYoIWV8fGl0KXJldHVybiEwO3RyeXtyZXR1cm4gZS5tYXRjaGVzKFwiOmZvY3VzLXZpc2libGVcIil9Y2F0Y2goZSl7cmV0dXJuITB9fSh0KSlyZXR1cm59cighMCxlLm5hdGl2ZUV2ZW50LFwiZm9jdXNcIil9LG9uQmx1cihlKXtjLmN1cnJlbnQ9ITE7bGV0IHQ9ZS5yZWxhdGVkVGFyZ2V0LG49ZS5uYXRpdmVFdmVudCxvPWFUKHQpJiZ0Lmhhc0F0dHJpYnV0ZShpQyhcImZvY3VzLWd1YXJkXCIpKSYmXCJvdXRzaWRlXCI9PT10LmdldEF0dHJpYnV0ZShcImRhdGEtdHlwZVwiKTt1LnN0YXJ0KDAsKCk9PntsZXQgZT1pbShpLmRvbVJlZmVyZW5jZT9pLmRvbVJlZmVyZW5jZS5vd25lckRvY3VtZW50OmRvY3VtZW50KTsodHx8ZSE9PWkuZG9tUmVmZXJlbmNlKSYmKGlnKGEuY3VycmVudC5mbG9hdGluZ0NvbnRleHQ/LnJlZnMuZmxvYXRpbmcuY3VycmVudCxlKXx8aWcoaS5kb21SZWZlcmVuY2UsZSl8fG98fHIoITEsbixcImZvY3VzXCIpKX0pfX0pLFthLGkuZG9tUmVmZXJlbmNlLHIscyx1XSk7cmV0dXJuIHgudXNlTWVtbygoKT0+bD97cmVmZXJlbmNlOmZ9Ont9LFtsLGZdKX1nbG9iYWxUaGlzLnJlcXVlc3RBbmltYXRpb25GcmFtZTtsZXQgaVQ9bmV3IGNsYXNze2NhbGxiYWNrcz1bXTtjYWxsYmFja3NDb3VudD0wO25leHRJZD0xO3N0YXJ0SWQ9MTtpc1NjaGVkdWxlZD0hMTt0aWNrPWU9Pnt0aGlzLmlzU2NoZWR1bGVkPSExO2xldCB0PXRoaXMuY2FsbGJhY2tzLG49dGhpcy5jYWxsYmFja3NDb3VudDtpZih0aGlzLmNhbGxiYWNrcz1bXSx0aGlzLmNhbGxiYWNrc0NvdW50PTAsdGhpcy5zdGFydElkPXRoaXMubmV4dElkLG4+MClmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rPTEpdFtuXT8uKGUpfTtyZXF1ZXN0KGUpe2xldCB0PXRoaXMubmV4dElkO3JldHVybiB0aGlzLm5leHRJZCs9MSx0aGlzLmNhbGxiYWNrcy5wdXNoKGUpLHRoaXMuY2FsbGJhY2tzQ291bnQrPTEsdGhpcy5pc1NjaGVkdWxlZHx8KHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnRpY2spLHRoaXMuaXNTY2hlZHVsZWQ9ITApLHR9Y2FuY2VsKGUpe2xldCB0PWUtdGhpcy5zdGFydElkO3Q8MHx8dD49dGhpcy5jYWxsYmFja3MubGVuZ3RofHwodGhpcy5jYWxsYmFja3NbdF09bnVsbCx0aGlzLmNhbGxiYWNrc0NvdW50LT0xKX19O2NsYXNzIGlEe3N0YXRpYyBjcmVhdGUoKXtyZXR1cm4gbmV3IGlEfXN0YXRpYyByZXF1ZXN0KGUpe3JldHVybiBpVC5yZXF1ZXN0KGUpfXN0YXRpYyBjYW5jZWwoZSl7cmV0dXJuIGlULmNhbmNlbChlKX1jdXJyZW50SWQ9bnVsbDtyZXF1ZXN0KGUpe3RoaXMuY2FuY2VsKCksdGhpcy5jdXJyZW50SWQ9aVQucmVxdWVzdCgoKT0+e3RoaXMuY3VycmVudElkPW51bGwsZSgpfSl9Y2FuY2VsPSgpPT57bnVsbCE9PXRoaXMuY3VycmVudElkJiYoaVQuY2FuY2VsKHRoaXMuY3VycmVudElkKSx0aGlzLmN1cnJlbnRJZD1udWxsKX07ZGlzcG9zZUVmZmVjdD0oKT0+dGhpcy5jYW5jZWx9ZnVuY3Rpb24gaUwoKXtsZXQgZT1hYShpRC5jcmVhdGUpLmN1cnJlbnQ7cmV0dXJuIGFsKGUuZGlzcG9zZUVmZmVjdCksZX1sZXQgaU49e3N0eWxlOnt0cmFuc2l0aW9uOlwibm9uZVwifX0saVI9e30saU09W10saVo9e2ZhbGxiYWNrQXhpc1NpZGU6XCJub25lXCJ9LGlVPXtmYWxsYmFja0F4aXNTaWRlOlwiZW5kXCJ9LGlGPXtpbnRlbnRpb25hbDpcIm9uQ2xpY2tcIixzbG9wcHk6XCJvblBvaW50ZXJEb3duXCJ9O2Z1bmN0aW9uIGlxKGUpe3JldHVybntlc2NhcGVLZXk6XCJib29sZWFuXCI9PXR5cGVvZiBlP2U6ZT8uZXNjYXBlS2V5Pz8hMSxvdXRzaWRlUHJlc3M6XCJib29sZWFuXCI9PXR5cGVvZiBlP2U6ZT8ub3V0c2lkZVByZXNzPz8hMH19ZnVuY3Rpb24gaUgoZSx0PXt9KXtsZXR7b3BlbjpuLG9uT3BlbkNoYW5nZTpyLGVsZW1lbnRzOm8sZGF0YVJlZjphfT1lLHtlbmFibGVkOmk9ITAsZXNjYXBlS2V5Omw9ITAsb3V0c2lkZVByZXNzOnM9ITAsb3V0c2lkZVByZXNzRXZlbnQ6Yz1cInNsb3BweVwiLHJlZmVyZW5jZVByZXNzOnU9ITEscmVmZXJlbmNlUHJlc3NFdmVudDpkPVwic2xvcHB5XCIsYW5jZXN0b3JTY3JvbGw6Zj0hMSxidWJibGVzOnAsY2FwdHVyZTpofT10LG09YWsoKSxnPWFmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHM/czooKT0+ITEpLHk9XCJmdW5jdGlvblwiPT10eXBlb2Ygcz9nOnMsdj14LnVzZVJlZighMSkse2VzY2FwZUtleTpiLG91dHNpZGVQcmVzczpBfT1pcShwKSx7ZXNjYXBlS2V5Oncsb3V0c2lkZVByZXNzOkN9PWlxKGgpLF89eC51c2VSZWYobnVsbCksaz1hYygpLEU9YWMoKSxqPXgudXNlUmVmKCExKSxTPXgudXNlUmVmKFwiXCIpLE89YWYoZT0+e1MuY3VycmVudD1lLnBvaW50ZXJUeXBlfSksQj1hZigoKT0+e2xldCBlPVMuY3VycmVudDtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgYz9jOmNbXCJwZW5cIiE9PWUmJmU/ZTpcIm1vdXNlXCJdfSksUD1hZihlPT57aWYoIW58fCFpfHwhbHx8XCJFc2NhcGVcIiE9PWUua2V5fHxqLmN1cnJlbnQpcmV0dXJuO2xldCB0PWEuY3VycmVudC5mbG9hdGluZ0NvbnRleHQ/Lm5vZGVJZCxvPW0/aVMobS5ub2Rlc1JlZi5jdXJyZW50LHQpOltdO2lmKCFiJiYoZS5zdG9wUHJvcGFnYXRpb24oKSxvLmxlbmd0aD4wKSl7bGV0IGU9ITA7aWYoby5mb3JFYWNoKHQ9Pnt0LmNvbnRleHQ/Lm9wZW4mJiF0LmNvbnRleHQuZGF0YVJlZi5jdXJyZW50Ll9fZXNjYXBlS2V5QnViYmxlcyYmKGU9ITEpfSksIWUpcmV0dXJufXIoITEsXCJuYXRpdmVFdmVudFwiaW4gZT9lLm5hdGl2ZUV2ZW50OmUsXCJlc2NhcGUta2V5XCIpfSksST1hZihlPT57bGV0IHQ9QigpO3JldHVyblwiaW50ZW50aW9uYWxcIj09PXQmJlwiY2xpY2tcIiE9PWUudHlwZXx8XCJzbG9wcHlcIj09PXQmJlwiY2xpY2tcIj09PWUudHlwZX0pLHo9YWYoZT0+e2xldCB0PSgpPT57UChlKSxpeShlKT8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImtleWRvd25cIix0KX07aXkoZSk/LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdCl9KSxUPWFmKGU9PntpZihJKGUpKXJldHVybjtsZXQgdD1hLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlO2EuY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITE7bGV0IG49di5jdXJyZW50O2lmKHYuY3VycmVudD0hMSxcImludGVudGlvbmFsXCI9PT1CKCkmJm58fHR8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHkmJiF5KGUpKXJldHVybjtsZXQgaT1peShlKSxsPWBbJHtpQyhcImluZXJ0XCIpfV1gLHM9aWIoby5mbG9hdGluZykucXVlcnlTZWxlY3RvckFsbChsKSxjPWFUKGkpP2k6bnVsbDtmb3IoO2MmJiFhWShjKTspe2xldCBlPWFHKGMpO2lmKGFZKGUpfHwhYVQoZSkpYnJlYWs7Yz1lfWlmKHMubGVuZ3RoJiZhVChpKSYmIWkubWF0Y2hlcyhcImh0bWwsYm9keVwiKSYmIWlnKGksby5mbG9hdGluZykmJkFycmF5LmZyb20ocykuZXZlcnkoZT0+IWlnKGMsZSkpKXJldHVybjtpZihhRChpKSl7bGV0IHQ9YVkoaSksbj1hSyhpKSxyPS9hdXRvfHNjcm9sbC8sbz10fHxyLnRlc3Qobi5vdmVyZmxvd1gpLGE9dHx8ci50ZXN0KG4ub3ZlcmZsb3dZKSxsPW8mJmkuY2xpZW50V2lkdGg+MCYmaS5zY3JvbGxXaWR0aD5pLmNsaWVudFdpZHRoLHM9YSYmaS5jbGllbnRIZWlnaHQ+MCYmaS5zY3JvbGxIZWlnaHQ+aS5jbGllbnRIZWlnaHQsYz1cInJ0bFwiPT09bi5kaXJlY3Rpb24sdT1zJiYoYz9lLm9mZnNldFg8PWkub2Zmc2V0V2lkdGgtaS5jbGllbnRXaWR0aDplLm9mZnNldFg+aS5jbGllbnRXaWR0aCksZD1sJiZlLm9mZnNldFk+aS5jbGllbnRIZWlnaHQ7aWYodXx8ZClyZXR1cm59bGV0IHU9YS5jdXJyZW50LmZsb2F0aW5nQ29udGV4dD8ubm9kZUlkLGQ9bSYmaVMobS5ub2Rlc1JlZi5jdXJyZW50LHUpLnNvbWUodD0+aXYoZSx0LmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nKSk7aWYoaXYoZSxvLmZsb2F0aW5nKXx8aXYoZSxvLmRvbVJlZmVyZW5jZSl8fGQpcmV0dXJuO2xldCBmPW0/aVMobS5ub2Rlc1JlZi5jdXJyZW50LHUpOltdO2lmKGYubGVuZ3RoPjApe2xldCBlPSEwO2lmKGYuZm9yRWFjaCh0PT57dC5jb250ZXh0Py5vcGVuJiYhdC5jb250ZXh0LmRhdGFSZWYuY3VycmVudC5fX291dHNpZGVQcmVzc0J1YmJsZXMmJihlPSExKX0pLCFlKXJldHVybn1yKCExLGUsXCJvdXRzaWRlLXByZXNzXCIpfSksRD1hZihlPT57aWYoIShcInNsb3BweVwiIT09QigpfHwhbnx8IWl8fGl2KGUsby5mbG9hdGluZyl8fGl2KGUsby5kb21SZWZlcmVuY2UpKSl7aWYoXCJ0b3VjaFwiPT09ZS5wb2ludGVyVHlwZSl7Xy5jdXJyZW50PXtzdGFydFRpbWU6RGF0ZS5ub3coKSxzdGFydFg6ZS5jbGllbnRYLHN0YXJ0WTplLmNsaWVudFksZGlzbWlzc09uUG9pbnRlclVwOiExLGRpc21pc3NPbk1vdXNlRG93bjohMH0say5zdGFydCgxZTMsKCk9PntfLmN1cnJlbnQmJihfLmN1cnJlbnQuZGlzbWlzc09uUG9pbnRlclVwPSExLF8uY3VycmVudC5kaXNtaXNzT25Nb3VzZURvd249ITEpfSk7cmV0dXJufVQoZSl9fSksTD1hZihlPT57aWYoSShlKXx8KGsuY2xlYXIoKSxcIm1vdXNlZG93blwiPT09ZS50eXBlJiZfLmN1cnJlbnQmJiFfLmN1cnJlbnQuZGlzbWlzc09uTW91c2VEb3duKSlyZXR1cm47bGV0IHQ9KCk9PntcInBvaW50ZXJkb3duXCI9PT1lLnR5cGU/RChlKTpUKGUpLGl5KGUpPy5yZW1vdmVFdmVudExpc3RlbmVyKGUudHlwZSx0KX07aXkoZSk/LmFkZEV2ZW50TGlzdGVuZXIoZS50eXBlLHQpfSksTj1hZihlPT57aWYoXCJzbG9wcHlcIiE9PUIoKXx8XCJ0b3VjaFwiIT09ZS5wb2ludGVyVHlwZXx8IV8uY3VycmVudHx8aXYoZSxvLmZsb2F0aW5nKXx8aXYoZSxvLmRvbVJlZmVyZW5jZSkpcmV0dXJuO2xldCB0PU1hdGguYWJzKGUuY2xpZW50WC1fLmN1cnJlbnQuc3RhcnRYKSxuPU1hdGguYWJzKGUuY2xpZW50WS1fLmN1cnJlbnQuc3RhcnRZKSxyPU1hdGguc3FydCh0KnQrbipuKTtyPjUmJihfLmN1cnJlbnQuZGlzbWlzc09uUG9pbnRlclVwPSEwKSxyPjEwJiYoVChlKSxrLmNsZWFyKCksXy5jdXJyZW50PW51bGwpfSksUj1hZihlPT57XCJzbG9wcHlcIiE9PUIoKXx8XCJ0b3VjaFwiIT09ZS5wb2ludGVyVHlwZXx8IV8uY3VycmVudHx8aXYoZSxvLmZsb2F0aW5nKXx8aXYoZSxvLmRvbVJlZmVyZW5jZSl8fChfLmN1cnJlbnQuZGlzbWlzc09uUG9pbnRlclVwJiZUKGUpLGsuY2xlYXIoKSxfLmN1cnJlbnQ9bnVsbCl9KTt4LnVzZUVmZmVjdCgoKT0+e2lmKCFufHwhaSlyZXR1cm47YS5jdXJyZW50Ll9fZXNjYXBlS2V5QnViYmxlcz1iLGEuY3VycmVudC5fX291dHNpZGVQcmVzc0J1YmJsZXM9QTtsZXQgZT1uZXcgYXM7ZnVuY3Rpb24gdChlKXtyKCExLGUsXCJhbmNlc3Rvci1zY3JvbGxcIil9ZnVuY3Rpb24gcygpe2UuY2xlYXIoKSxqLmN1cnJlbnQ9ITB9ZnVuY3Rpb24gYygpe2Uuc3RhcnQoNSohIWEkKCksKCk9PntqLmN1cnJlbnQ9ITF9KX1sZXQgdT1pYihvLmZsb2F0aW5nKTt1LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLE8sITApLGwmJih1LmFkZEV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdz96OlAsdyksdS5hZGRFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLHMpLHUuYWRkRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsYykpLHkmJih1LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLEM/TDpULEMpLHUuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsQz9MOlQsQyksdS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIixOLEMpLHUuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLFIsQyksdS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsTCxDKSk7bGV0IGQ9W107cmV0dXJuIGYmJihhVChvLmRvbVJlZmVyZW5jZSkmJihkPWFRKG8uZG9tUmVmZXJlbmNlKSksYVQoby5mbG9hdGluZykmJihkPWQuY29uY2F0KGFRKG8uZmxvYXRpbmcpKSksIWFUKG8ucmVmZXJlbmNlKSYmby5yZWZlcmVuY2UmJm8ucmVmZXJlbmNlLmNvbnRleHRFbGVtZW50JiYoZD1kLmNvbmNhdChhUShvLnJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkpKSksKGQ9ZC5maWx0ZXIoZT0+ZSE9PXUuZGVmYXVsdFZpZXc/LnZpc3VhbFZpZXdwb3J0KSkuZm9yRWFjaChlPT57ZS5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdCx7cGFzc2l2ZTohMH0pfSksKCk9Pnt1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLE8sITApLGwmJih1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJrZXlkb3duXCIsdz96OlAsdyksdS5yZW1vdmVFdmVudExpc3RlbmVyKFwiY29tcG9zaXRpb25zdGFydFwiLHMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNvbXBvc2l0aW9uZW5kXCIsYykpLHkmJih1LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLEM/TDpULEMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsQz9MOlQsQyksdS5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcm1vdmVcIixOLEMpLHUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJ1cFwiLFIsQyksdS5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsTCxDKSksZC5mb3JFYWNoKGU9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIix0KX0pLGUuY2xlYXIoKX19LFthLG8sbCx5LGMsbixyLGYsaSxiLEEsUCx3LHosVCxDLEwsRCxOLFIsT10pLHgudXNlRWZmZWN0KCgpPT57YS5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMX0sW2EseV0pO2xldCBNPXgudXNlTWVtbygoKT0+KHtvbktleURvd246UCwuLi51JiZ7W2lGW2RdXTplPT57cighMSxlLm5hdGl2ZUV2ZW50LFwicmVmZXJlbmNlLXByZXNzXCIpfSwuLi5cImludGVudGlvbmFsXCIhPT1kJiZ7b25DbGljayhlKXtyKCExLGUubmF0aXZlRXZlbnQsXCJyZWZlcmVuY2UtcHJlc3NcIil9fX19KSxbUCxyLHUsZF0pLFo9YWYoZT0+e2xldCB0PWl5KGUubmF0aXZlRXZlbnQpO2lnKG8uZmxvYXRpbmcsdCkmJih2LmN1cnJlbnQ9ITApfSksVT1hZigoKT0+e2EuY3VycmVudC5pbnNpZGVSZWFjdFRyZWU9ITAsRS5zdGFydCgwLCgpPT57YS5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMX0pfSksRj14LnVzZU1lbW8oKCk9Pih7b25LZXlEb3duOlAsb25Nb3VzZURvd246Wixvbk1vdXNlVXA6WixvblBvaW50ZXJEb3duQ2FwdHVyZTpVLG9uTW91c2VEb3duQ2FwdHVyZTpVLG9uQ2xpY2tDYXB0dXJlOlV9KSxbUCxaLFVdKTtyZXR1cm4geC51c2VNZW1vKCgpPT5pP3tyZWZlcmVuY2U6TSxmbG9hdGluZzpGfTp7fSxbaSxNLEZdKX1sZXQgaVY9bmV3IE1hcChbW1wic2VsZWN0XCIsXCJsaXN0Ym94XCJdLFtcImNvbWJvYm94XCIsXCJsaXN0Ym94XCJdLFtcImxhYmVsXCIsITFdXSksaSQ9W1widG9wXCIsXCJyaWdodFwiLFwiYm90dG9tXCIsXCJsZWZ0XCJdLGlXPU1hdGgubWluLGlZPU1hdGgubWF4LGlLPU1hdGgucm91bmQsaVg9TWF0aC5mbG9vcixpRz1lPT4oe3g6ZSx5OmV9KSxpUT17bGVmdDpcInJpZ2h0XCIscmlnaHQ6XCJsZWZ0XCIsYm90dG9tOlwidG9wXCIsdG9wOlwiYm90dG9tXCJ9LGlKPXtzdGFydDpcImVuZFwiLGVuZDpcInN0YXJ0XCJ9O2Z1bmN0aW9uIGkwKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZT9lKHQpOmV9ZnVuY3Rpb24gaTEoZSl7cmV0dXJuIGUuc3BsaXQoXCItXCIpWzBdfWZ1bmN0aW9uIGkyKGUpe3JldHVybiBlLnNwbGl0KFwiLVwiKVsxXX1mdW5jdGlvbiBpNChlKXtyZXR1cm5cInhcIj09PWU/XCJ5XCI6XCJ4XCJ9ZnVuY3Rpb24gaTUoZSl7cmV0dXJuXCJ5XCI9PT1lP1wiaGVpZ2h0XCI6XCJ3aWR0aFwifWxldCBpMz1uZXcgU2V0KFtcInRvcFwiLFwiYm90dG9tXCJdKTtmdW5jdGlvbiBpNihlKXtyZXR1cm4gaTMuaGFzKGkxKGUpKT9cInlcIjpcInhcIn1mdW5jdGlvbiBpOShlKXtyZXR1cm4gZS5yZXBsYWNlKC9zdGFydHxlbmQvZyxlPT5pSltlXSl9bGV0IGk4PVtcImxlZnRcIixcInJpZ2h0XCJdLGk3PVtcInJpZ2h0XCIsXCJsZWZ0XCJdLGxlPVtcInRvcFwiLFwiYm90dG9tXCJdLGx0PVtcImJvdHRvbVwiLFwidG9wXCJdO2Z1bmN0aW9uIGxuKGUpe3JldHVybiBlLnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLGU9PmlRW2VdKX1mdW5jdGlvbiBscihlKXtyZXR1cm5cIm51bWJlclwiIT10eXBlb2YgZT97dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjAsLi4uZX06e3RvcDplLHJpZ2h0OmUsYm90dG9tOmUsbGVmdDplfX1mdW5jdGlvbiBsbyhlKXtsZXR7eDp0LHk6bix3aWR0aDpyLGhlaWdodDpvfT1lO3JldHVybnt3aWR0aDpyLGhlaWdodDpvLHRvcDpuLGxlZnQ6dCxyaWdodDp0K3IsYm90dG9tOm4rbyx4OnQseTpufX1mdW5jdGlvbiBsYShlLHQsbil7cmV0dXJuIE1hdGguZmxvb3IoZS90KSE9PW59ZnVuY3Rpb24gbGkoZSx0KXtyZXR1cm4gdDwwfHx0Pj1lLmN1cnJlbnQubGVuZ3RofWZ1bmN0aW9uIGxsKGUsdCl7cmV0dXJuIGxjKGUse2Rpc2FibGVkSW5kaWNlczp0fSl9ZnVuY3Rpb24gbHMoZSx0KXtyZXR1cm4gbGMoZSx7ZGVjcmVtZW50OiEwLHN0YXJ0aW5nSW5kZXg6ZS5jdXJyZW50Lmxlbmd0aCxkaXNhYmxlZEluZGljZXM6dH0pfWZ1bmN0aW9uIGxjKGUse3N0YXJ0aW5nSW5kZXg6dD0tMSxkZWNyZW1lbnQ6bj0hMSxkaXNhYmxlZEluZGljZXM6cixhbW91bnQ6bz0xfT17fSl7bGV0IGE9dDtkbyBhKz1uPy1vOm87d2hpbGUoYT49MCYmYTw9ZS5jdXJyZW50Lmxlbmd0aC0xJiZsdShlLGEscikpO3JldHVybiBhfWZ1bmN0aW9uIGx1KGUsdCxuKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuKXJldHVybiBuKHQpO2lmKG4pcmV0dXJuIG4uaW5jbHVkZXModCk7bGV0IHI9ZS5jdXJyZW50W3RdO3JldHVybiBudWxsPT1yfHxyLmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpfHxcInRydWVcIj09PXIuZ2V0QXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKX1sZXQgbGQ9MDtmdW5jdGlvbiBsZihlLHQ9e30pe2xldHtwcmV2ZW50U2Nyb2xsOm49ITEsY2FuY2VsUHJldmlvdXM6cj0hMCxzeW5jOm89ITF9PXQ7ciYmY2FuY2VsQW5pbWF0aW9uRnJhbWUobGQpO2xldCBhPSgpPT5lPy5mb2N1cyh7cHJldmVudFNjcm9sbDpufSk7bz9hKCk6bGQ9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGEpfWZ1bmN0aW9uIGxwKGUsdCxuKXtzd2l0Y2goZSl7Y2FzZVwidmVydGljYWxcIjpyZXR1cm4gdDtjYXNlXCJob3Jpem9udGFsXCI6cmV0dXJuIG47ZGVmYXVsdDpyZXR1cm4gdHx8bn19ZnVuY3Rpb24gbGgoZSx0KXtyZXR1cm4gbHAodCxlPT09aXB8fGU9PT1paCxlPT09aXV8fGU9PT1pZCl9ZnVuY3Rpb24gbG0oZSx0LG4pe3JldHVybiBscCh0LGU9PT1paCxuP2U9PT1pdTplPT09aWQpfHxcIkVudGVyXCI9PT1lfHxcIiBcIj09PWV8fFwiXCI9PT1lfWZ1bmN0aW9uIGxnKGU9W10pe2xldCB0PWUubWFwKGU9PmU/LnJlZmVyZW5jZSksbj1lLm1hcChlPT5lPy5mbG9hdGluZykscj1lLm1hcChlPT5lPy5pdGVtKSxvPXgudXNlQ2FsbGJhY2sodD0+bHkodCxlLFwicmVmZXJlbmNlXCIpLHQpLGE9eC51c2VDYWxsYmFjayh0PT5seSh0LGUsXCJmbG9hdGluZ1wiKSxuKSxpPXgudXNlQ2FsbGJhY2sodD0+bHkodCxlLFwiaXRlbVwiKSxyKTtyZXR1cm4geC51c2VNZW1vKCgpPT4oe2dldFJlZmVyZW5jZVByb3BzOm8sZ2V0RmxvYXRpbmdQcm9wczphLGdldEl0ZW1Qcm9wczppfSksW28sYSxpXSl9ZnVuY3Rpb24gbHkoZSx0LG4pe2xldCByPW5ldyBNYXAsbz1cIml0ZW1cIj09PW4sYT17fTtmb3IobGV0IHQgaW5cImZsb2F0aW5nXCI9PT1uJiYoYS50YWJJbmRleD0tMSxhW2lsXT1cIlwiKSxlKW8mJmUmJih0PT09aXN8fHQ9PT1pYyl8fChhW3RdPWVbdF0pO2ZvcihsZXQgaT0wO2k8dC5sZW5ndGg7aSs9MSl7bGV0IGwscz10W2ldPy5bbl07KGw9XCJmdW5jdGlvblwiPT10eXBlb2Ygcz9lP3MoZSk6bnVsbDpzKSYmbHYoYSxsLG8scil9cmV0dXJuIGx2KGEsZSxvLHIpLGF9ZnVuY3Rpb24gbHYoZSx0LG4scil7Zm9yKGxldCBvIGluIHQpe2xldCBhPXRbb107biYmKG89PT1pc3x8bz09PWljKXx8KG8uc3RhcnRzV2l0aChcIm9uXCIpPyhyLmhhcyhvKXx8ci5zZXQobyxbXSksXCJmdW5jdGlvblwiPT10eXBlb2YgYSYmKHIuZ2V0KG8pPy5wdXNoKGEpLGVbb109KC4uLmUpPT5yLmdldChvKT8ubWFwKHQ9PnQoLi4uZSkpLmZpbmQoZT0+dm9pZCAwIT09ZSkpKTplW29dPWEpfX1sZXQgbGI9eC5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gbEEoZSl7bGV0IHQ9eC51c2VDb250ZXh0KGxiKTtpZih2b2lkIDA9PT10JiYhZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IE1lbnVSb290Q29udGV4dCBpcyBtaXNzaW5nLiBNZW51IHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8TWVudS5Sb290Pi5cIik7cmV0dXJuIHR9bGV0IGx4PXguY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiBsdyhlLHQ9ITEsbj0hMSl7bGV0W3Isb109eC51c2VTdGF0ZShlJiZ0P1wiaWRsZVwiOnZvaWQgMCksW2EsaV09eC51c2VTdGF0ZShlKTtyZXR1cm4gZSYmIWEmJihpKCEwKSxvKFwic3RhcnRpbmdcIikpLGV8fCFhfHxcImVuZGluZ1wiPT09cnx8bnx8byhcImVuZGluZ1wiKSxlfHxhfHxcImVuZGluZ1wiIT09cnx8byh2b2lkIDApLGF4KCgpPT57aWYoIWUmJmEmJlwiZW5kaW5nXCIhPT1yJiZuKXtsZXQgZT1pRC5yZXF1ZXN0KCgpPT57byhcImVuZGluZ1wiKX0pO3JldHVybigpPT57aUQuY2FuY2VsKGUpfX19LFtlLGEscixuXSksYXgoKCk9PntpZighZXx8dClyZXR1cm47bGV0IG49aUQucmVxdWVzdCgoKT0+e2VmLmZsdXNoU3luYygoKT0+e28odm9pZCAwKX0pfSk7cmV0dXJuKCk9PntpRC5jYW5jZWwobil9fSxbdCxlXSksYXgoKCk9PntpZighZXx8IXQpcmV0dXJuO2UmJmEmJlwiaWRsZVwiIT09ciYmbyhcInN0YXJ0aW5nXCIpO2xldCBuPWlELnJlcXVlc3QoKCk9PntvKFwiaWRsZVwiKX0pO3JldHVybigpPT57aUQuY2FuY2VsKG4pfX0sW3QsZSxhLG8scl0pLHgudXNlTWVtbygoKT0+KHttb3VudGVkOmEsc2V0TW91bnRlZDppLHRyYW5zaXRpb25TdGF0dXM6cn0pLFthLHJdKX1mdW5jdGlvbiBsQyhlKXtsZXR7ZW5hYmxlZDp0PSEwLG9wZW46bixyZWY6cixvbkNvbXBsZXRlOm99PWUsYT1hMChuKSxpPWFmKG8pLGw9ZnVuY3Rpb24oZSx0PSExKXtsZXQgbj1pTCgpO3JldHVybiBhZigocixvPW51bGwpPT57bGV0IGE7aWYobi5jYW5jZWwoKSxudWxsIT1lKXtpZihcImN1cnJlbnRcImluIGUpe2lmKG51bGw9PWUuY3VycmVudClyZXR1cm47YT1lLmN1cnJlbnR9ZWxzZSBhPWU7XCJmdW5jdGlvblwiIT10eXBlb2YgYS5nZXRBbmltYXRpb25zfHxnbG9iYWxUaGlzLkJBU0VfVUlfQU5JTUFUSU9OU19ESVNBQkxFRD9yKCk6bi5yZXF1ZXN0KCgpPT57ZnVuY3Rpb24gZSgpe2EmJlByb21pc2UuYWxsU2V0dGxlZChhLmdldEFuaW1hdGlvbnMoKS5tYXAoZT0+ZS5maW5pc2hlZCkpLnRoZW4oKCk9PntudWxsIT1vJiZvLmFib3J0ZWR8fGVmLmZsdXNoU3luYyhyKX0pfXQ/bi5yZXF1ZXN0KGUpOmUoKX0pfX0pfShyLG4pO3gudXNlRWZmZWN0KCgpPT57dCYmbCgoKT0+e249PT1hLmN1cnJlbnQmJmkoKX0pfSxbdCxuLGksbCxhXSl9bGV0IGxfPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIGxrKGU9ITApe2xldCB0PXgudXNlQ29udGV4dChsXyk7aWYodm9pZCAwPT09dCYmIWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBEaXJlY3Rpb25Db250ZXh0IGlzIG1pc3NpbmcuXCIpO3JldHVybiB0Py5kaXJlY3Rpb24/P1wibHRyXCJ9ZnVuY3Rpb24gbEUoZSl7cmV0dXJuIGU/Lm93bmVyRG9jdW1lbnR8fGRvY3VtZW50fWxldCBsaj0oKT0+e30sbFM9e30sbE89e30sbEI9XCJcIjtjbGFzcyBsUHtsb2NrQ291bnQ9MDtyZXN0b3JlPW51bGw7dGltZW91dExvY2s9YXMuY3JlYXRlKCk7dGltZW91dFVubG9jaz1hcy5jcmVhdGUoKTthY3F1aXJlKGUpe3JldHVybiB0aGlzLmxvY2tDb3VudCs9MSwxPT09dGhpcy5sb2NrQ291bnQmJm51bGw9PT10aGlzLnJlc3RvcmUmJnRoaXMudGltZW91dExvY2suc3RhcnQoMCwoKT0+dGhpcy5sb2NrKGUpKSx0aGlzLnJlbGVhc2V9cmVsZWFzZT0oKT0+e3RoaXMubG9ja0NvdW50LT0xLDA9PT10aGlzLmxvY2tDb3VudCYmdGhpcy5yZXN0b3JlJiZ0aGlzLnRpbWVvdXRVbmxvY2suc3RhcnQoMCx0aGlzLnVubG9jayl9O3VubG9jaz0oKT0+ezA9PT10aGlzLmxvY2tDb3VudCYmdGhpcy5yZXN0b3JlJiYodGhpcy5yZXN0b3JlPy4oKSx0aGlzLnJlc3RvcmU9bnVsbCl9O2xvY2soZSl7aWYoMD09PXRoaXMubG9ja0NvdW50fHxudWxsIT09dGhpcy5yZXN0b3JlKXJldHVybjtsZXQgdD1sRShlKS5kb2N1bWVudEVsZW1lbnQsbj1hUCh0KS5nZXRDb21wdXRlZFN0eWxlKHQpLm92ZXJmbG93WTtpZihcImhpZGRlblwiPT09bnx8XCJjbGlwXCI9PT1uKXt0aGlzLnJlc3RvcmU9bGo7cmV0dXJufWxldCByPWE5fHwhZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiExO2xldCB0PWxFKGUpO3JldHVybiBhUCh0KS5pbm5lcldpZHRoLXQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoPjB9KGUpO3RoaXMucmVzdG9yZT1yP2Z1bmN0aW9uKGUpe2xldCB0PWxFKGUpLmRvY3VtZW50RWxlbWVudCxuPXQuc3R5bGUub3ZlcmZsb3c7cmV0dXJuIHQuc3R5bGUub3ZlcmZsb3c9XCJoaWRkZW5cIiwoKT0+e3Quc3R5bGUub3ZlcmZsb3c9bn19KGUpOmZ1bmN0aW9uKGUpe2xldCB0PWxFKGUpLG49dC5kb2N1bWVudEVsZW1lbnQscj10LmJvZHksbz1hUChuKSxhPTAsaT0wLGw9aUQuY3JlYXRlKCk7aWYoYTYmJihvLnZpc3VhbFZpZXdwb3J0Py5zY2FsZT8/MSkhPT0xKXJldHVybigpPT57fTtmdW5jdGlvbiBzKCl7bGV0IGU9by5nZXRDb21wdXRlZFN0eWxlKG4pLHQ9by5nZXRDb21wdXRlZFN0eWxlKHIpO2E9bi5zY3JvbGxUb3AsaT1uLnNjcm9sbExlZnQsbFM9e3Njcm9sbGJhckd1dHRlcjpuLnN0eWxlLnNjcm9sbGJhckd1dHRlcixvdmVyZmxvd1k6bi5zdHlsZS5vdmVyZmxvd1ksb3ZlcmZsb3dYOm4uc3R5bGUub3ZlcmZsb3dYfSxsQj1uLnN0eWxlLnNjcm9sbEJlaGF2aW9yLGxPPXtwb3NpdGlvbjpyLnN0eWxlLnBvc2l0aW9uLGhlaWdodDpyLnN0eWxlLmhlaWdodCx3aWR0aDpyLnN0eWxlLndpZHRoLGJveFNpemluZzpyLnN0eWxlLmJveFNpemluZyxvdmVyZmxvd1k6ci5zdHlsZS5vdmVyZmxvd1ksb3ZlcmZsb3dYOnIuc3R5bGUub3ZlcmZsb3dYLHNjcm9sbEJlaGF2aW9yOnIuc3R5bGUuc2Nyb2xsQmVoYXZpb3J9O2xldCBsPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBDU1MmJkNTUy5zdXBwb3J0cz8uKFwic2Nyb2xsYmFyLWd1dHRlclwiLFwic3RhYmxlXCIpLHM9bi5zY3JvbGxIZWlnaHQ+bi5jbGllbnRIZWlnaHQsYz1uLnNjcm9sbFdpZHRoPm4uY2xpZW50V2lkdGgsdT1cInNjcm9sbFwiPT09ZS5vdmVyZmxvd1l8fFwic2Nyb2xsXCI9PT10Lm92ZXJmbG93WSxkPVwic2Nyb2xsXCI9PT1lLm92ZXJmbG93WHx8XCJzY3JvbGxcIj09PXQub3ZlcmZsb3dYLGY9TWF0aC5tYXgoMCxvLmlubmVyV2lkdGgtbi5jbGllbnRXaWR0aCkscD1NYXRoLm1heCgwLG8uaW5uZXJIZWlnaHQtbi5jbGllbnRIZWlnaHQpLGg9cGFyc2VGbG9hdCh0Lm1hcmdpblRvcCkrcGFyc2VGbG9hdCh0Lm1hcmdpbkJvdHRvbSksbT1wYXJzZUZsb2F0KHQubWFyZ2luTGVmdCkrcGFyc2VGbG9hdCh0Lm1hcmdpblJpZ2h0KTtPYmplY3QuYXNzaWduKG4uc3R5bGUse3Njcm9sbGJhckd1dHRlcjpcInN0YWJsZVwiLG92ZXJmbG93WTohbCYmKHN8fHUpP1wic2Nyb2xsXCI6XCJoaWRkZW5cIixvdmVyZmxvd1g6IWwmJihjfHxkKT9cInNjcm9sbFwiOlwiaGlkZGVuXCJ9KSxPYmplY3QuYXNzaWduKHIuc3R5bGUse3Bvc2l0aW9uOlwicmVsYXRpdmVcIixoZWlnaHQ6aHx8cD9gY2FsYygxMDBkdmggLSAke2grcH1weClgOlwiMTAwZHZoXCIsd2lkdGg6bXx8Zj9gY2FsYygxMDB2dyAtICR7bStmfXB4KWA6XCIxMDB2d1wiLGJveFNpemluZzpcImJvcmRlci1ib3hcIixvdmVyZmxvdzpcImhpZGRlblwiLHNjcm9sbEJlaGF2aW9yOlwidW5zZXRcIn0pLHIuc2Nyb2xsVG9wPWEsci5zY3JvbGxMZWZ0PWksbi5zZXRBdHRyaWJ1dGUoXCJkYXRhLWJhc2UtdWktc2Nyb2xsLWxvY2tlZFwiLFwiXCIpLG4uc3R5bGUuc2Nyb2xsQmVoYXZpb3I9XCJ1bnNldFwifWZ1bmN0aW9uIGMoKXtPYmplY3QuYXNzaWduKG4uc3R5bGUsbFMpLE9iamVjdC5hc3NpZ24oci5zdHlsZSxsTyksbi5zY3JvbGxUb3A9YSxuLnNjcm9sbExlZnQ9aSxuLnJlbW92ZUF0dHJpYnV0ZShcImRhdGEtYmFzZS11aS1zY3JvbGwtbG9ja2VkXCIpLG4uc3R5bGUuc2Nyb2xsQmVoYXZpb3I9bEJ9ZnVuY3Rpb24gdSgpe2MoKSxsLnJlcXVlc3Qocyl9cmV0dXJuIHMoKSxvLmFkZEV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIix1KSwoKT0+e2wuY2FuY2VsKCksYygpLG8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLHUpfX0oZSl9fWxldCBsST1uZXcgbFA7ZnVuY3Rpb24gbHooZSl7aWYoZSlyZXR1cm4oe1wiZm9jdXMtb3V0XCI6XCJmb2N1cy1vdXRcIixcImVzY2FwZS1rZXlcIjpcImVzY2FwZS1rZXlcIixcIm91dHNpZGUtcHJlc3NcIjpcIm91dHNpZGUtcHJlc3NcIixcImxpc3QtbmF2aWdhdGlvblwiOlwibGlzdC1uYXZpZ2F0aW9uXCIsY2xpY2s6XCJ0cmlnZ2VyLXByZXNzXCIsaG92ZXI6XCJ0cmlnZ2VyLWhvdmVyXCIsZm9jdXM6XCJ0cmlnZ2VyLWZvY3VzXCIsXCJyZWZlcmVuY2UtcHJlc3NcIjpcInRyaWdnZXItcHJlc3NcIixcInNhZmUtcG9seWdvblwiOlwidHJpZ2dlci1ob3ZlclwiLFwiYW5jZXN0b3Itc2Nyb2xsXCI6dm9pZCAwfSlbZV19bGV0IGxUPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIGxEKGU9ITApe2xldCB0PXgudXNlQ29udGV4dChsVCk7aWYodm9pZCAwPT09dCYmIWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBDb250ZXh0TWVudVJvb3RDb250ZXh0IGlzIG1pc3NpbmcuIENvbnRleHRNZW51IHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8Q29udGV4dE1lbnUuUm9vdD4uXCIpO3JldHVybiB0fWxldCBsTD14LmNyZWF0ZUNvbnRleHQoITEpO2Z1bmN0aW9uIGxOKGUsdCl7cmV0dXJuIGUmJiF0P2U6IWUmJnQ/dDplfHx0P3suLi5lLC4uLnR9OnZvaWQgMH1sZXQgbFI9e307ZnVuY3Rpb24gbE0oZSx0LG4scixvKXtsZXQgYT17Li4ubEYoZSxsUil9O3JldHVybiB0JiYoYT1sWihhLHQpKSxuJiYoYT1sWihhLG4pKSxyJiYoYT1sWihhLHIpKSxvJiYoYT1sWihhLG8pKSxhfWZ1bmN0aW9uIGxaKGUsdCl7cmV0dXJuIGxVKHQpP3QoZSk6ZnVuY3Rpb24oZSx0KXtpZighdClyZXR1cm4gZTtmb3IobGV0IG4gaW4gdCl7bGV0IHI9dFtuXTtzd2l0Y2gobil7Y2FzZVwic3R5bGVcIjplW25dPWxOKGUuc3R5bGUscik7YnJlYWs7Y2FzZVwiY2xhc3NOYW1lXCI6ZVtuXT1sSChlLmNsYXNzTmFtZSxyKTticmVhaztkZWZhdWx0OiFmdW5jdGlvbihlLHQpe2xldCBuPWUuY2hhckNvZGVBdCgwKSxyPWUuY2hhckNvZGVBdCgxKSxvPWUuY2hhckNvZGVBdCgyKTtyZXR1cm4gMTExPT09biYmMTEwPT09ciYmbz49NjUmJm88PTkwJiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdHx8dm9pZCAwPT09dCl9KG4scik/ZVtuXT1yOmVbbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD9lP249Pnt2YXIgcjtpZihudWxsIT0ocj1uKSYmXCJvYmplY3RcIj09dHlwZW9mIHImJlwibmF0aXZlRXZlbnRcImluIHIpe2xxKG4pO2xldCByPXQobik7cmV0dXJuIG4uYmFzZVVJSGFuZGxlclByZXZlbnRlZHx8ZT8uKG4pLHJ9bGV0IG89dChuKTtyZXR1cm4gZT8uKG4pLG99OnQ6ZX0oZVtuXSxyKX19cmV0dXJuIGV9KGUsdCl9ZnVuY3Rpb24gbFUoZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX1mdW5jdGlvbiBsRihlLHQpe3JldHVybiBsVShlKT9lKHQpOmU/P2xSfWZ1bmN0aW9uIGxxKGUpe3JldHVybiBlLnByZXZlbnRCYXNlVUlIYW5kbGVyPSgpPT57ZS5iYXNlVUlIYW5kbGVyUHJldmVudGVkPSEwfSxlfWZ1bmN0aW9uIGxIKGUsdCl7cmV0dXJuIHQ/ZT90K1wiIFwiK2U6dDplfWxldCBsVj1bXSxsJD17Y3VycmVudDohMX0sbFc9ZnVuY3Rpb24oZSl7bGV0IHQsbix7Y2hpbGRyZW46cixvcGVuOm8sb25PcGVuQ2hhbmdlOmEsb25PcGVuQ2hhbmdlQ29tcGxldGU6aSxkZWZhdWx0T3BlbjpsPSExLGRpc2FibGVkOnM9ITEsbW9kYWw6Yyxsb29wOnU9ITAsb3JpZW50YXRpb246ZD1cInZlcnRpY2FsXCIsYWN0aW9uc1JlZjpmLG9wZW5PbkhvdmVyOnAsZGVsYXk6aD0xMDAsY2xvc2VEZWxheTptPTAsY2xvc2VQYXJlbnRPbkVzYzpnPSEwfT1lLFt5LHZdPXgudXNlU3RhdGUobnVsbCksW0Esd109eC51c2VTdGF0ZShudWxsKSxbQyxfXT14LnVzZVN0YXRlKCksW2ssRV09eC51c2VTdGF0ZSghMCksW2osU109eC51c2VTdGF0ZShudWxsKSxbTyxCXT14LnVzZVN0YXRlKG51bGwpLFtQLEldPXgudXNlU3RhdGUoITApLFt6LFRdPXgudXNlU3RhdGUoITEpLEQ9eC51c2VSZWYobnVsbCksTD14LnVzZVJlZihudWxsKSxOPXgudXNlUmVmKG51bGwpLFI9eC51c2VSZWYoW10pLE09eC51c2VSZWYoW10pLFo9YWMoKSxVPWxEKCEwKSxGPXgudXNlQ29udGV4dChsTCk7e2xldCBlPWxBKCEwKSxuPWZ1bmN0aW9uKGUpe2xldCB0PXgudXNlQ29udGV4dChseCk7aWYobnVsbD09PXQmJiFlKXRocm93IEVycm9yKFwiQmFzZSBVSTogTWVudWJhckNvbnRleHQgaXMgbWlzc2luZy4gTWVudWJhciBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPE1lbnViYXI+LlwiKTtyZXR1cm4gdH0oITApO3Q9RiYmZT97dHlwZTpcIm1lbnVcIixjb250ZXh0OmV9Om4/e3R5cGU6XCJtZW51YmFyXCIsY29udGV4dDpufTpVP3t0eXBlOlwiY29udGV4dC1tZW51XCIsY29udGV4dDpVfTp7dHlwZTp2b2lkIDB9fWxldCBxPWFiKCk7dm9pZCAwIT09dC50eXBlJiYocT10LmNvbnRleHQucm9vdElkKTtsZXQgSD0odm9pZCAwPT09dC50eXBlfHxcImNvbnRleHQtbWVudVwiPT09dC50eXBlKSYmKGM/PyEwKSxWPVwibWVudVwiPT09dC50eXBlP3QuY29udGV4dC5hbGxvd01vdXNlRW50ZXI6eiwkPVwibWVudVwiPT09dC50eXBlP3QuY29udGV4dC5zZXRBbGxvd01vdXNlRW50ZXI6VCxXPXA/PyhcIm1lbnVcIj09PXQudHlwZXx8XCJtZW51YmFyXCI9PT10LnR5cGUmJnQuY29udGV4dC5oYXNTdWJtZW51T3BlbiksW1ksS109YW0oe2NvbnRyb2xsZWQ6byxkZWZhdWx0OmwsbmFtZTpcIk1lbnVSb290XCIsc3RhdGU6XCJvcGVuXCJ9KSxYPXgudXNlUmVmKFwiY29udGV4dC1tZW51XCIhPT10LnR5cGUpLEc9YWMoKTt4LnVzZUVmZmVjdCgoKT0+e2lmKFl8fChELmN1cnJlbnQ9bnVsbCksXCJjb250ZXh0LW1lbnVcIj09PXQudHlwZSl7aWYoIVkpe0cuY2xlYXIoKSxYLmN1cnJlbnQ9ITE7cmV0dXJufUcuc3RhcnQoNTAwLCgpPT57WC5jdXJyZW50PSEwfSl9fSxbRyxZLHQudHlwZV0pO2xldCBRPXgudXNlQ2FsbGJhY2soZT0+e04uY3VycmVudD1lLHcoZSl9LFtdKSx7bW91bnRlZDpKLHNldE1vdW50ZWQ6ZWUsdHJhbnNpdGlvblN0YXR1czpldH09bHcoWSkse29wZW5NZXRob2Q6ZW4sdHJpZ2dlclByb3BzOmVyLHJlc2V0OmVvfT1mdW5jdGlvbihlKXtsZXRbdCxuXT14LnVzZVN0YXRlKG51bGwpLHI9YWYoKHQscik9PntlfHxuKHIpfSksbz1hZigoKT0+e24obnVsbCl9KSx7b25DbGljazphLG9uUG9pbnRlckRvd246aX09ZnVuY3Rpb24oZSl7bGV0IHQ9eC51c2VSZWYoXCJcIiksbj14LnVzZUNhbGxiYWNrKG49PntuLmRlZmF1bHRQcmV2ZW50ZWR8fCh0LmN1cnJlbnQ9bi5wb2ludGVyVHlwZSxlKG4sbi5wb2ludGVyVHlwZSkpfSxbZV0pO3JldHVybntvbkNsaWNrOngudXNlQ2FsbGJhY2sobj0+e2lmKDA9PT1uLmRldGFpbClyZXR1cm4gdm9pZCBlKG4sXCJrZXlib2FyZFwiKTtcInBvaW50ZXJUeXBlXCJpbiBuJiZlKG4sbi5wb2ludGVyVHlwZSksZShuLHQuY3VycmVudCksdC5jdXJyZW50PVwiXCJ9LFtlXSksb25Qb2ludGVyRG93bjpufX0ocik7cmV0dXJuIHgudXNlTWVtbygoKT0+KHtvcGVuTWV0aG9kOnQscmVzZXQ6byx0cmlnZ2VyUHJvcHM6e29uQ2xpY2s6YSxvblBvaW50ZXJEb3duOml9fSksW3QsbyxhLGldKX0oWSk7dmFyIGVhPXtlbmFibGVkOlkmJkgmJlwidHJpZ2dlci1ob3ZlclwiIT09TyYmXCJ0b3VjaFwiIT09ZW4sbW91bnRlZDpKLG9wZW46WSxyZWZlcmVuY2VFbGVtZW50OkF9O2xldHtlbmFibGVkOmVpPSEwLG1vdW50ZWQ6ZWwsb3BlbjplcyxyZWZlcmVuY2VFbGVtZW50OmVjPW51bGx9PWVhO2F4KCgpPT57aWYoZWkmJmE2JiZlbCYmIWVzKXtsZXQgZT1sRShlYyksdD1lLmJvZHkuc3R5bGUudXNlclNlbGVjdCxuPWUuYm9keS5zdHlsZS53ZWJraXRVc2VyU2VsZWN0O3JldHVybiBlLmJvZHkuc3R5bGUudXNlclNlbGVjdD1cIm5vbmVcIixlLmJvZHkuc3R5bGUud2Via2l0VXNlclNlbGVjdD1cIm5vbmVcIiwoKT0+e2UuYm9keS5zdHlsZS51c2VyU2VsZWN0PXQsZS5ib2R5LnN0eWxlLndlYmtpdFVzZXJTZWxlY3Q9bn19fSxbZWksZWwsZXMsZWNdKSxheCgoKT0+e2lmKGVpKXJldHVybiBsSS5hY3F1aXJlKGVjKX0sW2VpLGVjXSksWXx8a3x8RSghMCk7bGV0IGV1PWFmKCgpPT57ZWUoITEpLEkoITApLCQoITEpLGk/LighMSksZW8oKX0pO2xDKHtlbmFibGVkOiFmLG9wZW46WSxyZWY6TCxvbkNvbXBsZXRlKCl7WXx8ZXUoKX19KTtsZXQgZWQ9eC51c2VSZWYoITApLGVwPWFjKCksZWg9YWYoKGUsbixyKT0+e2lmKFk9PT1lfHwhMT09PWUmJm4/LnR5cGU9PT1cImNsaWNrXCImJlwidG91Y2hcIj09PW4ucG9pbnRlclR5cGUmJiFlZC5jdXJyZW50KXJldHVybjtpZighZSYmbnVsbCE9PWope2xldCBlPVIuY3VycmVudFtqXTtxdWV1ZU1pY3JvdGFzaygoKT0+e2U/LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKX0pfWUmJlwidHJpZ2dlci1mb2N1c1wiPT09cj8oZWQuY3VycmVudD0hMSxlcC5zdGFydCgzMDAsKCk9PntlZC5jdXJyZW50PSEwfSkpOihlZC5jdXJyZW50PSEwLGVwLmNsZWFyKCkpO2xldCBvPShcInRyaWdnZXItcHJlc3NcIj09PXJ8fFwiaXRlbS1wcmVzc1wiPT09cikmJjA9PT1uLmRldGFpbCYmbj8uaXNUcnVzdGVkLGk9IWUmJihcImVzY2FwZS1rZXlcIj09PXJ8fG51bGw9PXIpO2Z1bmN0aW9uIGwoKXthPy4oZSxuLHIpLEsoZSksQihyPz9udWxsKSxELmN1cnJlbnQ9bj8/bnVsbH1cInRyaWdnZXItaG92ZXJcIj09PXI/KEkoITApLFouc3RhcnQoNTAwLCgpPT57SSghMSl9KSxlZi5mbHVzaFN5bmMobCkpOmwoKSxcIm1lbnViYXJcIj09PXQudHlwZSYmKFwidHJpZ2dlci1mb2N1c1wiPT09cnx8XCJmb2N1cy1vdXRcIj09PXJ8fFwidHJpZ2dlci1ob3ZlclwiPT09cnx8XCJsaXN0LW5hdmlnYXRpb25cIj09PXJ8fFwic2libGluZy1vcGVuXCI9PT1yKT9fKFwiZ3JvdXBcIik6b3x8aT9fKG8/XCJjbGlja1wiOlwiZGlzbWlzc1wiKTpfKHZvaWQgMCl9KTt4LnVzZUltcGVyYXRpdmVIYW5kbGUoZiwoKT0+KHt1bm1vdW50OmV1fSksW2V1XSksXCJjb250ZXh0LW1lbnVcIj09PXQudHlwZSYmKG49dC5jb250ZXh0KSx4LnVzZUltcGVyYXRpdmVIYW5kbGUobj8ucG9zaXRpb25lclJlZiwoKT0+QSxbQV0pLHgudXNlSW1wZXJhdGl2ZUhhbmRsZShuPy5hY3Rpb25zUmVmLCgpPT4oe3NldE9wZW46ZWh9KSxbZWhdKSx4LnVzZUVmZmVjdCgoKT0+e1l8fFouY2xlYXIoKX0sW1osWV0pO2xldCBlbT1hUyh7ZWxlbWVudHM6e3JlZmVyZW5jZTp5LGZsb2F0aW5nOkF9LG9wZW46WSxvbk9wZW5DaGFuZ2UoZSx0LG4pe2VoKGUsdCxseihuKSl9fSksZWc9aWooZW0se2VuYWJsZWQ6ayYmVyYmIXMmJlwiY29udGV4dC1tZW51XCIhPT10LnR5cGUmJihcIm1lbnViYXJcIiE9PXQudHlwZXx8dC5jb250ZXh0Lmhhc1N1Ym1lbnVPcGVuJiYhWSksaGFuZGxlQ2xvc2U6aVAoe2Jsb2NrUG9pbnRlckV2ZW50czohMH0pLG1vdXNlT25seTohMCxtb3ZlOlwibWVudVwiPT09dC50eXBlLHJlc3RNczp2b2lkIDA9PT10LnR5cGV8fFwibWVudVwiPT09dC50eXBlJiZWP2g6dm9pZCAwLGRlbGF5OlwibWVudVwiPT09dC50eXBlP3tvcGVuOlY/aDoxZTEwLGNsb3NlOm19OntjbG9zZTptfX0pLGV5PWl6KGVtLHtlbmFibGVkOiFzJiYhWSYmXCJtZW51YmFyXCI9PT10LnR5cGUmJnQuY29udGV4dC5oYXNTdWJtZW51T3BlbiYmIVV9KSxldj1mdW5jdGlvbihlLHQ9e30pe2xldHtvcGVuOm4sb25PcGVuQ2hhbmdlOnIsZGF0YVJlZjpvfT1lLHtlbmFibGVkOmE9ITAsZXZlbnQ6aT1cImNsaWNrXCIsdG9nZ2xlOmw9ITAsaWdub3JlTW91c2U6cz0hMSxzdGlja0lmT3BlbjpjPSEwfT10LHU9eC51c2VSZWYodm9pZCAwKSxkPWlMKCksZj14LnVzZU1lbW8oKCk9Pih7b25Qb2ludGVyRG93bihlKXt1LmN1cnJlbnQ9ZS5wb2ludGVyVHlwZX0sb25Nb3VzZURvd24oZSl7bGV0IHQ9dS5jdXJyZW50LGE9ZS5uYXRpdmVFdmVudDtpZigwIT09ZS5idXR0b258fFwiY2xpY2tcIj09PWl8fGlpKHQsITApJiZzKXJldHVybjtsZXQgZj1vLmN1cnJlbnQub3BlbkV2ZW50LHA9Zj8udHlwZSxoPSEobiYmbCYmKCFmfHwhY3x8XCJjbGlja1wiPT09cHx8XCJtb3VzZWRvd25cIj09PXApKTtkLnJlcXVlc3QoKCk9PntyKGgsYSxcImNsaWNrXCIpfSl9LG9uQ2xpY2soZSl7bGV0IHQ9dS5jdXJyZW50O2lmKFwibW91c2Vkb3duXCI9PT1pJiZ0KXt1LmN1cnJlbnQ9dm9pZCAwO3JldHVybn1pZihpaSh0LCEwKSYmcylyZXR1cm47bGV0IGE9by5jdXJyZW50Lm9wZW5FdmVudCxkPWE/LnR5cGU7cighKG4mJmwmJighYXx8IWN8fFwiY2xpY2tcIj09PWR8fFwibW91c2Vkb3duXCI9PT1kfHxcImtleWRvd25cIj09PWR8fFwia2V5dXBcIj09PWQpKSxlLm5hdGl2ZUV2ZW50LFwiY2xpY2tcIil9LG9uS2V5RG93bigpe3UuY3VycmVudD12b2lkIDB9fSksW28saSxzLHIsbixjLGwsZF0pO3JldHVybiB4LnVzZU1lbW8oKCk9PmE/e3JlZmVyZW5jZTpmfTppUixbYSxmXSl9KGVtLHtlbmFibGVkOiFzJiZcImNvbnRleHQtbWVudVwiIT09dC50eXBlLGV2ZW50OlkmJlwibWVudWJhclwiPT09dC50eXBlP1wiY2xpY2tcIjpcIm1vdXNlZG93blwiLHRvZ2dsZTohV3x8XCJtZW51XCIhPT10LnR5cGUsaWdub3JlTW91c2U6VyYmXCJtZW51XCI9PT10LnR5cGUsc3RpY2tJZk9wZW46dm9pZCAwPT09dC50eXBlJiZQfSksZWI9aUgoZW0se2VuYWJsZWQ6IXMsYnViYmxlczpnJiZcIm1lbnVcIj09PXQudHlwZSxvdXRzaWRlUHJlc3M6KCk9PlwiY29udGV4dC1tZW51XCIhPT10LnR5cGV8fEQuY3VycmVudD8udHlwZT09PVwiY29udGV4dG1lbnVcInx8WC5jdXJyZW50fSksZUE9ZnVuY3Rpb24oZSx0PXt9KXtsZXR7b3BlbjpuLGVsZW1lbnRzOnIsZmxvYXRpbmdJZDpvfT1lLHtlbmFibGVkOmE9ITAscm9sZTppPVwiZGlhbG9nXCJ9PXQsbD1hYigpLHM9ci5kb21SZWZlcmVuY2U/LmlkfHxsLGM9eC51c2VNZW1vKCgpPT5pdyhyLmZsb2F0aW5nKT8uaWR8fG8sW3IuZmxvYXRpbmcsb10pLHU9aVYuZ2V0KGkpPz9pLGQ9bnVsbCE9YV8oKSxmPXgudXNlTWVtbygoKT0+XCJ0b29sdGlwXCI9PT11fHxcImxhYmVsXCI9PT1pP3tbYGFyaWEtJHtcImxhYmVsXCI9PT1pP1wibGFiZWxsZWRieVwiOlwiZGVzY3JpYmVkYnlcIn1gXTpuP2M6dm9pZCAwfTp7XCJhcmlhLWV4cGFuZGVkXCI6bj9cInRydWVcIjpcImZhbHNlXCIsXCJhcmlhLWhhc3BvcHVwXCI6XCJhbGVydGRpYWxvZ1wiPT09dT9cImRpYWxvZ1wiOnUsXCJhcmlhLWNvbnRyb2xzXCI6bj9jOnZvaWQgMCwuLi5cImxpc3Rib3hcIj09PXUmJntyb2xlOlwiY29tYm9ib3hcIn0sLi4uXCJtZW51XCI9PT11JiZ7aWQ6c30sLi4uXCJtZW51XCI9PT11JiZkJiZ7cm9sZTpcIm1lbnVpdGVtXCJ9LC4uLlwic2VsZWN0XCI9PT1pJiZ7XCJhcmlhLWF1dG9jb21wbGV0ZVwiOlwibm9uZVwifSwuLi5cImNvbWJvYm94XCI9PT1pJiZ7XCJhcmlhLWF1dG9jb21wbGV0ZVwiOlwibGlzdFwifX0sW3UsYyxkLG4scyxpXSkscD14LnVzZU1lbW8oKCk9PntsZXQgZT17aWQ6YywuLi51JiZ7cm9sZTp1fX07cmV0dXJuXCJ0b29sdGlwXCI9PT11fHxcImxhYmVsXCI9PT1pP2U6ey4uLmUsLi4uXCJtZW51XCI9PT11JiZ7XCJhcmlhLWxhYmVsbGVkYnlcIjpzfX19LFt1LGMscyxpXSksaD14LnVzZUNhbGxiYWNrKCh7YWN0aXZlOmUsc2VsZWN0ZWQ6dH0pPT57bGV0IG49e3JvbGU6XCJvcHRpb25cIiwuLi5lJiZ7aWQ6YCR7Y30tZnVpLW9wdGlvbmB9fTtzd2l0Y2goaSl7Y2FzZVwic2VsZWN0XCI6Y2FzZVwiY29tYm9ib3hcIjpyZXR1cm57Li4ubixcImFyaWEtc2VsZWN0ZWRcIjp0fX1yZXR1cm57fX0sW2MsaV0pO3JldHVybiB4LnVzZU1lbW8oKCk9PmE/e3JlZmVyZW5jZTpmLGZsb2F0aW5nOnAsaXRlbTpofTp7fSxbYSxmLHAsaF0pfShlbSx7cm9sZTpcIm1lbnVcIn0pLGV4PWxrKCksZXc9ZnVuY3Rpb24oZSx0KXtsZXR7b3BlbjpuLG9uT3BlbkNoYW5nZTpyLGVsZW1lbnRzOm8sZmxvYXRpbmdJZDphfT1lLHtsaXN0UmVmOmksYWN0aXZlSW5kZXg6bCxvbk5hdmlnYXRlOnM9KCk9Pnt9LGVuYWJsZWQ6Yz0hMCxzZWxlY3RlZEluZGV4OnU9bnVsbCxhbGxvd0VzY2FwZTpkPSExLGxvb3A6Zj0hMSxuZXN0ZWQ6cD0hMSxydGw6aD0hMSx2aXJ0dWFsOm09ITEsZm9jdXNJdGVtT25PcGVuOmc9XCJhdXRvXCIsZm9jdXNJdGVtT25Ib3Zlcjp5PSEwLG9wZW5PbkFycm93S2V5RG93bjp2PSEwLGRpc2FibGVkSW5kaWNlczpiLG9yaWVudGF0aW9uOkE9XCJ2ZXJ0aWNhbFwiLHBhcmVudE9yaWVudGF0aW9uOncsY29sczpDPTEsc2Nyb2xsSXRlbUludG9WaWV3Ol89ITAsdmlydHVhbEl0ZW1SZWY6ayxpdGVtU2l6ZXM6RSxkZW5zZTpqPSExfT10LFM9YTAoaXcoby5mbG9hdGluZykpLE89YV8oKSxCPWFrKCk7YXgoKCk9PntlLmRhdGFSZWYuY3VycmVudC5vcmllbnRhdGlvbj1BfSxbZSxBXSk7bGV0IFA9aXgoby5kb21SZWZlcmVuY2UpLEk9eC51c2VSZWYoZyksej14LnVzZVJlZih1Pz8tMSksVD14LnVzZVJlZihudWxsKSxEPXgudXNlUmVmKCEwKSxMPWFmKCgpPT57cygtMT09PXouY3VycmVudD9udWxsOnouY3VycmVudCl9KSxOPXgudXNlUmVmKEwpLFI9eC51c2VSZWYoISFvLmZsb2F0aW5nKSxNPXgudXNlUmVmKG4pLFo9eC51c2VSZWYoITEpLFU9eC51c2VSZWYoITEpLEY9YTAoYikscT1hMChuKSxIPWEwKF8pLFY9YTAodSksWyQsV109eC51c2VTdGF0ZSgpLFk9YWYoKCk9PntmdW5jdGlvbiBlKGUpe20/KGUuaWQ/LmVuZHNXaXRoKFwiLWZ1aS1vcHRpb25cIikmJihlLmlkPWAke2F9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygxNikuc2xpY2UoMiwxMCl9YCksVyhlLmlkKSxCPy5ldmVudHMuZW1pdChcInZpcnR1YWxmb2N1c1wiLGUpLGsmJihrLmN1cnJlbnQ9ZSkpOmxmKGUse3N5bmM6Wi5jdXJyZW50LHByZXZlbnRTY3JvbGw6ITB9KX1sZXQgdD1pLmN1cnJlbnRbei5jdXJyZW50XSxuPVUuY3VycmVudDt0JiZlKHQpLChaLmN1cnJlbnQ/ZT0+ZSgpOnJlcXVlc3RBbmltYXRpb25GcmFtZSkoKCk9PntsZXQgcj1pLmN1cnJlbnRbei5jdXJyZW50XXx8dDtpZighcilyZXR1cm47dHx8ZShyKTtsZXQgbz1ILmN1cnJlbnQ7byYmWCYmKG58fCFELmN1cnJlbnQpJiZyLnNjcm9sbEludG9WaWV3Py4oXCJib29sZWFuXCI9PXR5cGVvZiBvP3tibG9jazpcIm5lYXJlc3RcIixpbmxpbmU6XCJuZWFyZXN0XCJ9Om8pfSl9KTtheCgoKT0+e2MmJihuJiZvLmZsb2F0aW5nP0kuY3VycmVudCYmbnVsbCE9dSYmKFUuY3VycmVudD0hMCx6LmN1cnJlbnQ9dSxMKCkpOlIuY3VycmVudCYmKHouY3VycmVudD0tMSxOLmN1cnJlbnQoKSkpfSxbYyxuLG8uZmxvYXRpbmcsdSxMXSksYXgoKCk9PntpZihjJiZuJiZvLmZsb2F0aW5nKWlmKG51bGw9PWwpe2lmKFouY3VycmVudD0hMSxudWxsIT1WLmN1cnJlbnQpcmV0dXJuO2lmKFIuY3VycmVudCYmKHouY3VycmVudD0tMSxZKCkpLCghTS5jdXJyZW50fHwhUi5jdXJyZW50KSYmSS5jdXJyZW50JiYobnVsbCE9VC5jdXJyZW50fHwhMD09PUkuY3VycmVudCYmbnVsbD09VC5jdXJyZW50KSl7bGV0IGU9MCx0PSgpPT57bnVsbD09aS5jdXJyZW50WzBdPyhlPDImJihlP3JlcXVlc3RBbmltYXRpb25GcmFtZTpxdWV1ZU1pY3JvdGFzaykodCksZSs9MSk6KHouY3VycmVudD1udWxsPT1ULmN1cnJlbnR8fGxtKFQuY3VycmVudCxBLGgpfHxwP2xsKGksRi5jdXJyZW50KTpscyhpLEYuY3VycmVudCksVC5jdXJyZW50PW51bGwsTCgpKX07dCgpfX1lbHNlIGxpKGksbCl8fCh6LmN1cnJlbnQ9bCxZKCksVS5jdXJyZW50PSExKX0sW2MsbixvLmZsb2F0aW5nLGwsVixwLGksQSxoLEwsWSxGXSksYXgoKCk9PntpZighY3x8by5mbG9hdGluZ3x8IUJ8fG18fCFSLmN1cnJlbnQpcmV0dXJuO2xldCBlPUIubm9kZXNSZWYuY3VycmVudCx0PWUuZmluZChlPT5lLmlkPT09Tyk/LmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nLG49aW0oaWIoby5mbG9hdGluZykpLHI9ZS5zb21lKGU9PmUuY29udGV4dCYmaWcoZS5jb250ZXh0LmVsZW1lbnRzLmZsb2F0aW5nLG4pKTt0JiYhciYmRC5jdXJyZW50JiZ0LmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSl9LFtjLG8uZmxvYXRpbmcsQixPLG1dKSxheCgoKT0+e04uY3VycmVudD1MLE0uY3VycmVudD1uLFIuY3VycmVudD0hIW8uZmxvYXRpbmd9KSxheCgoKT0+e258fChULmN1cnJlbnQ9bnVsbCxJLmN1cnJlbnQ9Zyl9LFtuLGddKTtsZXQgSz1udWxsIT1sLFg9eC51c2VNZW1vKCgpPT57ZnVuY3Rpb24gZShlKXtpZighcS5jdXJyZW50KXJldHVybjtsZXQgdD1pLmN1cnJlbnQuaW5kZXhPZihlKTstMSE9PXQmJnouY3VycmVudCE9PXQmJih6LmN1cnJlbnQ9dCxMKCkpfXJldHVybntvbkZvY3VzKHtjdXJyZW50VGFyZ2V0OnR9KXtaLmN1cnJlbnQ9ITAsZSh0KX0sb25DbGljazooe2N1cnJlbnRUYXJnZXQ6ZX0pPT5lLmZvY3VzKHtwcmV2ZW50U2Nyb2xsOiEwfSksb25Nb3VzZU1vdmUoe2N1cnJlbnRUYXJnZXQ6dH0pe1ouY3VycmVudD0hMCxVLmN1cnJlbnQ9ITEseSYmZSh0KX0sb25Qb2ludGVyTGVhdmUoe3BvaW50ZXJUeXBlOmV9KXtELmN1cnJlbnQmJlwidG91Y2hcIiE9PWUmJihaLmN1cnJlbnQ9ITAseSYmKHouY3VycmVudD0tMSxMKCksbXx8Uy5jdXJyZW50Py5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pKSl9fX0sW3EsUyx5LGksTCxtXSksRz14LnVzZUNhbGxiYWNrKCgpPT53Pz9CPy5ub2Rlc1JlZi5jdXJyZW50LmZpbmQoZT0+ZS5pZD09PU8pPy5jb250ZXh0Py5kYXRhUmVmPy5jdXJyZW50Lm9yaWVudGF0aW9uLFtPLEIsd10pLFE9YWYoZT0+e3ZhciB0LGEsbCxzLGM7aWYoRC5jdXJyZW50PSExLFouY3VycmVudD0hMCwyMjk9PT1lLndoaWNofHwhcS5jdXJyZW50JiZlLmN1cnJlbnRUYXJnZXQ9PT1TLmN1cnJlbnQpcmV0dXJuO2lmKHAmJih0PWUua2V5LGE9QSxsPWgscz1DLFwiYm90aFwiPT09YXx8XCJob3Jpem9udGFsXCI9PT1hJiZzJiZzPjE/XCJFc2NhcGVcIj09PXQ6bHAoYSxsP3Q9PT1pZDp0PT09aXUsdD09PWlwKSkpe2xoKGUua2V5LEcoKSl8fGlyKGUpLHIoITEsZS5uYXRpdmVFdmVudCxcImxpc3QtbmF2aWdhdGlvblwiKSxhRChvLmRvbVJlZmVyZW5jZSkmJihtP0I/LmV2ZW50cy5lbWl0KFwidmlydHVhbGZvY3VzXCIsby5kb21SZWZlcmVuY2UpOm8uZG9tUmVmZXJlbmNlLmZvY3VzKCkpO3JldHVybn1sZXQgdT16LmN1cnJlbnQsZz1sbChpLGIpLHk9bHMoaSxiKTtpZihQfHwoXCJIb21lXCI9PT1lLmtleSYmKGlyKGUpLHouY3VycmVudD1nLEwoKSksXCJFbmRcIj09PWUua2V5JiYoaXIoZSksei5jdXJyZW50PXksTCgpKSksQz4xKXtsZXQgdD1FfHxBcnJheS5mcm9tKHtsZW5ndGg6aS5jdXJyZW50Lmxlbmd0aH0sKCk9Pih7d2lkdGg6MSxoZWlnaHQ6MX0pKSxuPWZ1bmN0aW9uKGUsdCxuKXtsZXQgcj1bXSxvPTA7cmV0dXJuIGUuZm9yRWFjaCgoe3dpZHRoOmUsaGVpZ2h0OmF9LGkpPT57bGV0IGw9ITE7Zm9yKG4mJihvPTApOyFsOyl7bGV0IG49W107Zm9yKGxldCByPTA7cjxlO3IrPTEpZm9yKGxldCBlPTA7ZTxhO2UrPTEpbi5wdXNoKG8rcitlKnQpO28ldCtlPD10JiZuLmV2ZXJ5KGU9Pm51bGw9PXJbZV0pPyhuLmZvckVhY2goZT0+e3JbZV09aX0pLGw9ITApOm8rPTF9fSksWy4uLnJdfSh0LEMsaikscj1uLmZpbmRJbmRleChlPT5udWxsIT1lJiYhbHUoaSxlLGIpKSxvPW4ucmVkdWNlKChlLHQsbik9Pm51bGw9PXR8fGx1KGksdCxiKT9lOm4sLTEpLGE9bltmdW5jdGlvbihlLHtldmVudDp0LG9yaWVudGF0aW9uOm4sbG9vcDpyLHJ0bDpvLGNvbHM6YSxkaXNhYmxlZEluZGljZXM6aSxtaW5JbmRleDpsLG1heEluZGV4OnMscHJldkluZGV4OmMsc3RvcEV2ZW50OnU9ITF9KXtsZXQgZD1jO2lmKHQua2V5PT09aXApe2lmKHUmJmlyKHQpLC0xPT09YylkPXM7ZWxzZSBpZihkPWxjKGUse3N0YXJ0aW5nSW5kZXg6ZCxhbW91bnQ6YSxkZWNyZW1lbnQ6ITAsZGlzYWJsZWRJbmRpY2VzOml9KSxyJiYoYy1hPGx8fGQ8MCkpe2xldCBlPWMlYSx0PXMlYSxuPXMtKHQtZSk7ZD10PT09ZT9zOnQ+ZT9uOm4tYX1saShlLGQpJiYoZD1jKX1pZih0LmtleT09PWloJiYodSYmaXIodCksLTE9PT1jP2Q9bDooZD1sYyhlLHtzdGFydGluZ0luZGV4OmMsYW1vdW50OmEsZGlzYWJsZWRJbmRpY2VzOml9KSxyJiZjK2E+cyYmKGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjJWEtYSxhbW91bnQ6YSxkaXNhYmxlZEluZGljZXM6aX0pKSksbGkoZSxkKSYmKGQ9YykpLFwiYm90aFwiPT09bil7bGV0IG49aVgoYy9hKTt0LmtleT09PShvP2l1OmlkKSYmKHUmJmlyKHQpLGMlYSE9YS0xPyhkPWxjKGUse3N0YXJ0aW5nSW5kZXg6YyxkaXNhYmxlZEluZGljZXM6aX0pLHImJmxhKGQsYSxuKSYmKGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjLWMlYS0xLGRpc2FibGVkSW5kaWNlczppfSkpKTpyJiYoZD1sYyhlLHtzdGFydGluZ0luZGV4OmMtYyVhLTEsZGlzYWJsZWRJbmRpY2VzOml9KSksbGEoZCxhLG4pJiYoZD1jKSksdC5rZXk9PT0obz9pZDppdSkmJih1JiZpcih0KSxjJWEhPTA/KGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjLGRlY3JlbWVudDohMCxkaXNhYmxlZEluZGljZXM6aX0pLHImJmxhKGQsYSxuKSYmKGQ9bGMoZSx7c3RhcnRpbmdJbmRleDpjKyhhLWMlYSksZGVjcmVtZW50OiEwLGRpc2FibGVkSW5kaWNlczppfSkpKTpyJiYoZD1sYyhlLHtzdGFydGluZ0luZGV4OmMrKGEtYyVhKSxkZWNyZW1lbnQ6ITAsZGlzYWJsZWRJbmRpY2VzOml9KSksbGEoZCxhLG4pJiYoZD1jKSk7bGV0IGw9aVgocy9hKT09PW47bGkoZSxkKSYmKGQ9ciYmbD90LmtleT09PShvP2lkOml1KT9zOmxjKGUse3N0YXJ0aW5nSW5kZXg6Yy1jJWEtMSxkaXNhYmxlZEluZGljZXM6aX0pOmMpfXJldHVybiBkfSh7Y3VycmVudDpuLm1hcChlPT5udWxsIT1lP2kuY3VycmVudFtlXTpudWxsKX0se2V2ZW50OmUsb3JpZW50YXRpb246QSxsb29wOmYscnRsOmgsY29sczpDLGRpc2FibGVkSW5kaWNlczooYz1bLi4uKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGI/YjpudWxsKXx8aS5jdXJyZW50Lm1hcCgoZSx0KT0+bHUoaSx0LGIpP3Q6dm9pZCAwKSx2b2lkIDBdLG4uZmxhdE1hcCgoZSx0KT0+Yy5pbmNsdWRlcyhlKT9bdF06W10pKSxtaW5JbmRleDpyLG1heEluZGV4Om8scHJldkluZGV4OmZ1bmN0aW9uKGUsdCxuLHIsbyl7aWYoLTE9PT1lKXJldHVybiAtMTtsZXQgYT1uLmluZGV4T2YoZSksaT10W2VdO3N3aXRjaChvKXtjYXNlXCJ0bFwiOnJldHVybiBhO2Nhc2VcInRyXCI6aWYoIWkpcmV0dXJuIGE7cmV0dXJuIGEraS53aWR0aC0xO2Nhc2VcImJsXCI6aWYoIWkpcmV0dXJuIGE7cmV0dXJuIGErKGkuaGVpZ2h0LTEpKnI7Y2FzZVwiYnJcIjpyZXR1cm4gbi5sYXN0SW5kZXhPZihlKTtkZWZhdWx0OnJldHVybiAtMX19KHouY3VycmVudD55P2c6ei5jdXJyZW50LHQsbixDLGUua2V5PT09aWg/XCJibFwiOmUua2V5PT09KGg/aXU6aWQpP1widHJcIjpcInRsXCIpLHN0b3BFdmVudDohMH0pXTtpZihudWxsIT1hJiYoei5jdXJyZW50PWEsTCgpKSxcImJvdGhcIj09PUEpcmV0dXJufWlmKGxoKGUua2V5LEEpKXtpZihpcihlKSxuJiYhbSYmaW0oZS5jdXJyZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQpPT09ZS5jdXJyZW50VGFyZ2V0KXt6LmN1cnJlbnQ9bG0oZS5rZXksQSxoKT9nOnksTCgpO3JldHVybn1sbShlLmtleSxBLGgpP2Y/ei5jdXJyZW50PXU+PXk/ZCYmdSE9PWkuY3VycmVudC5sZW5ndGg/LTE6ZzpsYyhpLHtzdGFydGluZ0luZGV4OnUsZGlzYWJsZWRJbmRpY2VzOmJ9KTp6LmN1cnJlbnQ9TWF0aC5taW4oeSxsYyhpLHtzdGFydGluZ0luZGV4OnUsZGlzYWJsZWRJbmRpY2VzOmJ9KSk6Zj96LmN1cnJlbnQ9dTw9Zz9kJiYtMSE9PXU/aS5jdXJyZW50Lmxlbmd0aDp5OmxjKGkse3N0YXJ0aW5nSW5kZXg6dSxkZWNyZW1lbnQ6ITAsZGlzYWJsZWRJbmRpY2VzOmJ9KTp6LmN1cnJlbnQ9TWF0aC5tYXgoZyxsYyhpLHtzdGFydGluZ0luZGV4OnUsZGVjcmVtZW50OiEwLGRpc2FibGVkSW5kaWNlczpifSkpLGxpKGksei5jdXJyZW50KSYmKHouY3VycmVudD0tMSksTCgpfX0pLEo9eC51c2VNZW1vKCgpPT5tJiZuJiZLJiZ7XCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnRcIjokfSxbbSxuLEssJF0pLGVlPXgudXNlTWVtbygoKT0+KHtcImFyaWEtb3JpZW50YXRpb25cIjpcImJvdGhcIj09PUE/dm9pZCAwOkEsLi4uIVA/Sjp7fSxvbktleURvd24oZSl7aWYoXCJUYWJcIj09PWUua2V5JiZlLnNoaWZ0S2V5JiZuJiYhbSl7aXIoZSkscighMSxlLm5hdGl2ZUV2ZW50LFwibGlzdC1uYXZpZ2F0aW9uXCIpLGFEKG8uZG9tUmVmZXJlbmNlKSYmby5kb21SZWZlcmVuY2UuZm9jdXMoKTtyZXR1cm59UShlKX0sb25Qb2ludGVyTW92ZSgpe0QuY3VycmVudD0hMH19KSxbSixRLEEsUCxyLG4sbSxvLmRvbVJlZmVyZW5jZV0pLGV0PXgudXNlTWVtbygoKT0+e2Z1bmN0aW9uIGUoZSl7XCJhdXRvXCI9PT1nJiZpbyhlLm5hdGl2ZUV2ZW50KSYmKEkuY3VycmVudD0hMCl9ZnVuY3Rpb24gdChlKXtJLmN1cnJlbnQ9ZyxcImF1dG9cIj09PWcmJmlhKGUubmF0aXZlRXZlbnQpJiYoSS5jdXJyZW50PSEwKX1yZXR1cm57Li4uSixvbktleURvd24oZSl7dmFyIHQsbztELmN1cnJlbnQ9ITE7bGV0IGE9ZS5rZXkuc3RhcnRzV2l0aChcIkFycm93XCIpLGw9KHQ9ZS5rZXksbz1HKCksbHAobyxoP3Q9PT1pdTp0PT09aWQsdD09PWloKSkscz1saChlLmtleSxBKSxjPShwP2w6cyl8fFwiRW50ZXJcIj09PWUua2V5fHxcIlwiPT09ZS5rZXkudHJpbSgpO2lmKG0mJm4pcmV0dXJuIFEoZSk7aWYobnx8dnx8IWEpe2lmKGMpe2xldCB0PWxoKGUua2V5LEcoKSk7VC5jdXJyZW50PXAmJnQ/bnVsbDplLmtleX1pZihwKXtsJiYoaXIoZSksbj8oei5jdXJyZW50PWxsKGksRi5jdXJyZW50KSxMKCkpOnIoITAsZS5uYXRpdmVFdmVudCxcImxpc3QtbmF2aWdhdGlvblwiKSk7cmV0dXJufXMmJihudWxsIT11JiYoei5jdXJyZW50PXUpLGlyKGUpLCFuJiZ2P3IoITAsZS5uYXRpdmVFdmVudCxcImxpc3QtbmF2aWdhdGlvblwiKTpRKGUpLG4mJkwoKSl9fSxvbkZvY3VzKCl7biYmIW0mJih6LmN1cnJlbnQ9LTEsTCgpKX0sb25Qb2ludGVyRG93bjp0LG9uUG9pbnRlckVudGVyOnQsb25Nb3VzZURvd246ZSxvbkNsaWNrOmV9fSxbSixRLEYsZyxpLHAsTCxyLG4sdixBLEcsaCx1LG1dKTtyZXR1cm4geC51c2VNZW1vKCgpPT5jP3tyZWZlcmVuY2U6ZXQsZmxvYXRpbmc6ZWUsaXRlbTpYfTp7fSxbYyxldCxlZSxYXSl9KGVtLHtlbmFibGVkOiFzLGxpc3RSZWY6UixhY3RpdmVJbmRleDpqLG5lc3RlZDp2b2lkIDAhPT10LnR5cGUsbG9vcDp1LG9yaWVudGF0aW9uOmQscGFyZW50T3JpZW50YXRpb246XCJtZW51YmFyXCI9PT10LnR5cGU/dC5jb250ZXh0Lm9yaWVudGF0aW9uOnZvaWQgMCxydGw6XCJydGxcIj09PWV4LGRpc2FibGVkSW5kaWNlczpsVixvbk5hdmlnYXRlOlMsb3Blbk9uQXJyb3dLZXlEb3duOlwiY29udGV4dC1tZW51XCIhPT10LnR5cGV9KSxlQz14LnVzZVJlZighMSksZV89ZnVuY3Rpb24oZSx0KXtsZXR7b3BlbjpuLGRhdGFSZWY6cn09ZSx7bGlzdFJlZjpvLGFjdGl2ZUluZGV4OmEsb25NYXRjaDppLG9uVHlwaW5nQ2hhbmdlOmwsZW5hYmxlZDpzPSEwLGZpbmRNYXRjaDpjPW51bGwscmVzZXRNczp1PTc1MCxpZ25vcmVLZXlzOmQ9W10sc2VsZWN0ZWRJbmRleDpmPW51bGx9PXQscD1hYygpLGg9eC51c2VSZWYoXCJcIiksbT14LnVzZVJlZihmPz9hPz8tMSksZz14LnVzZVJlZihudWxsKSx5PWFmKGkpLHY9YWYobCksYj1hMChjKSxBPWEwKGQpO2F4KCgpPT57biYmKHAuY2xlYXIoKSxnLmN1cnJlbnQ9bnVsbCxoLmN1cnJlbnQ9XCJcIil9LFtuLHBdKSxheCgoKT0+e24mJlwiXCI9PT1oLmN1cnJlbnQmJihtLmN1cnJlbnQ9Zj8/YT8/LTEpfSxbbixmLGFdKTtsZXQgdz1hZihlPT57ZT9yLmN1cnJlbnQudHlwaW5nfHwoci5jdXJyZW50LnR5cGluZz1lLHYoZSkpOnIuY3VycmVudC50eXBpbmcmJihyLmN1cnJlbnQudHlwaW5nPWUsdihlKSl9KSxDPWFmKGU9PntmdW5jdGlvbiB0KGUsdCxuKXtsZXQgcj1iLmN1cnJlbnQ/Yi5jdXJyZW50KHQsbik6dC5maW5kKGU9PmU/LnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5kZXhPZihuLnRvTG9jYWxlTG93ZXJDYXNlKCkpPT09MCk7cmV0dXJuIHI/ZS5pbmRleE9mKHIpOi0xfWxldCByPW8uY3VycmVudDtpZihoLmN1cnJlbnQubGVuZ3RoPjAmJlwiIFwiIT09aC5jdXJyZW50WzBdJiYoLTE9PT10KHIscixoLmN1cnJlbnQpP3coITEpOlwiIFwiPT09ZS5rZXkmJmlyKGUpKSxudWxsPT1yfHxBLmN1cnJlbnQuaW5jbHVkZXMoZS5rZXkpfHwxIT09ZS5rZXkubGVuZ3RofHxlLmN0cmxLZXl8fGUubWV0YUtleXx8ZS5hbHRLZXkpcmV0dXJuO24mJlwiIFwiIT09ZS5rZXkmJihpcihlKSx3KCEwKSksci5ldmVyeShlPT4hZXx8ZVswXT8udG9Mb2NhbGVMb3dlckNhc2UoKSE9PWVbMV0/LnRvTG9jYWxlTG93ZXJDYXNlKCkpJiZoLmN1cnJlbnQ9PT1lLmtleSYmKGguY3VycmVudD1cIlwiLG0uY3VycmVudD1nLmN1cnJlbnQpLGguY3VycmVudCs9ZS5rZXkscC5zdGFydCh1LCgpPT57aC5jdXJyZW50PVwiXCIsbS5jdXJyZW50PWcuY3VycmVudCx3KCExKX0pO2xldCBhPW0uY3VycmVudCxpPXQocixbLi4uci5zbGljZSgoYXx8MCkrMSksLi4uci5zbGljZSgwLChhfHwwKSsxKV0saC5jdXJyZW50KTstMSE9PWk/KHkoaSksZy5jdXJyZW50PWkpOlwiIFwiIT09ZS5rZXkmJihoLmN1cnJlbnQ9XCJcIix3KCExKSl9KSxfPXgudXNlTWVtbygoKT0+KHtvbktleURvd246Q30pLFtDXSksaz14LnVzZU1lbW8oKCk9Pih7b25LZXlEb3duOkMsb25LZXlVcChlKXtcIiBcIj09PWUua2V5JiZ3KCExKX19KSxbQyx3XSk7cmV0dXJuIHgudXNlTWVtbygoKT0+cz97cmVmZXJlbmNlOl8sZmxvYXRpbmc6a306e30sW3MsXyxrXSl9KGVtLHtsaXN0UmVmOk0sYWN0aXZlSW5kZXg6aixyZXNldE1zOjUwMCxvbk1hdGNoOmU9PntZJiZlIT09aiYmUyhlKX0sb25UeXBpbmdDaGFuZ2U6eC51c2VDYWxsYmFjayhlPT57ZUMuY3VycmVudD1lfSxbXSl9KSx7Z2V0UmVmZXJlbmNlUHJvcHM6ZWssZ2V0RmxvYXRpbmdQcm9wczplRSxnZXRJdGVtUHJvcHM6ZWp9PWxnKFtlZyxldixlYixleSxlQSxldyxlX10pLGVTPWZ1bmN0aW9uKGUpe2xldHtlbmFibGVkOnQ9ITAsbW91c2VEb3duQWN0aW9uOm4sb3BlbjpyfT1lLG89eC51c2VSZWYoITEpO3JldHVybiB4LnVzZU1lbW8oKCk9PnQ/e29uTW91c2VEb3duOmU9PnsoXCJvcGVuXCI9PT1uJiYhcnx8XCJjbG9zZVwiPT09biYmcikmJihvLmN1cnJlbnQ9ITAsbEUoZS5jdXJyZW50VGFyZ2V0KS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwoKT0+e28uY3VycmVudD0hMX0se29uY2U6ITB9KSl9LG9uQ2xpY2s6ZT0+e28uY3VycmVudCYmKG8uY3VycmVudD0hMSxlLnByZXZlbnRCYXNlVUlIYW5kbGVyKCkpfX06aVIsW3QsbixyXSl9KHtvcGVuOlksZW5hYmxlZDpcIm1lbnViYXJcIj09PXQudHlwZSxtb3VzZURvd25BY3Rpb246XCJvcGVuXCJ9KSxlTz14LnVzZU1lbW8oKCk9PntsZXQgZT1sTShlaygpLHtvbk1vdXNlRW50ZXIoKXtFKCEwKX0sb25Nb3VzZU1vdmUoKXskKCEwKX19LGVyLGVTKTtyZXR1cm4gZGVsZXRlIGUucm9sZSxlfSxbZWssZVMsJCxlcl0pLGVCPXgudXNlTWVtbygoKT0+ZUUoe29uTW91c2VFbnRlcigpe1cmJlwibWVudVwiIT09dC50eXBlfHxFKCExKX0sb25Nb3VzZU1vdmUoKXskKCEwKX0sb25DbGljaygpe1cmJkUoITEpfX0pLFtlRSxXLHQudHlwZSwkXSksZVA9eC51c2VNZW1vKCgpPT5laigpLFtlal0pLGVJPXgudXNlTWVtbygoKT0+KHthY3RpdmVJbmRleDpqLHNldEFjdGl2ZUluZGV4OlMsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjp0LnR5cGU/dC5jb250ZXh0LmFsbG93TW91c2VVcFRyaWdnZXJSZWY6bCQsZmxvYXRpbmdSb290Q29udGV4dDplbSxpdGVtUHJvcHM6ZVAscG9wdXBQcm9wczplQix0cmlnZ2VyUHJvcHM6ZU8saXRlbURvbUVsZW1lbnRzOlIsaXRlbUxhYmVsczpNLG1vdW50ZWQ6SixvcGVuOlkscG9wdXBSZWY6TCxwb3NpdGlvbmVyUmVmOk4sc2V0T3BlbjplaCxzZXRQb3NpdGlvbmVyRWxlbWVudDpRLHRyaWdnZXJFbGVtZW50Onksc2V0VHJpZ2dlckVsZW1lbnQ6dix0cmFuc2l0aW9uU3RhdHVzOmV0LGxhc3RPcGVuQ2hhbmdlUmVhc29uOk8saW5zdGFudFR5cGU6Qyxvbk9wZW5DaGFuZ2VDb21wbGV0ZTppLHNldEhvdmVyRW5hYmxlZDpFLHR5cGluZ1JlZjplQyxtb2RhbDpILGRpc2FibGVkOnMscGFyZW50OnQscm9vdElkOnEsYWxsb3dNb3VzZUVudGVyOlYsc2V0QWxsb3dNb3VzZUVudGVyOiR9KSxbaixlbSxlUCxlQixlTyxSLE0sSixZLE4sZWgsZXQseSxRLE8sQyxpLEgscyx0LHEsViwkXSksZXo9KDAsYi5qc3gpKGxiLlByb3ZpZGVyLHt2YWx1ZTplSSxjaGlsZHJlbjpyfSk7cmV0dXJuIHZvaWQgMD09PXQudHlwZXx8XCJjb250ZXh0LW1lbnVcIj09PXQudHlwZT8oMCxiLmpzeCkoYWose2NoaWxkcmVuOmV6fSk6ZXp9O2Z1bmN0aW9uIGxZKGUsdCxuLHIpe3ZhciBvLGEsaSxsLHM7bGV0IGM9YWEobEspLmN1cnJlbnQ7cmV0dXJuIG89YyxhPWUsaT10LGw9bixzPXIsKG8ucmVmc1swXSE9PWF8fG8ucmVmc1sxXSE9PWl8fG8ucmVmc1syXSE9PWx8fG8ucmVmc1szXSE9PXMpJiZsWChjLFtlLHQsbixyXSksYy5jYWxsYmFja31mdW5jdGlvbiBsSygpe3JldHVybntjYWxsYmFjazpudWxsLGNsZWFudXA6bnVsbCxyZWZzOltdfX1mdW5jdGlvbiBsWChlLHQpe2lmKGUucmVmcz10LHQuZXZlcnkoZT0+bnVsbD09ZSkpe2UuY2FsbGJhY2s9bnVsbDtyZXR1cm59ZS5jYWxsYmFjaz1uPT57aWYoZS5jbGVhbnVwJiYoZS5jbGVhbnVwKCksZS5jbGVhbnVwPW51bGwpLG51bGwhPW4pe2xldCByPUFycmF5KHQubGVuZ3RoKS5maWxsKG51bGwpO2ZvcihsZXQgZT0wO2U8dC5sZW5ndGg7ZSs9MSl7bGV0IG89dFtlXTtpZihudWxsIT1vKXN3aXRjaCh0eXBlb2Ygbyl7Y2FzZVwiZnVuY3Rpb25cIjp7bGV0IHQ9byhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYocltlXT10KTticmVha31jYXNlXCJvYmplY3RcIjpvLmN1cnJlbnQ9bn19ZS5jbGVhbnVwPSgpPT57Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0xKXtsZXQgbj10W2VdO2lmKG51bGwhPW4pc3dpdGNoKHR5cGVvZiBuKXtjYXNlXCJmdW5jdGlvblwiOntsZXQgdD1yW2VdO1wiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dCgpOm4obnVsbCk7YnJlYWt9Y2FzZVwib2JqZWN0XCI6bi5jdXJyZW50PW51bGx9fX19fX1sZXQgbEc9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3RhcnRpbmdTdHlsZT1cImRhdGEtc3RhcnRpbmctc3R5bGVcIixlLmVuZGluZ1N0eWxlPVwiZGF0YS1lbmRpbmctc3R5bGVcIixlfSh7fSksbFE9e1tsRy5zdGFydGluZ1N0eWxlXTpcIlwifSxsSj17W2xHLmVuZGluZ1N0eWxlXTpcIlwifSxsMD17dHJhbnNpdGlvblN0YXR1czplPT5cInN0YXJ0aW5nXCI9PT1lP2xROlwiZW5kaW5nXCI9PT1lP2xKOm51bGx9LGwxPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9wZW49XCJkYXRhLW9wZW5cIixlLmNsb3NlZD1cImRhdGEtY2xvc2VkXCIsZVtlLnN0YXJ0aW5nU3R5bGU9bEcuc3RhcnRpbmdTdHlsZV09XCJzdGFydGluZ1N0eWxlXCIsZVtlLmVuZGluZ1N0eWxlPWxHLmVuZGluZ1N0eWxlXT1cImVuZGluZ1N0eWxlXCIsZS5hbmNob3JIaWRkZW49XCJkYXRhLWFuY2hvci1oaWRkZW5cIixlfSh7fSksbDI9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucG9wdXBPcGVuPVwiZGF0YS1wb3B1cC1vcGVuXCIsZS5wcmVzc2VkPVwiZGF0YS1wcmVzc2VkXCIsZX0oe30pLGw0PXtbbDIucG9wdXBPcGVuXTpcIlwifSxsNT17W2wyLnBvcHVwT3Blbl06XCJcIixbbDIucHJlc3NlZF06XCJcIn0sbDM9e1tsMS5vcGVuXTpcIlwifSxsNj17W2wxLmNsb3NlZF06XCJcIn0sbDk9e1tsMS5hbmNob3JIaWRkZW5dOlwiXCJ9LGw4PXtvcGVuOmU9PmU/bDQ6bnVsbH0sbDc9e29wZW46ZT0+ZT9sNTpudWxsfSxzZT17b3BlbjplPT5lP2wzOmw2LGFuY2hvckhpZGRlbjplPT5lP2w5Om51bGx9LHN0PXBhcnNlSW50KHgudmVyc2lvbiwxMCk7ZnVuY3Rpb24gc24oZSx0LG49e30pe2xldCByPXQucmVuZGVyLG89ZnVuY3Rpb24oZSx0PXt9KXt2YXIgbixyO2xldCBvLHtjbGFzc05hbWU6YSxyZW5kZXI6aX09ZSx7c3RhdGU6bD1pUixyZWY6cyxwcm9wczpjLGRpc2FibGVTdHlsZUhvb2tzOnUsY3VzdG9tU3R5bGVIb29rTWFwcGluZzpkLGVuYWJsZWQ6Zj0hMH09dCxwPWY/KG49YSxyPWwsXCJmdW5jdGlvblwiPT10eXBlb2Ygbj9uKHIpOm4pOnZvaWQgMDshMCE9PXUmJihvPXgudXNlTWVtbygoKT0+Zj9mdW5jdGlvbihlLHQpe2xldCBuPXt9O2ZvcihsZXQgciBpbiBlKXtsZXQgbz1lW3JdO2lmKHQ/Lmhhc093blByb3BlcnR5KHIpKXtsZXQgZT10W3JdKG8pO251bGwhPWUmJk9iamVjdC5hc3NpZ24obixlKTtjb250aW51ZX0hMD09PW8/bltgZGF0YS0ke3IudG9Mb3dlckNhc2UoKX1gXT1cIlwiOm8mJihuW2BkYXRhLSR7ci50b0xvd2VyQ2FzZSgpfWBdPW8udG9TdHJpbmcoKSl9cmV0dXJuIG59KGwsZCk6aVIsW2wsZCxmXSkpO2xldCBoPWY/bE4obyxBcnJheS5pc0FycmF5KGMpP2Z1bmN0aW9uKGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbFI7aWYoMT09PWUubGVuZ3RoKXJldHVybiBsRihlWzBdLGxSKTtsZXQgdD17Li4ubEYoZVswXSxsUil9O2ZvcihsZXQgbj0xO248ZS5sZW5ndGg7bis9MSl0PWxaKHQsZVtuXSk7cmV0dXJuIHR9KGMpOmMpPz9pUjppUjtyZXR1cm4oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiYoZj9BcnJheS5pc0FycmF5KHMpP2gucmVmPWZ1bmN0aW9uKGUpe3ZhciB0LG47bGV0IHI9YWEobEspLmN1cnJlbnQ7cmV0dXJuIHQ9cixuPWUsKHQucmVmcy5sZW5ndGghPT1uLmxlbmd0aHx8dC5yZWZzLnNvbWUoKGUsdCk9PmUhPT1uW3RdKSkmJmxYKHIsZSksci5jYWxsYmFja30oW2gucmVmLHNyKGkpLC4uLnNdKTpoLnJlZj1sWShoLnJlZixzcihpKSxzKTpsWShudWxsLG51bGwpKSxmKT8odm9pZCAwIT09cCYmKGguY2xhc3NOYW1lPWxIKGguY2xhc3NOYW1lLHApKSxoKTppUn0odCxuKTtyZXR1cm4hMT09PW4uZW5hYmxlZD9udWxsOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKHQpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQpcmV0dXJuIHQobixyKTtsZXQgZT1sTShuLHQucHJvcHMpO3JldHVybiBlLnJlZj1uLnJlZix4LmNsb25lRWxlbWVudCh0LGUpfWlmKGUmJlwic3RyaW5nXCI9PXR5cGVvZiBlKXt2YXIgbyxhO3JldHVybiBvPWUsYT1uLFwiYnV0dG9uXCI9PT1vPygwLGIuanN4KShcImJ1dHRvblwiLHt0eXBlOlwiYnV0dG9uXCIsLi4uYX0pOlwiaW1nXCI9PT1vPygwLGIuanN4KShcImltZ1wiLHthbHQ6XCJcIiwuLi5hfSk6eC5jcmVhdGVFbGVtZW50KG8sYSl9dGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBSZW5kZXIgZWxlbWVudCBvciBmdW5jdGlvbiBhcmUgbm90IGRlZmluZWQuXCIpfShlLHIsbyxuLnN0YXRlPz9pUil9ZnVuY3Rpb24gc3IoZSl7cmV0dXJuIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGU/c3Q+PTE5P2UucHJvcHMucmVmOmUucmVmOm51bGx9bGV0IHNvPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIHNhKGU9ITEpe2xldCB0PXgudXNlQ29udGV4dChzbyk7aWYodm9pZCAwPT09dCYmIWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBDb21wb3NpdGVSb290Q29udGV4dCBpcyBtaXNzaW5nLiBDb21wb3NpdGUgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxDb21wb3NpdGUuUm9vdD4uXCIpO3JldHVybiB0fWZ1bmN0aW9uIHNpKGU9e30pe2xldHtkaXNhYmxlZDp0PSExLGZvY3VzYWJsZVdoZW5EaXNhYmxlZDpuLHRhYkluZGV4OnI9MCxuYXRpdmU6bz0hMH09ZSxhPXgudXNlUmVmKG51bGwpLGk9dm9pZCAwIT09c2EoITApLGw9YWYoKCk9PntsZXQgZT1hLmN1cnJlbnQ7cmV0dXJuISEoZT8udGFnTmFtZT09PVwiQVwiJiZlPy5ocmVmKX0pLHtwcm9wczpzfT1mdW5jdGlvbihlKXtsZXR7Zm9jdXNhYmxlV2hlbkRpc2FibGVkOnQsZGlzYWJsZWQ6bixjb21wb3NpdGU6cj0hMSx0YWJJbmRleDpvPTAsaXNOYXRpdmVCdXR0b246YX09ZSxpPXImJiExIT09dCxsPXImJiExPT09dDtyZXR1cm57cHJvcHM6eC51c2VNZW1vKCgpPT57bGV0IGU9e29uS2V5RG93bihlKXtuJiZ0JiZcIlRhYlwiIT09ZS5rZXkmJmUucHJldmVudERlZmF1bHQoKX19O3JldHVybiByfHwoZS50YWJJbmRleD1vLCFhJiZuJiYoZS50YWJJbmRleD10P286LTEpKSwoYSYmKHR8fGkpfHwhYSYmbikmJihlW1wiYXJpYS1kaXNhYmxlZFwiXT1uKSxhJiYoIXR8fGwpJiYoZS5kaXNhYmxlZD1uKSxlfSxbcixuLHQsaSxsLGEsb10pfX0oe2ZvY3VzYWJsZVdoZW5EaXNhYmxlZDpuLGRpc2FibGVkOnQsY29tcG9zaXRlOmksdGFiSW5kZXg6cixpc05hdGl2ZUJ1dHRvbjpvfSk7cmV0dXJuIGF4KCgpPT57bGV0IGU9YS5jdXJyZW50O2UgaW5zdGFuY2VvZiBIVE1MQnV0dG9uRWxlbWVudCYmaSYmdCYmdm9pZCAwPT09cy5kaXNhYmxlZCYmZS5kaXNhYmxlZCYmKGUuZGlzYWJsZWQ9ITEpfSxbdCxzLmRpc2FibGVkLGldKSx7Z2V0QnV0dG9uUHJvcHM6eC51c2VDYWxsYmFjaygoZT17fSk9PntsZXR7b25DbGljazpuLG9uTW91c2VEb3duOnIsb25LZXlVcDphLG9uS2V5RG93bjppLG9uUG9pbnRlckRvd246YywuLi51fT1lO3JldHVybiBsTSh7dHlwZTpvP1wiYnV0dG9uXCI6dm9pZCAwLG9uQ2xpY2soZSl7aWYodClyZXR1cm4gdm9pZCBlLnByZXZlbnREZWZhdWx0KCk7bj8uKGUpfSxvbk1vdXNlRG93bihlKXt0fHxyPy4oZSl9LG9uS2V5RG93bihlKXtpZih0fHwobHEoZSksaT8uKGUpKSxlLmJhc2VVSUhhbmRsZXJQcmV2ZW50ZWQpcmV0dXJuO2xldCByPWUudGFyZ2V0PT09ZS5jdXJyZW50VGFyZ2V0JiYhbyYmIWwoKSYmIXQsYT1cIkVudGVyXCI9PT1lLmtleSxzPVwiIFwiPT09ZS5rZXk7ciYmKChzfHxhKSYmZS5wcmV2ZW50RGVmYXVsdCgpLGEmJm4/LihlKSl9LG9uS2V5VXAoZSl7dHx8KGxxKGUpLGE/LihlKSksIWUuYmFzZVVJSGFuZGxlclByZXZlbnRlZCYmKGUudGFyZ2V0IT09ZS5jdXJyZW50VGFyZ2V0fHxvfHx0fHxcIiBcIiE9PWUua2V5fHxuPy4oZSkpfSxvblBvaW50ZXJEb3duKGUpe2lmKHQpcmV0dXJuIHZvaWQgZS5wcmV2ZW50RGVmYXVsdCgpO2M/LihlKX19LG8/dm9pZCAwOntyb2xlOlwiYnV0dG9uXCJ9LHMsdSl9LFt0LHMsbyxsXSksYnV0dG9uUmVmOmF9fWxldCBzbD14LmNyZWF0ZUNvbnRleHQoe3JlZ2lzdGVyOigpPT57fSx1bnJlZ2lzdGVyOigpPT57fSxzdWJzY3JpYmVNYXBDaGFuZ2U6KCk9PigpPT57fSxlbGVtZW50c1JlZjp7Y3VycmVudDpbXX0sbmV4dEluZGV4UmVmOntjdXJyZW50OjB9fSksc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5Ob25lPTBdPVwiTm9uZVwiLGVbZS5HdWVzc0Zyb21PcmRlcj0xXT1cIkd1ZXNzRnJvbU9yZGVyXCIsZX0oe30pO2Z1bmN0aW9uIHNjKGU9e30pe2xldHtsYWJlbDp0LG1ldGFkYXRhOm4sdGV4dFJlZjpyLGluZGV4R3Vlc3NCZWhhdmlvcjpvfT1lLHtyZWdpc3RlcjphLHVucmVnaXN0ZXI6aSxzdWJzY3JpYmVNYXBDaGFuZ2U6bCxlbGVtZW50c1JlZjpzLGxhYmVsc1JlZjpjLG5leHRJbmRleFJlZjp1fT14LnVzZUNvbnRleHQoc2wpLGQ9eC51c2VSZWYoLTEpLFtmLHBdPXgudXNlU3RhdGUobz09PXNzLkd1ZXNzRnJvbU9yZGVyPygpPT57aWYoLTE9PT1kLmN1cnJlbnQpe2xldCBlPXUuY3VycmVudDt1LmN1cnJlbnQrPTEsZC5jdXJyZW50PWV9cmV0dXJuIGQuY3VycmVudH06LTEpLGg9eC51c2VSZWYobnVsbCksbT14LnVzZUNhbGxiYWNrKGU9PntpZihoLmN1cnJlbnQ9ZSwtMSE9PWYmJm51bGwhPT1lJiYocy5jdXJyZW50W2ZdPWUsYykpe2xldCBuPXZvaWQgMCE9PXQ7Yy5jdXJyZW50W2ZdPW4/dDpyPy5jdXJyZW50Py50ZXh0Q29udGVudD8/ZS50ZXh0Q29udGVudH19LFtmLHMsYyx0LHJdKTtyZXR1cm4gYXgoKCk9PntsZXQgZT1oLmN1cnJlbnQ7aWYoZSlyZXR1cm4gYShlLG4pLCgpPT57aShlKX19LFthLGksbl0pLGF4KCgpPT5sKGU9PntsZXQgdD1oLmN1cnJlbnQ/ZS5nZXQoaC5jdXJyZW50KT8uaW5kZXg6bnVsbDtudWxsIT10JiZwKHQpfSksW2wscF0pLHgudXNlTWVtbygoKT0+KHtyZWY6bSxpbmRleDpmfSksW2YsbV0pfWZ1bmN0aW9uIHN1KGUpe2xldHtyZW5kZXI6dCxjbGFzc05hbWU6bixzdGF0ZTpyPWlSLHByb3BzOm89aU0scmVmczphPWlNLG1ldGFkYXRhOmksY3VzdG9tU3R5bGVIb29rTWFwcGluZzpsLHRhZzpzPVwiZGl2XCIsLi4uY309ZSx7Y29tcG9zaXRlUHJvcHM6dSxjb21wb3NpdGVSZWY6ZH09ZnVuY3Rpb24oZT17fSl7bGV0e2hpZ2hsaWdodEl0ZW1PbkhvdmVyOnQsaGlnaGxpZ2h0ZWRJbmRleDpuLG9uSGlnaGxpZ2h0ZWRJbmRleENoYW5nZTpyfT1zYSgpLHtyZWY6byxpbmRleDphfT1zYyhlKSxpPW49PT1hLGw9eC51c2VSZWYobnVsbCkscz1sWShvLGwpO3JldHVybntjb21wb3NpdGVQcm9wczp4LnVzZU1lbW8oKCk9Pih7dGFiSW5kZXg6aT8wOi0xLG9uRm9jdXMoKXtyKGEpfSxvbk1vdXNlTW92ZSgpe2xldCBlPWwuY3VycmVudDtpZighdHx8IWUpcmV0dXJuO2xldCBuPWUuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIil8fFwidHJ1ZVwiPT09ZS5hcmlhRGlzYWJsZWQ7aXx8bnx8ZS5mb2N1cygpfX0pLFtpLHIsYSx0XSksY29tcG9zaXRlUmVmOnMsaW5kZXg6YX19KHttZXRhZGF0YTppfSk7cmV0dXJuIHNuKHMsZSx7c3RhdGU6cixyZWY6Wy4uLmEsZF0scHJvcHM6W3UsLi4ubyxjXSxjdXN0b21TdHlsZUhvb2tNYXBwaW5nOmx9KX1sZXQgc2Q9eC5mb3J3YXJkUmVmKGZ1bmN0aW9uKGUsdCl7bGV0e3JlbmRlcjpuLGNsYXNzTmFtZTpyLGRpc2FibGVkOm89ITEsbmF0aXZlQnV0dG9uOmE9ITAsLi4uaX09ZSx7dHJpZ2dlclByb3BzOmwsZGlzYWJsZWQ6cyxzZXRUcmlnZ2VyRWxlbWVudDpjLG9wZW46dSxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOmQscG9zaXRpb25lclJlZjpmLHBhcmVudDpwLGxhc3RPcGVuQ2hhbmdlUmVhc29uOmgscm9vdElkOm19PWxBKCksZz1vfHxzLHk9eC51c2VSZWYobnVsbCksdj1hYygpLHtnZXRCdXR0b25Qcm9wczpBLGJ1dHRvblJlZjp3fT1zaSh7ZGlzYWJsZWQ6ZyxuYXRpdmU6YX0pLEM9bFkodyxjKSx7ZXZlbnRzOl99PWFrKCk7eC51c2VFZmZlY3QoKCk9Pnt1fHx2b2lkIDAhPT1wLnR5cGV8fChkLmN1cnJlbnQ9ITEpfSxbZCx1LHAudHlwZV0pO2xldCBrPWFmKGU9PntpZigheS5jdXJyZW50KXJldHVybjt2LmNsZWFyKCksZC5jdXJyZW50PSExO2xldCB0PWUudGFyZ2V0O2lmKGlnKHkuY3VycmVudCx0KXx8aWcoZi5jdXJyZW50LHQpfHx0PT09eS5jdXJyZW50fHxudWxsIT10JiZmdW5jdGlvbiBlKHQpe3JldHVybiBhRCh0KSYmdC5oYXNBdHRyaWJ1dGUoXCJkYXRhLXJvb3Rvd25lcmlkXCIpP3QuZ2V0QXR0cmlidXRlKFwiZGF0YS1yb290b3duZXJpZFwiKT8/dm9pZCAwOmFZKHQpP3ZvaWQgMDplKGFHKHQpKX0odCk9PT1tKXJldHVybjtsZXQgbj1mdW5jdGlvbihlKXtsZXQgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSxcIjo6YmVmb3JlXCIpLHI9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSxcIjo6YWZ0ZXJcIik7aWYoXCJub25lXCI9PT1uLmNvbnRlbnQmJlwibm9uZVwiPT09ci5jb250ZW50KXJldHVybiB0O2xldCBvPXBhcnNlRmxvYXQobi53aWR0aCl8fDAsYT1wYXJzZUZsb2F0KG4uaGVpZ2h0KXx8MCxpPXBhcnNlRmxvYXQoci53aWR0aCl8fDAsbD1wYXJzZUZsb2F0KHIuaGVpZ2h0KXx8MCxzPU1hdGgubWF4KHQud2lkdGgsbyxpKSxjPU1hdGgubWF4KHQuaGVpZ2h0LGEsbCksdT1zLXQud2lkdGgsZD1jLXQuaGVpZ2h0O3JldHVybntsZWZ0OnQubGVmdC11LzIscmlnaHQ6dC5yaWdodCt1LzIsdG9wOnQudG9wLWQvMixib3R0b206dC5ib3R0b20rZC8yfX0oeS5jdXJyZW50KTtlLmNsaWVudFg+PW4ubGVmdC0yJiZlLmNsaWVudFg8PW4ucmlnaHQrMiYmZS5jbGllbnRZPj1uLnRvcC0yJiZlLmNsaWVudFk8PW4uYm90dG9tKzJ8fF8uZW1pdChcImNsb3NlXCIse2RvbUV2ZW50OmUscmVhc29uOlwiY2FuY2VsLW9wZW5cIn0pfSk7eC51c2VFZmZlY3QoKCk9Pnt1JiZcInRyaWdnZXItaG92ZXJcIj09PWgmJmxFKHkuY3VycmVudCkuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIixrLHtvbmNlOiEwfSl9LFt1LGssaF0pO2xldCBFPVwibWVudWJhclwiPT09cC50eXBlLGo9eC51c2VDYWxsYmFjayhlPT5sTShFP3tyb2xlOlwibWVudWl0ZW1cIn06e30se1wiYXJpYS1oYXNwb3B1cFwiOlwibWVudVwiLHJlZjpDLG9uTW91c2VEb3duOmU9Pnt1fHwodi5zdGFydCgyMDAsKCk9PntkLmN1cnJlbnQ9ITB9KSxsRShlLmN1cnJlbnRUYXJnZXQpLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsayx7b25jZTohMH0pKX19LGUsQSksW0EsQyx1LGQsdixrLEVdKSxTPXgudXNlTWVtbygoKT0+KHtkaXNhYmxlZDpnLG9wZW46dX0pLFtnLHVdKSxPPVt5LHQsd10sQj1bbCxpLGpdLFA9c24oXCJidXR0b25cIixlLHtlbmFibGVkOiFFLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6bDcsc3RhdGU6UyxyZWY6Tyxwcm9wczpCfSk7cmV0dXJuIEU/KDAsYi5qc3gpKHN1LHt0YWc6XCJidXR0b25cIixyZW5kZXI6bixjbGFzc05hbWU6cixzdGF0ZTpTLHJlZnM6Tyxwcm9wczpCLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6bDd9KTpQfSksc2Y9e2NsaXA6XCJyZWN0KDAgMCAwIDApXCIsb3ZlcmZsb3c6XCJoaWRkZW5cIix3aGl0ZVNwYWNlOlwibm93cmFwXCIscG9zaXRpb246XCJmaXhlZFwiLHRvcDowLGxlZnQ6MCxib3JkZXI6MCxwYWRkaW5nOjAsd2lkdGg6MSxoZWlnaHQ6MSxtYXJnaW46LTF9LHNwPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldFtuLHJdPXgudXNlU3RhdGUoKTtyZXR1cm4gYXgoKCk9PnthOCYmcihcImJ1dHRvblwiKX0sW10pLCgwLGIuanN4KShcInNwYW5cIix7Li4uZSxyZWY6dCx0YWJJbmRleDowLHJvbGU6bixcImFyaWEtaGlkZGVuXCI6IW58fHZvaWQgMCxzdHlsZTpzZixcImRhdGEtYmFzZS11aS1mb2N1cy1ndWFyZFwiOlwiXCJ9KX0pO3ZhciBzaD0naW5wdXQ6bm90KFtpbmVydF0pLHNlbGVjdDpub3QoW2luZXJ0XSksdGV4dGFyZWE6bm90KFtpbmVydF0pLGFbaHJlZl06bm90KFtpbmVydF0pLGJ1dHRvbjpub3QoW2luZXJ0XSksW3RhYmluZGV4XTpub3Qoc2xvdCk6bm90KFtpbmVydF0pLGF1ZGlvW2NvbnRyb2xzXTpub3QoW2luZXJ0XSksdmlkZW9bY29udHJvbHNdOm5vdChbaW5lcnRdKSxbY29udGVudGVkaXRhYmxlXTpub3QoW2NvbnRlbnRlZGl0YWJsZT1cImZhbHNlXCJdKTpub3QoW2luZXJ0XSksZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGU6bm90KFtpbmVydF0pLGRldGFpbHM6bm90KFtpbmVydF0pJyxzbT1cInVuZGVmaW5lZFwiPT10eXBlb2YgRWxlbWVudCxzZz1zbT9mdW5jdGlvbigpe306RWxlbWVudC5wcm90b3R5cGUubWF0Y2hlc3x8RWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3J8fEVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3RvcixzeT0hc20mJkVsZW1lbnQucHJvdG90eXBlLmdldFJvb3ROb2RlP2Z1bmN0aW9uKGUpe3ZhciB0O3JldHVybiBudWxsPT1lfHxudWxsPT0odD1lLmdldFJvb3ROb2RlKT92b2lkIDA6dC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA6ZS5vd25lckRvY3VtZW50fSxzdj1mdW5jdGlvbiBlKHQsbil7dm9pZCAwPT09biYmKG49ITApO3ZhciByLG89bnVsbD09dHx8bnVsbD09KHI9dC5nZXRBdHRyaWJ1dGUpP3ZvaWQgMDpyLmNhbGwodCxcImluZXJ0XCIpO3JldHVyblwiXCI9PT1vfHxcInRydWVcIj09PW98fG4mJnQmJmUodC5wYXJlbnROb2RlKX0sc2I9ZnVuY3Rpb24oZSl7dmFyIHQsbj1udWxsPT1lfHxudWxsPT0odD1lLmdldEF0dHJpYnV0ZSk/dm9pZCAwOnQuY2FsbChlLFwiY29udGVudGVkaXRhYmxlXCIpO3JldHVyblwiXCI9PT1ufHxcInRydWVcIj09PW59LHNBPWZ1bmN0aW9uKGUsdCxuKXtpZihzdihlKSlyZXR1cm5bXTt2YXIgcj1BcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkoZS5xdWVyeVNlbGVjdG9yQWxsKHNoKSk7cmV0dXJuIHQmJnNnLmNhbGwoZSxzaCkmJnIudW5zaGlmdChlKSxyPXIuZmlsdGVyKG4pfSxzeD1mdW5jdGlvbiBlKHQsbixyKXtmb3IodmFyIG89W10sYT1BcnJheS5mcm9tKHQpO2EubGVuZ3RoOyl7dmFyIGk9YS5zaGlmdCgpO2lmKCFzdihpLCExKSlpZihcIlNMT1RcIj09PWkudGFnTmFtZSl7dmFyIGw9aS5hc3NpZ25lZEVsZW1lbnRzKCkscz1lKGwubGVuZ3RoP2w6aS5jaGlsZHJlbiwhMCxyKTtyLmZsYXR0ZW4/by5wdXNoLmFwcGx5KG8scyk6by5wdXNoKHtzY29wZVBhcmVudDppLGNhbmRpZGF0ZXM6c30pfWVsc2V7c2cuY2FsbChpLHNoKSYmci5maWx0ZXIoaSkmJihufHwhdC5pbmNsdWRlcyhpKSkmJm8ucHVzaChpKTt2YXIgYz1pLnNoYWRvd1Jvb3R8fFwiZnVuY3Rpb25cIj09dHlwZW9mIHIuZ2V0U2hhZG93Um9vdCYmci5nZXRTaGFkb3dSb290KGkpLHU9IXN2KGMsITEpJiYoIXIuc2hhZG93Um9vdEZpbHRlcnx8ci5zaGFkb3dSb290RmlsdGVyKGkpKTtpZihjJiZ1KXt2YXIgZD1lKCEwPT09Yz9pLmNoaWxkcmVuOmMuY2hpbGRyZW4sITAscik7ci5mbGF0dGVuP28ucHVzaC5hcHBseShvLGQpOm8ucHVzaCh7c2NvcGVQYXJlbnQ6aSxjYW5kaWRhdGVzOmR9KX1lbHNlIGEudW5zaGlmdC5hcHBseShhLGkuY2hpbGRyZW4pfX1yZXR1cm4gb30sc3c9ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIiksMTApKX0sc0M9ZnVuY3Rpb24oZSl7aWYoIWUpdGhyb3cgRXJyb3IoXCJObyBub2RlIHByb3ZpZGVkXCIpO3JldHVybiBlLnRhYkluZGV4PDAmJigvXihBVURJT3xWSURFT3xERVRBSUxTKSQvLnRlc3QoZS50YWdOYW1lKXx8c2IoZSkpJiYhc3coZSk/MDplLnRhYkluZGV4fSxzXz1mdW5jdGlvbihlLHQpe3ZhciBuPXNDKGUpO3JldHVybiBuPDAmJnQmJiFzdyhlKT8wOm59LHNrPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudGFiSW5kZXg9PT10LnRhYkluZGV4P2UuZG9jdW1lbnRPcmRlci10LmRvY3VtZW50T3JkZXI6ZS50YWJJbmRleC10LnRhYkluZGV4fSxzRT1mdW5jdGlvbihlKXtyZXR1cm5cIklOUFVUXCI9PT1lLnRhZ05hbWV9LHNqPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoZVtuXS5jaGVja2VkJiZlW25dLmZvcm09PT10KXJldHVybiBlW25dfSxzUz1mdW5jdGlvbihlKXtpZighZS5uYW1lKXJldHVybiEwO3ZhciB0LG49ZS5mb3JtfHxzeShlKSxyPWZ1bmN0aW9uKGUpe3JldHVybiBuLnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiJytlKydcIl0nKX07aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LkNTUyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LkNTUy5lc2NhcGUpdD1yKHdpbmRvdy5DU1MuZXNjYXBlKGUubmFtZSkpO2Vsc2UgdHJ5e3Q9cihlLm5hbWUpfWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKFwiTG9va3MgbGlrZSB5b3UgaGF2ZSBhIHJhZGlvIGJ1dHRvbiB3aXRoIGEgbmFtZSBhdHRyaWJ1dGUgY29udGFpbmluZyBpbnZhbGlkIENTUyBzZWxlY3RvciBjaGFyYWN0ZXJzIGFuZCBuZWVkIHRoZSBDU1MuZXNjYXBlIHBvbHlmaWxsOiAlc1wiLGUubWVzc2FnZSksITF9dmFyIG89c2oodCxlLmZvcm0pO3JldHVybiFvfHxvPT09ZX0sc089ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuIHNFKHQ9ZSkmJlwicmFkaW9cIj09PXQudHlwZSYmIXNTKGUpfSxzQj1mdW5jdGlvbihlKXt2YXIgdCxuLHIsbyxhLGksbCxzPWUmJnN5KGUpLGM9bnVsbD09KHQ9cyk/dm9pZCAwOnQuaG9zdCx1PSExO2lmKHMmJnMhPT1lKWZvcih1PSEhKG51bGwhPShuPWMpJiZudWxsIT0ocj1uLm93bmVyRG9jdW1lbnQpJiZyLmNvbnRhaW5zKGMpfHxudWxsIT1lJiZudWxsIT0obz1lLm93bmVyRG9jdW1lbnQpJiZvLmNvbnRhaW5zKGUpKTshdSYmYzspdT0hIShudWxsIT0oaT1jPW51bGw9PShhPXM9c3koYykpP3ZvaWQgMDphLmhvc3QpJiZudWxsIT0obD1pLm93bmVyRG9jdW1lbnQpJiZsLmNvbnRhaW5zKGMpKTtyZXR1cm4gdX0sc1A9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPXQud2lkdGgscj10LmhlaWdodDtyZXR1cm4gMD09PW4mJjA9PT1yfSxzST1mdW5jdGlvbihlLHQpe3ZhciBuPXQuZGlzcGxheUNoZWNrLHI9dC5nZXRTaGFkb3dSb290O2lmKFwiaGlkZGVuXCI9PT1nZXRDb21wdXRlZFN0eWxlKGUpLnZpc2liaWxpdHkpcmV0dXJuITA7dmFyIG89c2cuY2FsbChlLFwiZGV0YWlscz5zdW1tYXJ5OmZpcnN0LW9mLXR5cGVcIik/ZS5wYXJlbnRFbGVtZW50OmU7aWYoc2cuY2FsbChvLFwiZGV0YWlsczpub3QoW29wZW5dKSAqXCIpKXJldHVybiEwO2lmKG4mJlwiZnVsbFwiIT09biYmXCJsZWdhY3ktZnVsbFwiIT09bil7aWYoXCJub24temVyby1hcmVhXCI9PT1uKXJldHVybiBzUChlKX1lbHNle2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpe2Zvcih2YXIgYT1lO2U7KXt2YXIgaT1lLnBhcmVudEVsZW1lbnQsbD1zeShlKTtpZihpJiYhaS5zaGFkb3dSb290JiYhMD09PXIoaSkpcmV0dXJuIHNQKGUpO2U9ZS5hc3NpZ25lZFNsb3Q/ZS5hc3NpZ25lZFNsb3Q6aXx8bD09PWUub3duZXJEb2N1bWVudD9pOmwuaG9zdH1lPWF9aWYoc0IoZSkpcmV0dXJuIWUuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg7aWYoXCJsZWdhY3ktZnVsbFwiIT09bilyZXR1cm4hMH1yZXR1cm4hMX0sc3o9ZnVuY3Rpb24oZSl7aWYoL14oSU5QVVR8QlVUVE9OfFNFTEVDVHxURVhUQVJFQSkkLy50ZXN0KGUudGFnTmFtZSkpZm9yKHZhciB0PWUucGFyZW50RWxlbWVudDt0Oyl7aWYoXCJGSUVMRFNFVFwiPT09dC50YWdOYW1lJiZ0LmRpc2FibGVkKXtmb3IodmFyIG49MDtuPHQuY2hpbGRyZW4ubGVuZ3RoO24rKyl7dmFyIHI9dC5jaGlsZHJlbi5pdGVtKG4pO2lmKFwiTEVHRU5EXCI9PT1yLnRhZ05hbWUpcmV0dXJuISFzZy5jYWxsKHQsXCJmaWVsZHNldFtkaXNhYmxlZF0gKlwiKXx8IXIuY29udGFpbnMoZSl9cmV0dXJuITB9dD10LnBhcmVudEVsZW1lbnR9cmV0dXJuITF9LHNUPWZ1bmN0aW9uKGUsdCl7dmFyIG4scjtyZXR1cm4hKHQuZGlzYWJsZWR8fHN2KHQpfHxzRShuPXQpJiZcImhpZGRlblwiPT09bi50eXBlfHxzSSh0LGUpfHxcIkRFVEFJTFNcIj09PShyPXQpLnRhZ05hbWUmJkFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShyLmNoaWxkcmVuKS5zb21lKGZ1bmN0aW9uKGUpe3JldHVyblwiU1VNTUFSWVwiPT09ZS50YWdOYW1lfSl8fHN6KHQpKX0sc0Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKHNPKHQpfHwwPnNDKHQpKSYmISFzVChlLHQpfSxzTD1mdW5jdGlvbihlKXt2YXIgdD1wYXJzZUludChlLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpLDEwKTtyZXR1cm4hIWlzTmFOKHQpfHwhISh0Pj0wKX0sc049ZnVuY3Rpb24gZSh0KXt2YXIgbj1bXSxyPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24odCxvKXt2YXIgYT0hIXQuc2NvcGVQYXJlbnQsaT1hP3Quc2NvcGVQYXJlbnQ6dCxsPXNfKGksYSkscz1hP2UodC5jYW5kaWRhdGVzKTppOzA9PT1sP2E/bi5wdXNoLmFwcGx5KG4scyk6bi5wdXNoKGkpOnIucHVzaCh7ZG9jdW1lbnRPcmRlcjpvLHRhYkluZGV4OmwsaXRlbTp0LGlzU2NvcGU6YSxjb250ZW50OnN9KX0pLHIuc29ydChzaykucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuaXNTY29wZT9lLnB1c2guYXBwbHkoZSx0LmNvbnRlbnQpOmUucHVzaCh0LmNvbnRlbnQpLGV9LFtdKS5jb25jYXQobil9LHNSPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHNOKCh0PXR8fHt9KS5nZXRTaGFkb3dSb290P3N4KFtlXSx0LmluY2x1ZGVDb250YWluZXIse2ZpbHRlcjpzRC5iaW5kKG51bGwsdCksZmxhdHRlbjohMSxnZXRTaGFkb3dSb290OnQuZ2V0U2hhZG93Um9vdCxzaGFkb3dSb290RmlsdGVyOnNMfSk6c0EoZSx0LmluY2x1ZGVDb250YWluZXIsc0QuYmluZChudWxsLHQpKSl9LHNNPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQ9dHx8e30pLmdldFNoYWRvd1Jvb3Q/c3goW2VdLHQuaW5jbHVkZUNvbnRhaW5lcix7ZmlsdGVyOnNULmJpbmQobnVsbCx0KSxmbGF0dGVuOiEwLGdldFNoYWRvd1Jvb3Q6dC5nZXRTaGFkb3dSb290fSk6c0EoZSx0LmluY2x1ZGVDb250YWluZXIsc1QuYmluZChudWxsLHQpKX0sc1o9ZnVuY3Rpb24oZSx0KXtpZih0PXR8fHt9LCFlKXRocm93IEVycm9yKFwiTm8gbm9kZSBwcm92aWRlZFwiKTtyZXR1cm4hMSE9PXNnLmNhbGwoZSxzaCkmJnNEKHQsZSl9O2xldCBzVT0oKT0+KHtnZXRTaGFkb3dSb290OiEwLGRpc3BsYXlDaGVjazpcImZ1bmN0aW9uXCI9PXR5cGVvZiBSZXNpemVPYnNlcnZlciYmUmVzaXplT2JzZXJ2ZXIudG9TdHJpbmcoKS5pbmNsdWRlcyhcIltuYXRpdmUgY29kZV1cIik/XCJmdWxsXCI6XCJub25lXCJ9KTtmdW5jdGlvbiBzRihlLHQpe2xldCBuPXNSKGUsc1UoKSkscj1uLmxlbmd0aDtpZigwPT09cilyZXR1cm47bGV0IG89aW0oaWIoZSkpLGE9bi5pbmRleE9mKG8pO3JldHVybiBuWy0xPT09YT8xPT09dD8wOnItMTphK3RdfWZ1bmN0aW9uIHNxKGUpe3JldHVybiBzRihpYihlKS5ib2R5LDEpfHxlfWZ1bmN0aW9uIHNIKGUpe3JldHVybiBzRihpYihlKS5ib2R5LC0xKXx8ZX1mdW5jdGlvbiBzVihlLHQpe2xldCBuPXR8fGUuY3VycmVudFRhcmdldCxyPWUucmVsYXRlZFRhcmdldDtyZXR1cm4hcnx8IWlnKG4scil9ZnVuY3Rpb24gcyQoZSl7c1IoZSxzVSgpKS5mb3JFYWNoKGU9PntlLmRhdGFzZXQudGFiaW5kZXg9ZS5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKXx8XCJcIixlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKX0pfWZ1bmN0aW9uIHNXKGUpe2UucXVlcnlTZWxlY3RvckFsbChcIltkYXRhLXRhYmluZGV4XVwiKS5mb3JFYWNoKGU9PntsZXQgdD1lLmRhdGFzZXQudGFiaW5kZXg7ZGVsZXRlIGUuZGF0YXNldC50YWJpbmRleCx0P2Uuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIix0KTplLnJlbW92ZUF0dHJpYnV0ZShcInRhYmluZGV4XCIpfSl9bGV0IHNZPXguY3JlYXRlQ29udGV4dChudWxsKSxzSz0oKT0+eC51c2VDb250ZXh0KHNZKSxzWD1pQyhcInBvcnRhbFwiKTtmdW5jdGlvbiBzRyhlPXt9KXtsZXR7aWQ6dCxyb290Om59PWUscj1hYigpLG89c0soKSxbYSxpXT14LnVzZVN0YXRlKG51bGwpLGw9eC51c2VSZWYobnVsbCk7cmV0dXJuIGF4KCgpPT4oKT0+e2E/LnJlbW92ZSgpLHF1ZXVlTWljcm90YXNrKCgpPT57bC5jdXJyZW50PW51bGx9KX0sW2FdKSxheCgoKT0+e2lmKCFyfHxsLmN1cnJlbnQpcmV0dXJuO2xldCBlPXQ/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk6bnVsbDtpZighZSlyZXR1cm47bGV0IG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtuLmlkPXIsbi5zZXRBdHRyaWJ1dGUoc1gsXCJcIiksZS5hcHBlbmRDaGlsZChuKSxsLmN1cnJlbnQ9bixpKG4pfSxbdCxyXSksYXgoKCk9PntpZihudWxsPT09bnx8IXJ8fGwuY3VycmVudClyZXR1cm47bGV0IGU9bnx8bz8ucG9ydGFsTm9kZTtlJiYhYXooZSkmJihlPWUuY3VycmVudCksZT1lfHxkb2N1bWVudC5ib2R5O2xldCBhPW51bGw7dCYmKChhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLmlkPXQsZS5hcHBlbmRDaGlsZChhKSk7bGV0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtzLmlkPXIscy5zZXRBdHRyaWJ1dGUoc1gsXCJcIiksKGU9YXx8ZSkuYXBwZW5kQ2hpbGQocyksbC5jdXJyZW50PXMsaShzKX0sW3QsbixyLG9dKSxhfWZ1bmN0aW9uIHNRKGUpe2xldHtjaGlsZHJlbjp0LGlkOm4scm9vdDpyLHByZXNlcnZlVGFiT3JkZXI6bz0hMH09ZSxhPXNHKHtpZDpuLHJvb3Q6cn0pLFtpLGxdPXgudXNlU3RhdGUobnVsbCkscz14LnVzZVJlZihudWxsKSxjPXgudXNlUmVmKG51bGwpLHU9eC51c2VSZWYobnVsbCksZD14LnVzZVJlZihudWxsKSxmPWk/Lm1vZGFsLHA9aT8ub3BlbixoPSEhaSYmIWkubW9kYWwmJmkub3BlbiYmbyYmISEocnx8YSk7cmV0dXJuIHgudXNlRWZmZWN0KCgpPT57aWYoYSYmbyYmIWYpcmV0dXJuIGEuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixlLCEwKSxhLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLGUsITApLCgpPT57YS5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNpblwiLGUsITApLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsZSwhMCl9O2Z1bmN0aW9uIGUoZSl7aWYoYSYmc1YoZSkpe2xldCB0PVwiZm9jdXNpblwiPT09ZS50eXBlOyh0P3NXOnMkKShhKX19fSxbYSxvLGZdKSx4LnVzZUVmZmVjdCgoKT0+e2EmJihwfHxzVyhhKSl9LFtwLGFdKSwoMCxiLmpzeHMpKHNZLlByb3ZpZGVyLHt2YWx1ZTp4LnVzZU1lbW8oKCk9Pih7cHJlc2VydmVUYWJPcmRlcjpvLGJlZm9yZU91dHNpZGVSZWY6cyxhZnRlck91dHNpZGVSZWY6YyxiZWZvcmVJbnNpZGVSZWY6dSxhZnRlckluc2lkZVJlZjpkLHBvcnRhbE5vZGU6YSxzZXRGb2N1c01hbmFnZXJTdGF0ZTpsfSksW28sYV0pLGNoaWxkcmVuOltoJiZhJiYoMCxiLmpzeCkoc3Ase1wiZGF0YS10eXBlXCI6XCJvdXRzaWRlXCIscmVmOnMsb25Gb2N1czplPT57aWYoc1YoZSxhKSl1LmN1cnJlbnQ/LmZvY3VzKCk7ZWxzZXtsZXQgZT1zSChpP2kuZG9tUmVmZXJlbmNlOm51bGwpO2U/LmZvY3VzKCl9fX0pLGgmJmEmJigwLGIuanN4KShcInNwYW5cIix7XCJhcmlhLW93bnNcIjphLmlkLHN0eWxlOnNmfSksYSYmZWYuY3JlYXRlUG9ydGFsKHQsYSksaCYmYSYmKDAsYi5qc3gpKHNwLHtcImRhdGEtdHlwZVwiOlwib3V0c2lkZVwiLHJlZjpjLG9uRm9jdXM6ZT0+e2lmKHNWKGUsYSkpZC5jdXJyZW50Py5mb2N1cygpO2Vsc2V7bGV0IHQ9c3EoaT9pLmRvbVJlZmVyZW5jZTpudWxsKTt0Py5mb2N1cygpLGk/LmNsb3NlT25Gb2N1c091dCYmaT8ub25PcGVuQ2hhbmdlKCExLGUubmF0aXZlRXZlbnQsXCJmb2N1cy1vdXRcIil9fX0pXX0pfWxldCBzSj14LmNyZWF0ZUNvbnRleHQodm9pZCAwKTtmdW5jdGlvbiBzMChlKXtsZXR7Y2hpbGRyZW46dCxrZWVwTW91bnRlZDpuPSExLGNvbnRhaW5lcjpyfT1lLHttb3VudGVkOm99PWxBKCk7cmV0dXJuIG98fG4/KDAsYi5qc3gpKHNKLlByb3ZpZGVyLHt2YWx1ZTpuLGNoaWxkcmVuOigwLGIuanN4KShzUSx7cm9vdDpyLGNoaWxkcmVuOnR9KX0pOm51bGx9bGV0IHMxPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIHMyKGUsdCxuKXtsZXQgcix7cmVmZXJlbmNlOm8sZmxvYXRpbmc6YX09ZSxpPWk2KHQpLGw9aTQoaTYodCkpLHM9aTUobCksYz1pMSh0KSx1PVwieVwiPT09aSxkPW8ueCtvLndpZHRoLzItYS53aWR0aC8yLGY9by55K28uaGVpZ2h0LzItYS5oZWlnaHQvMixwPW9bc10vMi1hW3NdLzI7c3dpdGNoKGMpe2Nhc2VcInRvcFwiOnI9e3g6ZCx5Om8ueS1hLmhlaWdodH07YnJlYWs7Y2FzZVwiYm90dG9tXCI6cj17eDpkLHk6by55K28uaGVpZ2h0fTticmVhaztjYXNlXCJyaWdodFwiOnI9e3g6by54K28ud2lkdGgseTpmfTticmVhaztjYXNlXCJsZWZ0XCI6cj17eDpvLngtYS53aWR0aCx5OmZ9O2JyZWFrO2RlZmF1bHQ6cj17eDpvLngseTpvLnl9fXN3aXRjaChpMih0KSl7Y2FzZVwic3RhcnRcIjpyW2xdLT1wKihuJiZ1Py0xOjEpO2JyZWFrO2Nhc2VcImVuZFwiOnJbbF0rPXAqKG4mJnU/LTE6MSl9cmV0dXJuIHJ9bGV0IHM0PWFzeW5jKGUsdCxuKT0+e2xldHtwbGFjZW1lbnQ6cj1cImJvdHRvbVwiLHN0cmF0ZWd5Om89XCJhYnNvbHV0ZVwiLG1pZGRsZXdhcmU6YT1bXSxwbGF0Zm9ybTppfT1uLGw9YS5maWx0ZXIoQm9vbGVhbikscz1hd2FpdCAobnVsbD09aS5pc1JUTD92b2lkIDA6aS5pc1JUTCh0KSksYz1hd2FpdCBpLmdldEVsZW1lbnRSZWN0cyh7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dCxzdHJhdGVneTpvfSkse3g6dSx5OmR9PXMyKGMscixzKSxmPXIscD17fSxoPTA7Zm9yKGxldCBuPTA7bjxsLmxlbmd0aDtuKyspe2xldHtuYW1lOmEsZm46bX09bFtuXSx7eDpnLHk6eSxkYXRhOnYscmVzZXQ6Yn09YXdhaXQgbSh7eDp1LHk6ZCxpbml0aWFsUGxhY2VtZW50OnIscGxhY2VtZW50OmYsc3RyYXRlZ3k6byxtaWRkbGV3YXJlRGF0YTpwLHJlY3RzOmMscGxhdGZvcm06aSxlbGVtZW50czp7cmVmZXJlbmNlOmUsZmxvYXRpbmc6dH19KTt1PW51bGwhPWc/Zzp1LGQ9bnVsbCE9eT95OmQscD17Li4ucCxbYV06ey4uLnBbYV0sLi4udn19LGImJmg8PTUwJiYoaCsrLFwib2JqZWN0XCI9PXR5cGVvZiBiJiYoYi5wbGFjZW1lbnQmJihmPWIucGxhY2VtZW50KSxiLnJlY3RzJiYoYz0hMD09PWIucmVjdHM/YXdhaXQgaS5nZXRFbGVtZW50UmVjdHMoe3JlZmVyZW5jZTplLGZsb2F0aW5nOnQsc3RyYXRlZ3k6b30pOmIucmVjdHMpLHt4OnUseTpkfT1zMihjLGYscykpLG49LTEpfXJldHVybnt4OnUseTpkLHBsYWNlbWVudDpmLHN0cmF0ZWd5Om8sbWlkZGxld2FyZURhdGE6cH19O2FzeW5jIGZ1bmN0aW9uIHM1KGUsdCl7dmFyIG47dm9pZCAwPT09dCYmKHQ9e30pO2xldHt4OnIseTpvLHBsYXRmb3JtOmEscmVjdHM6aSxlbGVtZW50czpsLHN0cmF0ZWd5OnN9PWUse2JvdW5kYXJ5OmM9XCJjbGlwcGluZ0FuY2VzdG9yc1wiLHJvb3RCb3VuZGFyeTp1PVwidmlld3BvcnRcIixlbGVtZW50Q29udGV4dDpkPVwiZmxvYXRpbmdcIixhbHRCb3VuZGFyeTpmPSExLHBhZGRpbmc6cD0wfT1pMCh0LGUpLGg9bHIocCksbT1sW2Y/XCJmbG9hdGluZ1wiPT09ZD9cInJlZmVyZW5jZVwiOlwiZmxvYXRpbmdcIjpkXSxnPWxvKGF3YWl0IGEuZ2V0Q2xpcHBpbmdSZWN0KHtlbGVtZW50Om51bGw9PShuPWF3YWl0IChudWxsPT1hLmlzRWxlbWVudD92b2lkIDA6YS5pc0VsZW1lbnQobSkpKXx8bj9tOm0uY29udGV4dEVsZW1lbnR8fGF3YWl0IChudWxsPT1hLmdldERvY3VtZW50RWxlbWVudD92b2lkIDA6YS5nZXREb2N1bWVudEVsZW1lbnQobC5mbG9hdGluZykpLGJvdW5kYXJ5OmMscm9vdEJvdW5kYXJ5OnUsc3RyYXRlZ3k6c30pKSx5PVwiZmxvYXRpbmdcIj09PWQ/e3g6cix5Om8sd2lkdGg6aS5mbG9hdGluZy53aWR0aCxoZWlnaHQ6aS5mbG9hdGluZy5oZWlnaHR9OmkucmVmZXJlbmNlLHY9YXdhaXQgKG51bGw9PWEuZ2V0T2Zmc2V0UGFyZW50P3ZvaWQgMDphLmdldE9mZnNldFBhcmVudChsLmZsb2F0aW5nKSksYj1hd2FpdCAobnVsbD09YS5pc0VsZW1lbnQ/dm9pZCAwOmEuaXNFbGVtZW50KHYpKSYmYXdhaXQgKG51bGw9PWEuZ2V0U2NhbGU/dm9pZCAwOmEuZ2V0U2NhbGUodikpfHx7eDoxLHk6MX0sQT1sbyhhLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0P2F3YWl0IGEuY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe2VsZW1lbnRzOmwscmVjdDp5LG9mZnNldFBhcmVudDp2LHN0cmF0ZWd5OnN9KTp5KTtyZXR1cm57dG9wOihnLnRvcC1BLnRvcCtoLnRvcCkvYi55LGJvdHRvbTooQS5ib3R0b20tZy5ib3R0b20raC5ib3R0b20pL2IueSxsZWZ0OihnLmxlZnQtQS5sZWZ0K2gubGVmdCkvYi54LHJpZ2h0OihBLnJpZ2h0LWcucmlnaHQraC5yaWdodCkvYi54fX1mdW5jdGlvbiBzMyhlLHQpe3JldHVybnt0b3A6ZS50b3AtdC5oZWlnaHQscmlnaHQ6ZS5yaWdodC10LndpZHRoLGJvdHRvbTplLmJvdHRvbS10LmhlaWdodCxsZWZ0OmUubGVmdC10LndpZHRofX1mdW5jdGlvbiBzNihlKXtyZXR1cm4gaSQuc29tZSh0PT5lW3RdPj0wKX1sZXQgczk9bmV3IFNldChbXCJsZWZ0XCIsXCJ0b3BcIl0pO2FzeW5jIGZ1bmN0aW9uIHM4KGUsdCl7bGV0e3BsYWNlbWVudDpuLHBsYXRmb3JtOnIsZWxlbWVudHM6b309ZSxhPWF3YWl0IChudWxsPT1yLmlzUlRMP3ZvaWQgMDpyLmlzUlRMKG8uZmxvYXRpbmcpKSxpPWkxKG4pLGw9aTIobikscz1cInlcIj09PWk2KG4pLGM9czkuaGFzKGkpPy0xOjEsdT1hJiZzPy0xOjEsZD1pMCh0LGUpLHttYWluQXhpczpmLGNyb3NzQXhpczpwLGFsaWdubWVudEF4aXM6aH09XCJudW1iZXJcIj09dHlwZW9mIGQ/e21haW5BeGlzOmQsY3Jvc3NBeGlzOjAsYWxpZ25tZW50QXhpczpudWxsfTp7bWFpbkF4aXM6ZC5tYWluQXhpc3x8MCxjcm9zc0F4aXM6ZC5jcm9zc0F4aXN8fDAsYWxpZ25tZW50QXhpczpkLmFsaWdubWVudEF4aXN9O3JldHVybiBsJiZcIm51bWJlclwiPT10eXBlb2YgaCYmKHA9XCJlbmRcIj09PWw/LTEqaDpoKSxzP3t4OnAqdSx5OmYqY306e3g6ZipjLHk6cCp1fX1mdW5jdGlvbiBzNyhlKXtsZXQgdD1hSyhlKSxuPXBhcnNlRmxvYXQodC53aWR0aCl8fDAscj1wYXJzZUZsb2F0KHQuaGVpZ2h0KXx8MCxvPWFEKGUpLGE9bz9lLm9mZnNldFdpZHRoOm4saT1vP2Uub2Zmc2V0SGVpZ2h0OnIsbD1pSyhuKSE9PWF8fGlLKHIpIT09aTtyZXR1cm4gbCYmKG49YSxyPWkpLHt3aWR0aDpuLGhlaWdodDpyLCQ6bH19ZnVuY3Rpb24gY2UoZSl7cmV0dXJuIGFUKGUpP2U6ZS5jb250ZXh0RWxlbWVudH1mdW5jdGlvbiBjdChlKXtsZXQgdD1jZShlKTtpZighYUQodCkpcmV0dXJuIGlHKDEpO2xldCBuPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkse3dpZHRoOnIsaGVpZ2h0Om8sJDphfT1zNyh0KSxpPShhP2lLKG4ud2lkdGgpOm4ud2lkdGgpL3IsbD0oYT9pSyhuLmhlaWdodCk6bi5oZWlnaHQpL287cmV0dXJuIGkmJk51bWJlci5pc0Zpbml0ZShpKXx8KGk9MSksbCYmTnVtYmVyLmlzRmluaXRlKGwpfHwobD0xKSx7eDppLHk6bH19bGV0IGNuPWlHKDApO2Z1bmN0aW9uIGNyKGUpe2xldCB0PWFQKGUpO3JldHVybiBhJCgpJiZ0LnZpc3VhbFZpZXdwb3J0P3t4OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCx5OnQudmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wfTpjbn1mdW5jdGlvbiBjbyhlLHQsbixyKXt2YXIgbyxhLGk7dm9pZCAwPT09dCYmKHQ9ITEpLHZvaWQgMD09PW4mJihuPSExKTtsZXQgbD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHM9Y2UoZSksYz1pRygxKTt0JiYocj9hVChyKSYmKGM9Y3QocikpOmM9Y3QoZSkpO2xldCB1PShvPXMsdm9pZCAwPT09KGE9bikmJihhPSExKSwoaT1yKSYmKCFhfHxpPT09YVAobykpJiZhKT9jcihzKTppRygwKSxkPShsLmxlZnQrdS54KS9jLngsZj0obC50b3ArdS55KS9jLnkscD1sLndpZHRoL2MueCxoPWwuaGVpZ2h0L2MueTtpZihzKXtsZXQgZT1hUChzKSx0PXImJmFUKHIpP2FQKHIpOnIsbj1lLG89YUoobik7Zm9yKDtvJiZyJiZ0IT09bjspe2xldCBlPWN0KG8pLHQ9by5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPWFLKG8pLGE9dC5sZWZ0KyhvLmNsaWVudExlZnQrcGFyc2VGbG9hdChyLnBhZGRpbmdMZWZ0KSkqZS54LGk9dC50b3ArKG8uY2xpZW50VG9wK3BhcnNlRmxvYXQoci5wYWRkaW5nVG9wKSkqZS55O2QqPWUueCxmKj1lLnkscCo9ZS54LGgqPWUueSxkKz1hLGYrPWksbz1hSihuPWFQKG8pKX19cmV0dXJuIGxvKHt3aWR0aDpwLGhlaWdodDpoLHg6ZCx5OmZ9KX1mdW5jdGlvbiBjYShlLHQpe2xldCBuPWFYKGUpLnNjcm9sbExlZnQ7cmV0dXJuIHQ/dC5sZWZ0K246Y28oYUkoZSkpLmxlZnQrbn1mdW5jdGlvbiBjaShlLHQsbil7dm9pZCAwPT09biYmKG49ITEpO2xldCByPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbz1yLmxlZnQrdC5zY3JvbGxMZWZ0LShuPzA6Y2EoZSxyKSk7cmV0dXJue3g6byx5OnIudG9wK3Quc2Nyb2xsVG9wfX1sZXQgY2w9bmV3IFNldChbXCJhYnNvbHV0ZVwiLFwiZml4ZWRcIl0pO2Z1bmN0aW9uIGNzKGUsdCxuKXtsZXQgcjtpZihcInZpZXdwb3J0XCI9PT10KXI9ZnVuY3Rpb24oZSx0KXtsZXQgbj1hUChlKSxyPWFJKGUpLG89bi52aXN1YWxWaWV3cG9ydCxhPXIuY2xpZW50V2lkdGgsaT1yLmNsaWVudEhlaWdodCxsPTAscz0wO2lmKG8pe2E9by53aWR0aCxpPW8uaGVpZ2h0O2xldCBlPWEkKCk7KCFlfHxlJiZcImZpeGVkXCI9PT10KSYmKGw9by5vZmZzZXRMZWZ0LHM9by5vZmZzZXRUb3ApfXJldHVybnt3aWR0aDphLGhlaWdodDppLHg6bCx5OnN9fShlLG4pO2Vsc2UgaWYoXCJkb2N1bWVudFwiPT09dClyPWZ1bmN0aW9uKGUpe2xldCB0PWFJKGUpLG49YVgoZSkscj1lLm93bmVyRG9jdW1lbnQuYm9keSxvPWlZKHQuc2Nyb2xsV2lkdGgsdC5jbGllbnRXaWR0aCxyLnNjcm9sbFdpZHRoLHIuY2xpZW50V2lkdGgpLGE9aVkodC5zY3JvbGxIZWlnaHQsdC5jbGllbnRIZWlnaHQsci5zY3JvbGxIZWlnaHQsci5jbGllbnRIZWlnaHQpLGk9LW4uc2Nyb2xsTGVmdCtjYShlKSxsPS1uLnNjcm9sbFRvcDtyZXR1cm5cInJ0bFwiPT09YUsocikuZGlyZWN0aW9uJiYoaSs9aVkodC5jbGllbnRXaWR0aCxyLmNsaWVudFdpZHRoKS1vKSx7d2lkdGg6byxoZWlnaHQ6YSx4OmkseTpsfX0oYUkoZSkpO2Vsc2UgaWYoYVQodCkpcj1mdW5jdGlvbihlLHQpe2xldCBuPWNvKGUsITAsXCJmaXhlZFwiPT09dCkscj1uLnRvcCtlLmNsaWVudFRvcCxvPW4ubGVmdCtlLmNsaWVudExlZnQsYT1hRChlKT9jdChlKTppRygxKSxpPWUuY2xpZW50V2lkdGgqYS54LGw9ZS5jbGllbnRIZWlnaHQqYS55LHM9byphLng7cmV0dXJue3dpZHRoOmksaGVpZ2h0OmwseDpzLHk6ciphLnl9fSh0LG4pO2Vsc2V7bGV0IG49Y3IoZSk7cj17eDp0Lngtbi54LHk6dC55LW4ueSx3aWR0aDp0LndpZHRoLGhlaWdodDp0LmhlaWdodH19cmV0dXJuIGxvKHIpfWZ1bmN0aW9uIGNjKGUpe3JldHVyblwic3RhdGljXCI9PT1hSyhlKS5wb3NpdGlvbn1mdW5jdGlvbiBjdShlLHQpe2lmKCFhRChlKXx8XCJmaXhlZFwiPT09YUsoZSkucG9zaXRpb24pcmV0dXJuIG51bGw7aWYodClyZXR1cm4gdChlKTtsZXQgbj1lLm9mZnNldFBhcmVudDtyZXR1cm4gYUkoZSk9PT1uJiYobj1uLm93bmVyRG9jdW1lbnQuYm9keSksbn1mdW5jdGlvbiBjZChlLHQpe3ZhciBuO2xldCByPWFQKGUpO2lmKGFVKGUpKXJldHVybiByO2lmKCFhRChlKSl7bGV0IHQ9YUcoZSk7Zm9yKDt0JiYhYVkodCk7KXtpZihhVCh0KSYmIWNjKHQpKXJldHVybiB0O3Q9YUcodCl9cmV0dXJuIHJ9bGV0IG89Y3UoZSx0KTtmb3IoO28mJihuPW8sYU0uaGFzKGFCKG4pKSkmJmNjKG8pOylvPWN1KG8sdCk7cmV0dXJuIG8mJmFZKG8pJiZjYyhvKSYmIWFWKG8pP3I6b3x8ZnVuY3Rpb24oZSl7bGV0IHQ9YUcoZSk7Zm9yKDthRCh0KSYmIWFZKHQpOyl7aWYoYVYodCkpcmV0dXJuIHQ7aWYoYVUodCkpYnJlYWs7dD1hRyh0KX1yZXR1cm4gbnVsbH0oZSl8fHJ9bGV0IGNmPWFzeW5jIGZ1bmN0aW9uKGUpe2xldCB0PXRoaXMuZ2V0T2Zmc2V0UGFyZW50fHxjZCxuPXRoaXMuZ2V0RGltZW5zaW9ucyxyPWF3YWl0IG4oZS5mbG9hdGluZyk7cmV0dXJue3JlZmVyZW5jZTpmdW5jdGlvbihlLHQsbil7bGV0IHI9YUQodCksbz1hSSh0KSxhPVwiZml4ZWRcIj09PW4saT1jbyhlLCEwLGEsdCksbD17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowfSxzPWlHKDApO2lmKHJ8fCFyJiYhYSlpZigoXCJib2R5XCIhPT1hQih0KXx8YVIobykpJiYobD1hWCh0KSkscil7bGV0IGU9Y28odCwhMCxhLHQpO3MueD1lLngrdC5jbGllbnRMZWZ0LHMueT1lLnkrdC5jbGllbnRUb3B9ZWxzZSBvJiYocy54PWNhKG8pKTthJiYhciYmbyYmKHMueD1jYShvKSk7bGV0IGM9IW98fHJ8fGE/aUcoMCk6Y2kobyxsKSx1PWkubGVmdCtsLnNjcm9sbExlZnQtcy54LWMueDtyZXR1cm57eDp1LHk6aS50b3ArbC5zY3JvbGxUb3Atcy55LWMueSx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH19KGUucmVmZXJlbmNlLGF3YWl0IHQoZS5mbG9hdGluZyksZS5zdHJhdGVneSksZmxvYXRpbmc6e3g6MCx5OjAsd2lkdGg6ci53aWR0aCxoZWlnaHQ6ci5oZWlnaHR9fX0sY3A9e2NvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0OmZ1bmN0aW9uKGUpe2xldHtlbGVtZW50czp0LHJlY3Q6bixvZmZzZXRQYXJlbnQ6cixzdHJhdGVneTpvfT1lLGE9XCJmaXhlZFwiPT09byxpPWFJKHIpLGw9ISF0JiZhVSh0LmZsb2F0aW5nKTtpZihyPT09aXx8bCYmYSlyZXR1cm4gbjtsZXQgcz17c2Nyb2xsTGVmdDowLHNjcm9sbFRvcDowfSxjPWlHKDEpLHU9aUcoMCksZD1hRChyKTtpZigoZHx8IWQmJiFhKSYmKChcImJvZHlcIiE9PWFCKHIpfHxhUihpKSkmJihzPWFYKHIpKSxhRChyKSkpe2xldCBlPWNvKHIpO2M9Y3QociksdS54PWUueCtyLmNsaWVudExlZnQsdS55PWUueStyLmNsaWVudFRvcH1sZXQgZj0haXx8ZHx8YT9pRygwKTpjaShpLHMsITApO3JldHVybnt3aWR0aDpuLndpZHRoKmMueCxoZWlnaHQ6bi5oZWlnaHQqYy55LHg6bi54KmMueC1zLnNjcm9sbExlZnQqYy54K3UueCtmLngseTpuLnkqYy55LXMuc2Nyb2xsVG9wKmMueSt1LnkrZi55fX0sZ2V0RG9jdW1lbnRFbGVtZW50OmFJLGdldENsaXBwaW5nUmVjdDpmdW5jdGlvbihlKXtsZXR7ZWxlbWVudDp0LGJvdW5kYXJ5Om4scm9vdEJvdW5kYXJ5OnIsc3RyYXRlZ3k6b309ZSxhPVsuLi5cImNsaXBwaW5nQW5jZXN0b3JzXCI9PT1uP2FVKHQpP1tdOmZ1bmN0aW9uKGUsdCl7bGV0IG49dC5nZXQoZSk7aWYobilyZXR1cm4gbjtsZXQgcj1hUShlLFtdLCExKS5maWx0ZXIoZT0+YVQoZSkmJlwiYm9keVwiIT09YUIoZSkpLG89bnVsbCxhPVwiZml4ZWRcIj09PWFLKGUpLnBvc2l0aW9uLGk9YT9hRyhlKTplO2Zvcig7YVQoaSkmJiFhWShpKTspe2xldCB0PWFLKGkpLG49YVYoaSk7bnx8XCJmaXhlZFwiIT09dC5wb3NpdGlvbnx8KG89bnVsbCksKGE/IW4mJiFvOiFuJiZcInN0YXRpY1wiPT09dC5wb3NpdGlvbiYmISFvJiZjbC5oYXMoby5wb3NpdGlvbil8fGFSKGkpJiYhbiYmZnVuY3Rpb24gZSh0LG4pe2xldCByPWFHKHQpO3JldHVybiEocj09PW58fCFhVChyKXx8YVkocikpJiYoXCJmaXhlZFwiPT09YUsocikucG9zaXRpb258fGUocixuKSl9KGUsaSkpP3I9ci5maWx0ZXIoZT0+ZSE9PWkpOm89dCxpPWFHKGkpfXJldHVybiB0LnNldChlLHIpLHJ9KHQsdGhpcy5fYyk6W10uY29uY2F0KG4pLHJdLGk9YVswXSxsPWEucmVkdWNlKChlLG4pPT57bGV0IHI9Y3ModCxuLG8pO3JldHVybiBlLnRvcD1pWShyLnRvcCxlLnRvcCksZS5yaWdodD1pVyhyLnJpZ2h0LGUucmlnaHQpLGUuYm90dG9tPWlXKHIuYm90dG9tLGUuYm90dG9tKSxlLmxlZnQ9aVkoci5sZWZ0LGUubGVmdCksZX0sY3ModCxpLG8pKTtyZXR1cm57d2lkdGg6bC5yaWdodC1sLmxlZnQsaGVpZ2h0OmwuYm90dG9tLWwudG9wLHg6bC5sZWZ0LHk6bC50b3B9fSxnZXRPZmZzZXRQYXJlbnQ6Y2QsZ2V0RWxlbWVudFJlY3RzOmNmLGdldENsaWVudFJlY3RzOmZ1bmN0aW9uKGUpe3JldHVybiBBcnJheS5mcm9tKGUuZ2V0Q2xpZW50UmVjdHMoKSl9LGdldERpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7bGV0e3dpZHRoOnQsaGVpZ2h0Om59PXM3KGUpO3JldHVybnt3aWR0aDp0LGhlaWdodDpufX0sZ2V0U2NhbGU6Y3QsaXNFbGVtZW50OmFULGlzUlRMOmZ1bmN0aW9uKGUpe3JldHVyblwicnRsXCI9PT1hSyhlKS5kaXJlY3Rpb259fTtmdW5jdGlvbiBjaChlLHQpe3JldHVybiBlLng9PT10LngmJmUueT09PXQueSYmZS53aWR0aD09PXQud2lkdGgmJmUuaGVpZ2h0PT09dC5oZWlnaHR9ZnVuY3Rpb24gY20oZSx0LG4scil7bGV0IG87dm9pZCAwPT09ciYmKHI9e30pO2xldHthbmNlc3RvclNjcm9sbDphPSEwLGFuY2VzdG9yUmVzaXplOmk9ITAsZWxlbWVudFJlc2l6ZTpsPVwiZnVuY3Rpb25cIj09dHlwZW9mIFJlc2l6ZU9ic2VydmVyLGxheW91dFNoaWZ0OnM9XCJmdW5jdGlvblwiPT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsYW5pbWF0aW9uRnJhbWU6Yz0hMX09cix1PWNlKGUpLGQ9YXx8aT9bLi4udT9hUSh1KTpbXSwuLi5hUSh0KV06W107ZC5mb3JFYWNoKGU9PnthJiZlLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixuLHtwYXNzaXZlOiEwfSksaSYmZS5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsbil9KTtsZXQgZj11JiZzP2Z1bmN0aW9uKGUsdCl7bGV0IG4scj1udWxsLG89YUkoZSk7ZnVuY3Rpb24gYSgpe3ZhciBlO2NsZWFyVGltZW91dChuKSxudWxsPT0oZT1yKXx8ZS5kaXNjb25uZWN0KCkscj1udWxsfXJldHVybiFmdW5jdGlvbiBpKGwscyl7dm9pZCAwPT09bCYmKGw9ITEpLHZvaWQgMD09PXMmJihzPTEpLGEoKTtsZXQgYz1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHtsZWZ0OnUsdG9wOmQsd2lkdGg6ZixoZWlnaHQ6cH09YztpZihsfHx0KCksIWZ8fCFwKXJldHVybjtsZXQgaD1pWChkKSxtPWlYKG8uY2xpZW50V2lkdGgtKHUrZikpLGc9aVgoby5jbGllbnRIZWlnaHQtKGQrcCkpLHk9e3Jvb3RNYXJnaW46LWgrXCJweCBcIistbStcInB4IFwiKy1nK1wicHggXCIrLWlYKHUpK1wicHhcIix0aHJlc2hvbGQ6aVkoMCxpVygxLHMpKXx8MX0sdj0hMDtmdW5jdGlvbiBiKHQpe2xldCByPXRbMF0uaW50ZXJzZWN0aW9uUmF0aW87aWYociE9PXMpe2lmKCF2KXJldHVybiBpKCk7cj9pKCExLHIpOm49c2V0VGltZW91dCgoKT0+e2koITEsMWUtNyl9LDFlMyl9MSE9PXJ8fGNoKGMsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSl8fGkoKSx2PSExfXRyeXtyPW5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihiLHsuLi55LHJvb3Q6by5vd25lckRvY3VtZW50fSl9Y2F0Y2goZSl7cj1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoYix5KX1yLm9ic2VydmUoZSl9KCEwKSxhfSh1LG4pOm51bGwscD0tMSxoPW51bGw7bCYmKGg9bmV3IFJlc2l6ZU9ic2VydmVyKGU9PntsZXRbcl09ZTtyJiZyLnRhcmdldD09PXUmJmgmJihoLnVub2JzZXJ2ZSh0KSxjYW5jZWxBbmltYXRpb25GcmFtZShwKSxwPXJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3ZhciBlO251bGw9PShlPWgpfHxlLm9ic2VydmUodCl9KSksbigpfSksdSYmIWMmJmgub2JzZXJ2ZSh1KSxoLm9ic2VydmUodCkpO2xldCBtPWM/Y28oZSk6bnVsbDtyZXR1cm4gYyYmZnVuY3Rpb24gdCgpe2xldCByPWNvKGUpO20mJiFjaChtLHIpJiZuKCksbT1yLG89cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpfSgpLG4oKSwoKT0+e3ZhciBlO2QuZm9yRWFjaChlPT57YSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsbiksaSYmZS5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsbil9KSxudWxsPT1mfHxmKCksbnVsbD09KGU9aCl8fGUuZGlzY29ubmVjdCgpLGg9bnVsbCxjJiZjYW5jZWxBbmltYXRpb25GcmFtZShvKX19dmFyIGNnPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCxjeT1jZz94LnVzZUxheW91dEVmZmVjdDpmdW5jdGlvbigpe307ZnVuY3Rpb24gY3YoZSx0KXtsZXQgbixyLG87aWYoZT09PXQpcmV0dXJuITA7aWYodHlwZW9mIGUhPXR5cGVvZiB0KXJldHVybiExO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJmUudG9TdHJpbmcoKT09PXQudG9TdHJpbmcoKSlyZXR1cm4hMDtpZihlJiZ0JiZcIm9iamVjdFwiPT10eXBlb2YgZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7aWYoKG49ZS5sZW5ndGgpIT09dC5sZW5ndGgpcmV0dXJuITE7Zm9yKHI9bjswIT1yLS07KWlmKCFjdihlW3JdLHRbcl0pKXJldHVybiExO3JldHVybiEwfWlmKChuPShvPU9iamVjdC5rZXlzKGUpKS5sZW5ndGgpIT09T2JqZWN0LmtleXModCkubGVuZ3RoKXJldHVybiExO2ZvcihyPW47MCE9ci0tOylpZighKHt9KS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsb1tyXSkpcmV0dXJuITE7Zm9yKHI9bjswIT1yLS07KXtsZXQgbj1vW3JdO2lmKChcIl9vd25lclwiIT09bnx8IWUuJCR0eXBlb2YpJiYhY3YoZVtuXSx0W25dKSlyZXR1cm4hMX1yZXR1cm4hMH1yZXR1cm4gZSE9ZSYmdCE9dH1mdW5jdGlvbiBjYihlKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2Ygd2luZG93PzE6KGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld3x8d2luZG93KS5kZXZpY2VQaXhlbFJhdGlvfHwxfWZ1bmN0aW9uIGNBKGUsdCl7bGV0IG49Y2IoZSk7cmV0dXJuIE1hdGgucm91bmQodCpuKS9ufWZ1bmN0aW9uIGN4KGUpe2xldCB0PXgudXNlUmVmKGUpO3JldHVybiBjeSgoKT0+e3QuY3VycmVudD1lfSksdH1mdW5jdGlvbiBjdyhlLHQsbil7bGV0IHI9XCJpbmxpbmUtc3RhcnRcIj09PWV8fFwiaW5saW5lLWVuZFwiPT09ZTtyZXR1cm4oe3RvcDpcInRvcFwiLHJpZ2h0OnI/bj9cImlubGluZS1zdGFydFwiOlwiaW5saW5lLWVuZFwiOlwicmlnaHRcIixib3R0b206XCJib3R0b21cIixsZWZ0OnI/bj9cImlubGluZS1lbmRcIjpcImlubGluZS1zdGFydFwiOlwibGVmdFwifSlbdF19ZnVuY3Rpb24gY0MoZSx0LG4pe2xldHtyZWN0czpyLHBsYWNlbWVudDpvfT1lO3JldHVybntzaWRlOmN3KHQsaTEobyksbiksYWxpZ246aTIobyl8fFwiY2VudGVyXCIsYW5jaG9yOnt3aWR0aDpyLnJlZmVyZW5jZS53aWR0aCxoZWlnaHQ6ci5yZWZlcmVuY2UuaGVpZ2h0fSxwb3NpdGlvbmVyOnt3aWR0aDpyLmZsb2F0aW5nLndpZHRoLGhlaWdodDpyLmZsb2F0aW5nLmhlaWdodH19fWZ1bmN0aW9uIGNfKGUpe3ZhciB0LG4scixvLGE7bGV0IGksbCxzLGMsdSxkLGYscCxoLG0sZyx5LHYse2FuY2hvcjpiLHBvc2l0aW9uTWV0aG9kOkE9XCJhYnNvbHV0ZVwiLHNpZGU6dz1cImJvdHRvbVwiLHNpZGVPZmZzZXQ6Qz0wLGFsaWduOl89XCJjZW50ZXJcIixhbGlnbk9mZnNldDprPTAsY29sbGlzaW9uQm91bmRhcnk6RSxjb2xsaXNpb25QYWRkaW5nOmo9NSxzdGlja3k6Uz0hMSxhcnJvd1BhZGRpbmc6Tz01LHRyYWNrQW5jaG9yOkI9ITAsa2VlcE1vdW50ZWQ6UD0hMSxmbG9hdGluZ1Jvb3RDb250ZXh0OkksbW91bnRlZDp6LGNvbGxpc2lvbkF2b2lkYW5jZTpULHNoaWZ0Q3Jvc3NBeGlzOkQ9ITEsbm9kZUlkOkwsYWRhcHRpdmVPcmlnaW46Tn09ZSxSPVQuc2lkZXx8XCJmbGlwXCIsTT1ULmFsaWdufHxcImZsaXBcIixaPVQuZmFsbGJhY2tBeGlzU2lkZXx8XCJlbmRcIixVPVwiZnVuY3Rpb25cIj09dHlwZW9mIGI/Yjp2b2lkIDAsRj1hZihVKSxxPVU/RjpiLEg9YTAoYiksVj1cInJ0bFwiPT09bGsoKSwkPXt0b3A6XCJ0b3BcIixyaWdodDpcInJpZ2h0XCIsYm90dG9tOlwiYm90dG9tXCIsbGVmdDpcImxlZnRcIixcImlubGluZS1lbmRcIjpWP1wibGVmdFwiOlwicmlnaHRcIixcImlubGluZS1zdGFydFwiOlY/XCJyaWdodFwiOlwibGVmdFwifVt3XSxXPVwiY2VudGVyXCI9PT1fPyQ6YCR7JH0tJHtffWAsWT17Ym91bmRhcnk6XCJjbGlwcGluZy1hbmNlc3RvcnNcIj09PUU/XCJjbGlwcGluZ0FuY2VzdG9yc1wiOkUscGFkZGluZzpqfSxLPXgudXNlUmVmKG51bGwpLFg9YTAoQyksRz1hMChrKSxRPVwiZnVuY3Rpb25cIiE9dHlwZW9mIEM/QzowLEo9WyhpPWU9PntsZXQgdD1jQyhlLHcsViksbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBYLmN1cnJlbnQ/WC5jdXJyZW50KHQpOlguY3VycmVudCxyPVwiZnVuY3Rpb25cIj09dHlwZW9mIEcuY3VycmVudD9HLmN1cnJlbnQodCk6Ry5jdXJyZW50O3JldHVybnttYWluQXhpczpuLGNyb3NzQXhpczpyLGFsaWdubWVudEF4aXM6cn19LGw9W1EsXCJmdW5jdGlvblwiIT10eXBlb2Ygaz9rOjAsVix3XSx7Li4uKHZvaWQgMD09PSh0PWkpJiYodD0wKSx7bmFtZTpcIm9mZnNldFwiLG9wdGlvbnM6dCxhc3luYyBmbihlKXt2YXIgbixyO2xldHt4Om8seTphLHBsYWNlbWVudDppLG1pZGRsZXdhcmVEYXRhOmx9PWUscz1hd2FpdCBzOChlLHQpO3JldHVybiBpPT09KG51bGw9PShuPWwub2Zmc2V0KT92b2lkIDA6bi5wbGFjZW1lbnQpJiZudWxsIT0ocj1sLmFycm93KSYmci5hbGlnbm1lbnRPZmZzZXQ/e306e3g6bytzLngseTphK3MueSxkYXRhOnsuLi5zLHBsYWNlbWVudDppfX19fSksb3B0aW9uczpbaSxsXX0pXSxlZT1cIm5vbmVcIj09PU0mJlwic2hpZnRcIiE9PVIsZXQ9IWVlJiYoU3x8RHx8XCJzaGlmdFwiPT09UiksZW49XCJub25lXCI9PT1SP251bGw6ey4uLntuYW1lOlwiZmxpcFwiLG9wdGlvbnM6bj1zPXsuLi5ZLG1haW5BeGlzOiFEJiZcImZsaXBcIj09PVIsY3Jvc3NBeGlzOlwiZmxpcFwiPT09TSYmXCJhbGlnbm1lbnRcIixmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uOlp9LGFzeW5jIGZuKGUpe3ZhciB0LHIsbyxhLGk7bGV0e3BsYWNlbWVudDpsLG1pZGRsZXdhcmVEYXRhOnMscmVjdHM6Yyxpbml0aWFsUGxhY2VtZW50OnUscGxhdGZvcm06ZCxlbGVtZW50czpmfT1lLHttYWluQXhpczpwPSEwLGNyb3NzQXhpczpoPSEwLGZhbGxiYWNrUGxhY2VtZW50czptLGZhbGxiYWNrU3RyYXRlZ3k6Zz1cImJlc3RGaXRcIixmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uOnk9XCJub25lXCIsZmxpcEFsaWdubWVudDp2PSEwLC4uLmJ9PWkwKG4sZSk7aWYobnVsbCE9KHQ9cy5hcnJvdykmJnQuYWxpZ25tZW50T2Zmc2V0KXJldHVybnt9O2xldCBBPWkxKGwpLHg9aTYodSksdz1pMSh1KT09PXUsQz1hd2FpdCAobnVsbD09ZC5pc1JUTD92b2lkIDA6ZC5pc1JUTChmLmZsb2F0aW5nKSksXz1tfHwod3x8IXY/W2xuKHUpXTpmdW5jdGlvbihlKXtsZXQgdD1sbihlKTtyZXR1cm5baTkoZSksdCxpOSh0KV19KHUpKSxrPVwibm9uZVwiIT09eTshbSYmayYmXy5wdXNoKC4uLmZ1bmN0aW9uKGUsdCxuLHIpe2xldCBvPWkyKGUpLGE9ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaChlKXtjYXNlXCJ0b3BcIjpjYXNlXCJib3R0b21cIjppZihuKXJldHVybiB0P2k3Omk4O3JldHVybiB0P2k4Omk3O2Nhc2VcImxlZnRcIjpjYXNlXCJyaWdodFwiOnJldHVybiB0P2xlOmx0O2RlZmF1bHQ6cmV0dXJuW119fShpMShlKSxcInN0YXJ0XCI9PT1uLHIpO3JldHVybiBvJiYoYT1hLm1hcChlPT5lK1wiLVwiK28pLHQmJihhPWEuY29uY2F0KGEubWFwKGk5KSkpKSxhfSh1LHYseSxDKSk7bGV0IEU9W3UsLi4uX10saj1hd2FpdCBzNShlLGIpLFM9W10sTz0obnVsbD09KHI9cy5mbGlwKT92b2lkIDA6ci5vdmVyZmxvd3MpfHxbXTtpZihwJiZTLnB1c2goaltBXSksaCl7bGV0IGU9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPSExKTtsZXQgcj1pMihlKSxvPWk0KGk2KGUpKSxhPWk1KG8pLGk9XCJ4XCI9PT1vP3I9PT0obj9cImVuZFwiOlwic3RhcnRcIik/XCJyaWdodFwiOlwibGVmdFwiOlwic3RhcnRcIj09PXI/XCJib3R0b21cIjpcInRvcFwiO3JldHVybiB0LnJlZmVyZW5jZVthXT50LmZsb2F0aW5nW2FdJiYoaT1sbihpKSksW2ksbG4oaSldfShsLGMsQyk7Uy5wdXNoKGpbZVswXV0saltlWzFdXSl9aWYoTz1bLi4uTyx7cGxhY2VtZW50Omwsb3ZlcmZsb3dzOlN9XSwhUy5ldmVyeShlPT5lPD0wKSl7bGV0IGU9KChudWxsPT0obz1zLmZsaXApP3ZvaWQgMDpvLmluZGV4KXx8MCkrMSx0PUVbZV07aWYodCYmKFwiYWxpZ25tZW50XCIhPT1ofHx4PT09aTYodCl8fE8uZXZlcnkoZT0+aTYoZS5wbGFjZW1lbnQpIT09eHx8ZS5vdmVyZmxvd3NbMF0+MCkpKXJldHVybntkYXRhOntpbmRleDplLG92ZXJmbG93czpPfSxyZXNldDp7cGxhY2VtZW50OnR9fTtsZXQgbj1udWxsPT0oYT1PLmZpbHRlcihlPT5lLm92ZXJmbG93c1swXTw9MCkuc29ydCgoZSx0KT0+ZS5vdmVyZmxvd3NbMV0tdC5vdmVyZmxvd3NbMV0pWzBdKT92b2lkIDA6YS5wbGFjZW1lbnQ7aWYoIW4pc3dpdGNoKGcpe2Nhc2VcImJlc3RGaXRcIjp7bGV0IGU9bnVsbD09KGk9Ty5maWx0ZXIoZT0+e2lmKGspe2xldCB0PWk2KGUucGxhY2VtZW50KTtyZXR1cm4gdD09PXh8fFwieVwiPT09dH1yZXR1cm4hMH0pLm1hcChlPT5bZS5wbGFjZW1lbnQsZS5vdmVyZmxvd3MuZmlsdGVyKGU9PmU+MCkucmVkdWNlKChlLHQpPT5lK3QsMCldKS5zb3J0KChlLHQpPT5lWzFdLXRbMV0pWzBdKT92b2lkIDA6aVswXTtlJiYobj1lKTticmVha31jYXNlXCJpbml0aWFsUGxhY2VtZW50XCI6bj11fWlmKGwhPT1uKXJldHVybntyZXNldDp7cGxhY2VtZW50Om59fX1yZXR1cm57fX19LG9wdGlvbnM6W3MsY119LGVyPWVlP251bGw6KHU9ZT0+e3ZhciB0O2xldCBuLHIsbz1sRShlLmVsZW1lbnRzLmZsb2F0aW5nKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuey4uLlkscm9vdEJvdW5kYXJ5OkQ/e3g6MCx5OjAsd2lkdGg6by5jbGllbnRXaWR0aCxoZWlnaHQ6by5jbGllbnRIZWlnaHR9OnZvaWQgMCxtYWluQXhpczpcIm5vbmVcIiE9PU0sY3Jvc3NBeGlzOmV0LGxpbWl0ZXI6U3x8RD92b2lkIDA6ey4uLih2b2lkIDA9PT0odD1uPSgpPT57aWYoIUsuY3VycmVudClyZXR1cm57fTtsZXR7aGVpZ2h0OmV9PUsuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm57b2Zmc2V0OmUvMisoXCJudW1iZXJcIj09dHlwZW9mIGo/ajowKX19KSYmKHQ9e30pLHtvcHRpb25zOnQsZm4oZSl7bGV0e3g6bix5OnIscGxhY2VtZW50Om8scmVjdHM6YSxtaWRkbGV3YXJlRGF0YTppfT1lLHtvZmZzZXQ6bD0wLG1haW5BeGlzOnM9ITAsY3Jvc3NBeGlzOmM9ITB9PWkwKHQsZSksdT17eDpuLHk6cn0sZD1pNihvKSxmPWk0KGQpLHA9dVtmXSxoPXVbZF0sbT1pMChsLGUpLGc9XCJudW1iZXJcIj09dHlwZW9mIG0/e21haW5BeGlzOm0sY3Jvc3NBeGlzOjB9OnttYWluQXhpczowLGNyb3NzQXhpczowLC4uLm19O2lmKHMpe2xldCBlPVwieVwiPT09Zj9cImhlaWdodFwiOlwid2lkdGhcIix0PWEucmVmZXJlbmNlW2ZdLWEuZmxvYXRpbmdbZV0rZy5tYWluQXhpcyxuPWEucmVmZXJlbmNlW2ZdK2EucmVmZXJlbmNlW2VdLWcubWFpbkF4aXM7cDx0P3A9dDpwPm4mJihwPW4pfWlmKGMpe3ZhciB5LHY7bGV0IGU9XCJ5XCI9PT1mP1wid2lkdGhcIjpcImhlaWdodFwiLHQ9czkuaGFzKGkxKG8pKSxuPWEucmVmZXJlbmNlW2RdLWEuZmxvYXRpbmdbZV0rKHQmJihudWxsPT0oeT1pLm9mZnNldCk/dm9pZCAwOnlbZF0pfHwwKSsodD8wOmcuY3Jvc3NBeGlzKSxyPWEucmVmZXJlbmNlW2RdK2EucmVmZXJlbmNlW2VdKyh0PzA6KG51bGw9PSh2PWkub2Zmc2V0KT92b2lkIDA6dltkXSl8fDApLSh0P2cuY3Jvc3NBeGlzOjApO2g8bj9oPW46aD5yJiYoaD1yKX1yZXR1cm57W2ZdOnAsW2RdOmh9fX0pLG9wdGlvbnM6W24scl19fX0sZD1bWSxTLEQsaixNXSx7Li4uKHZvaWQgMD09PShyPXUpJiYocj17fSkse25hbWU6XCJzaGlmdFwiLG9wdGlvbnM6cixhc3luYyBmbihlKXtsZXR7eDp0LHk6bixwbGFjZW1lbnQ6b309ZSx7bWFpbkF4aXM6YT0hMCxjcm9zc0F4aXM6aT0hMSxsaW1pdGVyOmw9e2ZuOmU9PntsZXR7eDp0LHk6bn09ZTtyZXR1cm57eDp0LHk6bn19fSwuLi5zfT1pMChyLGUpLGM9e3g6dCx5Om59LHU9YXdhaXQgczUoZSxzKSxkPWk2KGkxKG8pKSxmPWk0KGQpLHA9Y1tmXSxoPWNbZF07aWYoYSl7bGV0IGU9XCJ5XCI9PT1mP1widG9wXCI6XCJsZWZ0XCIsdD1cInlcIj09PWY/XCJib3R0b21cIjpcInJpZ2h0XCIsbj1wK3VbZV0scj1wLXVbdF07cD1pWShuLGlXKHAscikpfWlmKGkpe2xldCBlPVwieVwiPT09ZD9cInRvcFwiOlwibGVmdFwiLHQ9XCJ5XCI9PT1kP1wiYm90dG9tXCI6XCJyaWdodFwiLG49aCt1W2VdLHI9aC11W3RdO2g9aVkobixpVyhoLHIpKX1sZXQgbT1sLmZuKHsuLi5lLFtmXTpwLFtkXTpofSk7cmV0dXJuey4uLm0sZGF0YTp7eDptLngtdCx5Om0ueS1uLGVuYWJsZWQ6e1tmXTphLFtkXTppfX19fX0pLG9wdGlvbnM6W3UsZF19KTtcInNoaWZ0XCI9PT1SfHxcInNoaWZ0XCI9PT1NfHxcImNlbnRlclwiPT09Xz9KLnB1c2goZXIsZW4pOkoucHVzaChlbixlciksSi5wdXNoKHsuLi57bmFtZTpcInNpemVcIixvcHRpb25zOm89Zj17Li4uWSxhcHBseSh7ZWxlbWVudHM6e2Zsb2F0aW5nOmV9LHJlY3RzOntyZWZlcmVuY2U6dH0sYXZhaWxhYmxlV2lkdGg6bixhdmFpbGFibGVIZWlnaHQ6cn0pe09iamVjdC5lbnRyaWVzKHtcIi0tYXZhaWxhYmxlLXdpZHRoXCI6YCR7bn1weGAsXCItLWF2YWlsYWJsZS1oZWlnaHRcIjpgJHtyfXB4YCxcIi0tYW5jaG9yLXdpZHRoXCI6YCR7dC53aWR0aH1weGAsXCItLWFuY2hvci1oZWlnaHRcIjpgJHt0LmhlaWdodH1weGB9KS5mb3JFYWNoKChbdCxuXSk9PntlLnN0eWxlLnNldFByb3BlcnR5KHQsbil9KX19LGFzeW5jIGZuKGUpe3ZhciB0LG47bGV0IHIsYSx7cGxhY2VtZW50OmkscmVjdHM6bCxwbGF0Zm9ybTpzLGVsZW1lbnRzOmN9PWUse2FwcGx5OnU9KCk9Pnt9LC4uLmR9PWkwKG8sZSksZj1hd2FpdCBzNShlLGQpLHA9aTEoaSksaD1pMihpKSxtPVwieVwiPT09aTYoaSkse3dpZHRoOmcsaGVpZ2h0Onl9PWwuZmxvYXRpbmc7XCJ0b3BcIj09PXB8fFwiYm90dG9tXCI9PT1wPyhyPXAsYT1oPT09KGF3YWl0IChudWxsPT1zLmlzUlRMP3ZvaWQgMDpzLmlzUlRMKGMuZmxvYXRpbmcpKT9cInN0YXJ0XCI6XCJlbmRcIik/XCJsZWZ0XCI6XCJyaWdodFwiKTooYT1wLHI9XCJlbmRcIj09PWg/XCJ0b3BcIjpcImJvdHRvbVwiKTtsZXQgdj15LWYudG9wLWYuYm90dG9tLGI9Zy1mLmxlZnQtZi5yaWdodCxBPWlXKHktZltyXSx2KSx4PWlXKGctZlthXSxiKSx3PSFlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0LEM9QSxfPXg7aWYobnVsbCE9KHQ9ZS5taWRkbGV3YXJlRGF0YS5zaGlmdCkmJnQuZW5hYmxlZC54JiYoXz1iKSxudWxsIT0obj1lLm1pZGRsZXdhcmVEYXRhLnNoaWZ0KSYmbi5lbmFibGVkLnkmJihDPXYpLHcmJiFoKXtsZXQgZT1pWShmLmxlZnQsMCksdD1pWShmLnJpZ2h0LDApLG49aVkoZi50b3AsMCkscj1pWShmLmJvdHRvbSwwKTttP189Zy0yKigwIT09ZXx8MCE9PXQ/ZSt0OmlZKGYubGVmdCxmLnJpZ2h0KSk6Qz15LTIqKDAhPT1ufHwwIT09cj9uK3I6aVkoZi50b3AsZi5ib3R0b20pKX1hd2FpdCB1KHsuLi5lLGF2YWlsYWJsZVdpZHRoOl8sYXZhaWxhYmxlSGVpZ2h0OkN9KTtsZXQgaz1hd2FpdCBzLmdldERpbWVuc2lvbnMoYy5mbG9hdGluZyk7cmV0dXJuIGchPT1rLndpZHRofHx5IT09ay5oZWlnaHQ/e3Jlc2V0OntyZWN0czohMH19Ont9fX0sb3B0aW9uczpbZixwXX0sKGg9KCk9Pih7ZWxlbWVudDpLLmN1cnJlbnR8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikscGFkZGluZzpPLG9mZnNldFBhcmVudDpcImZsb2F0aW5nXCJ9KSxtPVtPXSx7Li4ue25hbWU6XCJhcnJvd1wiLG9wdGlvbnM6Zz1oLGFzeW5jIGZuKGUpe2xldHt4OnQseTpuLHBsYWNlbWVudDpyLHJlY3RzOm8scGxhdGZvcm06YSxlbGVtZW50czppLG1pZGRsZXdhcmVEYXRhOmx9PWUse2VsZW1lbnQ6cyxwYWRkaW5nOmM9MCxvZmZzZXRQYXJlbnQ6dT1cInJlYWxcIn09aTAoZyxlKXx8e307aWYobnVsbD09cylyZXR1cm57fTtsZXQgZD1scihjKSxmPXt4OnQseTpufSxwPWk0KGk2KHIpKSxoPWk1KHApLG09YXdhaXQgYS5nZXREaW1lbnNpb25zKHMpLHk9XCJ5XCI9PT1wLHY9eT9cImNsaWVudEhlaWdodFwiOlwiY2xpZW50V2lkdGhcIixiPW8ucmVmZXJlbmNlW2hdK28ucmVmZXJlbmNlW3BdLWZbcF0tby5mbG9hdGluZ1toXSxBPWZbcF0tby5yZWZlcmVuY2VbcF0seD1cInJlYWxcIj09PXU/YXdhaXQgYS5nZXRPZmZzZXRQYXJlbnQ/LihzKTppLmZsb2F0aW5nLHc9aS5mbG9hdGluZ1t2XXx8by5mbG9hdGluZ1toXTt3JiZhd2FpdCBhLmlzRWxlbWVudD8uKHgpfHwodz1pLmZsb2F0aW5nW3ZdfHxvLmZsb2F0aW5nW2hdKTtsZXQgQz13LzItbVtoXS8yLTEsXz1NYXRoLm1pbihkW3k/XCJ0b3BcIjpcImxlZnRcIl0sQyksaz1NYXRoLm1pbihkW3k/XCJib3R0b21cIjpcInJpZ2h0XCJdLEMpLEU9dy1tW2hdLWssaj13LzItbVtoXS8yKyhiLzItQS8yKSxTPWlZKF8saVcoaixFKSksTz0hbC5hcnJvdyYmbnVsbCE9aTIocikmJmohPT1TJiZvLnJlZmVyZW5jZVtoXS8yLShqPF8/XzprKS1tW2hdLzI8MCxCPU8/ajxfP2otXzpqLUU6MDtyZXR1cm57W3BdOmZbcF0rQixkYXRhOntbcF06UyxjZW50ZXJPZmZzZXQ6ai1TLUIsLi4uTyYme2FsaWdubWVudE9mZnNldDpCfX0scmVzZXQ6T319fSxvcHRpb25zOltoLG1dfSksey4uLih2b2lkIDA9PT0oYT15KSYmKGE9e30pLHtuYW1lOlwiaGlkZVwiLG9wdGlvbnM6YSxhc3luYyBmbihlKXtsZXR7cmVjdHM6dH09ZSx7c3RyYXRlZ3k6bj1cInJlZmVyZW5jZUhpZGRlblwiLC4uLnJ9PWkwKGEsZSk7c3dpdGNoKG4pe2Nhc2VcInJlZmVyZW5jZUhpZGRlblwiOntsZXQgbj1zMyhhd2FpdCBzNShlLHsuLi5yLGVsZW1lbnRDb250ZXh0OlwicmVmZXJlbmNlXCJ9KSx0LnJlZmVyZW5jZSk7cmV0dXJue2RhdGE6e3JlZmVyZW5jZUhpZGRlbk9mZnNldHM6bixyZWZlcmVuY2VIaWRkZW46czYobil9fX1jYXNlXCJlc2NhcGVkXCI6e2xldCBuPXMzKGF3YWl0IHM1KGUsey4uLnIsYWx0Qm91bmRhcnk6ITB9KSx0LmZsb2F0aW5nKTtyZXR1cm57ZGF0YTp7ZXNjYXBlZE9mZnNldHM6bixlc2NhcGVkOnM2KG4pfX19ZGVmYXVsdDpyZXR1cm57fX19fSksb3B0aW9uczpbeSx2XX0se25hbWU6XCJ0cmFuc2Zvcm1PcmlnaW5cIixmbihlKXtsZXR7ZWxlbWVudHM6dCxtaWRkbGV3YXJlRGF0YTpuLHBsYWNlbWVudDpyLHJlY3RzOm8seTphfT1lLGk9aTEociksbD1pNihpKSxzPUsuY3VycmVudCxjPW4uYXJyb3c/Lnh8fDAsdT1uLmFycm93Py55fHwwLGQ9cz8uY2xpZW50V2lkdGh8fDAsZj1zPy5jbGllbnRIZWlnaHR8fDAscD1jK2QvMixoPXUrZi8yLG09TWF0aC5hYnMobi5zaGlmdD8ueXx8MCksZz1vLnJlZmVyZW5jZS5oZWlnaHQvMix5PW0+KFwiZnVuY3Rpb25cIj09dHlwZW9mIEM/QyhjQyhlLHcsVikpOkMpLHY9e3RvcDpgJHtwfXB4IGNhbGMoMTAwJSArICR7Q31weClgLGJvdHRvbTpgJHtwfXB4ICR7LUN9cHhgLGxlZnQ6YGNhbGMoMTAwJSArICR7Q31weCkgJHtofXB4YCxyaWdodDpgJHstQ31weCAke2h9cHhgfVtpXSxiPWAke3B9cHggJHtvLnJlZmVyZW5jZS55K2ctYX1weGA7cmV0dXJuIHQuZmxvYXRpbmcuc3R5bGUuc2V0UHJvcGVydHkoXCItLXRyYW5zZm9ybS1vcmlnaW5cIixldCYmXCJ5XCI9PT1sJiZ5P2I6dikse319fSxOKTtsZXQgZW89STsheiYmSSYmKGVvPXsuLi5JLGVsZW1lbnRzOntyZWZlcmVuY2U6bnVsbCxmbG9hdGluZzpudWxsLGRvbVJlZmVyZW5jZTpudWxsfX0pO2xldCBlYT14LnVzZU1lbW8oKCk9Pih7ZWxlbWVudFJlc2l6ZTpCJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgUmVzaXplT2JzZXJ2ZXIsbGF5b3V0U2hpZnQ6QiYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEludGVyc2VjdGlvbk9ic2VydmVyfSksW0JdKSx7cmVmczplaSxlbGVtZW50czplbCx4OmVzLHk6ZWMsbWlkZGxld2FyZURhdGE6ZXUsdXBkYXRlOmVkLHBsYWNlbWVudDplcCxjb250ZXh0OmVoLGlzUG9zaXRpb25lZDplbSxmbG9hdGluZ1N0eWxlczplZ309ZnVuY3Rpb24oZT17fSl7bGV0e25vZGVJZDp0fT1lLG49YVMoey4uLmUsZWxlbWVudHM6e3JlZmVyZW5jZTpudWxsLGZsb2F0aW5nOm51bGwsLi4uZS5lbGVtZW50c319KSxyPWUucm9vdENvbnRleHR8fG4sbz1yLmVsZW1lbnRzLFthLGldPXgudXNlU3RhdGUobnVsbCksW2wsc109eC51c2VTdGF0ZShudWxsKSxjPW8/LmRvbVJlZmVyZW5jZXx8YSx1PXgudXNlUmVmKG51bGwpLGQ9YWsoKTtheCgoKT0+e2MmJih1LmN1cnJlbnQ9Yyl9LFtjXSk7bGV0IGY9ZnVuY3Rpb24oZSl7dm9pZCAwPT09ZSYmKGU9e30pO2xldHtwbGFjZW1lbnQ6dD1cImJvdHRvbVwiLHN0cmF0ZWd5Om49XCJhYnNvbHV0ZVwiLG1pZGRsZXdhcmU6cj1bXSxwbGF0Zm9ybTpvLGVsZW1lbnRzOntyZWZlcmVuY2U6YSxmbG9hdGluZzppfT17fSx0cmFuc2Zvcm06bD0hMCx3aGlsZUVsZW1lbnRzTW91bnRlZDpzLG9wZW46Y309ZSxbdSxkXT14LnVzZVN0YXRlKHt4OjAseTowLHN0cmF0ZWd5Om4scGxhY2VtZW50OnQsbWlkZGxld2FyZURhdGE6e30saXNQb3NpdGlvbmVkOiExfSksW2YscF09eC51c2VTdGF0ZShyKTtjdihmLHIpfHxwKHIpO2xldFtoLG1dPXgudXNlU3RhdGUobnVsbCksW2cseV09eC51c2VTdGF0ZShudWxsKSx2PXgudXNlQ2FsbGJhY2soZT0+e2UhPT1DLmN1cnJlbnQmJihDLmN1cnJlbnQ9ZSxtKGUpKX0sW10pLGI9eC51c2VDYWxsYmFjayhlPT57ZSE9PV8uY3VycmVudCYmKF8uY3VycmVudD1lLHkoZSkpfSxbXSksQT1hfHxoLHc9aXx8ZyxDPXgudXNlUmVmKG51bGwpLF89eC51c2VSZWYobnVsbCksaz14LnVzZVJlZih1KSxFPW51bGwhPXMsaj1jeChzKSxTPWN4KG8pLE89Y3goYyksQj14LnVzZUNhbGxiYWNrKCgpPT57aWYoIUMuY3VycmVudHx8IV8uY3VycmVudClyZXR1cm47bGV0IGU9e3BsYWNlbWVudDp0LHN0cmF0ZWd5Om4sbWlkZGxld2FyZTpmfTtTLmN1cnJlbnQmJihlLnBsYXRmb3JtPVMuY3VycmVudCksKChlLHQsbik9PntsZXQgcj1uZXcgTWFwLG89e3BsYXRmb3JtOmNwLC4uLm59LGE9ey4uLm8ucGxhdGZvcm0sX2M6cn07cmV0dXJuIHM0KGUsdCx7Li4ubyxwbGF0Zm9ybTphfSl9KShDLmN1cnJlbnQsXy5jdXJyZW50LGUpLnRoZW4oZT0+e2xldCB0PXsuLi5lLGlzUG9zaXRpb25lZDohMSE9PU8uY3VycmVudH07UC5jdXJyZW50JiYhY3Yoay5jdXJyZW50LHQpJiYoay5jdXJyZW50PXQsZWYuZmx1c2hTeW5jKCgpPT57ZCh0KX0pKX0pfSxbZix0LG4sUyxPXSk7Y3koKCk9PnshMT09PWMmJmsuY3VycmVudC5pc1Bvc2l0aW9uZWQmJihrLmN1cnJlbnQuaXNQb3NpdGlvbmVkPSExLGQoZT0+KHsuLi5lLGlzUG9zaXRpb25lZDohMX0pKSl9LFtjXSk7bGV0IFA9eC51c2VSZWYoITEpO2N5KCgpPT4oUC5jdXJyZW50PSEwLCgpPT57UC5jdXJyZW50PSExfSksW10pLGN5KCgpPT57aWYoQSYmKEMuY3VycmVudD1BKSx3JiYoXy5jdXJyZW50PXcpLEEmJncpe2lmKGouY3VycmVudClyZXR1cm4gai5jdXJyZW50KEEsdyxCKTtCKCl9fSxbQSx3LEIsaixFXSk7bGV0IEk9eC51c2VNZW1vKCgpPT4oe3JlZmVyZW5jZTpDLGZsb2F0aW5nOl8sc2V0UmVmZXJlbmNlOnYsc2V0RmxvYXRpbmc6Yn0pLFt2LGJdKSx6PXgudXNlTWVtbygoKT0+KHtyZWZlcmVuY2U6QSxmbG9hdGluZzp3fSksW0Esd10pLFQ9eC51c2VNZW1vKCgpPT57bGV0IGU9e3Bvc2l0aW9uOm4sbGVmdDowLHRvcDowfTtpZighei5mbG9hdGluZylyZXR1cm4gZTtsZXQgdD1jQSh6LmZsb2F0aW5nLHUueCkscj1jQSh6LmZsb2F0aW5nLHUueSk7cmV0dXJuIGw/ey4uLmUsdHJhbnNmb3JtOlwidHJhbnNsYXRlKFwiK3QrXCJweCwgXCIrcitcInB4KVwiLC4uLmNiKHouZmxvYXRpbmcpPj0xLjUmJnt3aWxsQ2hhbmdlOlwidHJhbnNmb3JtXCJ9fTp7cG9zaXRpb246bixsZWZ0OnQsdG9wOnJ9fSxbbixsLHouZmxvYXRpbmcsdS54LHUueV0pO3JldHVybiB4LnVzZU1lbW8oKCk9Pih7Li4udSx1cGRhdGU6QixyZWZzOkksZWxlbWVudHM6eixmbG9hdGluZ1N0eWxlczpUfSksW3UsQixJLHosVF0pfSh7Li4uZSxlbGVtZW50czp7Li4ubywuLi5sJiZ7cmVmZXJlbmNlOmx9fX0pLHA9eC51c2VDYWxsYmFjayhlPT57bGV0IHQ9YVQoZSk/e2dldEJvdW5kaW5nQ2xpZW50UmVjdDooKT0+ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxnZXRDbGllbnRSZWN0czooKT0+ZS5nZXRDbGllbnRSZWN0cygpLGNvbnRleHRFbGVtZW50OmV9OmU7cyh0KSxmLnJlZnMuc2V0UmVmZXJlbmNlKHQpfSxbZi5yZWZzXSksaD14LnVzZUNhbGxiYWNrKGU9PnsoYVQoZSl8fG51bGw9PT1lKSYmKHUuY3VycmVudD1lLGkoZSkpLChhVChmLnJlZnMucmVmZXJlbmNlLmN1cnJlbnQpfHxudWxsPT09Zi5yZWZzLnJlZmVyZW5jZS5jdXJyZW50fHxudWxsIT09ZSYmIWFUKGUpKSYmZi5yZWZzLnNldFJlZmVyZW5jZShlKX0sW2YucmVmc10pLG09eC51c2VNZW1vKCgpPT4oey4uLmYucmVmcyxzZXRSZWZlcmVuY2U6aCxzZXRQb3NpdGlvblJlZmVyZW5jZTpwLGRvbVJlZmVyZW5jZTp1fSksW2YucmVmcyxoLHBdKSxnPXgudXNlTWVtbygoKT0+KHsuLi5mLmVsZW1lbnRzLGRvbVJlZmVyZW5jZTpjfSksW2YuZWxlbWVudHMsY10pLHk9eC51c2VNZW1vKCgpPT4oey4uLmYsLi4ucixyZWZzOm0sZWxlbWVudHM6Zyxub2RlSWQ6dH0pLFtmLG0sZyx0LHJdKTtyZXR1cm4gYXgoKCk9PntyLmRhdGFSZWYuY3VycmVudC5mbG9hdGluZ0NvbnRleHQ9eTtsZXQgZT1kPy5ub2Rlc1JlZi5jdXJyZW50LmZpbmQoZT0+ZS5pZD09PXQpO2UmJihlLmNvbnRleHQ9eSl9KSx4LnVzZU1lbW8oKCk9Pih7Li4uZixjb250ZXh0OnkscmVmczptLGVsZW1lbnRzOmd9KSxbZixtLGcseV0pfSh7cm9vdENvbnRleHQ6ZW8scGxhY2VtZW50OlcsbWlkZGxld2FyZTpKLHN0cmF0ZWd5OkEsd2hpbGVFbGVtZW50c01vdW50ZWQ6UD92b2lkIDA6KC4uLmUpPT5jbSguLi5lLGVhKSxub2RlSWQ6TH0pLHtzaWRlWDpleSxzaWRlWTpldn09ZXUuYWRhcHRpdmVPcmlnaW58fHt9LGViPXgudXNlTWVtbygoKT0+Tj97cG9zaXRpb246QSxbZXldOmAke2VzfXB4YCxbZXZdOmAke2VjfXB4YH06ZWcsW04sZXksZXYsQSxlcyxlYyxlZ10pLGVBPXgudXNlUmVmKG51bGwpO2F4KCgpPT57aWYoIXopcmV0dXJuO2xldCBlPUguY3VycmVudCx0PVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSgpOmUsbj0oY2sodCk/dC5jdXJyZW50OnQpfHxudWxsO24hPT1lQS5jdXJyZW50JiYoZWkuc2V0UG9zaXRpb25SZWZlcmVuY2UobiksZUEuY3VycmVudD1uKX0sW3osZWkscSxIXSkseC51c2VFZmZlY3QoKCk9PntpZigheilyZXR1cm47bGV0IGU9SC5jdXJyZW50O1wiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJmNrKGUpJiZlLmN1cnJlbnQhPT1lQS5jdXJyZW50JiYoZWkuc2V0UG9zaXRpb25SZWZlcmVuY2UoZS5jdXJyZW50KSxlQS5jdXJyZW50PWUuY3VycmVudCl9LFt6LGVpLHEsSF0pLHgudXNlRWZmZWN0KCgpPT57aWYoUCYmeiYmZWwuZG9tUmVmZXJlbmNlJiZlbC5mbG9hdGluZylyZXR1cm4gY20oZWwuZG9tUmVmZXJlbmNlLGVsLmZsb2F0aW5nLGVkLGVhKX0sW1AseixlbCxlZCxlYV0pO2xldCBleD1jdyh3LGkxKGVwKSxWKSxldz1pMihlcCl8fFwiY2VudGVyXCIsZUM9ISFldS5oaWRlPy5yZWZlcmVuY2VIaWRkZW4sZV89eC51c2VNZW1vKCgpPT4oe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6ZXUuYXJyb3c/LnksbGVmdDpldS5hcnJvdz8ueH0pLFtldS5hcnJvd10pLGVrPWV1LmFycm93Py5jZW50ZXJPZmZzZXQhPT0wO3JldHVybiB4LnVzZU1lbW8oKCk9Pih7cG9zaXRpb25lclN0eWxlczplYixhcnJvd1N0eWxlczplXyxhcnJvd1JlZjpLLGFycm93VW5jZW50ZXJlZDplayxzaWRlOmV4LGFsaWduOmV3LGFuY2hvckhpZGRlbjplQyxyZWZzOmVpLGNvbnRleHQ6ZWgsaXNQb3NpdGlvbmVkOmVtLHVwZGF0ZTplZH0pLFtlYixlXyxLLGVrLGV4LGV3LGVDLGVpLGVoLGVtLGVkXSl9ZnVuY3Rpb24gY2soZSl7cmV0dXJuIG51bGwhPWUmJlwiY3VycmVudFwiaW4gZX1mdW5jdGlvbiBjRShlKXtsZXR7Y2hpbGRyZW46dCxlbGVtZW50c1JlZjpuLGxhYmVsc1JlZjpyLG9uTWFwQ2hhbmdlOm99PWUsYT14LnVzZVJlZigwKSxpPWFhKGNTKS5jdXJyZW50LGw9YWEoY2opLmN1cnJlbnQsW3MsY109eC51c2VTdGF0ZSgwKSx1PXgudXNlUmVmKHMpLGQ9YWYoKGUsdCk9PntsLnNldChlLHQ/P251bGwpLHUuY3VycmVudCs9MSxjKHUuY3VycmVudCl9KSxmPWFmKGU9PntsLmRlbGV0ZShlKSx1LmN1cnJlbnQrPTEsYyh1LmN1cnJlbnQpfSkscD14LnVzZU1lbW8oKCk9PntsZXQgZT1uZXcgTWFwO3JldHVybiBBcnJheS5mcm9tKGwua2V5cygpKS5zb3J0KGNPKS5mb3JFYWNoKCh0LG4pPT57bGV0IHI9bC5nZXQodCk/P3t9O2Uuc2V0KHQsey4uLnIsaW5kZXg6bn0pfSksZX0sW2wsc10pO2F4KCgpPT57dS5jdXJyZW50PT09cyYmKG4uY3VycmVudC5sZW5ndGghPT1wLnNpemUmJihuLmN1cnJlbnQubGVuZ3RoPXAuc2l6ZSksciYmci5jdXJyZW50Lmxlbmd0aCE9PXAuc2l6ZSYmKHIuY3VycmVudC5sZW5ndGg9cC5zaXplKSksbz8uKHApfSxbbyxwLG4scixzLHVdKTtsZXQgaD1hZihlPT4oaS5hZGQoZSksKCk9PntpLmRlbGV0ZShlKX0pKTtheCgoKT0+e2kuZm9yRWFjaChlPT5lKHApKX0sW2kscF0pO2xldCBtPXgudXNlTWVtbygoKT0+KHtyZWdpc3RlcjpkLHVucmVnaXN0ZXI6ZixzdWJzY3JpYmVNYXBDaGFuZ2U6aCxlbGVtZW50c1JlZjpuLGxhYmVsc1JlZjpyLG5leHRJbmRleFJlZjphfSksW2QsZixoLG4scixhXSk7cmV0dXJuKDAsYi5qc3gpKHNsLlByb3ZpZGVyLHt2YWx1ZTptLGNoaWxkcmVuOnR9KX1mdW5jdGlvbiBjaigpe3JldHVybiBuZXcgTWFwfWZ1bmN0aW9uIGNTKCl7cmV0dXJuIG5ldyBTZXR9ZnVuY3Rpb24gY08oZSx0KXtsZXQgbj1lLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpO3JldHVybiBuJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRk9MTE9XSU5HfHxuJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTkVEX0JZPy0xOm4mTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9QUkVDRURJTkd8fG4mTm9kZS5ET0NVTUVOVF9QT1NJVElPTl9DT05UQUlOUz8xOjB9bGV0IGNCPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldCBuLHtjdXRvdXQ6ciwuLi5vfT1lO2lmKHIpe2xldCBlPXI/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO249YHBvbHlnb24oXG4gICAgICAwJSAwJSxcbiAgICAgIDEwMCUgMCUsXG4gICAgICAxMDAlIDEwMCUsXG4gICAgICAwJSAxMDAlLFxuICAgICAgMCUgMCUsXG4gICAgICAke2UubGVmdH1weCAke2UudG9wfXB4LFxuICAgICAgJHtlLmxlZnR9cHggJHtlLmJvdHRvbX1weCxcbiAgICAgICR7ZS5yaWdodH1weCAke2UuYm90dG9tfXB4LFxuICAgICAgJHtlLnJpZ2h0fXB4ICR7ZS50b3B9cHgsXG4gICAgICAke2UubGVmdH1weCAke2UudG9wfXB4XG4gICAgKWB9cmV0dXJuKDAsYi5qc3gpKFwiZGl2XCIse3JlZjp0LHJvbGU6XCJwcmVzZW50YXRpb25cIixcImRhdGEtYmFzZS11aS1pbmVydFwiOlwiXCIsLi4ubyxzdHlsZTp7cG9zaXRpb246XCJmaXhlZFwiLGluc2V0OjAsdXNlclNlbGVjdDpcIm5vbmVcIixXZWJraXRVc2VyU2VsZWN0Olwibm9uZVwiLGNsaXBQYXRoOm59fSl9KSxjUD14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXt2YXIgbjtsZXR7YW5jaG9yOnIscG9zaXRpb25NZXRob2Q6bz1cImFic29sdXRlXCIsY2xhc3NOYW1lOmEscmVuZGVyOmksc2lkZTpsLGFsaWduOnMsc2lkZU9mZnNldDpjPTAsYWxpZ25PZmZzZXQ6dT0wLGNvbGxpc2lvbkJvdW5kYXJ5OmQ9XCJjbGlwcGluZy1hbmNlc3RvcnNcIixjb2xsaXNpb25QYWRkaW5nOmY9NSxhcnJvd1BhZGRpbmc6cD01LHN0aWNreTpoPSExLHRyYWNrQW5jaG9yOm09ITAsY29sbGlzaW9uQXZvaWRhbmNlOmc9aVosLi4ueX09ZSx7b3Blbjp2LHNldE9wZW46QSxmbG9hdGluZ1Jvb3RDb250ZXh0Oncsc2V0UG9zaXRpb25lckVsZW1lbnQ6QyxpdGVtRG9tRWxlbWVudHM6XyxpdGVtTGFiZWxzOmssbW91bnRlZDpFLG1vZGFsOmosbGFzdE9wZW5DaGFuZ2VSZWFzb246UyxwYXJlbnQ6TyxzZXRIb3ZlckVuYWJsZWQ6Qix0cmlnZ2VyRWxlbWVudDpQfT1sQSgpLEk9ZnVuY3Rpb24oKXtsZXQgZT14LnVzZUNvbnRleHQoc0opO2lmKHZvaWQgMD09PWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiA8TWVudS5Qb3J0YWw+IGlzIG1pc3NpbmcuXCIpO3JldHVybiBlfSgpLHo9ZnVuY3Rpb24oZSl7bGV0IHQ9YWIoKSxuPWFrKCkscj1hXygpLG89cjtyZXR1cm4gYXgoKCk9PntpZighdClyZXR1cm47bGV0IGU9e2lkOnQscGFyZW50SWQ6b307cmV0dXJuIG4/LmFkZE5vZGUoZSksKCk9PntuPy5yZW1vdmVOb2RlKGUpfX0sW24sdCxvXSksdH0oKSxUPWFfKCksRD1sRCghMCksTD1yLE49YyxSPXUsTT1zO1wiY29udGV4dC1tZW51XCI9PT1PLnR5cGUmJihMPU8uY29udGV4dD8uYW5jaG9yPz9yLE09ZS5hbGlnbj8/XCJzdGFydFwiLFI9ZS5hbGlnbk9mZnNldD8/MixOPWUuc2lkZU9mZnNldD8/LTUpO2xldCBaPWwsVT1NO1wibWVudVwiPT09Ty50eXBlPyhaPVo/P1wiaW5saW5lLWVuZFwiLFU9VT8/XCJzdGFydFwiKTpcIm1lbnViYXJcIj09PU8udHlwZSYmKFo9Wj8/XCJib3R0b21cIixVPVU/P1wic3RhcnRcIik7bGV0IEY9XCJjb250ZXh0LW1lbnVcIj09PU8udHlwZSxxPWNfKHthbmNob3I6TCxmbG9hdGluZ1Jvb3RDb250ZXh0OncscG9zaXRpb25NZXRob2Q6RD9cImZpeGVkXCI6byxtb3VudGVkOkUsc2lkZTpaLHNpZGVPZmZzZXQ6TixhbGlnbjpVLGFsaWduT2Zmc2V0OlIsYXJyb3dQYWRkaW5nOkY/MDpwLGNvbGxpc2lvbkJvdW5kYXJ5OmQsY29sbGlzaW9uUGFkZGluZzpmLHN0aWNreTpoLG5vZGVJZDp6LGtlZXBNb3VudGVkOkksdHJhY2tBbmNob3I6bSxjb2xsaXNpb25Bdm9pZGFuY2U6ZyxzaGlmdENyb3NzQXhpczpGfSkse2V2ZW50czpIfT1haygpLFY9eC51c2VNZW1vKCgpPT57bGV0IGU9e307cmV0dXJuIHZ8fChlLnBvaW50ZXJFdmVudHM9XCJub25lXCIpLHtyb2xlOlwicHJlc2VudGF0aW9uXCIsaGlkZGVuOiFFLHN0eWxlOnsuLi5xLnBvc2l0aW9uZXJTdHlsZXMsLi4uZX19fSxbdixFLHEucG9zaXRpb25lclN0eWxlc10pO3gudXNlRWZmZWN0KCgpPT57ZnVuY3Rpb24gZShlKXtlLm9wZW4/KGUucGFyZW50Tm9kZUlkPT09eiYmQighMSksZS5ub2RlSWQhPT16JiZlLnBhcmVudE5vZGVJZD09PVQmJkEoITEsdm9pZCAwLFwic2libGluZy1vcGVuXCIpKTplLnBhcmVudE5vZGVJZD09PXomJkIoITApfXJldHVybiBILm9uKFwib3BlbmNoYW5nZVwiLGUpLCgpPT57SC5vZmYoXCJvcGVuY2hhbmdlXCIsZSl9fSxbSCx6LFQsQSxCXSkseC51c2VFZmZlY3QoKCk9PntILmVtaXQoXCJvcGVuY2hhbmdlXCIse29wZW46dixub2RlSWQ6eixwYXJlbnROb2RlSWQ6VH0pfSxbSCx2LHosVF0pO2xldCAkPXgudXNlTWVtbygoKT0+KHtvcGVuOnYsc2lkZTpxLnNpZGUsYWxpZ246cS5hbGlnbixhbmNob3JIaWRkZW46cS5hbmNob3JIaWRkZW4sbmVzdGVkOlwibWVudVwiPT09Ty50eXBlfSksW3YscS5zaWRlLHEuYWxpZ24scS5hbmNob3JIaWRkZW4sTy50eXBlXSksVz14LnVzZU1lbW8oKCk9Pih7c2lkZTpxLnNpZGUsYWxpZ246cS5hbGlnbixhcnJvd1JlZjpxLmFycm93UmVmLGFycm93VW5jZW50ZXJlZDpxLmFycm93VW5jZW50ZXJlZCxhcnJvd1N0eWxlczpxLmFycm93U3R5bGVzLGZsb2F0aW5nQ29udGV4dDpxLmNvbnRleHR9KSxbcS5zaWRlLHEuYWxpZ24scS5hcnJvd1JlZixxLmFycm93VW5jZW50ZXJlZCxxLmFycm93U3R5bGVzLHEuY29udGV4dF0pLFk9c24oXCJkaXZcIixlLHtzdGF0ZTokLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6c2UscmVmOlt0LENdLHByb3BzOnsuLi5WLC4uLnl9fSksSz1FJiZcIm1lbnVcIiE9PU8udHlwZSYmKFwibWVudWJhclwiIT09Ty50eXBlJiZqJiZcInRyaWdnZXItaG92ZXJcIiE9PVN8fFwibWVudWJhclwiPT09Ty50eXBlJiZPLmNvbnRleHQubW9kYWwpLFg9bnVsbDtyZXR1cm5cIm1lbnViYXJcIj09PU8udHlwZT9YPU8uY29udGV4dC5jb250ZW50RWxlbWVudDp2b2lkIDA9PT1PLnR5cGUmJihYPVApLCgwLGIuanN4cykoczEuUHJvdmlkZXIse3ZhbHVlOlcsY2hpbGRyZW46W0smJigwLGIuanN4KShjQix7cmVmOlwiY29udGV4dC1tZW51XCI9PT1PLnR5cGV8fFwibmVzdGVkLWNvbnRleHQtbWVudVwiPT09Ty50eXBlP08uY29udGV4dC5pbnRlcm5hbEJhY2tkcm9wUmVmOm51bGwsaW5lcnQ6KG49IXYsc3Q+PTE5P246bj9cInRydWVcIjp2b2lkIDApLGN1dG91dDpYfSksKDAsYi5qc3gpKGFFLHtpZDp6LGNoaWxkcmVuOigwLGIuanN4KShjRSx7ZWxlbWVudHNSZWY6XyxsYWJlbHNSZWY6ayxjaGlsZHJlbjpZfSl9KV19KX0pLGNJPXtpbmVydDpuZXcgV2Vha01hcCxcImFyaWEtaGlkZGVuXCI6bmV3IFdlYWtNYXAsbm9uZTpuZXcgV2Vha01hcH07ZnVuY3Rpb24gY3ooZSl7cmV0dXJuXCJpbmVydFwiPT09ZT9jSS5pbmVydDpcImFyaWEtaGlkZGVuXCI9PT1lP2NJW1wiYXJpYS1oaWRkZW5cIl06Y0kubm9uZX1sZXQgY1Q9bmV3IFdlYWtTZXQsY0Q9e30sY0w9MCxjTj1lPT5lJiYoZS5ob3N0fHxjTihlLnBhcmVudE5vZGUpKSxjUj1bXTtmdW5jdGlvbiBjTSgpe2NSPWNSLmZpbHRlcihlPT5lLmlzQ29ubmVjdGVkKX1mdW5jdGlvbiBjWigpe3JldHVybiBjTSgpLGNSW2NSLmxlbmd0aC0xXX1mdW5jdGlvbiBjVShlLHQpe2lmKCF0LmN1cnJlbnQuaW5jbHVkZXMoXCJmbG9hdGluZ1wiKSYmIWUuZ2V0QXR0cmlidXRlKFwicm9sZVwiKT8uaW5jbHVkZXMoXCJkaWFsb2dcIikpcmV0dXJuO2xldCBuPXNVKCkscj1zTShlLG4pLmZpbHRlcihlPT57bGV0IHQ9ZS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRhYmluZGV4XCIpfHxcIlwiO3JldHVybiBzWihlLG4pfHxlLmhhc0F0dHJpYnV0ZShcImRhdGEtdGFiaW5kZXhcIikmJiF0LnN0YXJ0c1dpdGgoXCItXCIpfSksbz1lLmdldEF0dHJpYnV0ZShcInRhYmluZGV4XCIpO3QuY3VycmVudC5pbmNsdWRlcyhcImZsb2F0aW5nXCIpfHwwPT09ci5sZW5ndGg/XCIwXCIhPT1vJiZlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCIwXCIpOihcIi0xXCIhPT1vfHxlLmhhc0F0dHJpYnV0ZShcImRhdGEtdGFiaW5kZXhcIikmJlwiLTFcIiE9PWUuZ2V0QXR0cmlidXRlKFwiZGF0YS10YWJpbmRleFwiKSkmJihlLnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKSxlLnNldEF0dHJpYnV0ZShcImRhdGEtdGFiaW5kZXhcIixcIi0xXCIpKX1mdW5jdGlvbiBjRihlKXtsZXR7Y29udGV4dDp0LGNoaWxkcmVuOm4sZGlzYWJsZWQ6cj0hMSxvcmRlcjpvPVtcImNvbnRlbnRcIl0saW5pdGlhbEZvY3VzOmE9MCxyZXR1cm5Gb2N1czppPSEwLHJlc3RvcmVGb2N1czpsPSExLG1vZGFsOnM9ITAsY2xvc2VPbkZvY3VzT3V0OmM9ITAsZ2V0SW5zaWRlRWxlbWVudHM6dT0oKT0+W119PWUse29wZW46ZCxvbk9wZW5DaGFuZ2U6ZixldmVudHM6cCxkYXRhUmVmOmgsZWxlbWVudHM6e2RvbVJlZmVyZW5jZTptLGZsb2F0aW5nOmd9fT10LHk9YWYoKCk9PmguY3VycmVudC5mbG9hdGluZ0NvbnRleHQ/Lm5vZGVJZCksdj1hZih1KSxBPVwibnVtYmVyXCI9PXR5cGVvZiBhJiZhPDAsdz1peChtKSYmQSxDPWEwKG8pLF89YTAoYSksaz1hMChpKSxFPWFrKCksaj1zSygpLFM9eC51c2VSZWYobnVsbCksTz14LnVzZVJlZihudWxsKSxCPXgudXNlUmVmKCExKSxQPXgudXNlUmVmKCExKSxJPXgudXNlUmVmKC0xKSx6PWFjKCksVD1udWxsIT1qLEQ9aXcoZyksTD1hZigoZT1EKT0+ZT9zUihlLHNVKCkpOltdKSxOPWFmKGU9PntsZXQgdD1MKGUpO3JldHVybiBDLmN1cnJlbnQubWFwKCgpPT50KS5maWx0ZXIoQm9vbGVhbikuZmxhdCgpfSk7eC51c2VFZmZlY3QoKCk9PntpZihyfHwhcylyZXR1cm47ZnVuY3Rpb24gZShlKXtcIlRhYlwiPT09ZS5rZXkmJmlnKEQsaW0oaWIoRCkpKSYmMD09PUwoKS5sZW5ndGgmJiF3JiZpcihlKX1sZXQgdD1pYihEKTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUpLCgpPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUpfX0sW3IsbSxELHMsQyx3LEwsTl0pLHgudXNlRWZmZWN0KCgpPT57aWYoIXImJmcpcmV0dXJuIGcuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixlKSwoKT0+e2cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImZvY3VzaW5cIixlKX07ZnVuY3Rpb24gZShlKXtsZXQgdD1peShlKSxuPUwoKS5pbmRleE9mKHQpOy0xIT09biYmKEkuY3VycmVudD1uKX19LFtyLGcsTF0pLHgudXNlRWZmZWN0KCgpPT57aWYocnx8IWMpcmV0dXJuO2Z1bmN0aW9uIGUoKXtQLmN1cnJlbnQ9ITB9ZnVuY3Rpb24gdChlKXtsZXQgdD1lLnJlbGF0ZWRUYXJnZXQsbj1lLmN1cnJlbnRUYXJnZXQscj1peShlKTtxdWV1ZU1pY3JvdGFzaygoKT0+e2xldCBvPXkoKSxhPSEoaWcobSx0KXx8aWcoZyx0KXx8aWcodCxnKXx8aWcoaj8ucG9ydGFsTm9kZSx0KXx8dD8uaGFzQXR0cmlidXRlKGlDKFwiZm9jdXMtZ3VhcmRcIikpfHxFJiYoaVMoRS5ub2Rlc1JlZi5jdXJyZW50LG8pLmZpbmQoZT0+aWcoZS5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZyx0KXx8aWcoZS5jb250ZXh0Py5lbGVtZW50cy5kb21SZWZlcmVuY2UsdCkpfHxpTyhFLm5vZGVzUmVmLmN1cnJlbnQsbykuZmluZChlPT5bZS5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZyxpdyhlLmNvbnRleHQ/LmVsZW1lbnRzLmZsb2F0aW5nKV0uaW5jbHVkZXModCl8fGUuY29udGV4dD8uZWxlbWVudHMuZG9tUmVmZXJlbmNlPT09dCkpKTtpZihuPT09bSYmRCYmY1UoRCxDKSxsJiZuIT09bSYmIXI/LmlzQ29ubmVjdGVkJiZpbShpYihEKSk9PT1pYihEKS5ib2R5KXthRChEKSYmRC5mb2N1cygpO2xldCBlPUkuY3VycmVudCx0PUwoKSxuPXRbZV18fHRbdC5sZW5ndGgtMV18fEQ7YUQobikmJm4uZm9jdXMoKX1pZihoLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlKXtoLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSExO3JldHVybn1pZihQLmN1cnJlbnQpe1AuY3VycmVudD0hMTtyZXR1cm59KHd8fCFzKSYmdCYmYSYmdCE9PWNaKCkmJihCLmN1cnJlbnQ9ITAsZighMSxlLFwiZm9jdXMtb3V0XCIpKX0pfWxldCBuPSEhKCFFJiZqKTtmdW5jdGlvbiBvKCl7aC5jdXJyZW50Lmluc2lkZVJlYWN0VHJlZT0hMCx6LnN0YXJ0KDAsKCk9PntoLmN1cnJlbnQuaW5zaWRlUmVhY3RUcmVlPSExfSl9aWYoZyYmYUQobSkpcmV0dXJuIG0uYWRkRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsdCksbS5hZGRFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixlKSxnLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLHQpLG4mJmcuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3Vzb3V0XCIsbywhMCksKCk9PnttLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLHQpLG0ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsZSksZy5yZW1vdmVFdmVudExpc3RlbmVyKFwiZm9jdXNvdXRcIix0KSxuJiZnLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJmb2N1c291dFwiLG8sITApfX0sW3IsbSxnLEQscyxFLGosZixjLGwsTCx3LHksQyxoLHpdKTtsZXQgUj14LnVzZVJlZihudWxsKSxNPXgudXNlUmVmKG51bGwpLFo9bFkoUixqPy5iZWZvcmVJbnNpZGVSZWYpLFU9bFkoTSxqPy5hZnRlckluc2lkZVJlZik7eC51c2VFZmZlY3QoKCk9PntpZihyfHwhZylyZXR1cm47bGV0IGU9QXJyYXkuZnJvbShqPy5wb3J0YWxOb2RlPy5xdWVyeVNlbGVjdG9yQWxsKGBbJHtpQyhcInBvcnRhbFwiKX1dYCl8fFtdKSx0PUU/aU8oRS5ub2Rlc1JlZi5jdXJyZW50LHkoKSk6W10sbj1mdW5jdGlvbihlLHQ9ITEsbj0hMSl7bGV0IHI9aWIoZVswXSkuYm9keTtyZXR1cm4gZnVuY3Rpb24oZSx0LG4scil7bGV0IG8sYT1cImRhdGEtYmFzZS11aS1pbmVydFwiLGk9cj9cImluZXJ0XCI6bj9cImFyaWEtaGlkZGVuXCI6bnVsbCxsPShvPXQsZS5tYXAoZT0+e2lmKG8uY29udGFpbnMoZSkpcmV0dXJuIGU7bGV0IHQ9Y04oZSk7cmV0dXJuIG8uY29udGFpbnModCk/dDpudWxsfSkuZmlsdGVyKGU9Pm51bGwhPWUpKSxzPW5ldyBTZXQsYz1uZXcgU2V0KGwpLHU9W107Y0RbYV18fChjRFthXT1uZXcgV2Vha01hcCk7bGV0IGQ9Y0RbYV07cmV0dXJuIGwuZm9yRWFjaChmdW5jdGlvbiBlKHQpeyEoIXR8fHMuaGFzKHQpKSYmKHMuYWRkKHQpLHQucGFyZW50Tm9kZSYmZSh0LnBhcmVudE5vZGUpKX0pLGZ1bmN0aW9uIGUodCl7IXR8fGMuaGFzKHQpfHxbXS5mb3JFYWNoLmNhbGwodC5jaGlsZHJlbix0PT57aWYoXCJzY3JpcHRcIiE9PWFCKHQpKWlmKHMuaGFzKHQpKWUodCk7ZWxzZXtsZXQgZT1pP3QuZ2V0QXR0cmlidXRlKGkpOm51bGwsbj1udWxsIT09ZSYmXCJmYWxzZVwiIT09ZSxyPWN6KGkpLG89KHIuZ2V0KHQpfHwwKSsxLGw9KGQuZ2V0KHQpfHwwKSsxO3Iuc2V0KHQsbyksZC5zZXQodCxsKSx1LnB1c2godCksMT09PW8mJm4mJmNULmFkZCh0KSwxPT09bCYmdC5zZXRBdHRyaWJ1dGUoYSxcIlwiKSwhbiYmaSYmdC5zZXRBdHRyaWJ1dGUoaSxcImluZXJ0XCI9PT1pP1wiXCI6XCJ0cnVlXCIpfX0pfSh0KSxzLmNsZWFyKCksY0wrPTEsKCk9Pnt1LmZvckVhY2goZT0+e2xldCB0PWN6KGkpLG49KHQuZ2V0KGUpfHwwKS0xLHI9KGQuZ2V0KGUpfHwwKS0xO3Quc2V0KGUsbiksZC5zZXQoZSxyKSxufHwoIWNULmhhcyhlKSYmaSYmZS5yZW1vdmVBdHRyaWJ1dGUoaSksY1QuZGVsZXRlKGUpKSxyfHxlLnJlbW92ZUF0dHJpYnV0ZShhKX0pLChjTC09MSl8fChjSS5pbmVydD1uZXcgV2Vha01hcCxjSVtcImFyaWEtaGlkZGVuXCJdPW5ldyBXZWFrTWFwLGNJLm5vbmU9bmV3IFdlYWtNYXAsY1Q9bmV3IFdlYWtTZXQsY0Q9e30pfX0oZS5jb25jYXQoQXJyYXkuZnJvbShyLnF1ZXJ5U2VsZWN0b3JBbGwoXCJbYXJpYS1saXZlXVwiKSkpLHIsdCxuKX0oW2csdC5maW5kKGU9Pml4KGUuY29udGV4dD8uZWxlbWVudHMuZG9tUmVmZXJlbmNlfHxudWxsKSk/LmNvbnRleHQ/LmVsZW1lbnRzLmRvbVJlZmVyZW5jZSwuLi5lLC4uLnYoKSxTLmN1cnJlbnQsTy5jdXJyZW50LFIuY3VycmVudCxNLmN1cnJlbnQsaj8uYmVmb3JlT3V0c2lkZVJlZi5jdXJyZW50LGo/LmFmdGVyT3V0c2lkZVJlZi5jdXJyZW50LHc/bTpudWxsXS5maWx0ZXIoZT0+bnVsbCE9ZSksc3x8dyk7cmV0dXJuKCk9PntuKCl9fSxbcixtLGcscyxDLGosdyxFLHksdl0pLGF4KCgpPT57aWYocnx8IWFEKEQpKXJldHVybjtsZXQgZT1pbShpYihEKSk7cXVldWVNaWNyb3Rhc2soKCk9PntsZXQgdD1OKEQpLG49Xy5jdXJyZW50LHI9KFwibnVtYmVyXCI9PXR5cGVvZiBuP3Rbbl06bi5jdXJyZW50KXx8RCxvPWlnKEQsZSk7QXx8b3x8IWR8fGxmKHIse3ByZXZlbnRTY3JvbGw6cj09PUR9KX0pfSxbcixkLEQsQSxOLF9dKSxheCgoKT0+e3ZhciBlO2lmKHJ8fCFEKXJldHVybjtsZXQgdD1pYihEKTtmdW5jdGlvbiBuKHtyZWFzb246ZSxldmVudDp0LG5lc3RlZDpufSl7aWYoW1wiaG92ZXJcIixcInNhZmUtcG9seWdvblwiXS5pbmNsdWRlcyhlKSYmXCJtb3VzZWxlYXZlXCI9PT10LnR5cGUmJihCLmN1cnJlbnQ9ITApLFwib3V0c2lkZS1wcmVzc1wiPT09ZSlpZihuKUIuY3VycmVudD0hMTtlbHNlIGlmKGlvKHQpfHxpYSh0KSlCLmN1cnJlbnQ9ITE7ZWxzZXtsZXQgZT0hMTtkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLmZvY3VzKHtnZXQgcHJldmVudFNjcm9sbCgpe3JldHVybiBlPSEwLCExfX0pLGU/Qi5jdXJyZW50PSExOkIuY3VycmVudD0hMH19ZT1pbSh0KSxjTSgpLGUmJlwiYm9keVwiIT09YUIoZSkmJihjUi5wdXNoKGUpLGNSLmxlbmd0aD4yMCYmKGNSPWNSLnNsaWNlKC0yMCkpKSxwLm9uKFwib3BlbmNoYW5nZVwiLG4pO2xldCBvPXQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7cmV0dXJuIG8uc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpLG8uc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixcInRydWVcIiksT2JqZWN0LmFzc2lnbihvLnN0eWxlLHNmKSxUJiZtJiZtLmluc2VydEFkamFjZW50RWxlbWVudChcImFmdGVyZW5kXCIsbyksKCk9PntwLm9mZihcIm9wZW5jaGFuZ2VcIixuKTtsZXQgZT1pbSh0KSxyPWlnKGcsZSl8fEUmJmlTKEUubm9kZXNSZWYuY3VycmVudCx5KCksITEpLnNvbWUodD0+aWcodC5jb250ZXh0Py5lbGVtZW50cy5mbG9hdGluZyxlKSksYT1mdW5jdGlvbigpe2lmKFwiYm9vbGVhblwiPT10eXBlb2Ygay5jdXJyZW50KXtsZXQgZT1tfHxjWigpO3JldHVybiBlJiZlLmlzQ29ubmVjdGVkP2U6b31yZXR1cm4gay5jdXJyZW50LmN1cnJlbnR8fG99KCk7cXVldWVNaWNyb3Rhc2soKCk9PntsZXQgbj1mdW5jdGlvbihlKXtsZXQgdD1zVSgpO3JldHVybiBzWihlLHQpP2U6c1IoZSx0KVswXXx8ZX0oYSk7ay5jdXJyZW50JiYhQi5jdXJyZW50JiZhRChuKSYmKG49PT1lfHxlPT09dC5ib2R5fHxyKSYmbi5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLG8ucmVtb3ZlKCl9KX19LFtyLGcsRCxrLGgscCxFLFQsbSx5XSkseC51c2VFZmZlY3QoKCk9PntxdWV1ZU1pY3JvdGFzaygoKT0+e0IuY3VycmVudD0hMX0pfSxbcl0pLHgudXNlRWZmZWN0KCgpPT57aWYocnx8IWQpcmV0dXJuO2Z1bmN0aW9uIGUoZSl7bGV0IHQ9aXkoZSk7dD8uY2xvc2VzdChcIltkYXRhLWJhc2UtdWktY2xpY2stdHJpZ2dlcl1cIikmJihQLmN1cnJlbnQ9ITApfWxldCB0PWliKEQpO3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLGUsITApLCgpPT57dC5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIixlLCEwKX19LFtyLGQsRF0pLGF4KCgpPT57aWYoIXImJmopcmV0dXJuIGouc2V0Rm9jdXNNYW5hZ2VyU3RhdGUoe21vZGFsOnMsY2xvc2VPbkZvY3VzT3V0OmMsb3BlbjpkLG9uT3BlbkNoYW5nZTpmLGRvbVJlZmVyZW5jZTptfSksKCk9PntqLnNldEZvY3VzTWFuYWdlclN0YXRlKG51bGwpfX0sW3IsaixzLGQsZixjLG1dKSxheCgoKT0+e2lmKCFyJiZEKXJldHVybiBjVShELEMpLCgpPT57cXVldWVNaWNyb3Rhc2soY00pfX0sW3IsRCxDXSk7bGV0IEY9IXImJighc3x8IXcpJiYoVHx8cyk7cmV0dXJuKDAsYi5qc3hzKSh4LkZyYWdtZW50LHtjaGlsZHJlbjpbRiYmKDAsYi5qc3gpKHNwLHtcImRhdGEtdHlwZVwiOlwiaW5zaWRlXCIscmVmOlosb25Gb2N1czplPT57aWYocyl7bGV0IGU9TigpO2xmKGVbZS5sZW5ndGgtMV0pfWVsc2UgaWYoaj8ucHJlc2VydmVUYWJPcmRlciYmai5wb3J0YWxOb2RlKWlmKEIuY3VycmVudD0hMSxzVihlLGoucG9ydGFsTm9kZSkpe2xldCBlPXNxKG0pO2U/LmZvY3VzKCl9ZWxzZSBqLmJlZm9yZU91dHNpZGVSZWYuY3VycmVudD8uZm9jdXMoKX19KSxuLEYmJigwLGIuanN4KShzcCx7XCJkYXRhLXR5cGVcIjpcImluc2lkZVwiLHJlZjpVLG9uRm9jdXM6ZT0+e2lmKHMpbGYoTigpWzBdKTtlbHNlIGlmKGo/LnByZXNlcnZlVGFiT3JkZXImJmoucG9ydGFsTm9kZSlpZihjJiYoQi5jdXJyZW50PSEwKSxzVihlLGoucG9ydGFsTm9kZSkpe2xldCBlPXNIKG0pO2U/LmZvY3VzKCl9ZWxzZSBqLmFmdGVyT3V0c2lkZVJlZi5jdXJyZW50Py5mb2N1cygpfX0pXX0pfWxldCBjcT17Li4uc2UsLi4ubDB9LGNIPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtyZW5kZXI6bixjbGFzc05hbWU6cixmaW5hbEZvY3VzOm8sLi4uYX09ZSx7b3BlbjppLHNldE9wZW46bCxwb3B1cFJlZjpzLHRyYW5zaXRpb25TdGF0dXM6Yyxwb3B1cFByb3BzOnUsbW91bnRlZDpkLGluc3RhbnRUeXBlOmYsb25PcGVuQ2hhbmdlQ29tcGxldGU6cCxwYXJlbnQ6aCxsYXN0T3BlbkNoYW5nZVJlYXNvbjptLHJvb3RJZDpnfT1sQSgpLHtzaWRlOnksYWxpZ246dixmbG9hdGluZ0NvbnRleHQ6QX09ZnVuY3Rpb24oKXtsZXQgZT14LnVzZUNvbnRleHQoczEpO2lmKHZvaWQgMD09PWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBNZW51UG9zaXRpb25lckNvbnRleHQgaXMgbWlzc2luZy4gTWVudVBvc2l0aW9uZXIgcGFydHMgbXVzdCBiZSBwbGFjZWQgd2l0aGluIDxNZW51LlBvc2l0aW9uZXI+LlwiKTtyZXR1cm4gZX0oKTtsQyh7b3BlbjppLHJlZjpzLG9uQ29tcGxldGUoKXtpJiZwPy4oITApfX0pO2xldHtldmVudHM6d309YWsoKTt4LnVzZUVmZmVjdCgoKT0+e2Z1bmN0aW9uIGUoZSl7bCghMSxlLmRvbUV2ZW50LGUucmVhc29uKX1yZXR1cm4gdy5vbihcImNsb3NlXCIsZSksKCk9Pnt3Lm9mZihcImNsb3NlXCIsZSl9fSxbdyxsXSk7bGV0IEM9c24oXCJkaXZcIixlLHtzdGF0ZTp4LnVzZU1lbW8oKCk9Pih7dHJhbnNpdGlvblN0YXR1czpjLHNpZGU6eSxhbGlnbjp2LG9wZW46aSxuZXN0ZWQ6XCJtZW51XCI9PT1oLnR5cGUsaW5zdGFudDpmfSksW2MseSx2LGksaC50eXBlLGZdKSxyZWY6W3Qsc10sY3VzdG9tU3R5bGVIb29rTWFwcGluZzpjcSxwcm9wczpbdSxcInN0YXJ0aW5nXCI9PT1jP2lOOmlSLGEse1wiZGF0YS1yb290b3duZXJpZFwiOmd9XX0pLF89dm9pZCAwPT09aC50eXBlfHxcImNvbnRleHQtbWVudVwiPT09aC50eXBlO3JldHVyblwibWVudWJhclwiPT09aC50eXBlJiZcIm91dHNpZGUtcHJlc3NcIiE9PW0mJihfPSEwKSwoMCxiLmpzeCkoY0Yse2NvbnRleHQ6QSxtb2RhbDohMSxkaXNhYmxlZDohZCxyZXR1cm5Gb2N1czpvfHxfLGluaXRpYWxGb2N1czpcIm1lbnVcIj09PWgudHlwZT8tMTowLHJlc3RvcmVGb2N1czohMCxjaGlsZHJlbjpDfSl9KSxjVj14LmNyZWF0ZUNvbnRleHQodm9pZCAwKSxjJD14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7cmVuZGVyOm4sY2xhc3NOYW1lOnIsLi4ub309ZSxbYSxpXT14LnVzZVN0YXRlKHZvaWQgMCksbD14LnVzZU1lbW8oKCk9Pih7c2V0TGFiZWxJZDppfSksW2ldKSxzPXNuKFwiZGl2XCIsZSx7cmVmOnQscHJvcHM6e3JvbGU6XCJncm91cFwiLFwiYXJpYS1sYWJlbGxlZGJ5XCI6YSwuLi5vfX0pO3JldHVybigwLGIuanN4KShjVi5Qcm92aWRlcix7dmFsdWU6bCxjaGlsZHJlbjpzfSl9KTtmdW5jdGlvbiBjVyhlKXtyZXR1cm4gYWIoZSxcImJhc2UtdWlcIil9bGV0IGNZPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtjbGFzc05hbWU6bixyZW5kZXI6cixpZDpvLC4uLmF9PWUsaT1jVyhvKSx7c2V0TGFiZWxJZDpsfT1mdW5jdGlvbigpe2xldCBlPXgudXNlQ29udGV4dChjVik7aWYodm9pZCAwPT09ZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IE1lbnVHcm91cFJvb3RDb250ZXh0IGlzIG1pc3NpbmcuIE1lbnUgZ3JvdXAgcGFydHMgbXVzdCBiZSB1c2VkIHdpdGhpbiA8TWVudS5Hcm91cD4uXCIpO3JldHVybiBlfSgpO3JldHVybiBheCgoKT0+KGwoaSksKCk9PntsKHZvaWQgMCl9KSxbbCxpXSksc24oXCJkaXZcIixlLHtyZWY6dCxwcm9wczp7aWQ6aSxyb2xlOlwicHJlc2VudGF0aW9uXCIsLi4uYX19KX0pLGNLPXt0eXBlOlwicmVndWxhci1pdGVtXCJ9LGNYPXgubWVtbyh4LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7Y2xhc3NOYW1lOm4sY2xvc2VPbkNsaWNrOnI9ITAsZGlzYWJsZWQ6bz0hMSxoaWdobGlnaHRlZDphLGlkOmksbWVudUV2ZW50czpsLGl0ZW1Qcm9wczpzLHJlbmRlcjpjLGFsbG93TW91c2VVcFRyaWdnZXJSZWY6dSx0eXBpbmdSZWY6ZCxuYXRpdmVCdXR0b246ZiwuLi5wfT1lLHtnZXRJdGVtUHJvcHM6aCxpdGVtUmVmOm19PWZ1bmN0aW9uKGUpe2xldHtjbG9zZU9uQ2xpY2s6dCxkaXNhYmxlZDpuPSExLGhpZ2hsaWdodGVkOnIsaWQ6byxtZW51RXZlbnRzOmEsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjppLHR5cGluZ1JlZjpsLG5hdGl2ZUJ1dHRvbjpzLGl0ZW1NZXRhZGF0YTpjfT1lLHU9eC51c2VSZWYobnVsbCkse2dldEJ1dHRvblByb3BzOmQsYnV0dG9uUmVmOmZ9PXNpKHtkaXNhYmxlZDpuLGZvY3VzYWJsZVdoZW5EaXNhYmxlZDohMCxuYXRpdmU6c30pLHA9eC51c2VDYWxsYmFjayhlPT5sTSh7aWQ6byxyb2xlOlwibWVudWl0ZW1cIix0YWJJbmRleDpyPzA6LTEsb25Nb3VzZUVudGVyKCl7XCJzdWJtZW51LXRyaWdnZXJcIj09PWMudHlwZSYmYy5zZXRBY3RpdmUoKX0sb25LZXlVcDplPT57XCIgXCI9PT1lLmtleSYmbC5jdXJyZW50JiZlLnByZXZlbnRCYXNlVUlIYW5kbGVyKCl9LG9uQ2xpY2s6ZT0+e3QmJmEuZW1pdChcImNsb3NlXCIse2RvbUV2ZW50OmUscmVhc29uOlwiaXRlbS1wcmVzc1wifSl9LG9uTW91c2VVcDooKT0+e3UuY3VycmVudCYmaS5jdXJyZW50JiZcInJlZ3VsYXItaXRlbVwiPT09Yy50eXBlJiZ1LmN1cnJlbnQuY2xpY2soKX19LGUsZCksW28scixkLGwsdCxhLGksY10pLGg9bFkodSxmKTtyZXR1cm4geC51c2VNZW1vKCgpPT4oe2dldEl0ZW1Qcm9wczpwLGl0ZW1SZWY6aH0pLFtwLGhdKX0oe2Nsb3NlT25DbGljazpyLGRpc2FibGVkOm8saGlnaGxpZ2h0ZWQ6YSxpZDppLG1lbnVFdmVudHM6bCxhbGxvd01vdXNlVXBUcmlnZ2VyUmVmOnUsdHlwaW5nUmVmOmQsbmF0aXZlQnV0dG9uOmYsaXRlbU1ldGFkYXRhOmNLfSk7cmV0dXJuIHNuKFwiZGl2XCIsZSx7c3RhdGU6eC51c2VNZW1vKCgpPT4oe2Rpc2FibGVkOm8saGlnaGxpZ2h0ZWQ6YX0pLFtvLGFdKSxyZWY6W20sdF0scHJvcHM6W3MscCxoXX0pfSkpLGNHPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtpZDpuLGxhYmVsOnIsbmF0aXZlQnV0dG9uOm89ITEsLi4uYX09ZSxpPXgudXNlUmVmKG51bGwpLGw9c2Moe2xhYmVsOnJ9KSxzPWxZKHQsbC5yZWYsaSkse2l0ZW1Qcm9wczpjLGFjdGl2ZUluZGV4OnUsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjpkLHR5cGluZ1JlZjpmfT1sQSgpLHA9Y1cobiksaD1sLmluZGV4PT09dSx7ZXZlbnRzOm19PWFrKCk7cmV0dXJuKDAsYi5qc3gpKGNYLHsuLi5hLGlkOnAscmVmOnMsaGlnaGxpZ2h0ZWQ6aCxtZW51RXZlbnRzOm0saXRlbVByb3BzOmMsYWxsb3dNb3VzZVVwVHJpZ2dlclJlZjpkLHR5cGluZ1JlZjpmLG5hdGl2ZUJ1dHRvbjpvfSl9KTt2YXIgY1E9XCJfX25leHRfYnVpbHRpbl9fXCI7ZnVuY3Rpb24gY0ooZSl7cmV0dXJuIGUucmVwbGFjZShuZXcgUmVnRXhwKFwiXlwiLmNvbmNhdChjUSkpLFwiXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChcIlwiLmNvbmNhdChcIkBib3VuZGFyeVwiLFwiJFwiKSksXCJcIil9dmFyIGMwPVwiYm91bmRhcnk6XCI7ZnVuY3Rpb24gYzEoZSl7cmV0dXJuIGUuc3RhcnRzV2l0aChjMCl9ZnVuY3Rpb24gYzIoZSl7cmV0dXJuIGUucmVwbGFjZShjMCxcIlwiKX1mdW5jdGlvbiBjNChlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gYzUoZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfWZ1bmN0aW9uIGMzKGUsdCl7cmV0dXJuIHQ9bnVsbCE9dD90Ont9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnModCkpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QodCkpLmZvckVhY2goZnVuY3Rpb24obil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbixPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbikpfSksZX1mdW5jdGlvbiBjNihlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gYzQoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gYzQoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9dmFyIGM5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gZnVuY3Rpb24oZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dChlKTp0JiYodC5jdXJyZW50PWUpfSl9fTtmdW5jdGlvbiBjOChlKXt2YXIgdCxuPWUubm9kZVN0YXRlLHI9ZS5ib3VuZGFyaWVzLG89bi5wYWdlUGF0aCxhPW4uYm91bmRhcnlUeXBlLGk9bi5zZXRCb3VuZGFyeVR5cGUsbD1jNigoMCx4LnVzZVN0YXRlKSghMSksMikscz1sWzBdLGM9bFsxXSx1PWRhKCkuc2hhZG93Um9vdCxkPSgwLHgudXNlUmVmKShudWxsKSxmPSgwLHgudXNlUmVmKShudWxsKTt0OChmLGQscyxmdW5jdGlvbigpe2MoITEpfSxudWxsPT0odD1kLmN1cnJlbnQpP3ZvaWQgMDp0Lm93bmVyRG9jdW1lbnQpO3ZhciBwPShPYmplY3QudmFsdWVzKHIpLmZpbmQoZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lfSl8fFwiXCIpLnNwbGl0KFwiLlwiKS5wb3AoKXx8XCJqc1wiLGg9KDAseC51c2VNZW1vKShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMocikubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PWM2KGUsMiksbj10WzBdLHI9Y0ooKHRbMV18fFwiXCIpLnNwbGl0KFwiL1wiKS5wb3AoKXx8XCJcIi5jb25jYXQobixcIi5cIikuY29uY2F0KHApKTtyZXR1cm5bbixyXX0pKX0sW3IscF0pLG09KG98fFwiXCIpLnNwbGl0KFwiL1wiKS5wb3AoKXx8XCJcIixnPWNKKGE/XCJwYWdlLlwiLmNvbmNhdChwKTptfHxcInBhZ2UuXCIuY29uY2F0KHApKSx5PVt7bGFiZWw6aC5sb2FkaW5nLHZhbHVlOlwibG9hZGluZ1wiLGljb246KDAsYi5qc3gpKGM3LHt9KSxkaXNhYmxlZDohci5sb2FkaW5nfSx7bGFiZWw6aC5lcnJvcix2YWx1ZTpcImVycm9yXCIsaWNvbjooMCxiLmpzeCkodWUse30pLGRpc2FibGVkOiFyLmVycm9yfSx7bGFiZWw6aFtcIm5vdC1mb3VuZFwiXSx2YWx1ZTpcIm5vdC1mb3VuZFwiLGljb246KDAsYi5qc3gpKHV0LHt9KSxkaXNhYmxlZDohcltcIm5vdC1mb3VuZFwiXX1dLHY9e2xhYmVsOmE/XCJSZXNldFwiOmcsdmFsdWU6XCJyZXNldFwiLGljb246KDAsYi5qc3gpKHVuLHt9KSxkaXNhYmxlZDpudWxsPT09YX0sQT0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXt2YXIgdD1uZXcgVVJMU2VhcmNoUGFyYW1zKHtmaWxlOmUuZmlsZVBhdGgsaXNBcHBSZWxhdGl2ZVBhdGg6XCIxXCJ9KTtmZXRjaChcIlwiLmNvbmNhdChwcm9jZXNzLmVudi5fX05FWFRfUk9VVEVSX0JBU0VQQVRIfHxcIlwiLFwiL19fbmV4dGpzX2xhdW5jaC1lZGl0b3I/XCIpLmNvbmNhdCh0LnRvU3RyaW5nKCkpKS5jYXRjaChjb25zb2xlLndhcm4pfSxbXSksdz0oMCx4LnVzZUNhbGxiYWNrKShmdW5jdGlvbihlKXtzd2l0Y2goZSl7Y2FzZVwibm90LWZvdW5kXCI6Y2FzZVwibG9hZGluZ1wiOmNhc2VcImVycm9yXCI6aShlKTticmVhaztjYXNlXCJyZXNldFwiOmkobnVsbCk7YnJlYWs7Y2FzZVwib3Blbi1lZGl0b3JcIjpvJiZBKHtmaWxlUGF0aDpvfSl9fSxbaSxvLEFdKSxDPSgwLHgudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm5cImxheW91dFwiIT09bi50eXBlJiZcInRlbXBsYXRlXCIhPT1uLnR5cGUmJk9iamVjdC52YWx1ZXMocikuc29tZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9PWV9KX0sW24udHlwZSxyXSk7cmV0dXJuKDAsYi5qc3hzKShsVyx7ZGVsYXk6MCxtb2RhbDohMSxvcGVuOnMsb25PcGVuQ2hhbmdlOmMsY2hpbGRyZW46WygwLGIuanN4KShzZCx7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyXCIsXCJkYXRhLW5leHRqcy1kZXYtb3ZlcmxheS1zZWdtZW50LWJvdW5kYXJ5LXRyaWdnZXItYnV0dG9uXCI6ITAscmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWM5KGUucmVmLGQpO3JldHVybigwLGIuanN4KSh1byxjMyhjNSh7fSxlKSx7cmVmOnR9KSl9LGRpc2FibGVkOiFDfSksKDAsYi5qc3gpKHMwLHtjb250YWluZXI6dSxjaGlsZHJlbjooMCxiLmpzeCkoY1Ase2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24tcG9zaXRpb25lclwiLHNpZGU6XCJib3R0b21cIixhbGlnbjpcImNlbnRlclwiLHNpZGVPZmZzZXQ6NixhcnJvd1BhZGRpbmc6OCxyZWY6ZixjaGlsZHJlbjooMCxiLmpzeHMpKGNILHtjbGFzc05hbWU6XCJzZWdtZW50LWJvdW5kYXJ5LWRyb3Bkb3duXCIsY2hpbGRyZW46WygwLGIuanN4cykoYyQse2NoaWxkcmVuOlsoMCxiLmpzeCkoY1kse2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktZ3JvdXAtbGFiZWxcIixjaGlsZHJlbjpcIlRvZ2dsZSBPdmVycmlkZXNcIn0pLHkubWFwKGZ1bmN0aW9uKGUpe3JldHVybigwLGIuanN4cykoY0cse2NsYXNzTmFtZTpcInNlZ21lbnQtYm91bmRhcnktZHJvcGRvd24taXRlbVwiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gdyhlLnZhbHVlKX0sZGlzYWJsZWQ6ZS5kaXNhYmxlZCxjaGlsZHJlbjpbZS5pY29uLGUubGFiZWxdfSxlLnZhbHVlKX0pXX0pLCgwLGIuanN4KShjJCx7Y2hpbGRyZW46KDAsYi5qc3hzKShjRyx7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS1kcm9wZG93bi1pdGVtXCIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiB3KHYudmFsdWUpfSxkaXNhYmxlZDp2LmRpc2FibGVkLGNoaWxkcmVuOlt2Lmljb24sdi5sYWJlbF19LHYudmFsdWUpfSldfSl9KX0pXX0pfWZ1bmN0aW9uIGM3KCl7dmFyIGUsdCxuPSgwLEEuYykoMik7cmV0dXJuIG5bMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZT0oMCxiLmpzeCkoXCJnXCIse2NsaXBQYXRoOlwidXJsKCNjbGlwMF8yNzU5XzE4NjYpXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTEwIDMuNUMxMy41ODk5IDMuNSAxNi41IDYuNDEwMTUgMTYuNSAxMEMxNi41IDEzLjU4OTkgMTMuNTg5OSAxNi41IDEwIDE2LjVDNi40MTAxNSAxNi41IDMuNSAxMy41ODk5IDMuNSAxMEMzLjUgNi40MTAxNSA2LjQxMDE1IDMuNSAxMCAzLjVaTTIgMTBDMiAxNC40MTgzIDUuNTgxNzIgMTggMTAgMThDMTQuNDE4MyAxOCAxOCAxNC40MTgzIDE4IDEwQzE4IDUuNTgxNzIgMTQuNDE4MyAyIDEwIDJDNS41ODE3MiAyIDIgNS41ODE3MiAyIDEwWk0xMC43NSA5LjYyNDAyVjZIOS4yNVY5Ljg3NUM5LjI1IDEwLjE4OTggOS4zOTg1OCAxMC40ODYgOS42NTAzOSAxMC42NzQ4TDExLjU0OTggMTIuMDk5NkwxMi4xNTA0IDEyLjU0OThMMTMuMDQ5OCAxMS4zNDk2TDEyLjQ1MDIgMTAuOTAwNEwxMC43NSA5LjYyNDAyWlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksblswXT1lKTplPW5bMF0sblsxXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4cykoXCJzdmdcIix7d2lkdGg6XCIyMHB4XCIsaGVpZ2h0OlwiMjBweFwiLHZpZXdCb3g6XCIwIDAgMjAgMjBcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixjaGlsZHJlbjpbZSwoMCxiLmpzeCkoXCJkZWZzXCIse2NoaWxkcmVuOigwLGIuanN4KShcImNsaXBQYXRoXCIse2lkOlwiY2xpcDBfMjc1OV8xODY2XCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicmVjdFwiLHt3aWR0aDpcIjE2XCIsaGVpZ2h0OlwiMTZcIixmaWxsOlwid2hpdGVcIix0cmFuc2Zvcm06XCJ0cmFuc2xhdGUoMiAyKVwifSl9KX0pXX0pLG5bMV09dCk6dD1uWzFdLHR9ZnVuY3Rpb24gdWUoKXt2YXIgZSx0LG49KDAsQS5jKSgyKTtyZXR1cm4gblswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcImdcIix7Y2xpcFBhdGg6XCJ1cmwoI2NsaXAwXzI3NTlfMTg4MSlcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJwYXRoXCIse2ZpbGxSdWxlOlwiZXZlbm9kZFwiLGNsaXBSdWxlOlwiZXZlbm9kZFwiLGQ6XCJNMy41IDcuMzA3NjJWMTIuNjkyNEw3LjMwNzYyIDE2LjVIMTIuNjkyNEwxNi41IDEyLjY5MjRWNy4zMDc2MkwxMi42OTI0IDMuNUg3LjMwNzYyTDMuNSA3LjMwNzYyWk0xOCAxMi44OTk0TDE3Ljk5NTEgMTIuOTk4QzE3Ljk3MjQgMTMuMjI3MSAxNy44NzEyIDEzLjQ0MjMgMTcuNzA3IDEzLjYwNjRMMTMuNjA2NCAxNy43MDdMMTMuNTMzMiAxNy43NzM0QzEzLjM4MDYgMTcuODk4NSAxMy4xOTQ0IDE3Ljk3NTcgMTIuOTk4IDE3Ljk5NTFMMTIuODk5NCAxOEg3LjEwMDU5TDcuMDAxOTUgMTcuOTk1MUM2LjgwNTYyIDE3Ljk3NTcgNi42MTk0IDE3Ljg5ODUgNi40NjY4IDE3Ljc3MzRMNi4zOTM1NSAxNy43MDdMMi4yOTI5NyAxMy42MDY0QzIuMTI4ODMgMTMuNDQyMyAyLjAyNzU2IDEzLjIyNzEgMi4wMDQ4OCAxMi45OThMMiAxMi44OTk0VjcuMTAwNTlDMiA2LjgzNTM5IDIuMTA1NDYgNi41ODEwOSAyLjI5Mjk3IDYuMzkzNTVMNi4zOTM1NSAyLjI5Mjk3QzYuNTU3NzEgMi4xMjg4MyA2Ljc3Mjk0IDIuMDI3NTYgNy4wMDE5NSAyLjAwNDg4TDcuMTAwNTkgMkgxMi44OTk0TDEyLjk5OCAyLjAwNDg4QzEzLjIyNzEgMi4wMjc1NiAxMy40NDIzIDIuMTI4ODMgMTMuNjA2NCAyLjI5Mjk3TDE3LjcwNyA2LjM5MzU1QzE3Ljg5NDUgNi41ODEwOSAxOCA2LjgzNTM5IDE4IDcuMTAwNTlWMTIuODk5NFpNOS4yNSA1Ljc1SDEwLjc1TDEwLjc1IDEwLjc1SDkuMjVMOS4yNSA1Ljc1Wk0xMCAxNEMxMC41NTIzIDE0IDExIDEzLjU1MjMgMTEgMTNDMTEgMTIuNDQ3NyAxMC41NTIzIDEyIDEwIDEyQzkuNDQ3NzIgMTIgOSAxMi40NDc3IDkgMTNDOSAxMy41NTIzIDkuNDQ3NzIgMTQgMTAgMTRaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSxuWzBdPWUpOmU9blswXSxuWzFdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3hzKShcInN2Z1wiLHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDIwIDIwXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46W2UsKDAsYi5qc3gpKFwiZGVmc1wiLHtjaGlsZHJlbjooMCxiLmpzeCkoXCJjbGlwUGF0aFwiLHtpZDpcImNsaXAwXzI3NTlfMTg4MVwiLGNoaWxkcmVuOigwLGIuanN4KShcInJlY3RcIix7d2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsZmlsbDpcIndoaXRlXCIsdHJhbnNmb3JtOlwidHJhbnNsYXRlKDIgMilcIn0pfSl9KV19KSxuWzFdPXQpOnQ9blsxXSx0fWZ1bmN0aW9uIHV0KCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMjBweFwiLGhlaWdodDpcIjIwcHhcIix2aWV3Qm94OlwiMCAwIDIwIDIwXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTEwLjU1ODYgMi41QzExLjEzNDEgMi41MDAwNCAxMS42NTg4IDIuODI5NCAxMS45MDkxIDMuMzQ3NjZMMTcuODA3NiAxNS41NjU0QzE4LjEyNzggMTYuMjI5MiAxNy42NDQyIDE2Ljk5OTcgMTYuOTA3MiAxN0gzLjA5Mjc0QzIuMzU1NzQgMTYuOTk5NyAxLjg3MjEgMTYuMjI5MiAyLjE5MjM1IDE1LjU2NTRMOC4wOTA3OSAzLjM0NzY2QzguMzQxMDkgMi44Mjk0IDguODY1ODMgMi41MDAwNCA5LjQ0MTM3IDIuNUgxMC41NTg2Wk0zLjg5MDU5IDE1LjVIMTYuMTA5M0wxMC41NTg2IDRIOS40NDEzN0wzLjg5MDU5IDE1LjVaTTkuMjQ5OTcgNi43NUgxMC43NUwxMC43NSAxMC43NUg5LjI0OTk3TDkuMjQ5OTcgNi43NVpNOS45OTk5NyAxNEMxMC41NTIzIDE0IDExIDEzLjU1MjMgMTEgMTNDMTEgMTIuNDQ3NyAxMC41NTIzIDEyIDkuOTk5OTcgMTJDOS40NDc2OCAxMiA4Ljk5OTk3IDEyLjQ0NzcgOC45OTk5NyAxM0M4Ljk5OTk3IDEzLjU1MjMgOS40NDc2OCAxNCA5Ljk5OTk3IDE0WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pfSksdFswXT1lKTplPXRbMF0sZX1mdW5jdGlvbiB1bigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt3aWR0aDpcIjIwXCIsaGVpZ2h0OlwiMjBcIix2aWV3Qm94OlwiMCAwIDIwIDIwXCIsZmlsbDpcIm5vbmVcIix4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTkuOTY0ODQgM0MxMy44NDYzIDMuMDAwMTggMTcgNi4xMzAxMiAxNyAxMEMxNyAxMy44Njk5IDEzLjg0NjMgMTYuOTk5OCA5Ljk2NDg0IDE3QzcuNjI0MDQgMTcgNS41NDg3NyAxNS44NjE3IDQuMjcwNTEgMTQuMTEyM0wzLjgyODEyIDEzLjUwNjhMNS4wMzkwNiAxMi42MjIxTDUuNDgxNDUgMTMuMjI3NUM2LjQ4ODE1IDE0LjYwNTMgOC4xMjA5MiAxNS41IDkuOTY0ODQgMTUuNUMxMy4wMjU5IDE1LjQ5OTggMTUuNSAxMy4wMzM1IDE1LjUgMTBDMTUuNSA2Ljk2NjU0IDEzLjAyNTkgNC41MDAxOCA5Ljk2NDg0IDQuNUM3LjQyOTA1IDQuNSA1LjI5NTQ0IDYuMTk0MjkgNC42Mzg2NyA4LjVIOFYxMEgyLjc1QzIuMzM1NzkgMTAgMiA5LjY2NDIxIDIgOS4yNVY0SDMuNVY3LjIzNzNDNC41Nzc4MSA0Ljc0Mzc2IDcuMDY3NDkgMyA5Ljk2NDg0IDNaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIHVyKGUpe3ZhciB0LG4scj0oMCxBLmMpKDMpO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTguNzA3MSAyLjM5NjQ0QzguMzE2NTggMi4wMDU5MiA3LjY4MzQxIDIuMDA1OTIgNy4yOTI4OSAyLjM5NjQ0TDQuNDY5NjYgNS4yMTk2NkwzLjkzOTMzIDUuNzQ5OTlMNC45OTk5OSA2LjgxMDY1TDUuNTMwMzIgNi4yODAzMkw3Ljk5OTk5IDMuODEwNjVMMTAuNDY5NyA2LjI4MDMyTDExIDYuODEwNjVMMTIuMDYwNyA1Ljc0OTk5TDExLjUzMDMgNS4yMTk2Nkw4LjcwNzEgMi4zOTY0NFpNNS41MzAzMiA5LjcxOTY2TDQuOTk5OTkgOS4xODkzM0wzLjkzOTMzIDEwLjI1TDQuNDY5NjYgMTAuNzgwM0w3LjI5Mjg5IDEzLjYwMzVDNy42ODM0MSAxMy45OTQxIDguMzE2NTggMTMuOTk0MSA4LjcwNzEgMTMuNjAzNUwxMS41MzAzIDEwLjc4MDNMMTIuMDYwNyAxMC4yNUwxMSA5LjE4OTMzTDEwLjQ2OTcgOS43MTk2Nkw3Ljk5OTk5IDEyLjE4OTNMNS41MzAzMiA5LjcxOTY2WlwiLGZpbGw6XCJjdXJyZW50Q29sb3JcIn0pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1lPyhuPSgwLGIuanN4KShcInN2Z1wiLGMzKGM1KHtzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsdmlld0JveDpcIjAgMCAxNiAxNlwifSxlKSx7Y2hpbGRyZW46dH0pKSxyWzFdPWUsclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiB1byhlKXt2YXIgdCxuLHI9KDAsQS5jKSgzKTtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1ib3VuZGFyeS10cmlnZ2VyLXRleHRcIixjaGlsZHJlbjooMCxiLmpzeCkodXIse2NsYXNzTmFtZTpcInBsdXMtaWNvblwifSl9KSxyWzBdPXQpOnQ9clswXSxyWzFdIT09ZT8obj0oMCxiLmpzeCkoXCJidXR0b25cIixjMyhjNSh7fSxlKSx7Y2hpbGRyZW46dH0pKSxyWzFdPWUsclsyXT1uKTpuPXJbMl0sbn1sZXQgdWE9eC5jcmVhdGVDb250ZXh0KHZvaWQgMCk7ZnVuY3Rpb24gdWkoKXtsZXQgZT14LnVzZUNvbnRleHQodWEpO2lmKHZvaWQgMD09PWUpdGhyb3cgRXJyb3IoXCJCYXNlIFVJOiBUb29sdGlwUm9vdENvbnRleHQgaXMgbWlzc2luZy4gVG9vbHRpcCBwYXJ0cyBtdXN0IGJlIHBsYWNlZCB3aXRoaW4gPFRvb2x0aXAuUm9vdD4uXCIpO3JldHVybiBlfWxldCB1bD14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7Y2xhc3NOYW1lOm4scmVuZGVyOnIsLi4ub309ZSx7b3BlbjphLHNldFRyaWdnZXJFbGVtZW50OmksdHJpZ2dlclByb3BzOmx9PXVpKCk7cmV0dXJuIHNuKFwiYnV0dG9uXCIsZSx7c3RhdGU6eC51c2VNZW1vKCgpPT4oe29wZW46YX0pLFthXSkscmVmOlt0LGldLHByb3BzOltsLG9dLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6bDh9KX0pLHVzPXguY3JlYXRlQ29udGV4dCh2b2lkIDApO2Z1bmN0aW9uIHVjKCl7bGV0IGU9eC51c2VDb250ZXh0KHVzKTtpZih2b2lkIDA9PT1lKXRocm93IEVycm9yKFwiQmFzZSBVSTogVG9vbHRpcFBvc2l0aW9uZXJDb250ZXh0IGlzIG1pc3NpbmcuIFRvb2x0aXBQb3NpdGlvbmVyIHBhcnRzIG11c3QgYmUgcGxhY2VkIHdpdGhpbiA8VG9vbHRpcC5Qb3NpdGlvbmVyPi5cIik7cmV0dXJuIGV9bGV0IHV1PXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtjbGFzc05hbWU6bixyZW5kZXI6ciwuLi5vfT1lLHtvcGVuOmEsYXJyb3dSZWY6aSxzaWRlOmwsYWxpZ246cyxhcnJvd1VuY2VudGVyZWQ6YyxhcnJvd1N0eWxlczp1fT11YygpO3JldHVybiBzbihcImRpdlwiLGUse3N0YXRlOngudXNlTWVtbygoKT0+KHtvcGVuOmEsc2lkZTpsLGFsaWduOnMsdW5jZW50ZXJlZDpjfSksW2EsbCxzLGNdKSxyZWY6W3QsaV0scHJvcHM6W3tzdHlsZTp1LFwiYXJpYS1oaWRkZW5cIjohMH0sb10sY3VzdG9tU3R5bGVIb29rTWFwcGluZzpzZX0pfSksdWQ9ey4uLnNlLC4uLmwwfSx1Zj14LmZvcndhcmRSZWYoZnVuY3Rpb24oZSx0KXtsZXR7Y2xhc3NOYW1lOm4scmVuZGVyOnIsLi4ub309ZSx7b3BlbjphLGluc3RhbnRUeXBlOmksdHJhbnNpdGlvblN0YXR1czpsLHBvcHVwUHJvcHM6cyxwb3B1cFJlZjpjLG9uT3BlbkNoYW5nZUNvbXBsZXRlOnV9PXVpKCkse3NpZGU6ZCxhbGlnbjpmfT11YygpO3JldHVybiBsQyh7b3BlbjphLHJlZjpjLG9uQ29tcGxldGUoKXthJiZ1Py4oITApfX0pLHNuKFwiZGl2XCIsZSx7c3RhdGU6eC51c2VNZW1vKCgpPT4oe29wZW46YSxzaWRlOmQsYWxpZ246ZixpbnN0YW50OmksdHJhbnNpdGlvblN0YXR1czpsfSksW2EsZCxmLGksbF0pLHJlZjpbdCxjXSxwcm9wczpbcyxcInN0YXJ0aW5nXCI9PT1sP2lOOmlSLG9dLGN1c3RvbVN0eWxlSG9va01hcHBpbmc6dWR9KX0pLHVwPXguY3JlYXRlQ29udGV4dCh2b2lkIDApLHVoPXguZm9yd2FyZFJlZihmdW5jdGlvbihlLHQpe2xldHtyZW5kZXI6bixjbGFzc05hbWU6cixhbmNob3I6byxwb3NpdGlvbk1ldGhvZDphPVwiYWJzb2x1dGVcIixzaWRlOmk9XCJ0b3BcIixhbGlnbjpsPVwiY2VudGVyXCIsc2lkZU9mZnNldDpzPTAsYWxpZ25PZmZzZXQ6Yz0wLGNvbGxpc2lvbkJvdW5kYXJ5OnU9XCJjbGlwcGluZy1hbmNlc3RvcnNcIixjb2xsaXNpb25QYWRkaW5nOmQ9NSxhcnJvd1BhZGRpbmc6Zj01LHN0aWNreTpwPSExLHRyYWNrQW5jaG9yOmg9ITAsY29sbGlzaW9uQXZvaWRhbmNlOm09aVUsLi4uZ309ZSx7b3Blbjp5LHNldFBvc2l0aW9uZXJFbGVtZW50OnYsbW91bnRlZDpBLGZsb2F0aW5nUm9vdENvbnRleHQ6dyx0cmFja0N1cnNvckF4aXM6Qyxob3ZlcmFibGU6X309dWkoKSxrPWNfKHthbmNob3I6byxwb3NpdGlvbk1ldGhvZDphLGZsb2F0aW5nUm9vdENvbnRleHQ6dyxtb3VudGVkOkEsc2lkZTppLHNpZGVPZmZzZXQ6cyxhbGlnbjpsLGFsaWduT2Zmc2V0OmMsY29sbGlzaW9uQm91bmRhcnk6dSxjb2xsaXNpb25QYWRkaW5nOmQsc3RpY2t5OnAsYXJyb3dQYWRkaW5nOmYsdHJhY2tBbmNob3I6aCxrZWVwTW91bnRlZDpmdW5jdGlvbigpe2xldCBlPXgudXNlQ29udGV4dCh1cCk7aWYodm9pZCAwPT09ZSl0aHJvdyBFcnJvcihcIkJhc2UgVUk6IDxUb29sdGlwLlBvcnRhbD4gaXMgbWlzc2luZy5cIik7cmV0dXJuIGV9KCksY29sbGlzaW9uQXZvaWRhbmNlOm19KSxFPXgudXNlTWVtbygoKT0+e2xldCBlPXt9O3JldHVybiB5JiZcImJvdGhcIiE9PUMmJl98fChlLnBvaW50ZXJFdmVudHM9XCJub25lXCIpLHtyb2xlOlwicHJlc2VudGF0aW9uXCIsaGlkZGVuOiFBLHN0eWxlOnsuLi5rLnBvc2l0aW9uZXJTdHlsZXMsLi4uZX19fSxbeSxDLF8sQSxrLnBvc2l0aW9uZXJTdHlsZXNdKSxqPXgudXNlTWVtbygoKT0+KHtwcm9wczpFLC4uLmt9KSxbRSxrXSksUz14LnVzZU1lbW8oKCk9Pih7b3Blbjp5LHNpZGU6ai5zaWRlLGFsaWduOmouYWxpZ24sYW5jaG9ySGlkZGVuOmouYW5jaG9ySGlkZGVufSksW3ksai5zaWRlLGouYWxpZ24sai5hbmNob3JIaWRkZW5dKSxPPXgudXNlTWVtbygoKT0+KHsuLi5TLGFycm93UmVmOmouYXJyb3dSZWYsYXJyb3dTdHlsZXM6ai5hcnJvd1N0eWxlcyxhcnJvd1VuY2VudGVyZWQ6ai5hcnJvd1VuY2VudGVyZWR9KSxbUyxqLmFycm93UmVmLGouYXJyb3dTdHlsZXMsai5hcnJvd1VuY2VudGVyZWRdKSxCPXNuKFwiZGl2XCIsZSx7c3RhdGU6Uyxwcm9wczpbai5wcm9wcyxnXSxyZWY6W3Qsdl0sY3VzdG9tU3R5bGVIb29rTWFwcGluZzpzZX0pO3JldHVybigwLGIuanN4KSh1cy5Qcm92aWRlcix7dmFsdWU6TyxjaGlsZHJlbjpCfSl9KTtmdW5jdGlvbiB1bShlKXtsZXQgdD1zRyh7cm9vdDplLnJvb3R9KTtyZXR1cm4gdCYmZWYuY3JlYXRlUG9ydGFsKGUuY2hpbGRyZW4sdCl9ZnVuY3Rpb24gdWcoZSl7bGV0e2NoaWxkcmVuOnQsa2VlcE1vdW50ZWQ6bj0hMSxjb250YWluZXI6cn09ZSx7bW91bnRlZDpvfT11aSgpO3JldHVybiBvfHxuPygwLGIuanN4KSh1cC5Qcm92aWRlcix7dmFsdWU6bixjaGlsZHJlbjooMCxiLmpzeCkodW0se3Jvb3Q6cixjaGlsZHJlbjp0fSl9KTpudWxsfWxldCB1eT14LmNyZWF0ZUNvbnRleHQoe2hhc1Byb3ZpZGVyOiExLHRpbWVvdXRNczowLGRlbGF5UmVmOntjdXJyZW50OjB9LGluaXRpYWxEZWxheVJlZjp7Y3VycmVudDowfSx0aW1lb3V0Om5ldyBhcyxjdXJyZW50SWRSZWY6e2N1cnJlbnQ6bnVsbH0sY3VycmVudENvbnRleHRSZWY6e2N1cnJlbnQ6bnVsbH19KTtmdW5jdGlvbiB1dihlKXtsZXR7Y2hpbGRyZW46dCxkZWxheTpuLHRpbWVvdXRNczpyPTB9PWUsbz14LnVzZVJlZihuKSxhPXgudXNlUmVmKG4pLGk9eC51c2VSZWYobnVsbCksbD14LnVzZVJlZihudWxsKSxzPWFjKCk7cmV0dXJuKDAsYi5qc3gpKHV5LlByb3ZpZGVyLHt2YWx1ZTp4LnVzZU1lbW8oKCk9Pih7aGFzUHJvdmlkZXI6ITAsZGVsYXlSZWY6byxpbml0aWFsRGVsYXlSZWY6YSxjdXJyZW50SWRSZWY6aSx0aW1lb3V0TXM6cixjdXJyZW50Q29udGV4dFJlZjpsLHRpbWVvdXQ6c30pLFtyLHNdKSxjaGlsZHJlbjp0fSl9bGV0IHViPXguY3JlYXRlQ29udGV4dCh2b2lkIDApLHVBPWZ1bmN0aW9uKGUpe2xldHtkZWxheTp0LGNsb3NlRGVsYXk6bix0aW1lb3V0OnI9NDAwfT1lLG89eC51c2VNZW1vKCgpPT4oe2RlbGF5OnQsY2xvc2VEZWxheTpufSksW3Qsbl0pLGE9eC51c2VNZW1vKCgpPT4oe29wZW46dCxjbG9zZTpufSksW3Qsbl0pO3JldHVybigwLGIuanN4KSh1Yi5Qcm92aWRlcix7dmFsdWU6byxjaGlsZHJlbjooMCxiLmpzeCkodXYse2RlbGF5OmEsdGltZW91dE1zOnIsY2hpbGRyZW46ZS5jaGlsZHJlbn0pfSl9O2Z1bmN0aW9uIHV4KGUpe3JldHVybiBudWxsIT1lJiZudWxsIT1lLmNsaWVudFh9ZnVuY3Rpb24gdXcoZSl7bGV0e2Rpc2FibGVkOnQ9ITEsZGVmYXVsdE9wZW46bj0hMSxvbk9wZW5DaGFuZ2U6cixvcGVuOm8sZGVsYXk6YSxjbG9zZURlbGF5OmksaG92ZXJhYmxlOmw9ITAsdHJhY2tDdXJzb3JBeGlzOnM9XCJub25lXCIsYWN0aW9uc1JlZjpjLG9uT3BlbkNoYW5nZUNvbXBsZXRlOnV9PWUsZD1hPz82MDAsZj1pPz8wLFtwLGhdPXgudXNlU3RhdGUobnVsbCksW20sZ109eC51c2VTdGF0ZShudWxsKSxbeSx2XT14LnVzZVN0YXRlKCksQT14LnVzZVJlZihudWxsKSxbdyxDXT1hbSh7Y29udHJvbGxlZDpvLGRlZmF1bHQ6bixuYW1lOlwiVG9vbHRpcFwiLHN0YXRlOlwib3BlblwifSksXz0hdCYmdztmdW5jdGlvbiBrKGUsdCxuKXtsZXQgbz1cInRyaWdnZXItaG92ZXJcIj09PW4sYT1lJiZcInRyaWdnZXItZm9jdXNcIj09PW4saT0hZSYmKFwidHJpZ2dlci1wcmVzc1wiPT09bnx8XCJlc2NhcGUta2V5XCI9PT1uKTtmdW5jdGlvbiBsKCl7cj8uKGUsdCxuKSxDKGUpfW8/ZWYuZmx1c2hTeW5jKGwpOmwoKSxhfHxpP3YoYT9cImZvY3VzXCI6XCJkaXNtaXNzXCIpOlwidHJpZ2dlci1ob3ZlclwiPT09biYmdih2b2lkIDApfWxldCBFPWFmKGspO3cmJnQmJmsoITEsdm9pZCAwLFwiZGlzYWJsZWRcIik7bGV0e21vdW50ZWQ6aixzZXRNb3VudGVkOlMsdHJhbnNpdGlvblN0YXR1czpPfT1sdyhfKSxCPWFmKCgpPT57UyghMSksdT8uKCExKX0pO2xDKHtlbmFibGVkOiFjLG9wZW46XyxyZWY6QSxvbkNvbXBsZXRlKCl7X3x8QigpfX0pLHgudXNlSW1wZXJhdGl2ZUhhbmRsZShjLCgpPT4oe3VubW91bnQ6Qn0pLFtCXSk7bGV0IFA9YVMoe2VsZW1lbnRzOntyZWZlcmVuY2U6cCxmbG9hdGluZzptfSxvcGVuOl8sb25PcGVuQ2hhbmdlKGUsdCxuKXtFKGUsdCxseihuKSl9fSksST14LnVzZUNvbnRleHQodWIpLHtkZWxheVJlZjp6LGlzSW5zdGFudFBoYXNlOlQsaGFzUHJvdmlkZXI6RH09ZnVuY3Rpb24oZSx0PXt9KXtsZXR7b3BlbjpuLG9uT3BlbkNoYW5nZTpyLGZsb2F0aW5nSWQ6b309ZSx7ZW5hYmxlZDphPSEwfT10LHtjdXJyZW50SWRSZWY6aSxkZWxheVJlZjpsLHRpbWVvdXRNczpzLGluaXRpYWxEZWxheVJlZjpjLGN1cnJlbnRDb250ZXh0UmVmOnUsaGFzUHJvdmlkZXI6ZCx0aW1lb3V0OmZ9PXgudXNlQ29udGV4dCh1eSksW3AsaF09eC51c2VTdGF0ZSghMSk7cmV0dXJuIGF4KCgpPT57ZnVuY3Rpb24gZSgpe2goITEpLHUuY3VycmVudD8uc2V0SXNJbnN0YW50UGhhc2UoITEpLGkuY3VycmVudD1udWxsLHUuY3VycmVudD1udWxsLGwuY3VycmVudD1jLmN1cnJlbnR9aWYoYSYmaS5jdXJyZW50JiYhbiYmaS5jdXJyZW50PT09byl7aWYoaCghMSkscylyZXR1cm4gZi5zdGFydChzLGUpLCgpPT57Zi5jbGVhcigpfTtlKCl9fSxbYSxuLG8saSxsLHMsYyx1LGZdKSxheCgoKT0+e2lmKCFhfHwhbilyZXR1cm47bGV0IGU9dS5jdXJyZW50LHQ9aS5jdXJyZW50O3UuY3VycmVudD17b25PcGVuQ2hhbmdlOnIsc2V0SXNJbnN0YW50UGhhc2U6aH0saS5jdXJyZW50PW8sbC5jdXJyZW50PXtvcGVuOjAsY2xvc2U6aWsoYy5jdXJyZW50LFwiY2xvc2VcIil9LG51bGwhPT10JiZ0IT09bz8oZi5jbGVhcigpLGgoITApLGU/LnNldElzSW5zdGFudFBoYXNlKCEwKSxlPy5vbk9wZW5DaGFuZ2UoITEpKTooaCghMSksZT8uc2V0SXNJbnN0YW50UGhhc2UoITEpKX0sW2EsbixvLHIsaSxsLHMsYyx1LGZdKSxheCgoKT0+KCk9Pnt1LmN1cnJlbnQ9bnVsbH0sW3VdKSx4LnVzZU1lbW8oKCk9Pih7aGFzUHJvdmlkZXI6ZCxkZWxheVJlZjpsLGlzSW5zdGFudFBoYXNlOnB9KSxbZCxsLHBdKX0oUCksTD1UP1wiZGVsYXlcIjp5LE49aWooUCx7ZW5hYmxlZDohdCxtb3VzZU9ubHk6ITAsbW92ZTohMSxoYW5kbGVDbG9zZTpsJiZcImJvdGhcIiE9PXM/aVAoKTpudWxsLHJlc3RNcygpe2xldCBlPUk/LmRlbGF5LHQ9XCJvYmplY3RcIj09dHlwZW9mIHouY3VycmVudD96LmN1cnJlbnQub3Blbjp2b2lkIDAsbj1kO3JldHVybiBEJiYobj0wIT09dD9hPz9lPz9kOjApLG59LGRlbGF5KCl7bGV0IGU9XCJvYmplY3RcIj09dHlwZW9mIHouY3VycmVudD96LmN1cnJlbnQuY2xvc2U6dm9pZCAwLHQ9ZjtyZXR1cm4gbnVsbD09aSYmRCYmKHQ9ZSkse2Nsb3NlOnR9fX0pLFI9aXooUCx7ZW5hYmxlZDohdH0pLE09aUgoUCx7ZW5hYmxlZDohdCxyZWZlcmVuY2VQcmVzczohMH0pLHtnZXRSZWZlcmVuY2VQcm9wczpaLGdldEZsb2F0aW5nUHJvcHM6VX09bGcoW04sUixNLGZ1bmN0aW9uKGUsdD17fSl7bGV0e29wZW46bixkYXRhUmVmOnIsZWxlbWVudHM6e2Zsb2F0aW5nOm8sZG9tUmVmZXJlbmNlOmF9LHJlZnM6aX09ZSx7ZW5hYmxlZDpsPSEwLGF4aXM6cz1cImJvdGhcIix4OmM9bnVsbCx5OnU9bnVsbH09dCxkPXgudXNlUmVmKCExKSxmPXgudXNlUmVmKG51bGwpLFtwLGhdPXgudXNlU3RhdGUoKSxbbSxnXT14LnVzZVN0YXRlKFtdKSx5PWFmKChlLHQpPT57aWYoIWQuY3VycmVudCYmKCFyLmN1cnJlbnQub3BlbkV2ZW50fHx1eChyLmN1cnJlbnQub3BlbkV2ZW50KSkpe3ZhciBuLG87bGV0IGwsYyx1O2kuc2V0UG9zaXRpb25SZWZlcmVuY2UoKG49YSxvPXt4OmUseTp0LGF4aXM6cyxkYXRhUmVmOnIscG9pbnRlclR5cGU6cH0sbD1udWxsLGM9bnVsbCx1PSExLHtjb250ZXh0RWxlbWVudDpufHx2b2lkIDAsZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl7bGV0IGU9bj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl8fHt3aWR0aDowLGhlaWdodDowLHg6MCx5OjB9LHQ9XCJ4XCI9PT1vLmF4aXN8fFwiYm90aFwiPT09by5heGlzLHI9XCJ5XCI9PT1vLmF4aXN8fFwiYm90aFwiPT09by5heGlzLGE9W1wibW91c2VlbnRlclwiLFwibW91c2Vtb3ZlXCJdLmluY2x1ZGVzKG8uZGF0YVJlZi5jdXJyZW50Lm9wZW5FdmVudD8udHlwZXx8XCJcIikmJlwidG91Y2hcIiE9PW8ucG9pbnRlclR5cGUsaT1lLndpZHRoLHM9ZS5oZWlnaHQsZD1lLngsZj1lLnk7cmV0dXJuIG51bGw9PWwmJm8ueCYmdCYmKGw9ZS54LW8ueCksbnVsbD09YyYmby55JiZyJiYoYz1lLnktby55KSxkLT1sfHwwLGYtPWN8fDAsaT0wLHM9MCwhdXx8YT8oaT1cInlcIj09PW8uYXhpcz9lLndpZHRoOjAscz1cInhcIj09PW8uYXhpcz9lLmhlaWdodDowLGQ9dCYmbnVsbCE9by54P28ueDpkLGY9ciYmbnVsbCE9by55P28ueTpmKTp1JiYhYSYmKHM9XCJ4XCI9PT1vLmF4aXM/ZS5oZWlnaHQ6cyxpPVwieVwiPT09by5heGlzP2Uud2lkdGg6aSksdT0hMCx7d2lkdGg6aSxoZWlnaHQ6cyx4OmQseTpmLHRvcDpmLHJpZ2h0OmQraSxib3R0b206ZitzLGxlZnQ6ZH19fSkpfX0pLHY9YWYoZT0+e251bGw9PWMmJm51bGw9PXUmJihuP2YuY3VycmVudHx8ZyhbXSk6eShlLmNsaWVudFgsZS5jbGllbnRZKSl9KSxiPWlpKHApP286bixBPXgudXNlQ2FsbGJhY2soKCk9PntpZighYnx8IWx8fG51bGwhPWN8fG51bGwhPXUpcmV0dXJuO2xldCBlPWFQKG8pO2Z1bmN0aW9uIHQobil7aWcobyxpeShuKSk/KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLHQpLGYuY3VycmVudD1udWxsKTp5KG4uY2xpZW50WCxuLmNsaWVudFkpfWlmKCFyLmN1cnJlbnQub3BlbkV2ZW50fHx1eChyLmN1cnJlbnQub3BlbkV2ZW50KSl7ZS5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsdCk7bGV0IG49KCk9PntlLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZW1vdmVcIix0KSxmLmN1cnJlbnQ9bnVsbH07cmV0dXJuIGYuY3VycmVudD1uLG59aS5zZXRQb3NpdGlvblJlZmVyZW5jZShhKX0sW2IsbCxjLHUsbyxyLGksYSx5XSk7eC51c2VFZmZlY3QoKCk9PkEoKSxbQSxtXSkseC51c2VFZmZlY3QoKCk9PntsJiYhbyYmKGQuY3VycmVudD0hMSl9LFtsLG9dKSx4LnVzZUVmZmVjdCgoKT0+eyFsJiZuJiYoZC5jdXJyZW50PSEwKX0sW2wsbl0pLGF4KCgpPT57bCYmKG51bGwhPWN8fG51bGwhPXUpJiYoZC5jdXJyZW50PSExLHkoYyx1KSl9LFtsLGMsdSx5XSk7bGV0IHc9eC51c2VNZW1vKCgpPT57ZnVuY3Rpb24gZShlKXtoKGUucG9pbnRlclR5cGUpfXJldHVybntvblBvaW50ZXJEb3duOmUsb25Qb2ludGVyRW50ZXI6ZSxvbk1vdXNlTW92ZTp2LG9uTW91c2VFbnRlcjp2fX0sW3ZdKTtyZXR1cm4geC51c2VNZW1vKCgpPT5sP3tyZWZlcmVuY2U6d306e30sW2wsd10pfShQLHtlbmFibGVkOiF0JiZcIm5vbmVcIiE9PXMsYXhpczpcIm5vbmVcIj09PXM/dm9pZCAwOnN9KV0pLEY9eC51c2VNZW1vKCgpPT4oe29wZW46XyxzZXRPcGVuOkUsbW91bnRlZDpqLHNldE1vdW50ZWQ6UyxzZXRUcmlnZ2VyRWxlbWVudDpoLHBvc2l0aW9uZXJFbGVtZW50Om0sc2V0UG9zaXRpb25lckVsZW1lbnQ6Zyxwb3B1cFJlZjpBLHRyaWdnZXJQcm9wczpaKCkscG9wdXBQcm9wczpVKCksZmxvYXRpbmdSb290Q29udGV4dDpQLGluc3RhbnRUeXBlOkwsdHJhbnNpdGlvblN0YXR1czpPLG9uT3BlbkNoYW5nZUNvbXBsZXRlOnV9KSxbXyxFLGosUyxoLG0sZyxBLFosVSxQLEwsTyx1XSkscT14LnVzZU1lbW8oKCk9Pih7Li4uRixkZWxheTpkLGNsb3NlRGVsYXk6Zix0cmFja0N1cnNvckF4aXM6cyxob3ZlcmFibGU6bH0pLFtGLGQsZixzLGxdKTtyZXR1cm4oMCxiLmpzeCkodWEuUHJvdmlkZXIse3ZhbHVlOnEsY2hpbGRyZW46ZS5jaGlsZHJlbn0pfXZhciB1Qz1fX3dlYnBhY2tfcmVxdWlyZV9fKFwiLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2Nzcy1sb2FkZXJANy4xLjJfQHJzcGFjaytjb3JlQDEuNC41X0Bzd2MraGVscGVyc0AwLjUuMTVfX3dlYnBhY2tANS45OC4wX0Bzd2MrY29yZUAxLjExLjI0X0Bzd193bTdlZTVpYzRtb2ZyaGlzdWR3b240cXBxNC9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3NyYy9uZXh0LWRldnRvb2xzL2Rldi1vdmVybGF5L2NvbXBvbmVudHMvdG9vbHRpcC90b29sdGlwLmNzc1wiKSx1Xz17fTt1Xy5zdHlsZVRhZ1RyYW5zZm9ybT1oKCksdV8uc2V0QXR0cmlidXRlcz11KCksdV8uaW5zZXJ0PXMoKSx1Xy5kb21BUEk9aSgpLHVfLmluc2VydFN0eWxlRWxlbWVudD1mKCksbygpKHVDLlosdV8pLHVDLlomJnVDLloubG9jYWxzJiZ1Qy5aLmxvY2Fsczt2YXIgdWs9KDAseC5mb3J3YXJkUmVmKShmdW5jdGlvbihlLHQpe3ZhciBuLHIsbyxhLGksbCxzLGMsdSxkLGYscCxoPSgwLEEuYykoMzUpLG09ZS5jbGFzc05hbWUsZz1lLmNoaWxkcmVuLHk9ZS50aXRsZSx2PWUuZGlyZWN0aW9uLHg9ZS5hcnJvd1NpemUsdz1lLm9mZnNldCxDPXZvaWQgMD09PXY/XCJ0b3BcIjp2LF89dm9pZCAwPT09eD82Ongsaz1kYSgpLnNoYWRvd1Jvb3Q7aWYoIXkpcmV0dXJuIGc7aFswXSE9PWc/KG49ZnVuY3Rpb24oZSl7dmFyIHQsbjtyZXR1cm4oMCxiLmpzeCkoXCJzcGFuXCIsKHQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3RdP2FyZ3VtZW50c1t0XTp7fSxyPU9iamVjdC5rZXlzKG4pO1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJihyPXIuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkuZW51bWVyYWJsZX0pKSksci5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciByLG8sYTtyPWUsbz10LGE9blt0XSxvIGluIHI/T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsbyx7dmFsdWU6YSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnJbb109YX0pfXJldHVybiBlfSh7fSxlKSxuPW49e2NoaWxkcmVuOmd9LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOihmdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5rZXlzKGUpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7bi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59KShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sZSkpfSksdCkpfSxoWzBdPWcsaFsxXT1uKTpuPWhbMV0saFsyXSE9PXR8fGhbM10hPT1uPyhyPSgwLGIuanN4KSh1bCx7cmVmOnQscmVuZGVyOm59KSxoWzJdPXQsaFszXT1uLGhbNF09cik6cj1oWzRdO3ZhciBFPSh2b2lkIDA9PT13Pzg6dykrXyxqPVwiXCIuY29uY2F0KF8sXCJweFwiKSxTPVwiXCIuY29uY2F0KF8sXCJweFwiKTtoWzVdIT09anx8aFs2XSE9PVM/KG89e1wiLS1hbmNob3Itd2lkdGhcIjpqLFwiLS1hbmNob3ItaGVpZ2h0XCI6U30saFs1XT1qLGhbNl09UyxoWzddPW8pOm89aFs3XTt2YXIgTz1vO2hbOF0hPT1tPyhhPWVHKFwidG9vbHRpcFwiLG0pLGhbOF09bSxoWzldPWEpOmE9aFs5XTt2YXIgQj1cIlwiLmNvbmNhdChfLFwicHhcIik7aFsxMF0hPT1CPyhpPXtcIi0tYXJyb3ctc2l6ZVwiOkJ9LGhbMTBdPUIsaFsxMV09aSk6aT1oWzExXTt2YXIgUD1pLEk9XCJ0b29sdGlwLWFycm93LS1cIi5jb25jYXQoQyk7aFsxMl0hPT1JPyhsPWVHKFwidG9vbHRpcC1hcnJvd1wiLEkpLGhbMTJdPUksaFsxM109bCk6bD1oWzEzXTt2YXIgej1cIlwiLmNvbmNhdChfLFwicHhcIik7aFsxNF0hPT16PyhzPXtcIi0tYXJyb3ctc2l6ZVwiOnp9LGhbMTRdPXosaFsxNV09cyk6cz1oWzE1XTt2YXIgVD1zO3JldHVybiBoWzE2XSE9PWx8fGhbMTddIT09VD8oYz0oMCxiLmpzeCkodXUse2NsYXNzTmFtZTpsLHN0eWxlOlR9KSxoWzE2XT1sLGhbMTddPVQsaFsxOF09Yyk6Yz1oWzE4XSxoWzE5XSE9PWF8fGhbMjBdIT09UHx8aFsyMV0hPT1jfHxoWzIyXSE9PXk/KHU9KDAsYi5qc3hzKSh1Zix7Y2xhc3NOYW1lOmEsc3R5bGU6UCxjaGlsZHJlbjpbeSxjXX0pLGhbMTldPWEsaFsyMF09UCxoWzIxXT1jLGhbMjJdPXksaFsyM109dSk6dT1oWzIzXSxoWzI0XSE9PUN8fGhbMjVdIT09T3x8aFsyNl0hPT11fHxoWzI3XSE9PUU/KGQ9KDAsYi5qc3gpKHVoLHtzaWRlOkMsc2lkZU9mZnNldDpFLGNsYXNzTmFtZTpcInRvb2x0aXAtcG9zaXRpb25lclwiLHN0eWxlOk8sY2hpbGRyZW46dX0pLGhbMjRdPUMsaFsyNV09TyxoWzI2XT11LGhbMjddPUUsaFsyOF09ZCk6ZD1oWzI4XSxoWzI5XSE9PWt8fGhbMzBdIT09ZD8oZj0oMCxiLmpzeCkodWcse2NvbnRhaW5lcjprLGNoaWxkcmVuOmR9KSxoWzI5XT1rLGhbMzBdPWQsaFszMV09Zik6Zj1oWzMxXSxoWzMyXSE9PWZ8fGhbMzNdIT09cj8ocD0oMCxiLmpzeCkodUEse2NoaWxkcmVuOigwLGIuanN4cykodXcse2RlbGF5OjQwMCxjaGlsZHJlbjpbcixmXX0pfSksaFszMl09ZixoWzMzXT1yLGhbMzRdPXApOnA9aFszNF0scH0pO2Z1bmN0aW9uIHVFKGUpe3ZhciB0LG4scj0oMCxBLmMpKDMpLG89ZS5wb3NzaWJsZUV4dGVuc2lvbixhPWUubWlzc2luZ0dsb2JhbEVycm9yP1wiTm8gZ2xvYmFsLWVycm9yLlwiLmNvbmNhdChvLFwiIGZvdW5kOiBBZGQgb25lIHRvIGVuc3VyZSB1c2VycyBzZWUgYSBoZWxwZnVsIG1lc3NhZ2Ugd2hlbiBhbiB1bmV4cGVjdGVkIGVycm9yIG9jY3Vycy5cIik6bnVsbDtyZXR1cm4gclswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KSh1TCx7fSksclswXT10KTp0PXJbMF0sclsxXSE9PWE/KG49KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLXN1Z2dlc3Rpb25zXCIsY2hpbGRyZW46KDAsYi5qc3gpKHVrLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLXN1Z2dlc3Rpb25zLXRvb2x0aXBcIix0aXRsZTphLGNoaWxkcmVuOnR9KX0pLHJbMV09YSxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIHVqKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPW51bGwhPWFyZ3VtZW50c1t0XT9hcmd1bWVudHNbdF06e30scj1PYmplY3Qua2V5cyhuKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYocj1yLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpLmVudW1lcmFibGV9KSkpLHIuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcixvLGE7cj1lLG89dCxhPW5bdF0sbyBpbiByP09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG8se3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTpyW29dPWF9KX1yZXR1cm4gZX1mdW5jdGlvbiB1UyhlLHQpe3JldHVybiB0PW51bGwhPXQ/dDp7fSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpKTooZnVuY3Rpb24oZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO24ucHVzaC5hcHBseShuLHIpfXJldHVybiBufSkoT2JqZWN0KHQpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4sT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pKX0pLGV9dmFyIHVPPWZ1bmN0aW9uKGUpe3ZhciB0LG47cmV0dXJuISEobnVsbD09KHQ9ZS52YWx1ZSk/dm9pZCAwOnQudHlwZSkmJiEhKG51bGw9PShuPWUudmFsdWUpP3ZvaWQgMDpuLnBhZ2VQYXRoKX07ZnVuY3Rpb24gdUIoZSl7dmFyIHQsbixyPSgwLEEuYykoMyksbz1lLnBhZ2U7cmV0dXJuIHJbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD0oMCxiLmpzeCkodU4se30pLHJbMF09dCk6dD1yWzBdLHJbMV0hPT1vPyhuPSgwLGIuanN4cykoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1wYWdlLXJvdXRlLWJhclwiLGNoaWxkcmVuOlt0LCgwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1wYWdlLXJvdXRlLWJhci1wYXRoXCIsY2hpbGRyZW46b30pXX0pLHJbMV09byxyWzJdPW4pOm49clsyXSxufWZ1bmN0aW9uIHVQKGUpe3ZhciB0LG4scixvPSgwLEEuYykoOSksYT1lLmFjdGl2ZUJvdW5kYXJpZXNDb3VudCxpPWUub25HbG9iYWxSZXNldCxsPWE+MCxzPVwic2VnbWVudC1leHBsb3Jlci1mb290ZXItYnV0dG9uIFwiLmNvbmNhdChsP1wiXCI6XCJzZWdtZW50LWV4cGxvcmVyLWZvb3Rlci1idXR0b24tLWRpc2FibGVkXCIpLGM9bD9pOnZvaWQgMCx1PSFsO3JldHVybiBvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZvb3Rlci10ZXh0XCIsY2hpbGRyZW46XCJDbGVhciBTZWdtZW50IE92ZXJyaWRlc1wifSksb1swXT10KTp0PW9bMF0sb1sxXSE9PWF8fG9bMl0hPT1sPyhuPWwmJigwLGIuanN4KShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1mb290ZXItYmFkZ2VcIixjaGlsZHJlbjphfSksb1sxXT1hLG9bMl09bCxvWzNdPW4pOm49b1szXSxvWzRdIT09c3x8b1s1XSE9PWN8fG9bNl0hPT11fHxvWzddIT09bj8ocj0oMCxiLmpzeCkoXCJkaXZcIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1mb290ZXJcIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiYnV0dG9uXCIse2NsYXNzTmFtZTpzLG9uQ2xpY2s6YyxkaXNhYmxlZDp1LHR5cGU6XCJidXR0b25cIixjaGlsZHJlbjpbdCxuXX0pfSksb1s0XT1zLG9bNV09YyxvWzZdPXUsb1s3XT1uLG9bOF09cik6cj1vWzhdLHJ9ZnVuY3Rpb24gdUkoZSl7dmFyIHQsbixyLG8sYSxpPSgwLEEuYykoMTUpLGw9ZS50eXBlLHM9ZS5pc0J1aWx0aW4sYz1lLmlzT3ZlcnJpZGRlbix1PWUuZmlsZVBhdGgsZD1lLmZpbGVOYW1lLGY9XCJzZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtLVwiLmNvbmNhdChsKSxwPXMmJlwic2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsLS1idWlsdGluXCIsaD1jJiZcInNlZ21lbnQtZXhwbG9yZXItZmlsZS1sYWJlbC0tb3ZlcnJpZGRlblwiO3JldHVybiBpWzBdIT09Znx8aVsxXSE9PXB8fGlbMl0hPT1oPyh0PWVHKFwic2VnbWVudC1leHBsb3Jlci1maWxlLWxhYmVsXCIsZixwLGgpLGlbMF09ZixpWzFdPXAsaVsyXT1oLGlbM109dCk6dD1pWzNdLGlbNF0hPT11PyhuPWZ1bmN0aW9uKCl7dmFyIGU7ZT1uZXcgVVJMU2VhcmNoUGFyYW1zKHtmaWxlOntmaWxlUGF0aDp1fS5maWxlUGF0aCxpc0FwcFJlbGF0aXZlUGF0aDpcIjFcIn0pLGZldGNoKFwiXCIuY29uY2F0KHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEh8fFwiXCIsXCIvX19uZXh0anNfbGF1bmNoLWVkaXRvcj9cIikuY29uY2F0KGUudG9TdHJpbmcoKSkpfSxpWzRdPXUsaVs1XT1uKTpuPWlbNV0saVs2XSE9PWQ/KHI9KDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdGV4dFwiLGNoaWxkcmVuOmR9KSxpWzZdPWQsaVs3XT1yKTpyPWlbN10saVs4XSE9PXM/KG89cz8oMCxiLmpzeCkodUwse30pOigwLGIuanN4KSh1Uix7Y2xhc3NOYW1lOlwiY29kZS1pY29uXCJ9KSxpWzhdPXMsaVs5XT1vKTpvPWlbOV0saVsxMF0hPT10fHxpWzExXSE9PW58fGlbMTJdIT09cnx8aVsxM10hPT1vPyhhPSgwLGIuanN4cykoXCJzcGFuXCIse2NsYXNzTmFtZTp0LG9uQ2xpY2s6bixjaGlsZHJlbjpbcixvXX0pLGlbMTBdPXQsaVsxMV09bixpWzEyXT1yLGlbMTNdPW8saVsxNF09YSk6YT1pWzE0XSxhfWZ1bmN0aW9uIHV6KGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1PSgwLEEuYykoMTcpLGQ9ZS5wYWdlLGY9KDAseC51c2VTeW5jRXh0ZXJuYWxTdG9yZSkobzYsbzksbzgpO3VbMF0hPT1mPyhuPWZ1bmN0aW9uIGUodCl7dmFyIG4scj0wO3JldHVybihudWxsPT0obj10LnZhbHVlKT92b2lkIDA6bi5zZXRCb3VuZGFyeVR5cGUpJiZudWxsIT09dC52YWx1ZS5ib3VuZGFyeVR5cGUmJiFjMSh0LnZhbHVlLnR5cGUpJiZyKyssT2JqZWN0LnZhbHVlcyh0LmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QmJihyKz1lKHQpKX0pLHJ9KGYpLHVbMF09Zix1WzFdPW4pOm49dVsxXSx0PW4sdVsyXSE9PWY/KHI9ZnVuY3Rpb24oKXshZnVuY3Rpb24gZSh0KXt2YXIgbjsobnVsbD09KG49dC52YWx1ZSk/dm9pZCAwOm4uc2V0Qm91bmRhcnlUeXBlKSYmdC52YWx1ZS5zZXRCb3VuZGFyeVR5cGUobnVsbCksT2JqZWN0LnZhbHVlcyh0LmNoaWxkcmVuKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3QmJmUodCl9KX0oZil9LHVbMl09Zix1WzNdPXIpOnI9dVszXTt2YXIgcD1yO3JldHVybiB1WzRdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG89e2Rpc3BsYXk6XCJmbGV4XCIsZmxleERpcmVjdGlvbjpcImNvbHVtblwiLGhlaWdodDpcIjEwMCVcIn0sdVs0XT1vKTpvPXVbNF0sdVs1XSE9PWQ/KGE9KDAsYi5qc3gpKHVCLHtwYWdlOmR9KSx1WzVdPWQsdVs2XT1hKTphPXVbNl0sdVs3XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPXtmbGV4OlwiMSAxIGF1dG9cIixvdmVyZmxvdzpcImF1dG9cIn0sdVs3XT1pKTppPXVbN10sdVs4XSE9PWY/KGw9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItY29udGVudFwiLFwiZGF0YS1uZXh0anMtZGV2dG9vbC1zZWdtZW50LWV4cGxvcmVyXCI6ITAsc3R5bGU6aSxjaGlsZHJlbjooMCxiLmpzeCkodUQse25vZGU6ZixsZXZlbDowLHNlZ21lbnQ6XCJcIn0pfSksdVs4XT1mLHVbOV09bCk6bD11WzldLHVbMTBdIT09dHx8dVsxMV0hPT1wPyhzPSgwLGIuanN4KSh1UCx7YWN0aXZlQm91bmRhcmllc0NvdW50OnQsb25HbG9iYWxSZXNldDpwfSksdVsxMF09dCx1WzExXT1wLHVbMTJdPXMpOnM9dVsxMl0sdVsxM10hPT1hfHx1WzE0XSE9PWx8fHVbMTVdIT09cz8oYz0oMCxiLmpzeHMpKFwiZGl2XCIse1wiZGF0YS1uZXh0anMtZGV2dG9vbHMtcGFuZWwtc2VnbWVudHMtZXhwbG9yZXJcIjohMCxzdHlsZTpvLGNoaWxkcmVuOlthLGwsc119KSx1WzEzXT1hLHVbMTRdPWwsdVsxNV09cyx1WzE2XT1jKTpjPXVbMTZdLGN9dmFyIHVUPVwiZ2xvYmFsLWVycm9yXCI7ZnVuY3Rpb24gdUQoZSl7dmFyIHQ9ZS5zZWdtZW50LG49ZS5ub2RlLHI9ZS5sZXZlbCxvPSgwLHgudXNlTWVtbykoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMobi5jaGlsZHJlbil9LFtuLmNoaWxkcmVuXSksYT0oMCx4LnVzZU1lbW8pKGZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIG8uZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgcj1uLmNoaWxkcmVuW3RdO2lmKHImJnIudmFsdWUpe3ZhciBvPWMyKHIudmFsdWUudHlwZSksYT1vPT09dVQ7KGEmJiFyLnZhbHVlLnBhZ2VQYXRoLnN0YXJ0c1dpdGgoY1EpfHwhYSYmYzEoci52YWx1ZS50eXBlKSkmJmUucHVzaChvKX19KSwwPT09ciYmIWUuaW5jbHVkZXModVQpfSxbbi5jaGlsZHJlbixvLHJdKSxpPW8uc29ydChmdW5jdGlvbihlLHQpe3ZhciByPWUuaW5jbHVkZXMoXCIuXCIpLG89dC5pbmNsdWRlcyhcIi5cIik7aWYociYmIW8pcmV0dXJuIC0xO2lmKCFyJiZvKXJldHVybiAxO2lmKHImJm8pe3ZhciBhLGksbCxzLGMsdSxkLGYscD1udWxsPT0oaT1uLmNoaWxkcmVuW2VdKXx8bnVsbD09KGE9aS52YWx1ZSk/dm9pZCAwOmEudHlwZSxoPW51bGw9PShzPW4uY2hpbGRyZW5bdF0pfHxudWxsPT0obD1zLnZhbHVlKT92b2lkIDA6bC50eXBlLG09ZnVuY3Rpb24oZSl7cmV0dXJuIGU/XCJsYXlvdXRcIj09PWU/MTpcInRlbXBsYXRlXCI9PT1lPzI6XCJwYWdlXCI9PT1lPzM6YzEoZSk/NDo1OjV9LGc9bShwKSx5PW0oaCk7aWYoZyE9PXkpcmV0dXJuIGcteTt2YXIgdj0obnVsbD09KHU9bi5jaGlsZHJlbltlXSl8fG51bGw9PShjPXUudmFsdWUpP3ZvaWQgMDpjLnBhZ2VQYXRoKXx8XCJcIixiPShudWxsPT0oZj1uLmNoaWxkcmVuW3RdKXx8bnVsbD09KGQ9Zi52YWx1ZSk/dm9pZCAwOmQucGFnZVBhdGgpfHxcIlwiO3JldHVybiB2LmxvY2FsZUNvbXBhcmUoYil9cmV0dXJuIGUubG9jYWxlQ29tcGFyZSh0KX0pLGw9MCE9PXJ8fHQ/dDpcImFwcFwiLHM9W10sYz1bXSx1PSEwLGQ9ITEsZj12b2lkIDA7dHJ5e2Zvcih2YXIgcCxoPWlbU3ltYm9sLml0ZXJhdG9yXSgpOyEodT0ocD1oLm5leHQoKSkuZG9uZSk7dT0hMCl7dmFyIG09cC52YWx1ZSxnPW4uY2hpbGRyZW5bbV07aWYoZyl7aWYodU8oZykpe2MucHVzaChtKTtjb250aW51ZX1zLnB1c2gobSl9fX1jYXRjaChlKXtkPSEwLGY9ZX1maW5hbGx5e3RyeXt1fHxudWxsPT1oLnJldHVybnx8aC5yZXR1cm4oKX1maW5hbGx5e2lmKGQpdGhyb3cgZn19Zm9yKHZhciB5PWNKKGNbMF18fFwiXCIpLnNwbGl0KFwiLlwiKS5wb3AoKXx8XCJqc1wiLHY9bnVsbCxBPWkubGVuZ3RoLTE7QT49MDtBLS0pe3ZhciB3PW4uY2hpbGRyZW5baVtBXV07aWYodyYmdy52YWx1ZSl7dmFyIEM9YzEody52YWx1ZS50eXBlKTtpZighdiYmIUMpe3Y9dzticmVha319fXZhciBfPW51bGwsaz0hMCxFPSExLGo9dm9pZCAwO3RyeXtmb3IodmFyIFMsTz1pW1N5bWJvbC5pdGVyYXRvcl0oKTshKGs9KFM9Ty5uZXh0KCkpLmRvbmUpO2s9ITApe3ZhciBCPVMudmFsdWUsUD1uLmNoaWxkcmVuW0JdO2lmKFAmJlAudmFsdWUmJmMxKFAudmFsdWUudHlwZSkpe189UDticmVha319fWNhdGNoKGUpe0U9ITAsaj1lfWZpbmFsbHl7dHJ5e2t8fG51bGw9PU8ucmV0dXJufHxPLnJldHVybigpfWZpbmFsbHl7aWYoRSl0aHJvdyBqfX12PXZ8fF87dmFyIEk9Yy5sZW5ndGg+MCx6PXtcIm5vdC1mb3VuZFwiOm51bGwsbG9hZGluZzpudWxsLGVycm9yOm51bGwsXCJnbG9iYWwtZXJyb3JcIjpudWxsfTtyZXR1cm4gYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PW4uY2hpbGRyZW5bZV07aWYodCYmdC52YWx1ZSYmYzEodC52YWx1ZS50eXBlKSl7dmFyIHI9YzIodC52YWx1ZS50eXBlKTtyIGluIHomJih6W3JdPXQudmFsdWUucGFnZVBhdGh8fG51bGwpfX0pLCgwLGIuanN4cykoYi5GcmFnbWVudCx7Y2hpbGRyZW46W0kmJigwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWl0ZW1cIixcImRhdGEtbmV4dGpzLWRldnRvb2wtc2VnbWVudC1leHBsb3Jlci1zZWdtZW50XCI6dCtcIi1cIityLGNoaWxkcmVuOigwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWl0ZW0tcm93XCIsc3R5bGU6dWooe30se3BhZGRpbmdMZWZ0OlwiXCIuY29uY2F0KChyKzEpKjgsXCJweFwiKX0pLGNoaWxkcmVuOigwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWl0ZW0tcm93LW1haW5cIixjaGlsZHJlbjooMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInNlZ21lbnQtZXhwbG9yZXItZmlsZW5hbWVcIixjaGlsZHJlbjpbbCYmKDAsYi5qc3hzKShcInNwYW5cIix7Y2xhc3NOYW1lOlwic2VnbWVudC1leHBsb3Jlci1maWxlbmFtZS0tcGF0aFwiLGNoaWxkcmVuOltsLCgwLGIuanN4KShcInNtYWxsXCIse2NoaWxkcmVuOlwiL1wifSldfSksYSYmKDAsYi5qc3gpKHVFLHtwb3NzaWJsZUV4dGVuc2lvbjp5LG1pc3NpbmdHbG9iYWxFcnJvcjphfSksYy5sZW5ndGg+MCYmKDAsYi5qc3gpKFwic3BhblwiLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZpbGVzXCIsY2hpbGRyZW46Yy5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9bi5jaGlsZHJlbltlXTtpZighdHx8IXQudmFsdWV8fGMxKHQudmFsdWUudHlwZSkpcmV0dXJuIG51bGw7dmFyIHI9dC52YWx1ZS5wYWdlUGF0aCxvPXIuc3BsaXQoXCIvXCIpLnBvcCgpfHxcIlwiLGE9ci5zdGFydHNXaXRoKGNRKSxpPWNKKG8pLGw9YT9cIlRoZSBkZWZhdWx0IE5leHQuanMgXCIuY29uY2F0KHQudmFsdWUudHlwZSxcIiBpcyBiZWluZyBzaG93bi4gWW91IGNhbiBjdXN0b21pemUgdGhpcyBwYWdlIGJ5IGFkZGluZyB5b3VyIG93biBcIikuY29uY2F0KGksXCIgZmlsZSB0byB0aGUgYXBwLyBkaXJlY3RvcnkuXCIpOm51bGwscz1udWxsIT09dC52YWx1ZS5ib3VuZGFyeVR5cGU7cmV0dXJuKDAsYi5qc3gpKHVrLHtjbGFzc05hbWU6XCJzZWdtZW50LWV4cGxvcmVyLWZpbGUtbGFiZWwtdG9vbHRpcC0tXCIrKGE/XCJsZ1wiOlwic21cIiksZGlyZWN0aW9uOmE/XCJyaWdodFwiOlwidG9wXCIsdGl0bGU6bCxvZmZzZXQ6MTIsY2hpbGRyZW46KDAsYi5qc3gpKHVJLHt0eXBlOnQudmFsdWUudHlwZSxpc0J1aWx0aW46YSxpc092ZXJyaWRkZW46cyxmaWxlUGF0aDpyLGZpbGVOYW1lOml9KX0sZSl9KX0pLHYmJnYudmFsdWUmJigwLGIuanN4KShjOCx7bm9kZVN0YXRlOnYudmFsdWUsYm91bmRhcmllczp6fSldfSl9KX0pfSkscy5tYXAoZnVuY3Rpb24oZSl7dmFyIG89bi5jaGlsZHJlbltlXTtpZighbylyZXR1cm4gbnVsbDt2YXIgYT1JP2U6dCtcIiAvIFwiK2U7cmV0dXJuKDAsYi5qc3gpKHVELHtzZWdtZW50OmEsbm9kZTpvLGxldmVsOkk/cisxOnJ9LGUpfSldfSl9ZnVuY3Rpb24gdUwoZSl7dmFyIHQsbixyLG89KDAsQS5jKSg0KTtyZXR1cm4gb1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh0PSgwLGIuanN4KShcInBhdGhcIix7ZDpcIk0xNCA4QzE0IDExLjMxMzcgMTEuMzEzNyAxNCA4IDE0QzQuNjg2MjkgMTQgMiAxMS4zMTM3IDIgOEMyIDQuNjg2MjkgNC42ODYyOSAyIDggMkMxMS4zMTM3IDIgMTQgNC42ODYyOSAxNCA4WlwiLGZpbGw6XCJ2YXIoLS1jb2xvci1ncmF5LTQwMClcIn0pLG49KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTcuNzUgN0M4LjMwMjI4IDcuMDAwMDEgOC43NSA3LjQ0NzcyIDguNzUgOFYxMS4yNUg3LjI1VjguNUg2LjI1VjdINy43NVpNOCA0QzguNTUyMjggNCA5IDQuNDQ3NzIgOSA1QzkgNS41NTIyOCA4LjU1MjI4IDYgOCA2QzcuNDQ3NzIgNiA3IDUuNTUyMjggNyA1QzcgNC40NDc3MiA3LjQ0NzcyIDQgOCA0WlwiLGZpbGw6XCJ2YXIoLS1jb2xvci1ncmF5LTkwMClcIn0pLG9bMF09dCxvWzFdPW4pOih0PW9bMF0sbj1vWzFdKSxvWzJdIT09ZT8ocj0oMCxiLmpzeHMpKFwic3ZnXCIsdVModWooe3dpZHRoOlwiMTZcIixoZWlnaHQ6XCIxNlwiLHZpZXdCb3g6XCIwIDAgMTYgMTZcIixmaWxsOlwibm9uZVwiLHhtbG5zOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIn0sZSkse2NoaWxkcmVuOlt0LG5dfSkpLG9bMl09ZSxvWzNdPXIpOnI9b1szXSxyfWZ1bmN0aW9uIHVOKCl7dmFyIGUsdD0oMCxBLmMpKDEpO3JldHVybiB0WzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGU9KDAsYi5qc3gpKFwic3ZnXCIse3dpZHRoOlwiMjBcIixoZWlnaHQ6XCIyMFwiLHZpZXdCb3g6XCIwIDAgMjAgMjBcIixmaWxsOlwidmFyKC0tY29sb3ItZ3JheS02MDApXCIseG1sbnM6XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLGNoaWxkcmVuOigwLGIuanN4KShcInBhdGhcIix7ZDpcIk00LjUgMTEuMjVDNC41IDExLjM4ODEgNC42MTE5MyAxMS41IDQuNzUgMTEuNUgxNC40Mzk1TDExLjkzOTUgOUwxMyA3LjkzOTQ1TDE2Ljc4MDMgMTEuNzE5N0wxNi44MzIgMTEuNzc2NEMxNy4wNzIzIDEyLjA3MDkgMTcuMDU0OSAxMi41MDU3IDE2Ljc4MDMgMTIuNzgwM0wxMyAxNi41NjA1TDExLjkzOTUgMTUuNUwxNC40Mzk1IDEzSDQuNzVDMy43ODM1IDEzIDMgMTIuMjE2NSAzIDExLjI1VjQuMjVINC41VjExLjI1WlwifSl9KSx0WzBdPWUpOmU9dFswXSxlfWZ1bmN0aW9uIHVSKGUpe3ZhciB0LG4scj0oMCxBLmMpKDMpO3JldHVybiByWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsUnVsZTpcImV2ZW5vZGRcIixjbGlwUnVsZTpcImV2ZW5vZGRcIixkOlwiTTcuMjI3NjMgMTQuMTgxOUwxMC4yMjc2IDIuMTgxOTNMMTAuNDA5NSAxLjQ1NDMyTDguOTU0MzIgMS4wOTA1Mkw4Ljc3MjQyIDEuODE4MTJMNS43NzI0MiAxMy44MTgxTDUuNTkwNTEgMTQuNTQ1N0w3LjA0NTczIDE0LjkwOTVMNy4yMjc2MyAxNC4xODE5Wk0zLjc1MDAyIDEyLjA2MDdMMy4yMTk2OSAxMS41MzA0TDAuMzk2NDcgOC43MDcxM0MwLjAwNTk0NTU5IDguMzE2NjEgMC4wMDU5NDU1OSA3LjY4MzQ0IDAuMzk2NDcgNy4yOTI5MkwzLjIxOTY5IDQuNDY5NjlMMy43NTAwMiAzLjkzOTM2TDQuODEwNjggNS4wMDAwMkw0LjI4MDM1IDUuNTMwMzVMMS44MTA2OCA4LjAwMDAzTDQuMjgwMzUgMTAuNDY5N0w0LjgxMDY4IDExTDMuNzUwMDIgMTIuMDYwN1pNMTIuMjUgMTIuMDYwN0wxMi43ODA0IDExLjUzMDRMMTUuNjAzNiA4LjcwNzEzQzE1Ljk5NDEgOC4zMTY2MSAxNS45OTQxIDcuNjgzNDQgMTUuNjAzNiA3LjI5MjkyTDEyLjc4MDQgNC40Njk2OUwxMi4yNSAzLjkzOTM2TDExLjE4OTQgNS4wMDAwMkwxMS43MTk3IDUuNTMwMzVMMTQuMTg5NCA4LjAwMDAzTDExLjcxOTcgMTAuNDY5N0wxMS4xODk0IDExTDEyLjI1IDEyLjA2MDdaXCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSksclswXT10KTp0PXJbMF0sclsxXSE9PWU/KG49KDAsYi5qc3gpKFwic3ZnXCIsdVModWooe3dpZHRoOlwiMTJcIixoZWlnaHQ6XCIxMlwiLHN0cm9rZUxpbmVqb2luOlwicm91bmRcIix2aWV3Qm94OlwiMCAwIDE2IDE2XCIsZmlsbDpcImN1cnJlbnRDb2xvclwifSxlKSx7Y2hpbGRyZW46dH0pKSxyWzFdPWUsclsyXT1uKTpuPXJbMl0sbn1mdW5jdGlvbiB1TSgpe3ZhciBlLHQsbj0oZT1bXCJcXG4gICAgICAgIC5kZXYtdG9vbHMtaW5mby1jbG9zZS1idXR0b246Zm9jdXMtdmlzaWJsZSB7XFxuICAgICAgICAgIG91dGxpbmU6IHZhcigtLWZvY3VzLXJpbmcpO1xcbiAgICAgICAgfVxcbiAgICAgIFwiXSx0fHwodD1lLnNsaWNlKDApKSxPYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUse3Jhdzp7dmFsdWU6T2JqZWN0LmZyZWV6ZSh0KX19KSkpO3JldHVybiB1TT1mdW5jdGlvbigpe3JldHVybiBufSxufWZ1bmN0aW9uIHVaKGUpe3ZhciB0LG4scixvLGEsaSxsLHMsYyx1LGQsZj0oMCxBLmMpKDE4KSxwPWUudGl0bGUsaD1lLmNoaWxkcmVuLG09ZS5yZWYsZz1yMigpLnNldFBhbmVsLHk9KDAseC51c2VSZWYpKG51bGwpO3JldHVybiBmWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9ZnVuY3Rpb24oKXt2YXIgZTtudWxsPT0oZT15LmN1cnJlbnQpfHxlLmZvY3VzKCl9LG49W10sZlswXT10LGZbMV09bik6KHQ9ZlswXSxuPWZbMV0pLCgwLHgudXNlTGF5b3V0RWZmZWN0KSh0LG4pLGZbMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocj17d2lkdGg6XCIxMDAlXCIsZGlzcGxheTpcImZsZXhcIixhbGlnbkl0ZW1zOlwiY2VudGVyXCIsanVzdGlmeUNvbnRlbnQ6XCJzcGFjZS1iZXR3ZWVuXCIscGFkZGluZzpcIjhweCAyMHB4XCIsdXNlclNlbGVjdDpcIm5vbmVcIixXZWJraXRVc2VyU2VsZWN0Olwibm9uZVwiLGJvcmRlckJvdHRvbTpcIjFweCBzb2xpZCB2YXIoLS1jb2xvci1ncmF5LWFscGhhLTQwMClcIn0sZlsyXT1yKTpyPWZbMl0sZlszXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhvPXttYXJnaW46MCxmb250U2l6ZTpcIjE0cHhcIixjb2xvcjpcInZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSlcIixmb250V2VpZ2h0Olwibm9ybWFsXCJ9LGZbM109byk6bz1mWzNdLGZbNF0hPT1wPyhhPSgwLGIuanN4KShcImgzXCIse3N0eWxlOm8sY2hpbGRyZW46cH0pLGZbNF09cCxmWzVdPWEpOmE9Zls1XSxmWzZdIT09Zz8oaT1mdW5jdGlvbigpe2coXCJwYW5lbC1zZWxlY3RvclwiKX0sZls2XT1nLGZbN109aSk6aT1mWzddLGZbOF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8obD17YmFja2dyb3VuZDpcIm5vbmVcIixib3JkZXI6XCJub25lXCIsY3Vyc29yOlwicG9pbnRlclwiLHBhZGRpbmc6XCI0cHhcIixkaXNwbGF5OlwiZmxleFwiLGFsaWduSXRlbXM6XCJjZW50ZXJcIixqdXN0aWZ5Q29udGVudDpcImNlbnRlclwiLGJvcmRlclJhZGl1czpcIjRweFwiLGNvbG9yOlwidmFyKC0tY29sb3ItZ3JheS05MDApXCJ9LHM9KDAsYi5qc3gpKHVVLHt9KSxmWzhdPWwsZls5XT1zKToobD1mWzhdLHM9Zls5XSksZlsxMF0hPT1pPyhjPSgwLGIuanN4KShcImJ1dHRvblwiLHtyZWY6eSxpZDpcIl9uZXh0LWRldnRvb2xzLXBhbmVsLWNsb3NlXCIsY2xhc3NOYW1lOlwiZGV2LXRvb2xzLWluZm8tY2xvc2UtYnV0dG9uXCIsb25DbGljazppLFwiYXJpYS1sYWJlbFwiOlwiQ2xvc2UgZGV2dG9vbHMgcGFuZWxcIixzdHlsZTpsLGNoaWxkcmVuOnN9KSxmWzEwXT1pLGZbMTFdPWMpOmM9ZlsxMV0sZlsxMl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odT0oMCxiLmpzeCkoXCJzdHlsZVwiLHtjaGlsZHJlbjplcyh1TSgpKX0pLGZbMTJdPXUpOnU9ZlsxMl0sZlsxM10hPT1ofHxmWzE0XSE9PW18fGZbMTVdIT09YXx8ZlsxNl0hPT1jPyhkPSgwLGIuanN4cykoXCJkaXZcIix7c3R5bGU6cixyZWY6bSxjaGlsZHJlbjpbYSxoLGMsdV19KSxmWzEzXT1oLGZbMTRdPW0sZlsxNV09YSxmWzE2XT1jLGZbMTddPWQpOmQ9ZlsxN10sZH1mdW5jdGlvbiB1VShlKXt2YXIgdCxuLHIsbz0oMCxBLmMpKDQpLGE9ZS5zaXplLGk9dm9pZCAwPT09YT8yMjphO3JldHVybiBvWzBdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KHQ9KDAsYi5qc3gpKFwicGF0aFwiLHtkOlwiTTE4IDYgNiAxOFwifSksbj0oMCxiLmpzeCkoXCJwYXRoXCIse2Q6XCJtNiA2IDEyIDEyXCJ9KSxvWzBdPXQsb1sxXT1uKToodD1vWzBdLG49b1sxXSksb1syXSE9PWk/KHI9KDAsYi5qc3hzKShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6aSxoZWlnaHQ6aSx2aWV3Qm94OlwiMCAwIDI0IDI0XCIsZmlsbDpcIm5vbmVcIixzdHJva2U6XCJjdXJyZW50Q29sb3JcIixzdHJva2VXaWR0aDpcIjJcIixzdHJva2VMaW5lY2FwOlwicm91bmRcIixzdHJva2VMaW5lam9pbjpcInJvdW5kXCIsY2hpbGRyZW46W3Qsbl19KSxvWzJdPWksb1szXT1yKTpyPW9bM10scn1mdW5jdGlvbiB1Rigpe3ZhciBlLHQ9KDAsQS5jKSgxKTtyZXR1cm4gdFswXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShcInN2Z1wiLHt4bWxuczpcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsd2lkdGg6XCIxNlwiLGhlaWdodDpcIjE2XCIsdmlld0JveDpcIjAgMCAyMCAyMFwiLGZpbGw6XCJub25lXCIsY2hpbGRyZW46KDAsYi5qc3gpKFwicGF0aFwiLHtmaWxsOlwiY3VycmVudENvbG9yXCIsZmlsbFJ1bGU6XCJldmVub2RkXCIsZDpcIm05LjcgMy43MzYuMDQ1LS4yMzZoLjUxbC4wNDQuMjM2YTIuMDI0IDIuMDI0IDAgMCAwIDEuMzM0IDEuNTM2Yy4xOS4wNjYuMzc1LjE0My41NTQuMjMuNjE4LjMwMSAxLjM5OC4yOSAyLjAzLS4xNDNsLjE5OS0uMTM2LjM2LjM2MS0uMTM1LjE5OWEyLjAyNCAyLjAyNCAwIDAgMC0uMTQzIDIuMDNjLjA4Ny4xNzkuMTY0LjM2NC4yMy41NTQuMjI0LjY1Ljc4MyAxLjE5MiAxLjUzNiAxLjMzNGwuMjM2LjA0NHYuNTFsLS4yMzYuMDQ0YTIuMDI0IDIuMDI0IDAgMCAwLTEuNTM2IDEuMzM0IDQuOTUgNC45NSAwIDAgMS0uMjMuNTU0IDIuMDI0IDIuMDI0IDAgMCAwIC4xNDMgMi4wM2wuMTM2LjE5OS0uMzYxLjM2LS4xOTktLjEzNWEyLjAyNCAyLjAyNCAwIDAgMC0yLjAzLS4xNDNjLS4xNzkuMDg3LS4zNjQuMTY0LS41NTQuMjNhMi4wMjQgMi4wMjQgMCAwIDAtMS4zMzQgMS41MzZsLS4wNDQuMjM2aC0uNTFsLS4wNDQtLjIzNmEyLjAyNCAyLjAyNCAwIDAgMC0xLjMzNC0xLjUzNiA0Ljk1MiA0Ljk1MiAwIDAgMS0uNTU0LS4yMyAyLjAyNCAyLjAyNCAwIDAgMC0yLjAzLjE0M2wtLjE5OS4xMzYtLjM2LS4zNjEuMTM1LS4xOTlhMi4wMjQgMi4wMjQgMCAwIDAgLjE0My0yLjAzIDQuOTU4IDQuOTU4IDAgMCAxLS4yMy0uNTU0IDIuMDI0IDIuMDI0IDAgMCAwLTEuNTM2LTEuMzM0bC0uMjM2LS4wNDR2LS41MWwuMjM2LS4wNDRhMi4wMjQgMi4wMjQgMCAwIDAgMS41MzYtMS4zMzQgNC45NiA0Ljk2IDAgMCAxIC4yMy0uNTU0IDIuMDI0IDIuMDI0IDAgMCAwLS4xNDMtMi4wM2wtLjEzNi0uMTk5LjM2MS0uMzYuMTk5LjEzNWEyLjAyNCAyLjAyNCAwIDAgMCAyLjAzLjE0M2MuMTc5LS4wODcuMzY0LS4xNjQuNTU0LS4yM2EyLjAyNCAyLjAyNCAwIDAgMCAxLjMzNC0xLjUzNlpNOC41IDJoM2wuMjc0IDEuNDZjLjAzNC4xODUuMTcuMzMzLjM0OC4zOTQuMjQ4LjA4Ni40OS4xODYuNzIyLjMuMTcuMDgyLjM3LjA3NC41MjYtLjAzM2wxLjIyNi0uODM5IDIuMTIyIDIuMTIyLS44NCAxLjIyNmEuNTI0LjUyNCAwIDAgMC0uMDMyLjUyNmMuMTE0LjIzMy4yMTQuNDc0LjMuNzIyLjA2MS4xNzcuMjEuMzE0LjM5NC4zNDhMMTggOC41djNsLTEuNDYuMjc0YS41MjQuNTI0IDAgMCAwLS4zOTQuMzQ4IDYuNDcgNi40NyAwIDAgMS0uMy43MjIuNTI0LjUyNCAwIDAgMCAuMDMzLjUyNmwuODM5IDEuMjI2LTIuMTIyIDIuMTIyLTEuMjI2LS44NGEuNTI0LjUyNCAwIDAgMC0uNTI2LS4wMzIgNi40NzcgNi40NzcgMCAwIDEtLjcyMi4zLjUyNC41MjQgMCAwIDAtLjM0OC4zOTRMMTEuNSAxOGgtM2wtLjI3NC0xLjQ2YS41MjQuNTI0IDAgMCAwLS4zNDgtLjM5NCA2LjQ3NyA2LjQ3NyAwIDAgMS0uNzIyLS4zLjUyNC41MjQgMCAwIDAtLjUyNi4wMzNsLTEuMjI2LjgzOS0yLjEyMi0yLjEyMi44NC0xLjIyNmEuNTI0LjUyNCAwIDAgMCAuMDMyLS41MjYgNi40NTMgNi40NTMgMCAwIDEtLjMtLjcyMi41MjQuNTI0IDAgMCAwLS4zOTQtLjM0OEwyIDExLjV2LTNsMS40Ni0uMjc0YS41MjQuNTI0IDAgMCAwIC4zOTQtLjM0OGMuMDg2LS4yNDguMTg2LS40OS4zLS43MjJhLjUyNC41MjQgMCAwIDAtLjAzMy0uNTI2bC0uODM5LTEuMjI2IDIuMTIyLTIuMTIyIDEuMjI2Ljg0YS41MjQuNTI0IDAgMCAwIC41MjYuMDMyIDYuNDYgNi40NiAwIDAgMSAuNzIyLS4zLjUyNC41MjQgMCAwIDAgLjM0OC0uMzk0TDguNSAyWm0zIDhhMS41IDEuNSAwIDEgMS0zIDAgMS41IDEuNSAwIDAgMSAzIDBabTEuNSAwYTMgMyAwIDEgMS02IDAgMyAzIDAgMCAxIDYgMFpcIixjbGlwUnVsZTpcImV2ZW5vZGRcIn0pfSksdFswXT1lKTplPXRbMF0sZX12YXIgdXE9X193ZWJwYWNrX3JlcXVpcmVfXyhcIi4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jc3MtbG9hZGVyQDcuMS4yX0Byc3BhY2srY29yZUAxLjQuNV9Ac3djK2hlbHBlcnNAMC41LjE1X193ZWJwYWNrQDUuOTguMF9Ac3djK2NvcmVAMS4xMS4yNF9Ac3dfd203ZWU1aWM0bW9mcmhpc3Vkd29uNHFwcTQvbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9zcmMvbmV4dC1kZXZ0b29scy9kZXYtb3ZlcmxheS9tZW51L3BhbmVsLXJvdXRlci5jc3NcIiksdUg9e307dUguc3R5bGVUYWdUcmFuc2Zvcm09aCgpLHVILnNldEF0dHJpYnV0ZXM9dSgpLHVILmluc2VydD1zKCksdUguZG9tQVBJPWkoKSx1SC5pbnNlcnRTdHlsZUVsZW1lbnQ9ZigpLG8oKSh1cS5aLHVIKSx1cS5aJiZ1cS5aLmxvY2FscyYmdXEuWi5sb2NhbHM7dmFyIHVWPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbyxhLGksbCxzLGMsdSxkPSgwLEEuYykoMzIpLGY9cjIoKSxwPWYuc2V0UGFuZWwsaD1mLnNldFNlbGVjdGVkSW5kZXgsbT1kYSgpLGc9bS5zdGF0ZSx5PW0uZGlzcGF0Y2gsdj11NCgpLnRvdGFsRXJyb3JDb3VudCx4PVwiYXBwXCI9PT1nLnJvdXRlclR5cGU7ZFswXSE9PXl8fGRbMV0hPT1wfHxkWzJdIT09aHx8ZFszXSE9PWcuaXNFcnJvck92ZXJsYXlPcGVufHxkWzRdIT09dj8oZT12PjAmJnt0aXRsZTpcIlwiLmNvbmNhdCh2LFwiIFwiKS5jb25jYXQoMT09PXY/XCJpc3N1ZVwiOlwiaXNzdWVzXCIsXCIgZm91bmQuIENsaWNrIHRvIHZpZXcgZGV0YWlscyBpbiB0aGUgZGV2IG92ZXJsYXkuXCIpLGxhYmVsOlwiSXNzdWVzXCIsdmFsdWU6KDAsYi5qc3gpKG96LHtjaGlsZHJlbjp2fSksb25DbGljazpmdW5jdGlvbigpe2lmKGcuaXNFcnJvck92ZXJsYXlPcGVuKXt5KHt0eXBlOkZ9KSxwKG51bGwpO3JldHVybn1wKG51bGwpLGgoLTEpLHY+MCYmeSh7dHlwZTpVfSl9fSxkWzBdPXksZFsxXT1wLGRbMl09aCxkWzNdPWcuaXNFcnJvck92ZXJsYXlPcGVuLGRbNF09dixkWzVdPWUpOmU9ZFs1XTt2YXIgdz1cIkN1cnJlbnQgcm91dGUgaXMgXCIuY29uY2F0KGcuc3RhdGljSW5kaWNhdG9yP1wic3RhdGljXCI6XCJkeW5hbWljXCIsXCIuXCIpLEM9Zy5zdGF0aWNJbmRpY2F0b3I/XCJTdGF0aWNcIjpcIkR5bmFtaWNcIjtkWzZdIT09cD8odD1mdW5jdGlvbigpe3JldHVybiBwKFwicm91dGUtdHlwZVwiKX0sZFs2XT1wLGRbN109dCk6dD1kWzddO3ZhciBfPWcuc3RhdGljSW5kaWNhdG9yP1wic3RhdGljXCI6XCJkeW5hbWljXCI7cmV0dXJuIGRbOF0hPT1fPyhuPXtcImRhdGEtbmV4dGpzLXJvdXRlLXR5cGVcIjpffSxkWzhdPV8sZFs5XT1uKTpuPWRbOV0sZFsxMF0hPT13fHxkWzExXSE9PUN8fGRbMTJdIT09dHx8ZFsxM10hPT1uPyhyPXt0aXRsZTp3LGxhYmVsOlwiUm91dGVcIix2YWx1ZTpDLG9uQ2xpY2s6dCxhdHRyaWJ1dGVzOm59LGRbMTBdPXcsZFsxMV09QyxkWzEyXT10LGRbMTNdPW4sZFsxNF09cik6cj1kWzE0XSxkWzE1XSE9PXA/KG89cHJvY2Vzcy5lbnYuVFVSQk9QQUNLP3t0aXRsZTpcIlR1cmJvcGFjayBpcyBlbmFibGVkLlwiLGxhYmVsOlwiVHVyYm9wYWNrXCIsdmFsdWU6XCJFbmFibGVkXCJ9Ont0aXRsZTpcIkxlYXJuIGFib3V0IFR1cmJvcGFjayBhbmQgaG93IHRvIGVuYWJsZSBpdCBpbiB5b3VyIGFwcGxpY2F0aW9uLlwiLGxhYmVsOlwiVHJ5IFR1cmJvcGFja1wiLHZhbHVlOigwLGIuanN4KShvVCx7fSksb25DbGljazpmdW5jdGlvbigpe3JldHVybiBwKFwidHVyYm8taW5mb1wiKX19LGRbMTVdPXAsZFsxNl09byk6bz1kWzE2XSxkWzE3XSE9PXh8fGRbMThdIT09cD8oYT0hIXByb2Nlc3MuZW52Ll9fTkVYVF9ERVZUT09MX1NFR01FTlRfRVhQTE9SRVImJngmJntsYWJlbDpcIlJvdXRlIEluZm9cIix2YWx1ZTooMCxiLmpzeCkob1Qse30pLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gcChcInNlZ21lbnQtZXhwbG9yZXJcIil9LGF0dHJpYnV0ZXM6e1wiZGF0YS1zZWdtZW50LWV4cGxvcmVyXCI6ITB9fSxkWzE3XT14LGRbMThdPXAsZFsxOV09YSk6YT1kWzE5XSxkWzIwXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhpPSgwLGIuanN4KSh1Rix7fSksZFsyMF09aSk6aT1kWzIwXSxkWzIxXSE9PXA/KGw9ZnVuY3Rpb24oKXtyZXR1cm4gcChcInByZWZlcmVuY2VzXCIpfSxkWzIxXT1wLGRbMjJdPWwpOmw9ZFsyMl0sZFsyM109PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8ocz17XCJkYXRhLXByZWZlcmVuY2VzXCI6ITB9LGRbMjNdPXMpOnM9ZFsyM10sZFsyNF0hPT1sPyhjPXtsYWJlbDpcIlByZWZlcmVuY2VzXCIsdmFsdWU6aSxvbkNsaWNrOmwsZm9vdGVyOiEwLGF0dHJpYnV0ZXM6c30sZFsyNF09bCxkWzI1XT1jKTpjPWRbMjVdLGRbMjZdIT09ZXx8ZFsyN10hPT1jfHxkWzI4XSE9PXJ8fGRbMjldIT09b3x8ZFszMF0hPT1hPyh1PSgwLGIuanN4KShvUCx7aXRlbXM6W2UscixvLGEsY119KSxkWzI2XT1lLGRbMjddPWMsZFsyOF09cixkWzI5XT1vLGRbMzBdPWEsZFszMV09dSk6dT1kWzMxXSx1fSx1JD1mdW5jdGlvbigpe3ZhciBlLHQ9KDAsQS5jKSg0KSxuPWRhKCkscj1uLnN0YXRlLG89bi5kaXNwYXRjaCxhPW4uc2hhZG93Um9vdDtyZXR1cm4gdFswXSE9PW98fHRbMV0hPT1hfHx0WzJdIT09ci5kaXNhYmxlRGV2SW5kaWNhdG9yPyhlPWZ1bmN0aW9uKCl7byh7dHlwZTpaLGRpc2FibGVkOiFyLmRpc2FibGVEZXZJbmRpY2F0b3J9KTt2YXIgZT1hLmdldEVsZW1lbnRCeUlkKFwicGFuZWwtcm91dGVcIiksdD1hLmdldEVsZW1lbnRCeUlkKFwiZGF0YS1kZXZ0b29scy1pbmRpY2F0b3JcIik7aWYoZSYmZS5maXJzdEVsZW1lbnRDaGlsZCl7dmFyIG49ZS5maXJzdEVsZW1lbnRDaGlsZCxpPVwibm9uZVwiPT09bi5zdHlsZS5kaXNwbGF5O24uc3R5bGUuZGlzcGxheT1pP1wiXCI6XCJub25lXCJ9aWYodCl7dmFyIGw9XCJub25lXCI9PT10LnN0eWxlLmRpc3BsYXk7dC5zdHlsZS5kaXNwbGF5PWw/XCJcIjpcIm5vbmVcIn19LHRbMF09byx0WzFdPWEsdFsyXT1yLmRpc2FibGVEZXZJbmRpY2F0b3IsdFszXT1lKTplPXRbM10sZX0sdVc9ZnVuY3Rpb24oKXt2YXIgZSx0LG4scixvLGEsaSxsLHMsYyx1LGQsZixwLGgsbSxnLHksdix3LEMsXyxrLEUsaixTLE89KDAsQS5jKSg0NCksQj1kYSgpLnN0YXRlLFA9cjIoKS50cmlnZ2VyUmVmLEk9dSQoKSx6PVwiYXBwXCI9PT1CLnJvdXRlclR5cGU7T1swXSE9PUIuaGlkZVNob3J0Y3V0fHxPWzFdIT09ST8ocz1CLmhpZGVTaG9ydGN1dD8oZT17fSx0PUIuaGlkZVNob3J0Y3V0LG49SSx0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlKTp7fSxPWzBdPUIuaGlkZVNob3J0Y3V0LE9bMV09SSxPWzJdPXMpOnM9T1syXSxyPXMsbz1QLChsPSgwLEEuYykoNCkpWzBdIT09b3x8bFsxXSE9PXI/KGE9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlKXtpZighKChuPXQ5KCh0PW8pLmN1cnJlbnQpKSYmKFwidHJ1ZVwiPT09bi5jb250ZW50RWRpdGFibGV8fFwiSU5QVVRcIj09PW4udGFnTmFtZXx8XCJURVhUQVJFQVwiPT09bi50YWdOYW1lfHxcIlNFTEVDVFwiPT09bi50YWdOYW1lfHxcInRydWVcIj09PW4uZGF0YXNldFtcInNob3J0Y3V0LXJlY29yZGVyXCJdKSYmIW4uaGFzQXR0cmlidXRlKFwicmVhZG9ubHlcIikpKXt2YXIgdCxuLGE9W107ZS5tZXRhS2V5JiZhLnB1c2goXCJNZXRhXCIpLGUuY3RybEtleSYmYS5wdXNoKFwiQ29udHJvbFwiKSxlLmFsdEtleSYmYS5wdXNoKFwiQWx0XCIpLGUuc2hpZnRLZXkmJmEucHVzaChcIlNoaWZ0XCIpLFwiTWV0YVwiIT09ZS5rZXkmJlwiQ29udHJvbFwiIT09ZS5rZXkmJlwiQWx0XCIhPT1lLmtleSYmXCJTaGlmdFwiIT09ZS5rZXkmJmEucHVzaChlLmNvZGUpO3ZhciBpPWEuam9pbihcIitcIik7cltpXSYmKGUucHJldmVudERlZmF1bHQoKSxyW2ldKCkpfX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUpLGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwia2V5ZG93blwiLGUpfX0saT1bbyxyXSxsWzBdPW8sbFsxXT1yLGxbMl09YSxsWzNdPWkpOihhPWxbMl0saT1sWzNdKSwoMCx4LnVzZUVmZmVjdCkoYSxpKSxPWzNdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGM9KDAsYi5qc3gpKHVRLHtuYW1lOlwicGFuZWwtc2VsZWN0b3JcIixjaGlsZHJlbjooMCxiLmpzeCkodVYse30pfSksT1szXT1jKTpjPU9bM107dmFyIFQ9NTAwL0Iuc2NhbGU7T1s0XSE9PVQ/KHU9e2tpbmQ6XCJmaXhlZFwiLGhlaWdodDpULHdpZHRoOjUxMn0sT1s0XT1ULE9bNV09dSk6dT1PWzVdLE9bNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oZD0oMCxiLmpzeCkodVose3RpdGxlOlwiUHJlZmVyZW5jZXNcIn0pLGY9KDAsYi5qc3gpKHVLLHt9KSxPWzZdPWQsT1s3XT1mKTooZD1PWzZdLGY9T1s3XSksT1s4XSE9PXU/KHA9KDAsYi5qc3gpKHVRLHtuYW1lOlwicHJlZmVyZW5jZXNcIixjaGlsZHJlbjooMCxiLmpzeCkobzAse3NoYXJlUGFuZWxTaXplR2xvYmFsbHk6ITEsc2l6ZUNvbmZpZzp1LGNsb3NlT25DbGlja091dHNpZGU6ITAsaGVhZGVyOmQsY2hpbGRyZW46Zn0pfSksT1s4XT11LE9bOV09cCk6cD1PWzldO3ZhciBEPUIuc3RhdGljSW5kaWNhdG9yP1wic3RhdGljXCI6XCJkeW5hbWljXCIsTD1CLnN0YXRpY0luZGljYXRvcj8zMDAvQi5zY2FsZTozMjUvQi5zY2FsZSxOPTQwMC9CLnNjYWxlO09bMTBdIT09THx8T1sxMV0hPT1OPyhoPXtraW5kOlwiZml4ZWRcIixoZWlnaHQ6TCx3aWR0aDpOfSxPWzEwXT1MLE9bMTFdPU4sT1sxMl09aCk6aD1PWzEyXTt2YXIgUj1cIlwiLmNvbmNhdChCLnN0YXRpY0luZGljYXRvcj9cIlN0YXRpY1wiOlwiRHluYW1pY1wiLFwiIFJvdXRlXCIpO09bMTNdIT09Uj8obT0oMCxiLmpzeCkodVose3RpdGxlOlJ9KSxPWzEzXT1SLE9bMTRdPW0pOm09T1sxNF0sT1sxNV0hPT1CLnJvdXRlclR5cGV8fE9bMTZdIT09Qi5zdGF0aWNJbmRpY2F0b3I/KGc9KDAsYi5qc3gpKG4xLHtyb3V0ZXJUeXBlOkIucm91dGVyVHlwZSxpc1N0YXRpY1JvdXRlOkIuc3RhdGljSW5kaWNhdG9yfSksT1sxNV09Qi5yb3V0ZXJUeXBlLE9bMTZdPUIuc3RhdGljSW5kaWNhdG9yLE9bMTddPWcpOmc9T1sxN107dmFyIE09bjBbQi5yb3V0ZXJUeXBlXVtCLnN0YXRpY0luZGljYXRvcj9cInN0YXRpY1wiOlwiZHluYW1pY1wiXTtPWzE4XSE9PU0/KHk9KDAsYi5qc3gpKHVZLHtocmVmOk19KSxPWzE4XT1NLE9bMTldPXkpOnk9T1sxOV0sT1syMF0hPT1nfHxPWzIxXSE9PXk/KHY9KDAsYi5qc3hzKShcImRpdlwiLHtjbGFzc05hbWU6XCJwYW5lbC1jb250ZW50XCIsY2hpbGRyZW46W2cseV19KSxPWzIwXT1nLE9bMjFdPXksT1syMl09dik6dj1PWzIyXSxPWzIzXSE9PWh8fE9bMjRdIT09bXx8T1syNV0hPT12fHxPWzI2XSE9PUQ/KHc9KDAsYi5qc3gpKHVRLHtuYW1lOlwicm91dGUtdHlwZVwiLGNoaWxkcmVuOigwLGIuanN4KShvMCx7c2hhcmVQYW5lbFNpemVHbG9iYWxseTohMSxzaXplQ29uZmlnOmgsY2xvc2VPbkNsaWNrT3V0c2lkZTohMCxoZWFkZXI6bSxjaGlsZHJlbjp2fSxEKX0pLE9bMjNdPWgsT1syNF09bSxPWzI1XT12LE9bMjZdPUQsT1syN109dyk6dz1PWzI3XSxPWzI4XSE9PXp8fE9bMjldIT09Qi5wYWdlfHxPWzMwXSE9PUIuc2NhbGU/KEM9cHJvY2Vzcy5lbnYuX19ORVhUX0RFVlRPT0xfU0VHTUVOVF9FWFBMT1JFUiYmeiYmKDAsYi5qc3gpKHVRLHtuYW1lOlwic2VnbWVudC1leHBsb3JlclwiLGNoaWxkcmVuOigwLGIuanN4KShvMCx7c2hhcmVQYW5lbFNpemVHbG9iYWxseTohMSxzaGFyZVBhbmVsUG9zaXRpb25HbG9iYWxseTohMSxkcmFnZ2FibGU6ITAsc2l6ZUNvbmZpZzp7a2luZDpcInJlc2l6YWJsZVwiLG1heEhlaWdodDpcIjkwdmhcIixtYXhXaWR0aDpcIjkwdndcIixtaW5IZWlnaHQ6MjAwL0Iuc2NhbGUsbWluV2lkdGg6MjUwL0Iuc2NhbGUsaW5pdGlhbFNpemU6e2hlaWdodDozNzUvQi5zY2FsZSx3aWR0aDo0MDAvQi5zY2FsZX19LGhlYWRlcjooMCxiLmpzeCkodVose3RpdGxlOlwiUm91dGUgSW5mb1wifSksY2hpbGRyZW46KDAsYi5qc3gpKHV6LHtwYWdlOkIucGFnZX0pfSl9KSxPWzI4XT16LE9bMjldPUIucGFnZSxPWzMwXT1CLnNjYWxlLE9bMzFdPUMpOkM9T1szMV07dmFyIFo9NDcwL0Iuc2NhbGUsVT00MDAvQi5zY2FsZTtyZXR1cm4gT1szMl0hPT1afHxPWzMzXSE9PVU/KF89e2tpbmQ6XCJmaXhlZFwiLGhlaWdodDpaLHdpZHRoOlV9LE9bMzJdPVosT1szM109VSxPWzM0XT1fKTpfPU9bMzRdLE9bMzVdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KGs9KDAsYi5qc3gpKHVaLHt0aXRsZTpcIlRyeSBUdXJib3BhY2tcIn0pLE9bMzVdPWspOms9T1szNV0sT1szNl09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8oRT0oMCxiLmpzeHMpKFwiZGl2XCIse2NsYXNzTmFtZTpcInBhbmVsLWNvbnRlbnRcIixjaGlsZHJlbjpbKDAsYi5qc3gpKG5ZLHt9KSwoMCxiLmpzeCkodVkse2hyZWY6XCJodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvYXBpLXJlZmVyZW5jZS90dXJib3BhY2tcIn0pXX0pLE9bMzZdPUUpOkU9T1szNl0sT1szN10hPT1fPyhqPSgwLGIuanN4KSh1USx7bmFtZTpcInR1cmJvLWluZm9cIixjaGlsZHJlbjooMCxiLmpzeCkobzAse3NoYXJlUGFuZWxTaXplR2xvYmFsbHk6ITEsc2l6ZUNvbmZpZzpfLGNsb3NlT25DbGlja091dHNpZGU6ITAsaGVhZGVyOmssY2hpbGRyZW46RX0pfSksT1szN109XyxPWzM4XT1qKTpqPU9bMzhdLE9bMzldIT09d3x8T1s0MF0hPT1DfHxPWzQxXSE9PWp8fE9bNDJdIT09cD8oUz0oMCxiLmpzeHMpKGIuRnJhZ21lbnQse2NoaWxkcmVuOltjLHAsdyxDLGpdfSksT1szOV09dyxPWzQwXT1DLE9bNDFdPWosT1s0Ml09cCxPWzQzXT1TKTpTPU9bNDNdLFN9LHVZPWZ1bmN0aW9uKGUpe3ZhciB0LG49KDAsQS5jKSgyKSxyPWUuaHJlZjtyZXR1cm4gblswXSE9PXI/KHQ9KDAsYi5qc3gpKFwiZGl2XCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWJ1dHRvbi1jb250YWluZXJcIixjaGlsZHJlbjooMCxiLmpzeCkoXCJhXCIse2NsYXNzTmFtZTpcImRldi10b29scy1pbmZvLWxlYXJuLW1vcmUtYnV0dG9uXCIsaHJlZjpyLHRhcmdldDpcIl9ibGFua1wiLHJlbDpcIm5vcmVmZXJyZXIgbm9vcGVuZXJcIixjaGlsZHJlbjpcIkxlYXJuIE1vcmVcIn0pfSksblswXT1yLG5bMV09dCk6dD1uWzFdLHR9LHVLPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsbz0oMCxBLmMpKDE3KSxhPWRhKCksaT1hLmRpc3BhdGNoLGw9YS5zdGF0ZSxzPXIyKCksYz1zLnNldFBhbmVsLHU9cy5zZXRTZWxlY3RlZEluZGV4LGQ9b3coKTtyZXR1cm4gb1swXSE9PWk/KGU9ZnVuY3Rpb24oZSl7aSh7dHlwZTpYLHNjYWxlOmV9KX0sb1swXT1pLG9bMV09ZSk6ZT1vWzFdLG9bMl0hPT1pfHxvWzNdIT09ZD8odD1mdW5jdGlvbihlKXtpKHt0eXBlOlksZGV2VG9vbHNQb3NpdGlvbjplfSksZChlKX0sb1syXT1pLG9bM109ZCxvWzRdPXQpOnQ9b1s0XSxvWzVdIT09aXx8b1s2XSE9PWN8fG9bN10hPT11PyhuPWZ1bmN0aW9uKCl7aSh7dHlwZTpaLGRpc2FibGVkOiEwfSksdSgtMSksYyhudWxsKSxmZXRjaChcIi9fX25leHRqc19kaXNhYmxlX2Rldl9pbmRpY2F0b3JcIix7bWV0aG9kOlwiUE9TVFwifSl9LG9bNV09aSxvWzZdPWMsb1s3XT11LG9bOF09bik6bj1vWzhdLG9bOV0hPT1sLmRldlRvb2xzUG9zaXRpb258fG9bMTBdIT09bC5oaWRlU2hvcnRjdXR8fG9bMTFdIT09bC5zY2FsZXx8b1sxMl0hPT1sLnRoZW1lfHxvWzEzXSE9PWV8fG9bMTRdIT09dHx8b1sxNV0hPT1uPyhyPSgwLGIuanN4KShcImRpdlwiLHtjbGFzc05hbWU6XCJ1c2VyLXByZWZlcmVuY2VzLXdyYXBwZXJcIixjaGlsZHJlbjooMCxiLmpzeCkockMse3RoZW1lOmwudGhlbWUscG9zaXRpb246bC5kZXZUb29sc1Bvc2l0aW9uLHNjYWxlOmwuc2NhbGUsc2V0U2NhbGU6ZSxzZXRQb3NpdGlvbjp0LGhpZGVTaG9ydGN1dDpsLmhpZGVTaG9ydGN1dCxzZXRIaWRlU2hvcnRjdXQ6dUosaGlkZTpufSl9KSxvWzldPWwuZGV2VG9vbHNQb3NpdGlvbixvWzEwXT1sLmhpZGVTaG9ydGN1dCxvWzExXT1sLnNjYWxlLG9bMTJdPWwudGhlbWUsb1sxM109ZSxvWzE0XT10LG9bMTVdPW4sb1sxNl09cik6cj1vWzE2XSxyfSx1WD1mdW5jdGlvbigpe3JldHVybigwLHgudXNlQ29udGV4dCkodUcpfSx1Rz0oMCx4LmNyZWF0ZUNvbnRleHQpKG51bGwpO2Z1bmN0aW9uIHVRKGUpe3ZhciB0LG4scixvLGEsaT0oMCxBLmMpKDEyKSxsPWUuY2hpbGRyZW4scz1lLm5hbWUsYz1yMigpLnBhbmVsO2lbMF09PT1TeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKT8odD17ZW50ZXJEZWxheTowLGV4aXREZWxheToyMDB9LGlbMF09dCk6dD1pWzBdO3ZhciB1PXJEKHM9PT1jLHQpLGQ9dS5tb3VudGVkLGY9dS5yZW5kZXJlZDtpZighZClyZXR1cm4gbnVsbDtpWzFdIT09ZHx8aVsyXSE9PXM/KG49e25hbWU6cyxtb3VudGVkOmR9LGlbMV09ZCxpWzJdPXMsaVszXT1uKTpuPWlbM107dmFyIHA9KyEhZjtpWzRdIT09cD8ocj17XCItLXBhbmVsLW9wYWNpdHlcIjpwLFwiLS1wYW5lbC10cmFuc2l0aW9uXCI6XCJvcGFjaXR5IFwiLmNvbmNhdCgyMDAsXCJtcyBcIikuY29uY2F0KHQ3KX0saVs0XT1wLGlbNV09cik6cj1pWzVdO3ZhciBoPXI7cmV0dXJuIGlbNl0hPT1sfHxpWzddIT09aD8obz0oMCxiLmpzeCkoXCJkaXZcIix7aWQ6XCJwYW5lbC1yb3V0ZVwiLGNsYXNzTmFtZTpcInBhbmVsLXJvdXRlXCIsc3R5bGU6aCxjaGlsZHJlbjpsfSksaVs2XT1sLGlbN109aCxpWzhdPW8pOm89aVs4XSxpWzldIT09bnx8aVsxMF0hPT1vPyhhPSgwLGIuanN4KSh1Ryx7dmFsdWU6bixjaGlsZHJlbjpvfSksaVs5XT1uLGlbMTBdPW8saVsxMV09YSk6YT1pWzExXSxhfWZ1bmN0aW9uIHVKKGUpe3JBKHtoaWRlU2hvcnRjdXQ6ZX0pfWZ1bmN0aW9uIHUwKGUsdCl7KG51bGw9PXR8fHQ+ZS5sZW5ndGgpJiYodD1lLmxlbmd0aCk7Zm9yKHZhciBuPTAscj1BcnJheSh0KTtuPHQ7bisrKXJbbl09ZVtuXTtyZXR1cm4gcn1mdW5jdGlvbiB1MShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgbixyLG89bnVsbD09ZT9udWxsOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJmVbU3ltYm9sLml0ZXJhdG9yXXx8ZVtcIkBAaXRlcmF0b3JcIl07aWYobnVsbCE9byl7dmFyIGE9W10saT0hMCxsPSExO3RyeXtmb3Iobz1vLmNhbGwoZSk7IShpPShuPW8ubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhdHx8YS5sZW5ndGghPT10KTtpPSEwKTt9Y2F0Y2goZSl7bD0hMCxyPWV9ZmluYWxseXt0cnl7aXx8bnVsbD09by5yZXR1cm58fG8ucmV0dXJuKCl9ZmluYWxseXtpZihsKXRocm93IHJ9fXJldHVybiBhfX0oZSx0KXx8ZnVuY3Rpb24oZSx0KXtpZihlKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSlyZXR1cm4gdTAoZSx0KTt2YXIgbj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkuc2xpY2UoOCwtMSk7aWYoXCJPYmplY3RcIj09PW4mJmUuY29uc3RydWN0b3ImJihuPWUuY29uc3RydWN0b3IubmFtZSksXCJNYXBcIj09PW58fFwiU2V0XCI9PT1uKXJldHVybiBBcnJheS5mcm9tKG4pO2lmKFwiQXJndW1lbnRzXCI9PT1ufHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSlyZXR1cm4gdTAoZSx0KX19KGUsdCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCl9dmFyIHUyPSgwLHguY3JlYXRlQ29udGV4dCkobnVsbCksdTQ9ZnVuY3Rpb24oKXtyZXR1cm4oMCx4LnVzZUNvbnRleHQpKHUyKX07ZnVuY3Rpb24gdTUoKXt2YXIgZSx0LG4scixvPSgwLEEuYykoMTEpLGE9dTEoKDAseC51c2VTdGF0ZSkobnVsbCksMiksaT1hWzBdLGw9YVsxXSxzPXUxKCgwLHgudXNlU3RhdGUpKC0xKSwyKSxjPXNbMF0sdT1zWzFdLGQ9ZGEoKSxmPWQuc3RhdGUscD1kLmRpc3BhdGNoLGg9ZC5nZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlscyxtPSgwLHgudXNlUmVmKShudWxsKTtyZXR1cm4gb1swXT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhlPSgwLGIuanN4KShyJCx7fSksdD0oMCxiLmpzeCkockkse30pLG9bMF09ZSxvWzFdPXQpOihlPW9bMF0sdD1vWzFdKSxvWzJdIT09cHx8b1szXSE9PWh8fG9bNF0hPT1pfHxvWzVdIT09Y3x8b1s2XSE9PWY/KG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5ydW50aW1lRXJyb3JzLG49ZS50b3RhbEVycm9yQ291bnQ7cmV0dXJuKDAsYi5qc3gpKGIuRnJhZ21lbnQse2NoaWxkcmVuOmYuc2hvd0luZGljYXRvcj8oMCxiLmpzeCkoYi5GcmFnbWVudCx7Y2hpbGRyZW46KDAsYi5qc3gpKHUyLHt2YWx1ZTp7cnVudGltZUVycm9yczp0LHRvdGFsRXJyb3JDb3VudDpufSxjaGlsZHJlbjooMCxiLmpzeHMpKHIxLHt2YWx1ZTp7cGFuZWw6aSxzZXRQYW5lbDpsLHRyaWdnZXJSZWY6bSxzZWxlY3RlZEluZGV4OmMsc2V0U2VsZWN0ZWRJbmRleDp1fSxjaGlsZHJlbjpbKDAsYi5qc3gpKHJSLHtzdGF0ZTpmLGRpc3BhdGNoOnAsZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHM6aCxydW50aW1lRXJyb3JzOnQsZXJyb3JDb3VudDpufSksKDAsYi5qc3gpKHVXLHt9KSwoMCxiLmpzeCkob3gse30pXX0pfSl9KTpudWxsfSl9LG9bMl09cCxvWzNdPWgsb1s0XT1pLG9bNV09YyxvWzZdPWYsb1s3XT1uKTpuPW9bN10sb1s4XSE9PWZ8fG9bOV0hPT1uPyhyPSgwLGIuanN4cykoZXAse2NoaWxkcmVuOltlLHQsKDAsYi5qc3gpKHJxLHtzdGF0ZTpmLGlzQXBwRGlyOiEwLGNoaWxkcmVuOm59KV19KSxvWzhdPWYsb1s5XT1uLG9bMTBdPXIpOnI9b1sxMF0scn1mdW5jdGlvbiB1MyhlLHQpeyhudWxsPT10fHx0PmUubGVuZ3RoKSYmKHQ9ZS5sZW5ndGgpO2Zvcih2YXIgbj0wLHI9QXJyYXkodCk7bjx0O24rKylyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gdTYoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHUzKGUpfShlKXx8ZnVuY3Rpb24oZSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9ZVtTeW1ib2wuaXRlcmF0b3JdfHxudWxsIT1lW1wiQEBpdGVyYXRvclwiXSlyZXR1cm4gQXJyYXkuZnJvbShlKX0oZSl8fHU5KGUpfHxmdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKX0oKX1mdW5jdGlvbiB1OShlLHQpe2lmKGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXJldHVybiB1MyhlLHQpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKS5zbGljZSg4LC0xKTtpZihcIk9iamVjdFwiPT09biYmZS5jb25zdHJ1Y3RvciYmKG49ZS5jb25zdHJ1Y3Rvci5uYW1lKSxcIk1hcFwiPT09bnx8XCJTZXRcIj09PW4pcmV0dXJuIEFycmF5LmZyb20obik7aWYoXCJBcmd1bWVudHNcIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKXJldHVybiB1MyhlLHQpfX12YXIgdTg9bnVsbCx1Nz1bXTtmdW5jdGlvbiBkZShlKXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09YXJndW1lbnRzW3JdO3U4P2UuYXBwbHkodm9pZCAwLFt1OF0uY29uY2F0KHU2KG4pKSk6dTcucHVzaChmdW5jdGlvbih0KXtlLmFwcGx5KHZvaWQgMCxbdF0uY29uY2F0KHU2KG4pKSl9KX19dmFyIGR0PXtvbkJ1aWxkT2s6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpQfSl9KSxvbkJ1aWxkRXJyb3I6ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOkksbWVzc2FnZTp0fSl9KSxvbkJlZm9yZVJlZnJlc2g6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTp6fSl9KSxvblJlZnJlc2g6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpUfSl9KSxvblZlcnNpb25JbmZvOmRlKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpELHZlcnNpb25JbmZvOnR9KX0pLG9uU3RhdGljSW5kaWNhdG9yOmRlKGZ1bmN0aW9uKGUsdCl7ZSh7dHlwZTpCLHN0YXRpY0luZGljYXRvcjp0fSl9KSxvbkRlYnVnSW5mbzpkZShmdW5jdGlvbihlLHQpe2Uoe3R5cGU6UixkZWJ1Z0luZm86dH0pfSksb25EZXZJbmRpY2F0b3I6ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOk0sZGV2SW5kaWNhdG9yOnR9KX0pLG9uRGV2VG9vbHNDb25maWc6ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOkcsZGV2VG9vbHNDb25maWc6dH0pfSksb25VbmhhbmRsZWRFcnJvcjpkZShmdW5jdGlvbihlLHQpe2Uoe3R5cGU6TCxyZWFzb246dH0pfSksb25VbmhhbmRsZWRSZWplY3Rpb246ZGUoZnVuY3Rpb24oZSx0KXtlKHt0eXBlOk4scmVhc29uOnR9KX0pLG9wZW5FcnJvck92ZXJsYXk6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpVfSl9KSxjbG9zZUVycm9yT3ZlcmxheTpkZShmdW5jdGlvbihlKXtlKHt0eXBlOkZ9KX0pLHRvZ2dsZUVycm9yT3ZlcmxheTpkZShmdW5jdGlvbihlKXtlKHt0eXBlOnF9KX0pLGJ1aWxkaW5nSW5kaWNhdG9ySGlkZTpkZShmdW5jdGlvbihlKXtlKHt0eXBlOlZ9KX0pLGJ1aWxkaW5nSW5kaWNhdG9yU2hvdzpkZShmdW5jdGlvbihlKXtlKHt0eXBlOkh9KX0pLHJlbmRlcmluZ0luZGljYXRvckhpZGU6ZGUoZnVuY3Rpb24oZSl7ZSh7dHlwZTpXfSl9KSxyZW5kZXJpbmdJbmRpY2F0b3JTaG93OmRlKGZ1bmN0aW9uKGUpe2Uoe3R5cGU6JH0pfSksc2VnbWVudEV4cGxvcmVyTm9kZUFkZDpkZShmdW5jdGlvbihlLHQpe2FlKHQpfSksc2VnbWVudEV4cGxvcmVyTm9kZVJlbW92ZTpkZShmdW5jdGlvbihlLHQpe2F0KHQpfSksc2VnbWVudEV4cGxvcmVyVXBkYXRlUm91dGVTdGF0ZTpkZShmdW5jdGlvbihlLHQpe2Uoe3R5cGU6ZW4scGFnZTp0fSl9KX07ZnVuY3Rpb24gZG4oZSl7dmFyIHQsbixyLG8sYSxpLGwscyxjLHUsZCxmLHAsaCxtLGcseSx2LHcsTz0oMCxBLmMpKDE4KSxRPWUuZ2V0T3duZXJTdGFjayxKPWUuZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHMsZWU9ZS5pc1JlY292ZXJhYmxlRXJyb3IsZXQ9ZS5yb3V0ZXJUeXBlLGVyPWUuc2hhZG93Um9vdCxlbD0odD1ldCxuPVEscj1lZSwocz0oMCxBLmMpKDcpKVswXSE9PW58fHNbMV0hPT1yPyhhPWZ1bmN0aW9uKGUsdCxvKXt2YXIgYSxpPW4obyksbD1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06cHJvY2Vzcy5lbnYuX19ORVhUX0RJU1RfRElSO3JldHVybiBlPyhlPWUuc3BsaXQoXCJcXG5cIikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmluY2x1ZGVzKFwiKGV2YWwgXCIpJiYoZT1lLnJlcGxhY2UoL2V2YWwgY29kZS9nLFwiZXZhbFwiKS5yZXBsYWNlKC9cXChldmFsIGF0IFteKCldKiBcXCgvLFwiKGZpbGU6Ly9cIikucmVwbGFjZSgvXFwpLC4qJC9nLFwiKVwiKSksZX0pLmpvaW4oXCJcXG5cIiksKDAsQy5wYXJzZSkoZSkubWFwKGZ1bmN0aW9uKGUpe3RyeXt2YXIgbj1uZXcgVVJMKGUuZmlsZSkscj1fLmV4ZWMobi5wYXRobmFtZSk7aWYocil7dmFyIG8sYT1udWxsPT10fHxudWxsPT0obz10LnJlcGxhY2UoL1xcXFwvZyxcIi9cIikpP3ZvaWQgMDpvLnJlcGxhY2UoL1xcLyQvLFwiXCIpO2EmJihlLmZpbGU9XCJmaWxlOi8vXCIrYS5jb25jYXQoci5wb3AoKSkrbi5zZWFyY2gpfX1jYXRjaChlKXt9cmV0dXJue2ZpbGU6ZS5maWxlLGxpbmUxOmUubGluZU51bWJlcixjb2x1bW4xOmUuY29sdW1uLG1ldGhvZE5hbWU6ZS5tZXRob2ROYW1lLGFyZ3VtZW50czplLmFyZ3VtZW50c319KSk6W119KChvLnN0YWNrfHxcIlwiKSsoaXx8XCJcIikpLHM9e2lkOnQsZXJyb3I6byxmcmFtZXM6bCx0eXBlOnIobyk/XCJyZWNvdmVyYWJsZVwiOihhPW8pJiZcIk5FWFRfQ09OU09MRV9FUlJPUlwiPT09YVtrXT9cImNvbnNvbGVcIjpcInJ1bnRpbWVcIn0sYz1lLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5lcnJvci5zdGFjayE9PXMuZXJyb3Iuc3RhY2smJmVvKGUuZXJyb3Iuc3RhY2spIT09ZW8ocy5lcnJvci5zdGFjayl8fG4oZS5lcnJvcikhPT1uKHMuZXJyb3IpfSk7cmV0dXJuIGMubGVuZ3RoPT09ZS5sZW5ndGg/KGMucHVzaChzKSxjKTplfSxzWzBdPW4sc1sxXT1yLHNbMl09YSk6YT1zWzJdLGM9YSwoc1szXSE9PWM/KGk9ZnVuY3Rpb24oZSx0KXtzd2l0Y2godC50eXBlKXtjYXNlIFI6cmV0dXJuIFMoaih7fSxlKSx7ZGVidWdJbmZvOnQuZGVidWdJbmZvfSk7Y2FzZSBCOnJldHVybiBTKGooe30sZSkse3N0YXRpY0luZGljYXRvcjp0LnN0YXRpY0luZGljYXRvcn0pO2Nhc2UgUDpyZXR1cm4gUyhqKHt9LGUpLHtidWlsZEVycm9yOm51bGx9KTtjYXNlIEk6cmV0dXJuIFMoaih7fSxlKSx7YnVpbGRFcnJvcjp0Lm1lc3NhZ2V9KTtjYXNlIHo6cmV0dXJuIFMoaih7fSxlKSx7cmVmcmVzaFN0YXRlOnt0eXBlOlwicGVuZGluZ1wiLGVycm9yczpbXX19KTtjYXNlIFQ6cmV0dXJuIFMoaih7fSxlKSx7YnVpbGRFcnJvcjpudWxsLGVycm9yczpcInBlbmRpbmdcIj09PWUucmVmcmVzaFN0YXRlLnR5cGU/ZS5yZWZyZXNoU3RhdGUuZXJyb3JzOltdLHJlZnJlc2hTdGF0ZTp7dHlwZTpcImlkbGVcIn19KTtjYXNlIEw6Y2FzZSBOOnN3aXRjaChlLnJlZnJlc2hTdGF0ZS50eXBlKXtjYXNlXCJpZGxlXCI6cmV0dXJuIFMoaih7fSxlKSx7bmV4dElkOmUubmV4dElkKzEsZXJyb3JzOmMoZS5lcnJvcnMsZS5uZXh0SWQsdC5yZWFzb24pfSk7Y2FzZVwicGVuZGluZ1wiOnJldHVybiBTKGooe30sZSkse25leHRJZDplLm5leHRJZCsxLHJlZnJlc2hTdGF0ZTpTKGooe30sZS5yZWZyZXNoU3RhdGUpLHtlcnJvcnM6YyhlLmVycm9ycyxlLm5leHRJZCx0LnJlYXNvbil9KX0pO2RlZmF1bHQ6cmV0dXJuIGV9Y2FzZSBEOnJldHVybiBTKGooe30sZSkse3ZlcnNpb25JbmZvOnQudmVyc2lvbkluZm99KTtjYXNlIFo6cmV0dXJuIFMoaih7fSxlKSx7ZGlzYWJsZURldkluZGljYXRvcjp0LmRpc2FibGVkfSk7Y2FzZSBNOnJldHVybiBTKGooe30sZSkse3Nob3dJbmRpY2F0b3I6ITAsZGlzYWJsZURldkluZGljYXRvcjplYXx8ISF0LmRldkluZGljYXRvci5kaXNhYmxlZFVudGlsfSk7Y2FzZSBVOnJldHVybiBTKGooe30sZSkse2lzRXJyb3JPdmVybGF5T3BlbjohMH0pO2Nhc2UgRjpyZXR1cm4gUyhqKHt9LGUpLHtpc0Vycm9yT3ZlcmxheU9wZW46ITF9KTtjYXNlIHE6cmV0dXJuIFMoaih7fSxlKSx7aXNFcnJvck92ZXJsYXlPcGVuOiFlLmlzRXJyb3JPdmVybGF5T3Blbn0pO2Nhc2UgSDpyZXR1cm4gUyhqKHt9LGUpLHtidWlsZGluZ0luZGljYXRvcjohMH0pO2Nhc2UgVjpyZXR1cm4gUyhqKHt9LGUpLHtidWlsZGluZ0luZGljYXRvcjohMX0pO2Nhc2UgJDpyZXR1cm4gUyhqKHt9LGUpLHtyZW5kZXJpbmdJbmRpY2F0b3I6ITB9KTtjYXNlIFc6cmV0dXJuIFMoaih7fSxlKSx7cmVuZGVyaW5nSW5kaWNhdG9yOiExfSk7Y2FzZSBZOnJldHVybiBTKGooe30sZSkse2RldlRvb2xzUG9zaXRpb246dC5kZXZUb29sc1Bvc2l0aW9ufSk7Y2FzZSBLOnJldHVybiBTKGooe30sZSkse2RldlRvb2xzUGFuZWxQb3NpdGlvbjpTKGooe30sZS5kZXZUb29sc1BhbmVsUG9zaXRpb24pLEUoe30sdC5rZXksdC5kZXZUb29sc1BhbmVsUG9zaXRpb24pKX0pO2Nhc2UgWDpyZXR1cm4gUyhqKHt9LGUpLHtzY2FsZTp0LnNjYWxlfSk7Y2FzZSBlbjpyZXR1cm4gUyhqKHt9LGUpLHtwYWdlOnQucGFnZX0pO2Nhc2UgRzp2YXIgbj10LmRldlRvb2xzQ29uZmlnLHI9bi50aGVtZSxvPW4uZGlzYWJsZURldkluZGljYXRvcixhPW4uZGV2VG9vbHNQb3NpdGlvbixpPW4uZGV2VG9vbHNQYW5lbFBvc2l0aW9uLGw9bi5kZXZUb29sc1BhbmVsU2l6ZSxzPW4uc2NhbGUsdT1uLmhpZGVTaG9ydGN1dDtyZXR1cm4gUyhqKHt9LGUpLHt0aGVtZTpudWxsIT1yP3I6ZS50aGVtZSxkaXNhYmxlRGV2SW5kaWNhdG9yOm51bGwhPW8/bzplLmRpc2FibGVEZXZJbmRpY2F0b3IsZGV2VG9vbHNQb3NpdGlvbjpudWxsIT1hP2E6ZS5kZXZUb29sc1Bvc2l0aW9uLGRldlRvb2xzUGFuZWxQb3NpdGlvbjpudWxsIT1pP2k6ZS5kZXZUb29sc1BhbmVsUG9zaXRpb24sc2NhbGU6bnVsbCE9cz9zOmUuc2NhbGUsZGV2VG9vbHNQYW5lbFNpemU6bnVsbCE9bD9sOmUuZGV2VG9vbHNQYW5lbFNpemUsaGlkZVNob3J0Y3V0OnZvaWQgMCE9PXU/dTplLmhpZGVTaG9ydGN1dH0pO2RlZmF1bHQ6cmV0dXJuIGV9fSxzWzNdPWMsc1s0XT1pKTppPXNbNF0sc1s1XSE9PXQpPyhvPXQsbD1TKGooe30sZWkpLHtpc0Vycm9yT3ZlcmxheU9wZW46XCJwYWdlc1wiPT09byxyb3V0ZXJUeXBlOm99KSxzWzVdPXQsc1s2XT1sKTpsPXNbNl0sdT0oMCx4LnVzZVJlZHVjZXIpKGksbCksZD0yLGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGV9KHUpfHxmdW5jdGlvbihlLHQpe3ZhciBuLHIsbz1udWxsPT1lP251bGw6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmZVtTeW1ib2wuaXRlcmF0b3JdfHxlW1wiQEBpdGVyYXRvclwiXTtpZihudWxsIT1vKXt2YXIgYT1bXSxpPSEwLGw9ITE7dHJ5e2ZvcihvPW8uY2FsbChlKTshKGk9KG49by5uZXh0KCkpLmRvbmUpJiYoYS5wdXNoKG4udmFsdWUpLGEubGVuZ3RoIT09dCk7aT0hMCk7fWNhdGNoKGUpe2w9ITAscj1lfWZpbmFsbHl7dHJ5e2l8fG51bGw9PW8ucmV0dXJufHxvLnJldHVybigpfWZpbmFsbHl7aWYobCl0aHJvdyByfX1yZXR1cm4gYX19KHUsMil8fHU5KHUsZCl8fGZ1bmN0aW9uKCl7dGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXFxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIil9KCkpLGVzPWVsWzBdLGVjPWVsWzFdO3JldHVybiBPWzBdIT09ZXIuaG9zdHx8T1sxXSE9PWVzLnRoZW1lPyhmPWZ1bmN0aW9uKCl7dmFyIGU9ZXIuaG9zdDtcImRhcmtcIj09PWVzLnRoZW1lPyhlLmNsYXNzTGlzdC5hZGQoXCJkYXJrXCIpLGUuY2xhc3NMaXN0LnJlbW92ZShcImxpZ2h0XCIpKTpcImxpZ2h0XCI9PT1lcy50aGVtZT8oZS5jbGFzc0xpc3QuYWRkKFwibGlnaHRcIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwiZGFya1wiKSk6KGUuY2xhc3NMaXN0LnJlbW92ZShcImRhcmtcIiksZS5jbGFzc0xpc3QucmVtb3ZlKFwibGlnaHRcIikpfSxPWzBdPWVyLmhvc3QsT1sxXT1lcy50aGVtZSxPWzJdPWYpOmY9T1syXSxPWzNdIT09ZXJ8fE9bNF0hPT1lcy50aGVtZT8ocD1bZXIsZXMudGhlbWVdLE9bM109ZXIsT1s0XT1lcy50aGVtZSxPWzVdPXApOnA9T1s1XSwoMCx4LnVzZUxheW91dEVmZmVjdCkoZixwKSxPWzZdIT09ZWM/KGg9ZnVuY3Rpb24oKXt1OD1lYzt2YXIgZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe3RyeXt2YXIgdD0hMCxuPSExLHI9dm9pZCAwO3RyeXtmb3IodmFyIG8sYT11N1tTeW1ib2wuaXRlcmF0b3JdKCk7ISh0PShvPWEubmV4dCgpKS5kb25lKTt0PSEwKSgwLG8udmFsdWUpKGUpfWNhdGNoKGUpe249ITAscj1lfWZpbmFsbHl7dHJ5e3R8fG51bGw9PWEucmV0dXJufHxhLnJldHVybigpfWZpbmFsbHl7aWYobil0aHJvdyByfX19ZmluYWxseXt1Ny5sZW5ndGg9MH19KGVjKX0pO3JldHVybiBmdW5jdGlvbigpe3U4PW51bGwsY2xlYXJUaW1lb3V0KGUpfX0sT1s2XT1lYyxPWzddPWgpOmg9T1s3XSxPWzhdPT09U3ltYm9sLmZvcihcInJlYWN0Lm1lbW9fY2FjaGVfc2VudGluZWxcIik/KG09W10sT1s4XT1tKTptPU9bOF0sKDAseC51c2VJbnNlcnRpb25FZmZlY3QpKGgsbSksT1s5XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyhnPSgwLGIuanN4KShldSx7fSksT1s5XT1nKTpnPU9bOV0sT1sxMF0hPT1lY3x8T1sxMV0hPT1KfHxPWzEyXSE9PWVyfHxPWzEzXSE9PWVzPyh5PXtkaXNwYXRjaDplYyxnZXRTcXVhc2hlZEh5ZHJhdGlvbkVycm9yRGV0YWlsczpKLHNoYWRvd1Jvb3Q6ZXIsc3RhdGU6ZXN9LE9bMTBdPWVjLE9bMTFdPUosT1sxMl09ZXIsT1sxM109ZXMsT1sxNF09eSk6eT1PWzE0XSxPWzE1XT09PVN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsXCIpPyh2PSgwLGIuanN4KSh1NSx7fSksT1sxNV09dik6dj1PWzE1XSxPWzE2XSE9PXk/KHc9KDAsYi5qc3hzKShiLkZyYWdtZW50LHtjaGlsZHJlbjpbZywoMCxiLmpzeCkoZHIse3ZhbHVlOnksY2hpbGRyZW46dn0pXX0pLE9bMTZdPXksT1sxN109dyk6dz1PWzE3XSx3fXZhciBkcj0oMCx4LmNyZWF0ZUNvbnRleHQpKG51bGwpLGRhPWZ1bmN0aW9uKCl7cmV0dXJuKDAseC51c2VDb250ZXh0KShkcil9LGRpPSExLGRsPSExO2Z1bmN0aW9uIGRzKCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZGMoZSx0KXtpZihkaSl0aHJvdyBFcnJvcihcIk5leHQgRGV2VG9vbHM6IFBhZ2VzIERldiBPdmVybGF5IGlzIGFscmVhZHkgbW91bnRlZC4gVGhpcyBpcyBhIGJ1ZyBpbiBOZXh0LmpzXCIpO2lmKCFkbCl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtuLnN0eWxlLmRpc3BsYXk9XCJibG9ja1wiLG4uc3R5bGUucG9zaXRpb249XCJhYnNvbHV0ZVwiLG4uc2V0QXR0cmlidXRlKFwiZGF0YS1uZXh0anMtZGV2LW92ZXJsYXlcIixcInRydWVcIik7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm5leHRqcy1wb3J0YWxcIik7bi5hcHBlbmRDaGlsZChyKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG4pO3ZhciBvPSgwLGVsLmNyZWF0ZVJvb3QpKHIse2lkZW50aWZpZXJQcmVmaXg6XCJuZHQtXCJ9KSxhPXIuYXR0YWNoU2hhZG93KHttb2RlOlwib3BlblwifSk7KDAseC5zdGFydFRyYW5zaXRpb24pKGZ1bmN0aW9uKCl7by5yZW5kZXIoKDAsYi5qc3gpKGRuLHtnZXRPd25lclN0YWNrOmUsZ2V0U3F1YXNoZWRIeWRyYXRpb25FcnJvckRldGFpbHM6ZHMsaXNSZWNvdmVyYWJsZUVycm9yOnQscm91dGVyVHlwZTpcImFwcFwiLHNoYWRvd1Jvb3Q6YX0pKX0pLGRsPSEwfX1mdW5jdGlvbiBkdShlLHQsbil7aWYoZGwpdGhyb3cgRXJyb3IoXCJOZXh0IERldlRvb2xzOiBBcHAgRGV2IE92ZXJsYXkgaXMgYWxyZWFkeSBtb3VudGVkLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanNcIik7aWYoIWRpKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibmV4dGpzLXBvcnRhbFwiKTtyLnN0eWxlLnBvc2l0aW9uPVwiYWJzb2x1dGVcIixuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihlKXt2YXIgdD0hMCxuPSExLG89dm9pZCAwO3RyeXtmb3IodmFyIGEsaT1lW1N5bWJvbC5pdGVyYXRvcl0oKTshKHQ9KGE9aS5uZXh0KCkpLmRvbmUpO3Q9ITApe3ZhciBsPWEudmFsdWU7aWYoXCJjaGlsZExpc3RcIj09PWwudHlwZSl7dmFyIHM9ITAsYz0hMSx1PXZvaWQgMDt0cnl7Zm9yKHZhciBkLGY9bC5yZW1vdmVkTm9kZXNbU3ltYm9sLml0ZXJhdG9yXSgpOyEocz0oZD1mLm5leHQoKSkuZG9uZSk7cz0hMClkLnZhbHVlPT09ciYmZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyKX1jYXRjaChlKXtjPSEwLHU9ZX1maW5hbGx5e3RyeXtzfHxudWxsPT1mLnJldHVybnx8Zi5yZXR1cm4oKX1maW5hbGx5e2lmKGMpdGhyb3cgdX19fX19Y2F0Y2goZSl7bj0hMCxvPWV9ZmluYWxseXt0cnl7dHx8bnVsbD09aS5yZXR1cm58fGkucmV0dXJuKCl9ZmluYWxseXtpZihuKXRocm93IG99fX0pLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OiEwfSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyKTt2YXIgbz0oMCxlbC5jcmVhdGVSb290KShyLHtpZGVudGlmaWVyUHJlZml4OlwibmR0LVwifSksYT1yLmF0dGFjaFNoYWRvdyh7bW9kZTpcIm9wZW5cIn0pOygwLHguc3RhcnRUcmFuc2l0aW9uKShmdW5jdGlvbigpe28ucmVuZGVyKCgwLGIuanN4KShkbix7Z2V0T3duZXJTdGFjazplLGdldFNxdWFzaGVkSHlkcmF0aW9uRXJyb3JEZXRhaWxzOnQsaXNSZWNvdmVyYWJsZUVycm9yOm4scm91dGVyVHlwZTpcInBhZ2VzXCIsc2hhZG93Um9vdDphfSkpfSksZGk9ITB9fX0pKCksZXhwb3J0cy5EZXZPdmVybGF5Q29udGV4dD1fX3dlYnBhY2tfZXhwb3J0c19fLkRldk92ZXJsYXlDb250ZXh0LGV4cG9ydHMuZGlzcGF0Y2hlcj1fX3dlYnBhY2tfZXhwb3J0c19fLmRpc3BhdGNoZXIsZXhwb3J0cy5yZW5kZXJBcHBEZXZPdmVybGF5PV9fd2VicGFja19leHBvcnRzX18ucmVuZGVyQXBwRGV2T3ZlcmxheSxleHBvcnRzLnJlbmRlclBhZ2VzRGV2T3ZlcmxheT1fX3dlYnBhY2tfZXhwb3J0c19fLnJlbmRlclBhZ2VzRGV2T3ZlcmxheSxleHBvcnRzLnVzZURldk92ZXJsYXlDb250ZXh0PV9fd2VicGFja19leHBvcnRzX18udXNlRGV2T3ZlcmxheUNvbnRleHQsX193ZWJwYWNrX2V4cG9ydHNfXyktMT09PVtcIkRldk92ZXJsYXlDb250ZXh0XCIsXCJkaXNwYXRjaGVyXCIsXCJyZW5kZXJBcHBEZXZPdmVybGF5XCIsXCJyZW5kZXJQYWdlc0Rldk92ZXJsYXlcIixcInVzZURldk92ZXJsYXlDb250ZXh0XCJdLmluZGV4T2YoX193ZWJwYWNrX2lfXykmJihleHBvcnRzW19fd2VicGFja19pX19dPV9fd2VicGFja19leHBvcnRzX19bX193ZWJwYWNrX2lfX10pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/next-devtools/index.js\n")); /***/ }), /***/ "(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/process/browser.js": /*!***************************************************************************************************************************************!*\ !*** ./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/compiled/process/browser.js ***! \***************************************************************************************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var e={229:function(e){var t=e.exports={};var r;var n;function defaultSetTimout(){throw new Error(\"setTimeout has not been defined\")}function defaultClearTimeout(){throw new Error(\"clearTimeout has not been defined\")}(function(){try{if(typeof setTimeout===\"function\"){r=setTimeout}else{r=defaultSetTimout}}catch(e){r=defaultSetTimout}try{if(typeof clearTimeout===\"function\"){n=clearTimeout}else{n=defaultClearTimeout}}catch(e){n=defaultClearTimeout}})();function runTimeout(e){if(r===setTimeout){return setTimeout(e,0)}if((r===defaultSetTimout||!r)&&setTimeout){r=setTimeout;return setTimeout(e,0)}try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}function runClearTimeout(e){if(n===clearTimeout){return clearTimeout(e)}if((n===defaultClearTimeout||!n)&&clearTimeout){n=clearTimeout;return clearTimeout(e)}try{return n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}var i=[];var o=false;var u;var a=-1;function cleanUpNextTick(){if(!o||!u){return}o=false;if(u.length){i=u.concat(i)}else{a=-1}if(i.length){drainQueue()}}function drainQueue(){if(o){return}var e=runTimeout(cleanUpNextTick);o=true;var t=i.length;while(t){u=i;i=[];while(++a1){for(var r=1;r { "use strict"; eval(__webpack_require__.ts("/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/.pnpm/next@15.5.3_react-dom@19.1.1_react@19.1.1__react@19.1.1/node_modules/next/dist/build/polyfills/process.js\");\n/**\n * @license React\n * react-dom-client.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\n true &&\n (function () {\n function findHook(fiber, id) {\n for (fiber = fiber.memoizedState; null !== fiber && 0 < id; )\n (fiber = fiber.next), id--;\n return fiber;\n }\n function copyWithSetImpl(obj, path, index, value) {\n if (index >= path.length) return value;\n var key = path[index],\n updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);\n updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);\n return updated;\n }\n function copyWithRename(obj, oldPath, newPath) {\n if (oldPath.length !== newPath.length)\n console.warn(\"copyWithRename() expects paths of the same length\");\n else {\n for (var i = 0; i < newPath.length - 1; i++)\n if (oldPath[i] !== newPath[i]) {\n console.warn(\n \"copyWithRename() expects paths to be the same except for the deepest key\"\n );\n return;\n }\n return copyWithRenameImpl(obj, oldPath, newPath, 0);\n }\n }\n function copyWithRenameImpl(obj, oldPath, newPath, index) {\n var oldKey = oldPath[index],\n updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);\n index + 1 === oldPath.length\n ? ((updated[newPath[index]] = updated[oldKey]),\n isArrayImpl(updated)\n ? updated.splice(oldKey, 1)\n : delete updated[oldKey])\n : (updated[oldKey] = copyWithRenameImpl(\n obj[oldKey],\n oldPath,\n newPath,\n index + 1\n ));\n return updated;\n }\n function copyWithDeleteImpl(obj, path, index) {\n var key = path[index],\n updated = isArrayImpl(obj) ? obj.slice() : assign({}, obj);\n if (index + 1 === path.length)\n return (\n isArrayImpl(updated) ? updated.splice(key, 1) : delete updated[key],\n updated\n );\n updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);\n return updated;\n }\n function shouldSuspendImpl() {\n return !1;\n }\n function shouldErrorImpl() {\n return null;\n }\n function warnInvalidHookAccess() {\n console.error(\n \"Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://react.dev/link/rules-of-hooks\"\n );\n }\n function warnInvalidContextAccess() {\n console.error(\n \"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\"\n );\n }\n function noop() {}\n function warnForMissingKey() {}\n function setToSortedString(set) {\n var array = [];\n set.forEach(function (value) {\n array.push(value);\n });\n return array.sort().join(\", \");\n }\n function createFiber(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n }\n function scheduleRoot(root, element) {\n root.context === emptyContextObject &&\n (updateContainerImpl(root.current, 2, element, root, null, null),\n flushSyncWork$1());\n }\n function scheduleRefresh(root, update) {\n if (null !== resolveFamily) {\n var staleFamilies = update.staleFamilies;\n update = update.updatedFamilies;\n flushPendingEffects();\n scheduleFibersWithFamiliesRecursively(\n root.current,\n update,\n staleFamilies\n );\n flushSyncWork$1();\n }\n }\n function setRefreshHandler(handler) {\n resolveFamily = handler;\n }\n function isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n }\n function getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n }\n function getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n }\n function getActivityInstanceFromFiber(fiber) {\n if (31 === fiber.tag) {\n var activityState = fiber.memoizedState;\n null === activityState &&\n ((fiber = fiber.alternate),\n null !== fiber && (activityState = fiber.memoizedState));\n if (null !== activityState) return activityState.dehydrated;\n }\n return null;\n }\n function assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(\"Unable to find node on an unmounted component.\");\n }\n function findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate)\n throw Error(\"Unable to find node on an unmounted component.\");\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(\"Unable to find node on an unmounted component.\");\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, _child = parentA.child; _child; ) {\n if (_child === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (_child === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n _child = _child.sibling;\n }\n if (!didFindChild) {\n for (_child = parentB.child; _child; ) {\n if (_child === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (_child === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n _child = _child.sibling;\n }\n if (!didFindChild)\n throw Error(\n \"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\"\n );\n }\n }\n if (a.alternate !== b)\n throw Error(\n \"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\"\n );\n }\n if (3 !== a.tag)\n throw Error(\"Unable to find node on an unmounted component.\");\n return a.stateNode.current === a ? fiber : alternate;\n }\n function findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getComponentNameFromOwner(owner) {\n return \"number\" === typeof owner.tag\n ? getComponentNameFromFiber(owner)\n : \"string\" === typeof owner.name\n ? owner.name\n : null;\n }\n function getComponentNameFromFiber(fiber) {\n var type = fiber.type;\n switch (fiber.tag) {\n case 31:\n return \"Activity\";\n case 24:\n return \"Cache\";\n case 9:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case 10:\n return type.displayName || \"Context\";\n case 18:\n return \"DehydratedFragment\";\n case 11:\n return (\n (fiber = type.render),\n (fiber = fiber.displayName || fiber.name || \"\"),\n type.displayName ||\n (\"\" !== fiber ? \"ForwardRef(\" + fiber + \")\" : \"ForwardRef\")\n );\n case 7:\n return \"Fragment\";\n case 26:\n case 27:\n case 5:\n return type;\n case 4:\n return \"Portal\";\n case 3:\n return \"Root\";\n case 6:\n return \"Text\";\n case 16:\n return getComponentNameFromType(type);\n case 8:\n return type === REACT_STRICT_MODE_TYPE ? \"StrictMode\" : \"Mode\";\n case 22:\n return \"Offscreen\";\n case 12:\n return \"Profiler\";\n case 21:\n return \"Scope\";\n case 13:\n return \"Suspense\";\n case 19:\n return \"SuspenseList\";\n case 25:\n return \"TracingMarker\";\n case 1:\n case 0:\n case 14:\n case 15:\n if (\"function\" === typeof type)\n return type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n break;\n case 29:\n type = fiber._debugInfo;\n if (null != type)\n for (var i = type.length - 1; 0 <= i; i--)\n if (\"string\" === typeof type[i].name) return type[i].name;\n if (null !== fiber.return)\n return getComponentNameFromFiber(fiber.return);\n }\n return null;\n }\n function createCursor(defaultValue) {\n return { current: defaultValue };\n }\n function pop(cursor, fiber) {\n 0 > index$jscomp$0\n ? console.error(\"Unexpected pop.\")\n : (fiber !== fiberStack[index$jscomp$0] &&\n console.error(\"Unexpected Fiber popped.\"),\n (cursor.current = valueStack[index$jscomp$0]),\n (valueStack[index$jscomp$0] = null),\n (fiberStack[index$jscomp$0] = null),\n index$jscomp$0--);\n }\n function push(cursor, value, fiber) {\n index$jscomp$0++;\n valueStack[index$jscomp$0] = cursor.current;\n fiberStack[index$jscomp$0] = fiber;\n cursor.current = value;\n }\n function requiredContext(c) {\n null === c &&\n console.error(\n \"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\"\n );\n return c;\n }\n function pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance, fiber);\n push(contextFiberStackCursor, fiber, fiber);\n push(contextStackCursor, null, fiber);\n var nextRootContext = nextRootInstance.nodeType;\n switch (nextRootContext) {\n case 9:\n case 11:\n nextRootContext = 9 === nextRootContext ? \"#document\" : \"#fragment\";\n nextRootInstance = (nextRootInstance =\n nextRootInstance.documentElement)\n ? (nextRootInstance = nextRootInstance.namespaceURI)\n ? getOwnHostContext(nextRootInstance)\n : HostContextNamespaceNone\n : HostContextNamespaceNone;\n break;\n default:\n if (\n ((nextRootContext = nextRootInstance.tagName),\n (nextRootInstance = nextRootInstance.namespaceURI))\n )\n (nextRootInstance = getOwnHostContext(nextRootInstance)),\n (nextRootInstance = getChildHostContextProd(\n nextRootInstance,\n nextRootContext\n ));\n else\n switch (nextRootContext) {\n case \"svg\":\n nextRootInstance = HostContextNamespaceSvg;\n break;\n case \"math\":\n nextRootInstance = HostContextNamespaceMath;\n break;\n default:\n nextRootInstance = HostContextNamespaceNone;\n }\n }\n nextRootContext = nextRootContext.toLowerCase();\n nextRootContext = updatedAncestorInfoDev(null, nextRootContext);\n nextRootContext = {\n context: nextRootInstance,\n ancestorInfo: nextRootContext\n };\n pop(contextStackCursor, fiber);\n push(contextStackCursor, nextRootContext, fiber);\n }\n function popHostContainer(fiber) {\n pop(contextStackCursor, fiber);\n pop(contextFiberStackCursor, fiber);\n pop(rootInstanceStackCursor, fiber);\n }\n function getHostContext() {\n return requiredContext(contextStackCursor.current);\n }\n function pushHostContext(fiber) {\n null !== fiber.memoizedState &&\n push(hostTransitionProviderCursor, fiber, fiber);\n var context = requiredContext(contextStackCursor.current);\n var type = fiber.type;\n var nextContext = getChildHostContextProd(context.context, type);\n type = updatedAncestorInfoDev(context.ancestorInfo, type);\n nextContext = { context: nextContext, ancestorInfo: type };\n context !== nextContext &&\n (push(contextFiberStackCursor, fiber, fiber),\n push(contextStackCursor, nextContext, fiber));\n }\n function popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor, fiber), pop(contextFiberStackCursor, fiber));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor, fiber),\n (HostTransitionContext._currentValue = NotPendingTransition));\n }\n function disabledLog() {}\n function disableLogs() {\n if (0 === disabledDepth) {\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd;\n var props = {\n configurable: !0,\n enumerable: !0,\n value: disabledLog,\n writable: !0\n };\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n }\n disabledDepth++;\n }\n function reenableLogs() {\n disabledDepth--;\n if (0 === disabledDepth) {\n var props = { configurable: !0, enumerable: !0, writable: !0 };\n Object.defineProperties(console, {\n log: assign({}, props, { value: prevLog }),\n info: assign({}, props, { value: prevInfo }),\n warn: assign({}, props, { value: prevWarn }),\n error: assign({}, props, { value: prevError }),\n group: assign({}, props, { value: prevGroup }),\n groupCollapsed: assign({}, props, { value: prevGroupCollapsed }),\n groupEnd: assign({}, props, { value: prevGroupEnd })\n });\n }\n 0 > disabledDepth &&\n console.error(\n \"disabledDepth fell below zero. This is a bug in React. Please file an issue.\"\n );\n }\n function formatOwnerStack(error) {\n var prevPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n error = error.stack;\n Error.prepareStackTrace = prevPrepareStackTrace;\n error.startsWith(\"Error: react-stack-top-frame\\n\") &&\n (error = error.slice(29));\n prevPrepareStackTrace = error.indexOf(\"\\n\");\n -1 !== prevPrepareStackTrace &&\n (error = error.slice(prevPrepareStackTrace + 1));\n prevPrepareStackTrace = error.indexOf(\"react_stack_bottom_frame\");\n -1 !== prevPrepareStackTrace &&\n (prevPrepareStackTrace = error.lastIndexOf(\n \"\\n\",\n prevPrepareStackTrace\n ));\n if (-1 !== prevPrepareStackTrace)\n error = error.slice(0, prevPrepareStackTrace);\n else return \"\";\n return error;\n }\n function describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" ()\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n }\n function describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n var frame = componentFrameCache.get(fn);\n if (void 0 !== frame) return frame;\n reentry = !0;\n frame = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n var previousDispatcher = null;\n previousDispatcher = ReactSharedInternals.H;\n ReactSharedInternals.H = null;\n disableLogs();\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter =\n RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n _RunInRootFrame$Deter = namePropDescriptor = 0;\n namePropDescriptor < sampleLines.length &&\n !sampleLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n for (\n ;\n _RunInRootFrame$Deter < controlLines.length &&\n !controlLines[_RunInRootFrame$Deter].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n _RunInRootFrame$Deter++;\n if (\n namePropDescriptor === sampleLines.length ||\n _RunInRootFrame$Deter === controlLines.length\n )\n for (\n namePropDescriptor = sampleLines.length - 1,\n _RunInRootFrame$Deter = controlLines.length - 1;\n 1 <= namePropDescriptor &&\n 0 <= _RunInRootFrame$Deter &&\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter];\n\n )\n _RunInRootFrame$Deter--;\n for (\n ;\n 1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter;\n namePropDescriptor--, _RunInRootFrame$Deter--\n )\n if (\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter]\n ) {\n if (1 !== namePropDescriptor || 1 !== _RunInRootFrame$Deter) {\n do\n if (\n (namePropDescriptor--,\n _RunInRootFrame$Deter--,\n 0 > _RunInRootFrame$Deter ||\n sampleLines[namePropDescriptor] !==\n controlLines[_RunInRootFrame$Deter])\n ) {\n var _frame =\n \"\\n\" +\n sampleLines[namePropDescriptor].replace(\n \" at new \",\n \" at \"\n );\n fn.displayName &&\n _frame.includes(\"\") &&\n (_frame = _frame.replace(\"\", fn.displayName));\n \"function\" === typeof fn &&\n componentFrameCache.set(fn, _frame);\n return _frame;\n }\n while (1 <= namePropDescriptor && 0 <= _RunInRootFrame$Deter);\n }\n break;\n }\n }\n } finally {\n (reentry = !1),\n (ReactSharedInternals.H = previousDispatcher),\n reenableLogs(),\n (Error.prepareStackTrace = frame);\n }\n sampleLines = (sampleLines = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(sampleLines)\n : \"\";\n \"function\" === typeof fn && componentFrameCache.set(fn, sampleLines);\n return sampleLines;\n }\n function describeFiber(fiber, childFiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return fiber.child !== childFiber && null !== childFiber\n ? describeBuiltInComponentFrame(\"Suspense Fallback\")\n : describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return describeNativeComponentFrame(fiber.type, !1);\n case 11:\n return describeNativeComponentFrame(fiber.type.render, !1);\n case 1:\n return describeNativeComponentFrame(fiber.type, !0);\n case 31:\n return describeBuiltInComponentFrame(\"Activity\");\n default:\n return \"\";\n }\n }\n function getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\",\n previous = null;\n do {\n info += describeFiber(workInProgress, previous);\n var debugInfo = workInProgress._debugInfo;\n if (debugInfo)\n for (var i = debugInfo.length - 1; 0 <= i; i--) {\n var entry = debugInfo[i];\n if (\"string\" === typeof entry.name) {\n var JSCompiler_temp_const = info;\n a: {\n var name = entry.name,\n env = entry.env,\n location = entry.debugLocation;\n if (null != location) {\n var childStack = formatOwnerStack(location),\n idx = childStack.lastIndexOf(\"\\n\"),\n lastLine =\n -1 === idx ? childStack : childStack.slice(idx + 1);\n if (-1 !== lastLine.indexOf(name)) {\n var JSCompiler_inline_result = \"\\n\" + lastLine;\n break a;\n }\n }\n JSCompiler_inline_result = describeBuiltInComponentFrame(\n name + (env ? \" [\" + env + \"]\" : \"\")\n );\n }\n info = JSCompiler_temp_const + JSCompiler_inline_result;\n }\n }\n previous = workInProgress;\n workInProgress = workInProgress.return;\n } while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n }\n function describeFunctionComponentFrameWithoutLineNumber(fn) {\n return (fn = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(fn)\n : \"\";\n }\n function getCurrentFiberOwnerNameInDevOrNull() {\n if (null === current) return null;\n var owner = current._debugOwner;\n return null != owner ? getComponentNameFromOwner(owner) : null;\n }\n function getCurrentFiberStackInDev() {\n if (null === current) return \"\";\n var workInProgress = current;\n try {\n var info = \"\";\n 6 === workInProgress.tag && (workInProgress = workInProgress.return);\n switch (workInProgress.tag) {\n case 26:\n case 27:\n case 5:\n info += describeBuiltInComponentFrame(workInProgress.type);\n break;\n case 13:\n info += describeBuiltInComponentFrame(\"Suspense\");\n break;\n case 19:\n info += describeBuiltInComponentFrame(\"SuspenseList\");\n break;\n case 31:\n info += describeBuiltInComponentFrame(\"Activity\");\n break;\n case 30:\n case 0:\n case 15:\n case 1:\n workInProgress._debugOwner ||\n \"\" !== info ||\n (info += describeFunctionComponentFrameWithoutLineNumber(\n workInProgress.type\n ));\n break;\n case 11:\n workInProgress._debugOwner ||\n \"\" !== info ||\n (info += describeFunctionComponentFrameWithoutLineNumber(\n workInProgress.type.render\n ));\n }\n for (; workInProgress; )\n if (\"number\" === typeof workInProgress.tag) {\n var fiber = workInProgress;\n workInProgress = fiber._debugOwner;\n var debugStack = fiber._debugStack;\n if (workInProgress && debugStack) {\n var formattedStack = formatOwnerStack(debugStack);\n \"\" !== formattedStack && (info += \"\\n\" + formattedStack);\n }\n } else if (null != workInProgress.debugStack) {\n var ownerStack = workInProgress.debugStack;\n (workInProgress = workInProgress.owner) &&\n ownerStack &&\n (info += \"\\n\" + formatOwnerStack(ownerStack));\n } else break;\n var JSCompiler_inline_result = info;\n } catch (x) {\n JSCompiler_inline_result =\n \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n return JSCompiler_inline_result;\n }\n function runWithFiberInDEV(fiber, callback, arg0, arg1, arg2, arg3, arg4) {\n var previousFiber = current;\n setCurrentFiber(fiber);\n try {\n return null !== fiber && fiber._debugTask\n ? fiber._debugTask.run(\n callback.bind(null, arg0, arg1, arg2, arg3, arg4)\n )\n : callback(arg0, arg1, arg2, arg3, arg4);\n } finally {\n setCurrentFiber(previousFiber);\n }\n throw Error(\n \"runWithFiberInDEV should never be called in production. This is a bug in React.\"\n );\n }\n function setCurrentFiber(fiber) {\n ReactSharedInternals.getCurrentStack =\n null === fiber ? null : getCurrentFiberStackInDev;\n isRendering = !1;\n current = fiber;\n }\n function typeName(value) {\n return (\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\"\n );\n }\n function willCoercionThrow(value) {\n try {\n return testStringCoercion(value), !1;\n } catch (e) {\n return !0;\n }\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkAttributeStringCoercion(value, attributeName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` attribute is an unsupported type %s. This value must be coerced to a string before using it here.\",\n attributeName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkCSSPropertyStringCoercion(value, propName) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"The provided `%s` CSS property is an unsupported type %s. This value must be coerced to a string before using it here.\",\n propName,\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function checkFormFieldValueStringCoercion(value) {\n if (willCoercionThrow(value))\n return (\n console.error(\n \"Form field values (value, checked, defaultValue, or defaultChecked props) must be strings, not %s. This value must be coerced to a string before using it here.\",\n typeName(value)\n ),\n testStringCoercion(value)\n );\n }\n function injectInternals(internals) {\n if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) return !1;\n var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n if (hook.isDisabled) return !0;\n if (!hook.supportsFiber)\n return (\n console.error(\n \"The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://react.dev/link/react-devtools\"\n ),\n !0\n );\n try {\n (rendererID = hook.inject(internals)), (injectedHook = hook);\n } catch (err) {\n console.error(\"React instrumentation encountered an error: %o.\", err);\n }\n return hook.checkDCE ? !0 : !1;\n }\n function setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 &&\n unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {\n hasLoggedError ||\n ((hasLoggedError = !0),\n console.error(\n \"React instrumentation encountered an error: %o\",\n err\n ));\n }\n }\n function injectProfilingHooks(profilingHooks) {\n injectedProfilingHooks = profilingHooks;\n }\n function markCommitStopped() {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markCommitStopped &&\n injectedProfilingHooks.markCommitStopped();\n }\n function markComponentRenderStarted(fiber) {\n null !== injectedProfilingHooks &&\n \"function\" ===\n typeof injectedProfilingHooks.markComponentRenderStarted &&\n injectedProfilingHooks.markComponentRenderStarted(fiber);\n }\n function markComponentRenderStopped() {\n null !== injectedProfilingHooks &&\n \"function\" ===\n typeof injectedProfilingHooks.markComponentRenderStopped &&\n injectedProfilingHooks.markComponentRenderStopped();\n }\n function markRenderStarted(lanes) {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markRenderStarted &&\n injectedProfilingHooks.markRenderStarted(lanes);\n }\n function markRenderStopped() {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markRenderStopped &&\n injectedProfilingHooks.markRenderStopped();\n }\n function markStateUpdateScheduled(fiber, lane) {\n null !== injectedProfilingHooks &&\n \"function\" === typeof injectedProfilingHooks.markStateUpdateScheduled &&\n injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n }\n function clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n }\n function getLabelForLane(lane) {\n if (lane & 1) return \"SyncHydrationLane\";\n if (lane & 2) return \"Sync\";\n if (lane & 4) return \"InputContinuousHydration\";\n if (lane & 8) return \"InputContinuous\";\n if (lane & 16) return \"DefaultHydration\";\n if (lane & 32) return \"Default\";\n if (lane & 128) return \"TransitionHydration\";\n if (lane & 4194048) return \"Transition\";\n if (lane & 62914560) return \"Retry\";\n if (lane & 67108864) return \"SelectiveHydration\";\n if (lane & 134217728) return \"IdleHydration\";\n if (lane & 268435456) return \"Idle\";\n if (lane & 536870912) return \"Offscreen\";\n if (lane & 1073741824) return \"Deferred\";\n }\n function getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n return 128;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 4194048;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return (\n console.error(\n \"Should have found matching lanes. This is a bug in React.\"\n ),\n lanes\n );\n }\n }\n function getNextLanes(root, wipLanes, rootHasPendingCommit) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes;\n root = root.warmLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = nonIdlePendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes =\n getHighestPriorityLanes(rootHasPendingCommit)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : rootHasPendingCommit ||\n ((rootHasPendingCommit = pendingLanes & ~root),\n 0 !== rootHasPendingCommit &&\n (nextLanes = getHighestPriorityLanes(rootHasPendingCommit))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (rootHasPendingCommit = wipLanes & -wipLanes),\n suspendedLanes >= rootHasPendingCommit ||\n (32 === suspendedLanes && 0 !== (rootHasPendingCommit & 4194048)))\n ? wipLanes\n : nextLanes;\n }\n function checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n }\n function computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n case 64:\n return currentTime + 250;\n case 16:\n case 32:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return (\n console.error(\n \"Should have found matching lanes. This is a bug in React.\"\n ),\n -1\n );\n }\n }\n function claimNextTransitionLane() {\n var lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n 0 === (nextTransitionLane & 4194048) && (nextTransitionLane = 256);\n return lane;\n }\n function claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n }\n function createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n }\n function markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0),\n (root.pingedLanes = 0),\n (root.warmLanes = 0));\n }\n function markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n ) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index = 31 - clz32(remainingLanes),\n lane = 1 << index;\n entanglements[index] = 0;\n expirationTimes[index] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index] = null, index = 0;\n index < hiddenUpdatesForLane.length;\n index++\n ) {\n var update = hiddenUpdatesForLane[index];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n }\n function markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 4194090);\n }\n function markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index = 31 - clz32(rootEntangledLanes),\n lane = 1 << index;\n (lane & entangledLanes) | (root[index] & entangledLanes) &&\n (root[index] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n }\n function getBumpedLaneForHydration(root, renderLanes) {\n var renderLane = renderLanes & -renderLanes;\n renderLane =\n 0 !== (renderLane & 42)\n ? 1\n : getBumpedLaneForHydrationByLane(renderLane);\n return 0 !== (renderLane & (root.suspendedLanes | renderLanes))\n ? 0\n : renderLane;\n }\n function getBumpedLaneForHydrationByLane(lane) {\n switch (lane) {\n case 2:\n lane = 1;\n break;\n case 8:\n lane = 4;\n break;\n case 32:\n lane = 16;\n break;\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n lane = 128;\n break;\n case 268435456:\n lane = 134217728;\n break;\n default:\n lane = 0;\n }\n return lane;\n }\n function addFiberToLanesMap(root, fiber, lanes) {\n if (isDevToolsPresent)\n for (root = root.pendingUpdatersLaneMap; 0 < lanes; ) {\n var index = 31 - clz32(lanes),\n lane = 1 << index;\n root[index].add(fiber);\n lanes &= ~lane;\n }\n }\n function movePendingFibersToMemoized(root, lanes) {\n if (isDevToolsPresent)\n for (\n var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap,\n memoizedUpdaters = root.memoizedUpdaters;\n 0 < lanes;\n\n ) {\n var index = 31 - clz32(lanes);\n root = 1 << index;\n index = pendingUpdatersLaneMap[index];\n 0 < index.size &&\n (index.forEach(function (fiber) {\n var alternate = fiber.alternate;\n (null !== alternate && memoizedUpdaters.has(alternate)) ||\n memoizedUpdaters.add(fiber);\n }),\n index.clear());\n lanes &= ~root;\n }\n }\n function lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 0 !== DiscreteEventPriority && DiscreteEventPriority < lanes\n ? 0 !== ContinuousEventPriority && ContinuousEventPriority < lanes\n ? 0 !== (lanes & 134217727)\n ? DefaultEventPriority\n : IdleEventPriority\n : ContinuousEventPriority\n : DiscreteEventPriority;\n }\n function resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority\n ? DefaultEventPriority\n : getEventPriority(updatePriority.type);\n }\n function runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n }\n function detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n }\n function getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentHydrationBoundary(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey]))\n return parentNode;\n targetNode = getParentHydrationBoundary(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n }\n function getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 31 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n }\n function getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag)\n return inst.stateNode;\n throw Error(\"getNodeFromInstance: Invalid argument.\");\n }\n function getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n }\n function markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n }\n function registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n }\n function registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] &&\n console.error(\n \"EventRegistry: More than one plugin attempted to publish the same registration name, `%s`.\",\n registrationName\n );\n registrationNameDependencies[registrationName] = dependencies;\n var lowerCasedName = registrationName.toLowerCase();\n possibleRegistrationNames[lowerCasedName] = registrationName;\n \"onDoubleClick\" === registrationName &&\n (possibleRegistrationNames.ondblclick = registrationName);\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n }\n function checkControlledValueProps(tagName, props) {\n hasReadOnlyValue[props.type] ||\n props.onChange ||\n props.onInput ||\n props.readOnly ||\n props.disabled ||\n null == props.value ||\n (\"select\" === tagName\n ? console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set `onChange`.\"\n )\n : console.error(\n \"You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.\"\n ));\n props.onChange ||\n props.readOnly ||\n props.disabled ||\n null == props.checked ||\n console.error(\n \"You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.\"\n );\n }\n function isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName))\n return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n console.error(\"Invalid attribute name: `%s`\", attributeName);\n return !1;\n }\n function getValueForAttributeOnCustomComponent(node, name, expected) {\n if (isAttributeNameSafe(name)) {\n if (!node.hasAttribute(name)) {\n switch (typeof expected) {\n case \"symbol\":\n case \"object\":\n return expected;\n case \"function\":\n return expected;\n case \"boolean\":\n if (!1 === expected) return expected;\n }\n return void 0 === expected ? void 0 : null;\n }\n node = node.getAttribute(name);\n if (\"\" === node && !0 === expected) return !0;\n checkAttributeStringCoercion(expected, name);\n return node === \"\" + expected ? expected : node;\n }\n }\n function setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix && \"aria-\" !== prefix) {\n node.removeAttribute(name);\n return;\n }\n }\n checkAttributeStringCoercion(value, name);\n node.setAttribute(name, \"\" + value);\n }\n }\n function setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n checkAttributeStringCoercion(value, name);\n node.setAttribute(name, \"\" + value);\n }\n }\n function setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n checkAttributeStringCoercion(value, name);\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n }\n function getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return checkFormFieldValueStringCoercion(value), value;\n default:\n return \"\";\n }\n }\n function isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n }\n function trackValueOnNode(node, valueField, currentValue) {\n var descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n );\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n checkFormFieldValueStringCoercion(value);\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n checkFormFieldValueStringCoercion(value);\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n }\n function track(node) {\n if (!node._valueTracker) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\";\n node._valueTracker = trackValueOnNode(\n node,\n valueField,\n \"\" + node[valueField]\n );\n }\n }\n function updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n }\n function getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n }\n function escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n }\n function validateInputProps(element, props) {\n void 0 === props.checked ||\n void 0 === props.defaultChecked ||\n didWarnCheckedDefaultChecked ||\n (console.error(\n \"%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n getCurrentFiberOwnerNameInDevOrNull() || \"A component\",\n props.type\n ),\n (didWarnCheckedDefaultChecked = !0));\n void 0 === props.value ||\n void 0 === props.defaultValue ||\n didWarnValueDefaultValue$1 ||\n (console.error(\n \"%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://react.dev/link/controlled-components\",\n getCurrentFiberOwnerNameInDevOrNull() || \"A component\",\n props.type\n ),\n (didWarnValueDefaultValue$1 = !0));\n }\n function updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n ) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (checkAttributeStringCoercion(type, \"type\"), (element.type = type))\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) ||\n element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked &&\n \"function\" !== typeof checked &&\n \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (checkAttributeStringCoercion(name, \"name\"),\n (element.name = \"\" + getToStringValue(name)))\n : element.removeAttribute(\"name\");\n }\n function initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n ) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (checkAttributeStringCoercion(type, \"type\"), (element.type = type));\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n ) {\n track(element);\n return;\n }\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked &&\n \"symbol\" !== typeof checked &&\n !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (checkAttributeStringCoercion(name, \"name\"), (element.name = name));\n track(element);\n }\n function setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n }\n function validateOptionProps(element, props) {\n null == props.value &&\n (\"object\" === typeof props.children && null !== props.children\n ? React.Children.forEach(props.children, function (child) {\n null == child ||\n \"string\" === typeof child ||\n \"number\" === typeof child ||\n \"bigint\" === typeof child ||\n didWarnInvalidChild ||\n ((didWarnInvalidChild = !0),\n console.error(\n \"Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to