{"version":3,"file":"./main-v1-10.js","mappings":"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","sources":["webpack://candell-practice/webpack/runtime/load script","webpack://candell-practice/./node_modules/@remix-run/router/dist/router.js","webpack://candell-practice/./node_modules/object-assign/index.js","webpack://candell-practice/./node_modules/preact/hooks/dist/hooks.module.js","webpack://candell-practice/./node_modules/preact/compat/dist/compat.module.js","webpack://candell-practice/./node_modules/preact/dist/preact.module.js","webpack://candell-practice/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://candell-practice/./node_modules/prop-types/index.js","webpack://candell-practice/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://candell-practice/./node_modules/react-fast-compare/index.js","webpack://candell-practice/./node_modules/react-helmet/es/Helmet.js","webpack://candell-practice/./node_modules/react-router-dom/dist/index.js","webpack://candell-practice/./node_modules/react-router/dist/index.js","webpack://candell-practice/./node_modules/react-side-effect/lib/index.js","webpack://candell-practice/./UserInfo.tsx","webpack://candell-practice/./error.tsx","webpack://candell-practice/./app.tsx","webpack://candell-practice/./node_modules/preact/compat/client.mjs","webpack://candell-practice/./node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","webpack://candell-practice/webpack/bootstrap","webpack://candell-practice/webpack/runtime/compat get default export","webpack://candell-practice/webpack/runtime/define property getters","webpack://candell-practice/webpack/runtime/ensure chunk","webpack://candell-practice/webpack/runtime/get javascript chunk filename","webpack://candell-practice/webpack/runtime/get mini-css chunk filename","webpack://candell-practice/webpack/runtime/global","webpack://candell-practice/webpack/runtime/hasOwnProperty shorthand","webpack://candell-practice/webpack/runtime/make namespace object","webpack://candell-practice/webpack/runtime/publicPath","webpack://candell-practice/webpack/runtime/jsonp chunk loading","webpack://candell-practice/webpack/startup"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"candell-practice:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @remix-run/router v1.16.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Actions represent the type of change to a location value.\n */\nvar Action;\n(function (Action) {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Action[\"Pop\"] = \"POP\";\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Action[\"Push\"] = \"PUSH\";\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Action[\"Replace\"] = \"REPLACE\";\n})(Action || (Action = {}));\nconst PopStateEventType = \"popstate\";\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nfunction createMemoryHistory(options) {\n if (options === void 0) {\n options = {};\n }\n let {\n initialEntries = [\"/\"],\n initialIndex,\n v5Compat = false\n } = options;\n let entries; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === \"string\" ? null : entry.state, index === 0 ? \"default\" : undefined));\n let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);\n let action = Action.Pop;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = createLocation(entries ? getCurrentLocation().pathname : \"/\", to, state, key);\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in memory history: \" + JSON.stringify(to));\n return location;\n }\n function createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 1\n });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({\n action,\n location: nextLocation,\n delta: 0\n });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: nextLocation,\n delta\n });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nfunction createBrowserHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createBrowserLocation(window, globalHistory) {\n let {\n pathname,\n search,\n hash\n } = window.location;\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createBrowserHref(window, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);\n}\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nfunction createHashHistory(options) {\n if (options === void 0) {\n options = {};\n }\n function createHashLocation(window, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window.location.hash.substr(1));\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\"\", {\n pathname,\n search,\n hash\n },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || \"default\");\n }\n function createHashHref(window, to) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(location.pathname.charAt(0) === \"/\", \"relative pathnames are not supported in hash history.push(\" + JSON.stringify(to) + \")\");\n }\n return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\n/**\n * Creates a Location object with a unique key from the given Path\n */\nfunction createLocation(current, to, state, key) {\n if (state === void 0) {\n state = null;\n }\n let location = _extends({\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\"\n }, typeof to === \"string\" ? parsePath(to) : to, {\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n });\n return location;\n}\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nfunction createPath(_ref) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = _ref;\n if (search && search !== \"?\") pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\") pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref, validateLocation, options) {\n if (options === void 0) {\n options = {};\n }\n let {\n window = document.defaultView,\n v5Compat = false\n } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener = null;\n let index = getIndex();\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState(_extends({}, globalHistory.state, {\n idx: index\n }), \"\");\n }\n function getIndex() {\n let state = globalHistory.state || {\n idx: null\n };\n return state.idx;\n }\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({\n action,\n location: history.location,\n delta\n });\n }\n }\n function push(to, state) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 1\n });\n }\n }\n function replace(to, state) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({\n action,\n location: history.location,\n delta: 0\n });\n }\n }\n function createURL(to) {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(base, \"No window.location.(origin|href) available to create URL for href: \" + href);\n return new URL(href, base);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\n//#endregion\n\nvar ResultType;\n(function (ResultType) {\n ResultType[\"data\"] = \"data\";\n ResultType[\"deferred\"] = \"deferred\";\n ResultType[\"redirect\"] = \"redirect\";\n ResultType[\"error\"] = \"error\";\n})(ResultType || (ResultType = {}));\nconst immutableRouteKeys = new Set([\"lazy\", \"caseSensitive\", \"path\", \"id\", \"index\", \"children\"]);\nfunction isIndexRoute(route) {\n return route.index === true;\n}\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {\n if (parentPath === void 0) {\n parentPath = [];\n }\n if (manifest === void 0) {\n manifest = {};\n }\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(route.index !== true || !route.children, \"Cannot specify children on an index route\");\n invariant(!manifest[id], \"Found a route id collision on id \\\"\" + id + \"\\\". Route \" + \"id's must be globally unique within Data Router usages\");\n if (isIndexRoute(route)) {\n let indexRoute = _extends({}, route, mapRouteProperties(route), {\n id\n });\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {\n id,\n children: undefined\n });\n manifest[id] = pathOrLayoutRoute;\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);\n }\n return pathOrLayoutRoute;\n }\n });\n}\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nfunction matchRoutes(routes, locationArg, basename) {\n if (basename === void 0) {\n basename = \"/\";\n }\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let {\n route,\n pathname,\n params\n } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches, parentsMeta, parentPath) {\n if (branches === void 0) {\n branches = [];\n }\n if (parentsMeta === void 0) {\n parentsMeta = [];\n }\n if (parentPath === void 0) {\n parentPath = \"\";\n }\n let flattenRoute = (route, index, relativePath) => {\n let meta = {\n relativePath: relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(meta.relativePath.startsWith(parentPath), \"Absolute route path \\\"\" + meta.relativePath + \"\\\" nested under path \" + (\"\\\"\" + parentPath + \"\\\" is not valid. An absolute child route path \") + \"must start with the combined path of all its parent routes.\");\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true, \"Index routes must not have child routes. Please remove \" + (\"all child routes from route path \\\"\" + path + \"\\\".\"));\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n var _route$path;\n // coarse-grain check for optional params\n if (route.path === \"\" || !((_route$path = route.path) != null && _route$path.includes(\"?\"))) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n return branches;\n}\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(...restExploded.map(subpath => subpath === \"\" ? required : [required, subpath].join(\"/\")));\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n // for absolute paths, ensure `/` instead of empty segment\n return result.map(exploded => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded);\n}\nfunction rankRouteBranches(branches) {\n branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first\n : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));\n}\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = s => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue), initialScore);\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ?\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1] :\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\nfunction matchRouteBranch(branch, pathname) {\n let {\n routesMeta\n } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath({\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end\n }, remainingPathname);\n if (!match) return null;\n Object.assign(matchedParams, match.params);\n let route = meta.route;\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nfunction generatePath(originalPath, params) {\n if (params === void 0) {\n params = {};\n }\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(false, \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n path = path.replace(/\\*$/, \"/*\");\n }\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify = p => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n // Apply the splat\n return stringify(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, \"Missing \\\":\" + key + \"\\\" param\");\n return stringify(param);\n }\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter(segment => !!segment);\n return prefix + segments.join(\"/\");\n}\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = {\n path: pattern,\n caseSensitive: false,\n end: true\n };\n }\n let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce((memo, _ref, index) => {\n let {\n paramName,\n isOptional\n } = _ref;\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n }, {});\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive, end) {\n if (caseSensitive === void 0) {\n caseSensitive = false;\n }\n if (end === void 0) {\n end = true;\n }\n warning(path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"), \"Route path \\\"\" + path + \"\\\" will be treated as if it were \" + (\"\\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\" because the `*` character must \") + \"always follow a `/` in the pattern. To get rid of this warning, \" + (\"please change the route path to \\\"\" + path.replace(/\\*$/, \"/*\") + \"\\\".\"));\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:([\\w-]+)(\\?)?/g, (_, paramName, isOptional) => {\n params.push({\n paramName,\n isOptional: isOptional != null\n });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n });\n if (path.endsWith(\"*\")) {\n params.push({\n paramName: \"*\"\n });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else ;\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map(v => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(false, \"The URL path \\\"\" + value + \"\\\" could not be decoded because it is is a \" + \"malformed URL segment. This is probably due to a bad percent \" + (\"encoding (\" + error + \").\"));\n return value;\n }\n}\n/**\n * @private\n */\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nfunction resolvePath(to, fromPathname) {\n if (fromPathname === void 0) {\n fromPathname = \"/\";\n }\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname = toPathname ? toPathname.startsWith(\"/\") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach(segment => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return \"Cannot include a '\" + char + \"' character in a manually specified \" + (\"`to.\" + field + \"` field [\" + JSON.stringify(path) + \"]. Please separate it out to the \") + (\"`to.\" + dest + \"` field. Alternatively you may provide the full path as \") + \"a string in and the router will parse it for you.\";\n}\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches) {\n return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);\n}\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nfunction getResolveToMatches(matches, v7_relativeSplatPath) {\n let pathMatches = getPathContributingMatches(matches);\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) => idx === matches.length - 1 ? match.pathname : match.pathnameBase);\n }\n return pathMatches.map(match => match.pathnameBase);\n}\n/**\n * @private\n */\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {\n if (isPathRelative === void 0) {\n isPathRelative = false;\n }\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = _extends({}, toArg);\n invariant(!to.pathname || !to.pathname.includes(\"?\"), getInvalidPathError(\"?\", \"pathname\", \"search\", to));\n invariant(!to.pathname || !to.pathname.includes(\"#\"), getInvalidPathError(\"#\", \"pathname\", \"hash\", to));\n invariant(!to.search || !to.search.includes(\"#\"), getInvalidPathError(\"#\", \"search\", \"hash\", to));\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\n/**\n * @private\n */\nfunction getToPathname(to) {\n // Empty strings should be treated the same as / paths\n return to === \"\" || to.pathname === \"\" ? \"/\" : typeof to === \"string\" ? parsePath(to).pathname : to.pathname;\n}\n/**\n * @private\n */\nconst joinPaths = paths => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n/**\n * @private\n */\nconst normalizePathname = pathname => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n/**\n * @private\n */\nconst normalizeSearch = search => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\n/**\n * @private\n */\nconst normalizeHash = hash => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nconst json = function json(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n return new Response(JSON.stringify(data), _extends({}, responseInit, {\n headers\n }));\n};\nclass AbortedDeferredError extends Error {}\nclass DeferredData {\n constructor(data, responseInit) {\n this.pendingKeysSet = new Set();\n this.subscribers = new Set();\n this.deferredKeys = [];\n invariant(data && typeof data === \"object\" && !Array.isArray(data), \"defer() only accepts plain objects\");\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject;\n this.abortPromise = new Promise((_, r) => reject = r);\n this.controller = new AbortController();\n let onAbort = () => reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () => this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n this.data = Object.entries(data).reduce((acc, _ref2) => {\n let [key, value] = _ref2;\n return Object.assign(acc, {\n [key]: this.trackPromise(key, value)\n });\n }, {});\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n this.init = responseInit;\n }\n trackPromise(key, value) {\n if (!(value instanceof Promise)) {\n return value;\n }\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n Object.defineProperty(promise, \"_tracked\", {\n get: () => true\n });\n return promise;\n }\n onSettle(promise, key, error, data) {\n if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n return Promise.reject(error);\n }\n this.pendingKeysSet.delete(key);\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\"Deferred data for key \\\"\" + key + \"\\\" resolved/rejected with `undefined`, \" + \"you must resolve/reject with a value or `null`.\");\n Object.defineProperty(promise, \"_error\", {\n get: () => undefinedError\n });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", {\n get: () => error\n });\n this.emit(false, key);\n return Promise.reject(error);\n }\n Object.defineProperty(promise, \"_data\", {\n get: () => data\n });\n this.emit(false, key);\n return data;\n }\n emit(aborted, settledKey) {\n this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));\n }\n subscribe(fn) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n async resolveData(signal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise(resolve => {\n this.subscribe(aborted => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n get unwrappedData() {\n invariant(this.data !== null && this.done, \"Can only unwrap data on initialized and settled deferreds\");\n return Object.entries(this.data).reduce((acc, _ref3) => {\n let [key, value] = _ref3;\n return Object.assign(acc, {\n [key]: unwrapTrackedPromise(value)\n });\n }, {});\n }\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\nfunction isTrackedPromise(value) {\n return value instanceof Promise && value._tracked === true;\n}\nfunction unwrapTrackedPromise(value) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\nconst defer = function defer(data, init) {\n if (init === void 0) {\n init = {};\n }\n let responseInit = typeof init === \"number\" ? {\n status: init\n } : init;\n return new DeferredData(data, responseInit);\n};\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirect = function redirect(url, init) {\n if (init === void 0) {\n init = 302;\n }\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = {\n status: responseInit\n };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, _extends({}, responseInit, {\n headers\n }));\n};\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nconst redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nclass ErrorResponseImpl {\n constructor(status, statusText, data, internal) {\n if (internal === void 0) {\n internal = false;\n }\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\n\nconst validMutationMethodsArr = [\"post\", \"put\", \"patch\", \"delete\"];\nconst validMutationMethods = new Set(validMutationMethodsArr);\nconst validRequestMethodsArr = [\"get\", ...validMutationMethodsArr];\nconst validRequestMethods = new Set(validRequestMethodsArr);\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\nconst IDLE_NAVIGATION = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_FETCHER = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n};\nconst IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined\n};\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nconst defaultMapRouteProperties = route => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Create a router and listen to history POP navigations\n */\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : undefined;\n const isBrowser = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n invariant(init.routes.length > 0, \"You must provide a non-empty routes array to createRouter\");\n let mapRouteProperties;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Routes keyed by ID\n let manifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n // Config driven behavior flags\n let future = _extends({\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n unstable_skipActionErrorRevalidation: false\n }, init.future);\n // Cleanup function for history\n let unlistenHistory = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors = null;\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let {\n matches,\n route\n } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = {\n [route.id]: error\n };\n }\n let initialized;\n let hasLazyRoutes = initialMatches.some(m => m.route.lazy);\n let hasLoaders = initialMatches.some(m => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = m => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (typeof m.route.loader === \"function\" && m.route.loader.hydrate === true) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return loaderData && loaderData[m.route.id] !== undefined || errors && errors[m.route.id] !== undefined;\n };\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: new Map(),\n blockers: new Map()\n };\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction = Action.Pop;\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n // AbortController for the active navigation\n let pendingNavigationController;\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions = new Map();\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener = null;\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes = [];\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads = [];\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(_ref => {\n let {\n action: historyAction,\n location,\n delta\n } = _ref;\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n warning(blockerFunctions.size === 0 || delta != null, \"You are trying to use a blocker on a POP navigation to a location \" + \"that was not created by @remix-run/router. This will fail silently in \" + \"production. This can happen if you are navigating outside the router \" + \"via `window.history.pushState`/`window.location.hash` instead of using \" + \"router navigation APIs. This can also happen if you are using \" + \"createHashRouter and the user manually changes the URL.\");\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return startNavigation(historyAction, location);\n });\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(Action.Pop, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n // Subscribe to state updates for the router\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n // Update our state and notify the calling context of the change\n function updateState(newState, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state = _extends({}, state, newState);\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers = [];\n let deletedFetchersKeys = [];\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach(subscriber => subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true\n }));\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach(key => state.fetchers.delete(key));\n deletedFetchersKeys.forEach(key => deleteFetcher(key));\n }\n }\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(location, newState, _temp) {\n var _location$state, _location$state2;\n let {\n flushSync\n } = _temp === void 0 ? {} : _temp;\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === Action.Replace) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === Action.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(_extends({}, newState, {\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),\n preventScrollReset,\n blockers\n }), {\n viewTransitionOpts,\n flushSync: flushSync === true\n });\n // Reset stateful navigation vars\n pendingAction = Action.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(to, opts) {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n let historyAction = Action.Push;\n if (userReplace === true) {\n historyAction = Action.Replace;\n } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = Action.Replace;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : undefined;\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({\n blockers\n });\n }\n });\n return;\n }\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync\n });\n }\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({\n revalidation: \"loading\"\n });\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return;\n }\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(pendingAction || state.historyAction, state.navigation.location, {\n overrideNavigation: state.navigation\n });\n }\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(historyAction, location, opts) {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n }, {\n flushSync\n });\n return;\n }\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a
\n // which will default to a navigation to /page\n if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, {\n matches\n }, {\n flushSync\n });\n return;\n }\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);\n let pendingActionResult;\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [findNearestBoundary(matches).route.id, {\n type: ResultType.error,\n error: opts.pendingError\n }];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n // Call action if we received an action submission\n let actionResult = await handleAction(request, location, opts.submission, matches, {\n replace: opts.replace,\n flushSync\n });\n if (actionResult.shortCircuited) {\n return;\n }\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // Create a GET request for the loaders\n request = createClientSideRequest(init.history, request.url, request.signal);\n }\n // Call loaders\n let {\n shortCircuited,\n loaderData,\n errors\n } = await handleLoaders(request, location, matches, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);\n if (shortCircuited) {\n return;\n }\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n completeNavigation(location, _extends({\n matches\n }, getActionDataForCommit(pendingActionResult), {\n loaderData,\n errors\n }));\n }\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(request, location, submission, matches, opts) {\n if (opts === void 0) {\n opts = {};\n }\n interruptActiveLoads();\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({\n navigation\n }, {\n flushSync: opts.flushSync === true\n });\n // Call our action and get the result\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches);\n result = results[0];\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n }\n if (isRedirectResult(result)) {\n let replace;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(result.response.headers.get(\"Location\"), new URL(request.url), basename);\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace\n });\n return {\n shortCircuited: true\n };\n }\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = Action.Push;\n }\n return {\n pendingActionResult: [boundaryMatch.route.id, result]\n };\n }\n return {\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(request, location, matches, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.unstable_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));\n pendingNavigationLoadId = ++incrementingLoadId;\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(location, _extends({\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null\n }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n return {\n shortCircuited: true\n };\n }\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (!isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration)) {\n revalidatingFetchers.forEach(rf => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData;\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n actionData = {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n actionData = null;\n } else {\n actionData = state.actionData;\n }\n }\n updateState(_extends({\n navigation: loadingNavigation\n }, actionData !== undefined ? {\n actionData\n } : {}, revalidatingFetchers.length > 0 ? {\n fetchers: new Map(state.fetchers)\n } : {}), {\n flushSync\n });\n }\n revalidatingFetchers.forEach(rf => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, request);\n if (request.signal.aborted) {\n return {\n shortCircuited: true\n };\n }\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n }\n revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace\n });\n return {\n shortCircuited: true\n };\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, matches, matchesToLoad, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe(aborted => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors).filter(_ref2 => {\n let [id] = _ref2;\n return !matchesToLoad.some(m => m.route.id === id);\n }).forEach(_ref3 => {\n let [routeId, error] = _ref3;\n errors = Object.assign(errors || {}, {\n [routeId]: error\n });\n });\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return _extends({\n loaderData,\n errors\n }, shouldUpdateFetchers ? {\n fetchers: new Map(state.fetchers)\n } : {});\n }\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(key, routeId, href, opts) {\n if (isServer) {\n throw new Error(\"router.fetch() was called during the server render, but it shouldn't be. \" + \"You are likely calling a useFetcher() method in the body of your component. \" + \"Try moving it to a useEffect or a callback.\");\n }\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n if (!matches) {\n setFetcherError(key, routeId, getInternalRouterError(404, {\n pathname: normalizedPath\n }), {\n flushSync\n });\n return;\n }\n let {\n path,\n submission,\n error\n } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);\n if (error) {\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n let match = getTargetMatch(matches, path);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, flushSync, submission);\n return;\n }\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, {\n routeId,\n path\n });\n handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission);\n }\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(key, routeId, path, match, requestMatches, flushSync, submission) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId\n });\n setFetcherError(key, routeId, error, {\n flushSync\n });\n return;\n }\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\"action\", fetchRequest, [match], requestMatches);\n let actionResult = actionResults[0];\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission\n });\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, {\n type: \"defer-action\"\n });\n }\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.unstable_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({\n fetchers: new Map(state.fetchers)\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));\n abortController.signal.addEventListener(\"abort\", abortPendingFetchRevalidations);\n let {\n loaderResults,\n fetcherResults\n } = await callLoadersAndMaybeResolveData(state.matches, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\"abort\", abortPendingFetchRevalidations);\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey = revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n // Process and commit output from loaders\n let {\n loaderData,\n errors\n } = processLoaderData(state, state.matches, matchesToLoad, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n abortStaleFetchLoads(loadId);\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(key, routeId, path, match, matches, flushSync, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {\n flushSync\n });\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\"loader\", fetchRequest, [match], matches);\n let result = results[0];\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;\n }\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(request, redirect, _temp2) {\n let {\n submission,\n fetcherSubmission,\n replace\n } = _temp2 === void 0 ? {} : _temp2;\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(location, new URL(request.url), basename);\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser) {\n let isDocumentReload = false;\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n let redirectHistoryAction = replace === true ? Action.Replace : Action.Push;\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let {\n formMethod,\n formAction,\n formEncType\n } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: _extends({}, activeSubmission, {\n formAction: location\n }),\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(redirectLocation, submission);\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset\n });\n }\n }\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches) {\n try {\n let results = await callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath)\n };\n }\n return convertHandlerResultToDataResult(result);\n }));\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e\n }));\n }\n }\n async function callLoadersAndMaybeResolveData(currentMatches, matches, matchesToLoad, fetchersToLoad, request) {\n let [loaderResults, ...fetcherResults] = await Promise.all([matchesToLoad.length ? callDataStrategy(\"loader\", request, matchesToLoad, matches) : [], ...fetchersToLoad.map(f => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(init.history, f.path, f.controller.signal);\n return callDataStrategy(\"loader\", fetcherRequest, [f.match], f.matches).then(r => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n });\n }\n })]);\n await Promise.all([resolveDeferredResults(currentMatches, matchesToLoad, loaderResults, loaderResults.map(() => request.signal), false, state.loaderData), resolveDeferredResults(currentMatches, fetchersToLoad.map(f => f.match), fetcherResults, fetchersToLoad.map(f => f.controller ? f.controller.signal : null), true)]);\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n function updateFetcherState(key, fetcher, opts) {\n if (opts === void 0) {\n opts = {};\n }\n state.fetchers.set(key, fetcher);\n updateState({\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function setFetcherError(key, routeId, error, opts) {\n if (opts === void 0) {\n opts = {};\n }\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n }, {\n flushSync: (opts && opts.flushSync) === true\n });\n }\n function getFetcher(key) {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n function deleteFetcherAndUpdateState(key) {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({\n fetchers: new Map(state.fetchers)\n });\n }\n function abortFetcher(key) {\n let controller = fetchControllers.get(key);\n invariant(controller, \"Expected fetch controller: \" + key);\n controller.abort();\n fetchControllers.delete(key);\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, \"Expected fetcher: \" + key);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\", \"Invalid blocker state transition: \" + blocker.state + \" -> \" + newBlocker.state);\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({\n blockers\n });\n }\n function shouldBlockNavigation(_ref4) {\n let {\n currentLocation,\n nextLocation,\n historyAction\n } = _ref4;\n if (blockerFunctions.size === 0) {\n return;\n }\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({\n currentLocation,\n nextLocation,\n historyAction\n })) {\n return blockerKey;\n }\n }\n function cancelActiveDeferreds(predicate) {\n let cancelledRouteIds = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({\n restoreScrollPosition: y\n });\n }\n }\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: to => init.history.createHref(to),\n encodeLocation: to => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes\n };\n return router;\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\nconst UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\nfunction createStaticHandler(routes, opts) {\n invariant(routes.length > 0, \"You must provide a non-empty routes array to createStaticHandler\");\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties;\n if (opts != null && opts.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts != null && opts.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = route => ({\n hasErrorBoundary: detectErrorBoundary(route)\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future = _extends({\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false\n }, opts ? opts.future : null);\n let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(request, _temp3) {\n let {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy\n } = _temp3 === void 0 ? {} : _temp3;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, {\n method\n });\n let {\n matches: methodNotAllowedMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, {\n pathname: location.pathname\n });\n let {\n matches: notFoundMatches,\n route\n } = getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, skipLoaderErrorBubbling === true, null);\n if (isResponse(result)) {\n return result;\n }\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return _extends({\n location,\n basename\n }, result);\n }\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(request, _temp4) {\n let {\n routeId,\n requestContext,\n unstable_dataStrategy\n } = _temp4 === void 0 ? {} : _temp4;\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, {\n method\n });\n } else if (!matches) {\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, {\n pathname: location.pathname\n });\n }\n let result = await queryImpl(request, location, matches, requestContext, unstable_dataStrategy || null, false, match);\n if (isResponse(result)) {\n return result;\n }\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n if (result.loaderData) {\n var _result$activeDeferre;\n let data = Object.values(result.loaderData)[0];\n if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n return undefined;\n }\n async function queryImpl(request, location, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch) {\n invariant(request.signal, \"query()/queryRoute() requests must contain an AbortController signal\");\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch != null);\n return result;\n }\n let result = await loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch);\n return isResponse(result) ? result : _extends({}, result, {\n actionData: null,\n actionHeaders: {}\n });\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n } else {\n let results = await callDataStrategy(\"action\", request, [actionMatch], matches, isRouteRequest, requestContext, unstable_dataStrategy);\n result = results[0];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, {\n type: \"defer-action\"\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error\n };\n }\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: {\n [actionMatch.route.id]: result.data\n },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null\n };\n }\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);\n // action status codes take precedence over loader status codes\n return _extends({}, context, {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: _extends({}, result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {})\n });\n }\n let context = await loadRouteData(loaderRequest, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, null);\n return _extends({}, context, {\n actionData: {\n [actionMatch.route.id]: result.data\n }\n }, result.statusCode ? {\n statusCode: result.statusCode\n } : {}, {\n actionHeaders: result.headers ? {\n [actionMatch.route.id]: result.headers\n } : {}\n });\n }\n async function loadRouteData(request, matches, requestContext, unstable_dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n // Short circuit if we have no loaders to run (queryRoute())\n if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch == null ? void 0 : routeMatch.route.id\n });\n }\n let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;\n let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce((acc, m) => Object.assign(acc, {\n [m.route.id]: null\n }), {}),\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null\n };\n }\n let results = await callDataStrategy(\"loader\", request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy);\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));\n matches.forEach(match => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n return _extends({}, context, {\n matches,\n activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null\n });\n }\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, unstable_dataStrategy) {\n let results = await callDataStrategyImpl(unstable_dataStrategy || defaultDataStrategy, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext);\n return await Promise.all(results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(response, request, matchesToLoad[i].route.id, matches, basename, future.v7_relativeSplatPath);\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n return convertHandlerResultToDataResult(result);\n }));\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\n//#endregion\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nfunction getStaticContextFromError(routes, context, error) {\n let newContext = _extends({}, context, {\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error\n }\n });\n return newContext;\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest, future) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(method + \"() call aborted: \" + request.method + \" \" + request.url);\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== undefined);\n}\nfunction normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n // Resolve the relative path\n let path = resolveTo(to ? to : \".\", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === \"path\");\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n // Add an ?index param for matched index routes if we don't already have one\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch && activeRouteMatch.route.index && !hasNakedIndexQuery(path.search)) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return {\n path\n };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, {\n method: opts.formMethod\n })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, {\n type: \"invalid-body\"\n })\n });\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce((acc, _ref5) => {\n let [name, value] = _ref5;\n return \"\" + acc + name + \"=\" + value + \"\\n\";\n }, \"\") : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(typeof FormData === \"function\", \"FormData is not available in this environment\");\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined\n };\n if (isMutationMethod(submission.formMethod)) {\n return {\n path,\n submission\n };\n }\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = \"?\" + searchParams;\n return {\n path: createPath(parsedPath),\n submission\n };\n}\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(matches, boundaryId) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex(m => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\nfunction getMatchesToLoad(history, state, matches, submission, location, isInitialLoad, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[0] : undefined;\n let boundaryMatches = boundaryId ? getLoaderMatchesUntilBoundary(matches, boundaryId) : matches;\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;\n let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let {\n route\n } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (route.loader == null) {\n return false;\n }\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return state.loaderData[route.id] === undefined && (\n // Don't re-run if the loader ran and threw an error\n !state.errors || state.errors[route.id] === undefined);\n }\n // Always call the loader on new route instances and pending defer cancellations\n if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {\n return true;\n }\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n return shouldRevalidateLoader(match, _extends({\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params\n }, submission, {\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false :\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)\n }));\n });\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (isInitialLoad || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {\n return;\n }\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null\n });\n return;\n }\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (fetcher && fetcher.state !== \"idle\" && fetcher.data === undefined) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params\n }, submission, {\n actionResult,\n unstable_actionStatus: actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired\n }));\n }\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController()\n });\n }\n });\n return [navigationMatches, revalidatingFetchers];\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(route, mapRouteProperties, manifest) {\n if (!route.lazy) {\n return;\n }\n let lazyRoute = await route.lazy();\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isPropertyStaticallyDefined = staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n warning(!isPropertyStaticallyDefined, \"Route \\\"\" + routeToUpdate.id + \"\\\" has a static property \\\"\" + lazyRouteProperty + \"\\\" \" + \"defined but its lazy function is also returning a value for this property. \" + (\"The lazy route property \\\"\" + lazyRouteProperty + \"\\\" will be ignored.\"));\n if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {\n routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];\n }\n }\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {\n lazy: undefined\n }));\n}\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(opts) {\n return Promise.all(opts.matches.map(m => m.resolve()));\n}\nasync function callDataStrategyImpl(dataStrategyImpl, type, request, matchesToLoad, matches, manifest, mapRouteProperties, requestContext) {\n let routeIdsToLoad = matchesToLoad.reduce((acc, m) => acc.add(m.route.id), new Set());\n let loadedMatches = new Set();\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map(match => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve = handlerOverride => {\n loadedMatches.add(match.route.id);\n return shouldLoad ? callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, requestContext) : Promise.resolve({\n type: ResultType.data,\n result: undefined\n });\n };\n return _extends({}, match, {\n shouldLoad,\n resolve\n });\n }),\n request,\n params: matches[0].params,\n context: requestContext\n });\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach(m => invariant(loadedMatches.has(m.route.id), \"`match.resolve()` was not called for route id \\\"\" + m.route.id + \"\\\". \" + \"You must call `match.resolve()` on every match passed to \" + \"`dataStrategy` to ensure all routes are properly loaded.\"));\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(type, request, match, manifest, mapRouteProperties, handlerOverride, staticContext) {\n let result;\n let onReject;\n let runHandler = handler => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = ctx => {\n if (typeof handler !== \"function\") {\n return Promise.reject(new Error(\"You cannot call the handler for a route which defines a boolean \" + (\"\\\"\" + type + \"\\\" [routeId: \" + match.route.id + \"]\")));\n }\n return handler({\n request,\n params: match.params,\n context: staticContext\n }, ...(ctx !== undefined ? [ctx] : []));\n };\n let handlerPromise;\n if (handlerOverride) {\n handlerPromise = handlerOverride(ctx => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return {\n type: \"data\",\n result: val\n };\n } catch (e) {\n return {\n type: \"error\",\n result: e\n };\n }\n })();\n }\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = match.route[type];\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch(e => {\n handlerError = e;\n }), loadLazyRouteModule(match.route, mapRouteProperties, manifest)]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return {\n type: ResultType.data,\n result: undefined\n };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n invariant(result.result !== undefined, \"You defined \" + (type === \"action\" ? \"an action\" : \"a loader\") + \" for route \" + (\"\\\"\" + match.route.id + \"\\\" but didn't return anything from your `\" + type + \"` \") + \"function. Please return a value or `null`.\");\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return {\n type: ResultType.error,\n result: e\n };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function convertHandlerResultToDataResult(handlerResult) {\n let {\n result,\n type,\n status\n } = handlerResult;\n if (isResponse(result)) {\n let data;\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return {\n type: ResultType.error,\n error: e\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status\n };\n }\n if (isDeferredData(result)) {\n var _result$init, _result$init2;\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status,\n headers: ((_result$init2 = result.init) == null ? void 0 : _result$init2.headers) && new Headers(result.init.headers)\n };\n }\n return {\n type: ResultType.data,\n data: result,\n statusCode: status\n };\n}\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {\n let location = response.headers.get(\"Location\");\n invariant(location, \"Redirects returned/thrown from loaders/actions must have a Location header\");\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);\n location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename) {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = {\n signal\n };\n if (submission && isMutationMethod(submission.formMethod)) {\n let {\n formMethod,\n formEncType\n } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({\n \"Content-Type\": formEncType\n });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {\n // Fill in loaderData/errors from our loaders\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(!isRedirectResult(result), \"Cannot handle redirect results in processLoaderData\");\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode != null && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = {\n [pendingActionResult[0]]: pendingError\n };\n loaderData[pendingActionResult[0]] = undefined;\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, matchesToLoad, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {\n let {\n loaderData,\n errors\n } = processRouteLoaderData(matches, matchesToLoad, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble\n );\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let {\n key,\n match,\n controller\n } = revalidatingFetchers[index];\n invariant(fetcherResults !== undefined && fetcherResults[index] !== undefined, \"Did not find corresponding fetcher result\");\n let result = fetcherResults[index];\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = _extends({}, errors, {\n [boundaryMatch.route.id]: result.error\n });\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n return {\n loaderData,\n errors\n };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = _extends({}, newLoaderData);\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === \"/\") || {\n id: \"__shim-error-route__\"\n };\n return {\n matches: [{\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }],\n route\n };\n}\nfunction getInternalRouterError(status, _temp5) {\n let {\n pathname,\n routeId,\n method,\n type\n } = _temp5 === void 0 ? {} : _temp5;\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide a `loader` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = \"Route \\\"\" + routeId + \"\\\" does not match URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = \"No route matches URL \\\"\" + pathname + \"\\\"\";\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = \"You made a \" + method.toUpperCase() + \" request to \\\"\" + pathname + \"\\\" but \" + (\"did not provide an `action` for route \\\"\" + routeId + \"\\\", \") + \"so there is no way to handle the request.\";\n } else if (method) {\n errorMessage = \"Invalid request method \\\"\" + method.toUpperCase() + \"\\\"\";\n }\n }\n return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);\n}\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results) {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return {\n result,\n idx: i\n };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath(_extends({}, parsedPath, {\n hash: \"\"\n }));\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\nfunction isHandlerResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === ResultType.data || result.type === ResultType.error);\n}\nfunction isRedirectHandlerResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isDeferredResult(result) {\n return result.type === ResultType.deferred;\n}\nfunction isErrorResult(result) {\n return result.type === ResultType.error;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === ResultType.redirect;\n}\nfunction isDeferredData(value) {\n let deferred = value;\n return deferred && typeof deferred === \"object\" && typeof deferred.data === \"object\" && typeof deferred.subscribe === \"function\" && typeof deferred.cancel === \"function\" && typeof deferred.resolveData === \"function\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectResponse(result) {\n if (!isResponse(result)) {\n return false;\n }\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toLowerCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toLowerCase());\n}\nasync function resolveDeferredResults(currentMatches, matchesToLoad, results, signals, isFetcher, currentLoaderData) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n let currentMatch = currentMatches.find(m => m.route.id === match.route.id);\n let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(signal, \"Expected an AbortSignal for revalidating fetcher deferred result\");\n await resolveDeferredData(result, signal, isFetcher).then(result => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\nasync function resolveDeferredData(result, signal, unwrap) {\n if (unwrap === void 0) {\n unwrap = false;\n }\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e\n };\n }\n }\n return {\n type: ResultType.data,\n data: result.deferredData.data\n };\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some(v => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let {\n formMethod,\n formAction,\n formEncType,\n text,\n formData,\n json\n } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined\n };\n return fetcher;\n}\nfunction getDoneFetcher(data) {\n let fetcher = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));\n } catch (error) {\n warning(false, \"Failed to save applied view transitions in sessionStorage (\" + error + \").\");\n }\n }\n}\n//#endregion\n\nexport { AbortedDeferredError, Action, IDLE_BLOCKER, IDLE_FETCHER, IDLE_NAVIGATION, UNSAFE_DEFERRED_SYMBOL, DeferredData as UNSAFE_DeferredData, ErrorResponseImpl as UNSAFE_ErrorResponseImpl, convertRouteMatchToUiMatch as UNSAFE_convertRouteMatchToUiMatch, convertRoutesToDataRoutes as UNSAFE_convertRoutesToDataRoutes, getResolveToMatches as UNSAFE_getResolveToMatches, invariant as UNSAFE_invariant, warning as UNSAFE_warning, createBrowserHistory, createHashHistory, createMemoryHistory, createPath, createRouter, createStaticHandler, defer, generatePath, getStaticContextFromError, getToPathname, isDeferredData, isRouteErrorResponse, joinPaths, json, matchPath, matchRoutes, normalizePathname, parsePath, redirect, redirectDocument, resolvePath, resolveTo, stripBasename };\n//# sourceMappingURL=router.js.map\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","import{options as n}from\"preact\";var t,r,u,i,o=0,f=[],c=[],e=n,a=e.__b,v=e.__r,l=e.diffed,m=e.__c,s=e.unmount,d=e.__;function h(n,t){e.__h&&e.__h(r,n,o||t),o=0;var u=r.__H||(r.__H={__:[],__h:[]});return n>=u.__.length&&u.__.push({__V:c}),u.__[n]}function p(n){return o=1,y(D,n)}function y(n,u,i){var o=h(t++,2);if(o.t=n,!o.__c&&(o.__=[i?i(u):D(void 0,u),function(n){var t=o.__N?o.__N[0]:o.__[0],r=o.t(t,n);t!==r&&(o.__N=[r,o.__[1]],o.__c.setState({}))}],o.__c=r,!r.u)){var f=function(n,t,r){if(!o.__c.__H)return!0;var u=o.__c.__H.__.filter(function(n){return!!n.__c});if(u.every(function(n){return!n.__N}))return!c||c.call(this,n,t,r);var i=!1;return u.forEach(function(n){if(n.__N){var t=n.__[0];n.__=n.__N,n.__N=void 0,t!==n.__[0]&&(i=!0)}}),!(!i&&o.__c.props===n)&&(!c||c.call(this,n,t,r))};r.u=!0;var c=r.shouldComponentUpdate,e=r.componentWillUpdate;r.componentWillUpdate=function(n,t,r){if(this.__e){var u=c;c=void 0,f(n,t,r),c=u}e&&e.call(this,n,t,r)},r.shouldComponentUpdate=f}return o.__N||o.__}function _(n,u){var i=h(t++,3);!e.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__H.__h.push(i))}function A(n,u){var i=h(t++,4);!e.__s&&C(i.__H,u)&&(i.__=n,i.i=u,r.__h.push(i))}function F(n){return o=5,q(function(){return{current:n}},[])}function T(n,t,r){o=6,A(function(){return\"function\"==typeof n?(n(t()),function(){return n(null)}):n?(n.current=t(),function(){return n.current=null}):void 0},null==r?r:r.concat(n))}function q(n,r){var u=h(t++,7);return C(u.__H,r)?(u.__V=n(),u.i=r,u.__h=n,u.__V):u.__}function x(n,t){return o=8,q(function(){return n},t)}function P(n){var u=r.context[n.__c],i=h(t++,9);return i.c=n,u?(null==i.__&&(i.__=!0,u.sub(r)),u.props.value):n.__}function V(n,t){e.useDebugValue&&e.useDebugValue(t?t(n):n)}function b(n){var u=h(t++,10),i=p();return u.__=n,r.componentDidCatch||(r.componentDidCatch=function(n,t){u.__&&u.__(n,t),i[1](n)}),[i[0],function(){i[1](void 0)}]}function g(){var n=h(t++,11);if(!n.__){for(var u=r.__v;null!==u&&!u.__m&&null!==u.__;)u=u.__;var i=u.__m||(u.__m=[0,0]);n.__=\"P\"+i[0]+\"-\"+i[1]++}return n.__}function j(){for(var n;n=f.shift();)if(n.__P&&n.__H)try{n.__H.__h.forEach(z),n.__H.__h.forEach(B),n.__H.__h=[]}catch(t){n.__H.__h=[],e.__e(t,n.__v)}}e.__b=function(n){r=null,a&&a(n)},e.__=function(n,t){n&&t.__k&&t.__k.__m&&(n.__m=t.__k.__m),d&&d(n,t)},e.__r=function(n){v&&v(n),t=0;var i=(r=n.__c).__H;i&&(u===r?(i.__h=[],r.__h=[],i.__.forEach(function(n){n.__N&&(n.__=n.__N),n.__V=c,n.__N=n.i=void 0})):(i.__h.forEach(z),i.__h.forEach(B),i.__h=[],t=0)),u=r},e.diffed=function(n){l&&l(n);var t=n.__c;t&&t.__H&&(t.__H.__h.length&&(1!==f.push(t)&&i===e.requestAnimationFrame||((i=e.requestAnimationFrame)||w)(j)),t.__H.__.forEach(function(n){n.i&&(n.__H=n.i),n.__V!==c&&(n.__=n.__V),n.i=void 0,n.__V=c})),u=r=null},e.__c=function(n,t){t.some(function(n){try{n.__h.forEach(z),n.__h=n.__h.filter(function(n){return!n.__||B(n)})}catch(r){t.some(function(n){n.__h&&(n.__h=[])}),t=[],e.__e(r,n.__v)}}),m&&m(n,t)},e.unmount=function(n){s&&s(n);var t,r=n.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{z(n)}catch(n){t=n}}),r.__H=void 0,t&&e.__e(t,r.__v))};var k=\"function\"==typeof requestAnimationFrame;function w(n){var t,r=function(){clearTimeout(u),k&&cancelAnimationFrame(t),setTimeout(n)},u=setTimeout(r,100);k&&(t=requestAnimationFrame(r))}function z(n){var t=r,u=n.__c;\"function\"==typeof u&&(n.__c=void 0,u()),r=t}function B(n){var t=r;n.__c=n.__(),r=t}function C(n,t){return!n||n.length!==t.length||t.some(function(t,r){return t!==n[r]})}function D(n,t){return\"function\"==typeof t?t(n):t}export{x as useCallback,P as useContext,V as useDebugValue,_ as useEffect,b as useErrorBoundary,g as useId,T as useImperativeHandle,A as useLayoutEffect,q as useMemo,y as useReducer,F as useRef,p as useState};\n//# sourceMappingURL=hooks.module.js.map\n","import{Component as n,createElement as t,options as e,toChildArray as r,Fragment as u,render as o,hydrate as i,createContext as l,createRef as c,cloneElement as f}from\"preact\";export{Component,Fragment,createContext,createElement,createRef}from\"preact\";import{useCallback as a,useContext as s,useDebugValue as h,useEffect as v,useId as d,useImperativeHandle as p,useLayoutEffect as m,useMemo as y,useReducer as _,useRef as b,useState as S}from\"preact/hooks\";export*from\"preact/hooks\";function g(n,t){for(var e in t)n[e]=t[e];return n}function E(n,t){for(var e in n)if(\"__source\"!==e&&!(e in t))return!0;for(var r in t)if(\"__source\"!==r&&n[r]!==t[r])return!0;return!1}function C(n,t){this.props=n,this.context=t}function x(n,e){function r(n){var t=this.props.ref,r=t==n.ref;return!r&&t&&(t.call?t(null):t.current=null),e?!e(this.props,n)||!r:E(this.props,n)}function u(e){return this.shouldComponentUpdate=r,t(n,e)}return u.displayName=\"Memo(\"+(n.displayName||n.name)+\")\",u.prototype.isReactComponent=!0,u.__f=!0,u}(C.prototype=new n).isPureReactComponent=!0,C.prototype.shouldComponentUpdate=function(n,t){return E(this.props,n)||E(this.state,t)};var R=e.__b;e.__b=function(n){n.type&&n.type.__f&&n.ref&&(n.props.ref=n.ref,n.ref=null),R&&R(n)};var w=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.forward_ref\")||3911;function k(n){function t(t){var e=g({},t);return delete e.ref,n(e,t.ref||null)}return t.$$typeof=w,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName=\"ForwardRef(\"+(n.displayName||n.name)+\")\",t}var I=function(n,t){return null==n?null:r(r(n).map(t))},N={map:I,forEach:I,count:function(n){return n?r(n).length:0},only:function(n){var t=r(n);if(1!==t.length)throw\"Children.only\";return t[0]},toArray:r},M=e.__e;e.__e=function(n,t,e,r){if(n.then)for(var u,o=t;o=o.__;)if((u=o.__c)&&u.__c)return null==t.__e&&(t.__e=e.__e,t.__k=e.__k),u.__c(n,t);M(n,t,e,r)};var T=e.unmount;function A(n,t,e){return n&&(n.__c&&n.__c.__H&&(n.__c.__H.__.forEach(function(n){\"function\"==typeof n.__c&&n.__c()}),n.__c.__H=null),null!=(n=g({},n)).__c&&(n.__c.__P===e&&(n.__c.__P=t),n.__c=null),n.__k=n.__k&&n.__k.map(function(n){return A(n,t,e)})),n}function D(n,t,e){return n&&e&&(n.__v=null,n.__k=n.__k&&n.__k.map(function(n){return D(n,t,e)}),n.__c&&n.__c.__P===t&&(n.__e&&e.appendChild(n.__e),n.__c.__e=!0,n.__c.__P=e)),n}function L(){this.__u=0,this.t=null,this.__b=null}function O(n){var t=n.__.__c;return t&&t.__a&&t.__a(n)}function F(n){var e,r,u;function o(o){if(e||(e=n()).then(function(n){r=n.default||n},function(n){u=n}),u)throw u;if(!r)throw e;return t(r,o)}return o.displayName=\"Lazy\",o.__f=!0,o}function U(){this.u=null,this.o=null}e.unmount=function(n){var t=n.__c;t&&t.__R&&t.__R(),t&&32&n.__u&&(n.type=null),T&&T(n)},(L.prototype=new n).__c=function(n,t){var e=t.__c,r=this;null==r.t&&(r.t=[]),r.t.push(e);var u=O(r.__v),o=!1,i=function(){o||(o=!0,e.__R=null,u?u(l):l())};e.__R=i;var l=function(){if(!--r.__u){if(r.state.__a){var n=r.state.__a;r.__v.__k[0]=D(n,n.__c.__P,n.__c.__O)}var t;for(r.setState({__a:r.__b=null});t=r.t.pop();)t.forceUpdate()}};r.__u++||32&t.__u||r.setState({__a:r.__b=r.__v.__k[0]}),n.then(i,i)},L.prototype.componentWillUnmount=function(){this.t=[]},L.prototype.render=function(n,e){if(this.__b){if(this.__v.__k){var r=document.createElement(\"div\"),o=this.__v.__k[0].__c;this.__v.__k[0]=A(this.__b,r,o.__O=o.__P)}this.__b=null}var i=e.__a&&t(u,null,n.fallback);return i&&(i.__u&=-33),[t(u,null,e.__a?null:n.children),i]};var V=function(n,t,e){if(++e[1]===e[0]&&n.o.delete(t),n.props.revealOrder&&(\"t\"!==n.props.revealOrder[0]||!n.o.size))for(e=n.u;e;){for(;e.length>3;)e.pop()();if(e[1]>>1,1),e.i.removeChild(n)}}),o(t(W,{context:e.context},n.__v),e.l)}function j(n,e){var r=t(P,{__v:n,i:e});return r.containerInfo=e,r}(U.prototype=new n).__a=function(n){var t=this,e=O(t.__v),r=t.o.get(n);return r[0]++,function(u){var o=function(){t.props.revealOrder?(r.push(u),V(t,n,r)):u()};e?e(o):o()}},U.prototype.render=function(n){this.u=null,this.o=new Map;var t=r(n.children);n.revealOrder&&\"b\"===n.revealOrder[0]&&t.reverse();for(var e=t.length;e--;)this.o.set(t[e],this.u=[1,0,this.u]);return n.children},U.prototype.componentDidUpdate=U.prototype.componentDidMount=function(){var n=this;this.o.forEach(function(t,e){V(n,e,t)})};var z=\"undefined\"!=typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103,B=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,H=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,Z=/[A-Z0-9]/g,Y=\"undefined\"!=typeof document,$=function(n){return(\"undefined\"!=typeof Symbol&&\"symbol\"==typeof Symbol()?/fil|che|rad/:/fil|che|ra/).test(n)};function q(n,t,e){return null==t.__k&&(t.textContent=\"\"),o(n,t),\"function\"==typeof e&&e(),n?n.__c:null}function G(n,t,e){return i(n,t),\"function\"==typeof e&&e(),n?n.__c:null}n.prototype.isReactComponent={},[\"componentWillMount\",\"componentWillReceiveProps\",\"componentWillUpdate\"].forEach(function(t){Object.defineProperty(n.prototype,t,{configurable:!0,get:function(){return this[\"UNSAFE_\"+t]},set:function(n){Object.defineProperty(this,t,{configurable:!0,writable:!0,value:n})}})});var J=e.event;function K(){}function Q(){return this.cancelBubble}function X(){return this.defaultPrevented}e.event=function(n){return J&&(n=J(n)),n.persist=K,n.isPropagationStopped=Q,n.isDefaultPrevented=X,n.nativeEvent=n};var nn,tn={enumerable:!1,configurable:!0,get:function(){return this.class}},en=e.vnode;e.vnode=function(n){\"string\"==typeof n.type&&function(n){var t=n.props,e=n.type,u={};for(var o in t){var i=t[o];if(!(\"value\"===o&&\"defaultValue\"in t&&null==i||Y&&\"children\"===o&&\"noscript\"===e||\"class\"===o||\"className\"===o)){var l=o.toLowerCase();\"defaultValue\"===o&&\"value\"in t&&null==t.value?o=\"value\":\"download\"===o&&!0===i?i=\"\":\"translate\"===l&&\"no\"===i?i=!1:\"ondoubleclick\"===l?o=\"ondblclick\":\"onchange\"!==l||\"input\"!==e&&\"textarea\"!==e||$(t.type)?\"onfocus\"===l?o=\"onfocusin\":\"onblur\"===l?o=\"onfocusout\":H.test(o)?o=l:-1===e.indexOf(\"-\")&&B.test(o)?o=o.replace(Z,\"-$&\").toLowerCase():null===i&&(i=void 0):l=o=\"oninput\",\"oninput\"===l&&u[o=l]&&(o=\"oninputCapture\"),u[o]=i}}\"select\"==e&&u.multiple&&Array.isArray(u.value)&&(u.value=r(t.children).forEach(function(n){n.props.selected=-1!=u.value.indexOf(n.props.value)})),\"select\"==e&&null!=u.defaultValue&&(u.value=r(t.children).forEach(function(n){n.props.selected=u.multiple?-1!=u.defaultValue.indexOf(n.props.value):u.defaultValue==n.props.value})),t.class&&!t.className?(u.class=t.class,Object.defineProperty(u,\"className\",tn)):(t.className&&!t.class||t.class&&t.className)&&(u.class=u.className=t.className),n.props=u}(n),n.$$typeof=z,en&&en(n)};var rn=e.__r;e.__r=function(n){rn&&rn(n),nn=n.__c};var un=e.diffed;e.diffed=function(n){un&&un(n);var t=n.props,e=n.__e;null!=e&&\"textarea\"===n.type&&\"value\"in t&&t.value!==e.value&&(e.value=null==t.value?\"\":t.value),nn=null};var on={ReactCurrentDispatcher:{current:{readContext:function(n){return nn.__n[n.__c].props.value},useCallback:a,useContext:s,useDebugValue:h,useDeferredValue:bn,useEffect:v,useId:d,useImperativeHandle:p,useInsertionEffect:gn,useLayoutEffect:m,useMemo:y,useReducer:_,useRef:b,useState:S,useSyncExternalStore:Cn,useTransition:Sn}}},ln=\"17.0.2\";function cn(n){return t.bind(null,n)}function fn(n){return!!n&&n.$$typeof===z}function an(n){return fn(n)&&n.type===u}function sn(n){return!!n&&!!n.displayName&&(\"string\"==typeof n.displayName||n.displayName instanceof String)&&n.displayName.startsWith(\"Memo(\")}function hn(n){return fn(n)?f.apply(null,arguments):n}function vn(n){return!!n.__k&&(o(null,n),!0)}function dn(n){return n&&(n.base||1===n.nodeType&&n)||null}var pn=function(n,t){return n(t)},mn=function(n,t){return n(t)},yn=u;function _n(n){n()}function bn(n){return n}function Sn(){return[!1,_n]}var gn=m,En=fn;function Cn(n,t){var e=t(),r=S({h:{__:e,v:t}}),u=r[0].h,o=r[1];return m(function(){u.__=e,u.v=t,xn(u)&&o({h:u})},[n,e,t]),v(function(){return xn(u)&&o({h:u}),n(function(){xn(u)&&o({h:u})})},[n]),e}function xn(n){var t,e,r=n.v,u=n.__;try{var o=r();return!((t=u)===(e=o)&&(0!==t||1/t==1/e)||t!=t&&e!=e)}catch(n){return!0}}var Rn={useState:S,useId:d,useReducer:_,useEffect:v,useLayoutEffect:m,useInsertionEffect:gn,useTransition:Sn,useDeferredValue:bn,useSyncExternalStore:Cn,startTransition:_n,useRef:b,useImperativeHandle:p,useMemo:y,useCallback:a,useContext:s,useDebugValue:h,version:\"17.0.2\",Children:N,render:q,hydrate:G,unmountComponentAtNode:vn,createPortal:j,createElement:t,createContext:l,createFactory:cn,cloneElement:hn,createRef:c,Fragment:u,isValidElement:fn,isElement:En,isFragment:an,isMemo:sn,findDOMNode:dn,Component:n,PureComponent:C,memo:x,forwardRef:k,flushSync:mn,unstable_batchedUpdates:pn,StrictMode:yn,Suspense:L,SuspenseList:U,lazy:F,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:on};export{N as Children,C as PureComponent,yn as StrictMode,L as Suspense,U as SuspenseList,on as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,hn as cloneElement,cn as createFactory,j as createPortal,Rn as default,dn as findDOMNode,mn as flushSync,k as forwardRef,G as hydrate,En as isElement,an as isFragment,sn as isMemo,fn as isValidElement,F as lazy,x as memo,q as render,_n as startTransition,vn as unmountComponentAtNode,pn as unstable_batchedUpdates,bn as useDeferredValue,gn as useInsertionEffect,Cn as useSyncExternalStore,Sn as useTransition,ln as version};\n//# sourceMappingURL=compat.module.js.map\n","var n,l,u,t,i,o,r,f,e,c,s,a,h={},p=[],v=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,y=Array.isArray;function d(n,l){for(var u in l)n[u]=l[u];return n}function w(n){var l=n.parentNode;l&&l.removeChild(n)}function _(l,u,t){var i,o,r,f={};for(r in u)\"key\"==r?i=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):t),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return g(l,f,i,o,null)}function g(n,t,i,o,r){var f={type:n,props:t,key:i,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,constructor:void 0,__v:null==r?++u:r,__i:-1,__u:0};return null==r&&null!=l.vnode&&l.vnode(f),f}function m(){return{current:null}}function k(n){return n.children}function b(n,l){this.props=n,this.context=l}function x(n,l){if(null==l)return n.__?x(n.__,n.__i+1):null;for(var u;lu&&i.sort(f));P.__r=0}function S(n,l,u,t,i,o,r,f,e,c,s){var a,v,y,d,w,_=t&&t.__k||p,g=l.length;for(u.__d=e,$(u,l,_),e=u.__d,a=0;a0?g(i.type,i.props,i.key,i.ref?i.ref:null,i.__v):i)?(i.__=n,i.__b=n.__b+1,f=L(i,u,r,s),i.__i=f,o=null,-1!==f&&(s--,(o=u[f])&&(o.__u|=131072)),null==o||null===o.__v?(-1==f&&a--,\"function\"!=typeof i.type&&(i.__u|=65536)):f!==r&&(f===r+1?a++:f>r?s>e-r?a+=f-r:a--:f(null!=e&&0==(131072&e.__u)?1:0))for(;r>=0||f=0){if((e=l[r])&&0==(131072&e.__u)&&i==e.key&&o===e.type)return r;r--}if(f2&&(e.children=arguments.length>3?n.call(arguments,2):t),g(l.type,e,i||l.key,o||l.ref,null)}function G(n,l){var u={__c:l=\"__cC\"+a++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,t;return this.getChildContext||(u=[],(t={})[l]=this,this.getChildContext=function(){return t},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(function(n){n.__e=!0,M(n)})},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=p.slice,l={__e:function(n,l,u,t){for(var i,o,r;l=l.__;)if((i=l.__c)&&!i.__)try{if((o=i.constructor)&&null!=o.getDerivedStateFromError&&(i.setState(o.getDerivedStateFromError(n)),r=i.__d),null!=i.componentDidCatch&&(i.componentDidCatch(n,t||{}),r=i.__d),r)return i.__E=i}catch(l){n=l}throw n}},u=0,t=function(n){return null!=n&&null==n.constructor},b.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=d({},this.state),\"function\"==typeof n&&(n=n(d({},u),this.props)),n&&d(u,n),null!=n&&this.__v&&(l&&this._sb.push(l),M(this))},b.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),M(this))},b.prototype.render=k,i=[],r=\"function\"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,f=function(n,l){return n.__v.__b-l.__v.__b},P.__r=0,e=0,c=F(!1),s=F(!0),a=0;export{b as Component,k as Fragment,E as cloneElement,G as createContext,_ as createElement,m as createRef,_ as h,D as hydrate,t as isValidElement,l as options,B as render,H as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\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'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\n\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\n\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\n\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\n\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\n\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\n\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\n\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\n\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\n\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function (obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (encode === false) {\n return String(str);\n }\n\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\n\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n\n return innermostTitle || innermostDefaultTitle || undefined;\n};\n\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\n\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\n\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n\n return innermostBaseTag;\n }, []);\n};\n\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n\n var value = tag[primaryAttributeKey].toLowerCase();\n\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n\n approvedSeenTags[attributeKey] = tagUnion;\n }\n\n return approvedTags;\n }, []).reverse();\n};\n\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n\n return null;\n};\n\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\n\nvar rafPolyfill = function () {\n var clock = Date.now();\n\n return function (callback) {\n var currentTime = Date.now();\n\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\n\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\n\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\n\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\n\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\n\nvar _helmetCallback = null;\n\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\n\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n\n updateTitle(title, titleAttributes);\n\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n\n var addedTags = {};\n var removedTags = {};\n\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n\n\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n\n cb && cb();\n\n onChangeClientState(newState, addedTags, removedTags);\n};\n\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\n\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\n\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n\n if (!elementTag) {\n return;\n }\n\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\n\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\n\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\n\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\n\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\n\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\n\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\n\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\n\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = { __html: content };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n\n return React.createElement(type, mappedTag);\n });\n};\n\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\n\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)\n };\n};\n\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n\n return newFlattenedProps;\n };\n\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n\n return true;\n };\n\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n\n var arrayTypeChildren = {};\n\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n\n _this2.warnOnInvalidChildren(child, nestedChildren);\n\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n\n var newProps = _extends({}, props);\n\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n\n return React.createElement(Component, newProps);\n };\n\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n\n\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n\n return mappedState;\n }, _temp;\n};\n\nvar NullComponent = function NullComponent() {\n return null;\n};\n\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\n\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\n\nexport default HelmetExport;\nexport { HelmetExport as Helmet };\n","/**\n * React Router DOM v6.23.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { UNSAFE_mapRouteProperties, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, Router, UNSAFE_useRoutesImpl, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, useBlocker } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, resolvePath, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths, IDLE_FETCHER, matchPath } from '@remix-run/router';\nexport { UNSAFE_ErrorResponseImpl } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for ``/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a