{"version":3,"sources":["jsdelivr-header.js","/npm/vue-router@5.2.0/dist/vue-router.global.js"],"names":[],"mappings":"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","file":"/npm/vue-router@5.2.0/dist/vue-router.global.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /npm/vue-router@5.2.0/dist/vue-router.global.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*!\n* vue-router v5.2.0\n* (c) 2026 Eduardo San Martin Morote\n* @license MIT\n*/\nvar VueRouter = (function(exports, nostics, vue) {\n\tObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\n\t//#region src/utils/env.ts\n\tconst isBrowser = typeof document !== \"undefined\";\n\t//#endregion\n\t//#region src/utils/index.ts\n\t/**\n\t* Allows differentiating lazy components from functional components and vue-class-component\n\t* @internal\n\t*\n\t* @param component\n\t*/\n\tfunction isRouteComponent(component) {\n\t\treturn typeof component === \"object\" || \"displayName\" in component || \"props\" in component || \"__vccOpts\" in component;\n\t}\n\tfunction isESModule(obj) {\n\t\treturn obj.__esModule || obj[Symbol.toStringTag] === \"Module\" || obj.default && isRouteComponent(obj.default);\n\t}\n\tconst assign = Object.assign;\n\tfunction applyToParams(fn, params) {\n\t\tconst newParams = {};\n\t\tfor (const key in params) {\n\t\t\tconst value = params[key];\n\t\t\tnewParams[key] = isArray(value) ? value.map(fn) : fn(value);\n\t\t}\n\t\treturn newParams;\n\t}\n\tconst noop = () => {};\n\t/**\n\t* Typesafe alternative to Array.isArray\n\t* https://github.com/microsoft/TypeScript/pull/48228\n\t*\n\t* @internal\n\t*/\n\tconst isArray = Array.isArray;\n\tfunction mergeOptions(defaults, partialOptions) {\n\t\tconst options = {};\n\t\tfor (const key in defaults) options[key] = key in partialOptions ? partialOptions[key] : defaults[key];\n\t\treturn options;\n\t}\n\t//#endregion\n\t//#region src/errors.ts\n\tconst NavigationFailureSymbol = Symbol(\"navigation failure\");\n\t/**\n\t* Enumeration with all possible types for navigation failures. Can be passed to\n\t* {@link isNavigationFailure} to check for specific failures.\n\t*/\n\tlet NavigationFailureType = /* @__PURE__ */ function(NavigationFailureType) {\n\t\t/**\n\t\t* An aborted navigation is a navigation that failed because a navigation\n\t\t* guard returned `false` or called `next(false)`\n\t\t*/\n\t\tNavigationFailureType[NavigationFailureType[\"aborted\"] = 4] = \"aborted\";\n\t\t/**\n\t\t* A cancelled navigation is a navigation that failed because a more recent\n\t\t* navigation finished started (not necessarily finished).\n\t\t*/\n\t\tNavigationFailureType[NavigationFailureType[\"cancelled\"] = 8] = \"cancelled\";\n\t\t/**\n\t\t* A duplicated navigation is a navigation that failed because it was\n\t\t* initiated while already being at the exact same location.\n\t\t*/\n\t\tNavigationFailureType[NavigationFailureType[\"duplicated\"] = 16] = \"duplicated\";\n\t\treturn NavigationFailureType;\n\t}({});\n\tconst ErrorTypeMessages = {\n\t\t[1]({ location, currentLocation }) {\n\t\t\treturn `No match for\\n ${JSON.stringify(location)}${currentLocation ? \"\\nwhile being at\\n\" + JSON.stringify(currentLocation) : \"\"}`;\n\t\t},\n\t\t[2]({ from, to }) {\n\t\t\treturn `Redirected from \"${from.fullPath}\" to \"${stringifyRoute(to)}\" via a navigation guard.`;\n\t\t},\n\t\t[4]({ from, to }) {\n\t\t\treturn `Navigation aborted from \"${from.fullPath}\" to \"${to.fullPath}\" via a navigation guard.`;\n\t\t},\n\t\t[8]({ from, to }) {\n\t\t\treturn `Navigation cancelled from \"${from.fullPath}\" to \"${to.fullPath}\" with a new navigation.`;\n\t\t},\n\t\t[16]({ from, to: _to }) {\n\t\t\treturn `Avoided redundant navigation to current location: \"${from.fullPath}\".`;\n\t\t}\n\t};\n\t/**\n\t* Creates a typed NavigationFailure object.\n\t* @internal\n\t* @param type - NavigationFailureType\n\t* @param params - { from, to }\n\t*/\n\tfunction createRouterError(type, params) {\n\t\treturn assign(new Error(ErrorTypeMessages[type](params)), {\n\t\t\ttype,\n\t\t\t[NavigationFailureSymbol]: true\n\t\t}, params);\n\t}\n\tfunction isNavigationFailure(error, type) {\n\t\treturn error instanceof Error && NavigationFailureSymbol in error && (type == null || !!(error.type & type));\n\t}\n\tconst propertiesToLog = [\n\t\t\"params\",\n\t\t\"query\",\n\t\t\"hash\"\n\t];\n\t/**\n\t* Stringifies a raw location for display in dev warnings.\n\t*\n\t* @internal\n\t*/\n\tfunction stringifyRoute(to) {\n\t\tif (!to || typeof to === \"string\") return to;\n\t\tif (to.path != null) return to.path;\n\t\tconst location = {};\n\t\tfor (const key of propertiesToLog) if (key in to) location[key] = to[key];\n\t\treturn JSON.stringify(location, null, 2);\n\t}\n\t//#endregion\n\t//#region src/diagnostics.ts\n\t/**\n\t* Runtime diagnostics catalog for Vue Router.\n\t*\n\t* Every entry has a stable `VUE_ROUTER_R####` code, a `why` that states the problem\n\t* (the diagnosis only, never the remedy) and a `fix` that states the remedy\n\t* (only, never the diagnosis). They are complementary: the reporter prints\n\t* both, so neither repeats the other. The diagnosis substrings asserted by the\n\t* warning tests stay in `why`. All call sites stay behind the existing `__DEV__` (or\n\t* `process.env.NODE_ENV !== 'production'`) guards and remain bare expression\n\t* statements so they tree-shake out of production builds.\n\t*\n\t* Codes are permanent: never rename or reuse one.\n\t* - `VUE_ROUTER_R0###` core runtime warnings\n\t* - `VUE_ROUTER_R1###` experimental data-loaders\n\t*/\n\tconst diagnostics = /*#__PURE__*/ (0, nostics.defineDiagnostics)({\n\t\treporters: [/*#__PURE__*/ (0, nostics.createConsoleReporter)()],\n\t\tcodes: {\n\t\t\tVUE_ROUTER_R0001: {\n\t\t\t\twhy: (p) => `Parent route \"${p.name}\" not found when adding child route`,\n\t\t\t\tfix: \"Add the parent route before its children, or check the parent name for typos.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/dynamic-routing.html#Adding-nested-routes\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0002: {\n\t\t\t\twhy: (p) => `Cannot remove non-existent route \"${p.name}\"`,\n\t\t\t\tfix: \"Check the route name; it may already have been removed or was never added.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/dynamic-routing.html#Removing-routes\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0003: {\n\t\t\t\twhy: (p) => `Location \"${stringifyRoute(p.location)}\" resolved to \"${p.href}\". A resolved location cannot start with multiple slashes.`,\n\t\t\t\tfix: \"Remove the leading slashes from the location or fix the route configuration.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0004: {\n\t\t\t\twhy: (p) => `No match found for location with path \"${stringifyRoute(p.path)}\"`,\n\t\t\t\tfix: \"Add a route matching this path or check for typos in the location.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/dynamic-matching.html#Catch-all-404-Not-found-Route\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0005: {\n\t\t\t\twhy: (p) => `router.resolve() was passed an invalid location. This will fail in production.\\nLocation: ${stringifyRoute(p.rawLocation)}`,\n\t\t\t\tfix: \"Pass a valid route location: a string path or an object with `path` or `name`.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0006: {\n\t\t\t\twhy: (p) => `Path \"${p.path}\" was passed with params but they will be ignored because a \"path\" was passed.`,\n\t\t\t\tfix: \"Use a named route `{ name, params }` instead of `{ path, params }`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/navigation.html#Navigate-to-a-different-location\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0007: {\n\t\t\t\twhy: (p) => `A \\`hash\\` should always start with the character \"#\" but received \"${p.hash}\".`,\n\t\t\t\tfix: (p) => `Prepend \"#\" to the hash in your route location: use \"#${p.hash}\".`\n\t\t\t},\n\t\t\tVUE_ROUTER_R0008: {\n\t\t\t\twhy: (p) => `Invalid redirect found:\\n${p.target}\\n when navigating to \"${p.to}\".\\nThis will break in production.`,\n\t\t\t\tfix: \"A redirect must resolve to a location with a `name` or `path`; return one of those (or a string path) from `redirect`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/redirect-and-alias.html#Redirect\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0009: {\n\t\t\t\twhy: (p) => `Detected a possibly infinite redirection in a navigation guard when going from \"${p.from}\" to \"${p.to}\". Aborting to avoid a Stack Overflow. This might break in production if not fixed.`,\n\t\t\t\tfix: \"A guard is returning a new location on every call; make that return conditional so it only redirects when actually needed.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/navigation-guards.html#Global-Before-Guards\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0010: {\n\t\t\t\twhy: \"Uncaught error during route navigation\",\n\t\t\t\tfix: \"Register an error handler with `router.onError()` to handle navigation errors.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0011: {\n\t\t\t\twhy: \"Unexpected error when starting the router:\",\n\t\t\t\tfix: \"Inspect the actual cause; a navigation guard or async component likely threw during the initial navigation.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0020: {\n\t\t\t\twhy: (p) => `No active route record was found when calling \\`${p.fn}()\\`. Maybe you called it inside of App.vue?`,\n\t\t\t\tfix: \"Call it from a component rendered inside <router-view> (a page component or one of its children), not from App.vue.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/composition-api.html#Navigation-Guards\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0021: {\n\t\t\t\twhy: \"No active route record was found when reactivating component with navigation guard. This is likely a bug in vue-router.\",\n\t\t\t\tfix: \"Report with a minimal reproduction at https://github.com/vuejs/router/issues/new/choose.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0022: {\n\t\t\t\twhy: (p) => `${p.fn}() was called outside of component setup but it must be called at the top of a setup function`,\n\t\t\t\tfix: \"Call it synchronously at the top of `setup()`, before any `await`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/composition-api.html#Navigation-Guards\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0023: {\n\t\t\t\twhy: (p) => `The \"next\" callback was never called inside of ${p.name ? `\"${p.name}\"` : \"\"}:\\n${p.guard}`,\n\t\t\t\tfix: \"Make sure `next()` runs on every branch, including early returns and async paths, or drop the `next` parameter and return the value instead.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0024: {\n\t\t\t\twhy: (p) => `The \"next\" callback was called more than once in one navigation guard when going from \"${p.from}\" to \"${p.to}\". This will fail in production.`,\n\t\t\t\tfix: \"Call `next()` exactly once per guard: remove the extra call, or migrate to returning the value you passed to `next()`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0025: {\n\t\t\t\twhy: \"The `next()` callback in navigation guards is deprecated.\",\n\t\t\t\tfix: \"Return the value instead: `next()` becomes `return`, `next(false)` becomes `return false`, `next(\\\"/path\\\")` becomes `return \\\"/path\\\"`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/navigation-guards.html#Optional-third-argument-next\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0026: {\n\t\t\t\twhy: (p) => `Record with path \"${p.path}\" is either missing a \"component(s)\" or \"children\" property.`,\n\t\t\t\tfix: \"Add a `component`, `components`, or `children` to the route record.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/nested-routes.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0027: {\n\t\t\t\twhy: (p) => `Component \"${p.name}\" in record with path \"${p.path}\" is not a valid component. Received \"${p.received}\".`,\n\t\t\t\tfix: \"Pass a component or a function returning a Promise that resolves to one.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0028: {\n\t\t\t\twhy: (p) => `Component \"${p.name}\" in record with path \"${p.path}\" is a Promise instead of a function that returns a Promise. This will break in production if not fixed.`,\n\t\t\t\tfix: `Defer the import in an arrow function so it loads lazily: write \"() => import('./MyPage.vue')\", not \"import('./MyPage.vue')\".`,\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/lazy-loading.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0029: {\n\t\t\t\twhy: (p) => `Component \"${p.name}\" in record with path \"${p.path}\" is defined using \"defineAsyncComponent()\".`,\n\t\t\t\tfix: `Drop the wrapper and pass \"() => import('./MyPage.vue')\" directly; the router handles lazy components itself.`,\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/lazy-loading.html#Relationship-to-async-components\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0030: {\n\t\t\t\twhy: (p) => `Component \"${p.name}\" in record with path \"${p.path}\" is a function that does not return a Promise. This will break in production if not fixed.`,\n\t\t\t\tfix: \"Return a dynamic import (`() => import(\\\"./MyPage.vue\\\")`) from the function, or add a `displayName` if it is a functional component.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/lazy-loading.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0040: {\n\t\t\t\twhy: (p) => `Because \"${p.el}\" starts with \"#\", scrollBehavior resolves it as an element id via document.getElementById(\"${p.el.slice(1)}\"), not as a CSS selector. No element has that id, but \"${p.el}\" does match an element with document.querySelector().`,\n\t\t\t\tfix: (p) => `Resolve the element yourself and return the node: el: document.querySelector('${p.el}').`,\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/scroll-behavior.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0041: {\n\t\t\t\twhy: (p) => `The selector \"${p.el}\" is invalid. See https://mathiasbynens.be/notes/css-escapes or CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape) for the escaping rules.`,\n\t\t\t\tfix: \"Build an id selector as `#${CSS.escape(id)}` so special characters in the id are escaped.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/scroll-behavior.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0042: {\n\t\t\t\twhy: (p) => `Couldn't find element using selector \"${p.el}\" returned by scrollBehavior.`,\n\t\t\t\tfix: \"Return a selector that matches an existing element, or guard against missing elements.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/scroll-behavior.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0050: {\n\t\t\t\twhy: (p) => {\n\t\t\t\t\tlet to;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tto = p.to === void 0 ? \"undefined\" : JSON.stringify(p.to);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tto = String(p.to);\n\t\t\t\t\t}\n\t\t\t\t\treturn `Invalid value for prop \"to\" in useLink()\\n- to: ${to}`;\n\t\t\t\t},\n\t\t\t\tfix: \"Pass a valid route location (a string path or an object) to the \\\"to\\\" prop.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0060: {\n\t\t\t\twhy: (p) => `<router-view> can no longer be used directly inside <${p.comp}>.`,\n\t\t\t\tfix: (p) => `Wrap the slot's resolved component with <${p.comp}> instead of nesting <router-view> in it:\\n\\n<router-view v-slot=\"{ Component }\">\\n  <${p.comp}>\\n    <component :is=\"Component\" />\\n  </${p.comp}>\\n</router-view>`,\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/advanced/router-view-slot.html#KeepAlive-Transition\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0070: {\n\t\t\t\twhy: (p) => `Cannot resolve a relative location without an absolute path. Trying to resolve \"${p.to}\" from \"${p.from}\".`,\n\t\t\t\tfix: (p) => `Resolve from an absolute \\`from\\` path that starts with \"/\", e.g. \"/${p.from}\".`\n\t\t\t},\n\t\t\tVUE_ROUTER_R0080: {\n\t\t\t\twhy: (p) => `Error decoding \"${p.text}\". Using original value`,\n\t\t\t\tfix: \"Ensure the value is correctly percent-encoded.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0090: {\n\t\t\t\twhy: (p) => `Found duplicated params with name \"${p.name}\" for path \"${p.path}\". Only the last one will be available on \"$route.params\".`,\n\t\t\t\tfix: \"Give each param a unique name within the path.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/route-matching-syntax.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0100: {\n\t\t\t\twhy: (p) => `Discarded invalid param(s) \"${p.params}\" when navigating.` + p.inherited + ` See https://github.com/vuejs/router/commit/e887570 for more details.`,\n\t\t\t\tfix: \"Only pass params that exist on the target route.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0101: {\n\t\t\t\twhy: (p) => `The Matcher cannot resolve relative paths but received \"${p.path}\". Unless you directly called \\`matcher.resolve(\"${p.path}\")\\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`,\n\t\t\t\tfix: \"Pass an absolute path (starting with \\\"/\\\") to the matcher.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0102: {\n\t\t\t\twhy: (p) => `Alias \"${p.alias}\" and the original record: \"${p.original}\" must have the exact same param named \"${p.name}\"`,\n\t\t\t\tfix: \"Use the same param names in the alias as in the original route.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/redirect-and-alias.html#Alias\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0103: {\n\t\t\t\twhy: (p) => `The route named \"${p.name}\" has a child without a name, an empty path, and no children. Using that name won't render the empty path child, so this is probably a mistake.`,\n\t\t\t\tfix: \"Move the `name` onto the empty-path child; or, if intentional, give the child its own name to silence this.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/nested-routes.html#Nested-Named-Routes\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0104: {\n\t\t\t\twhy: (p) => `Absolute path \"${p.path}\" must have the exact same param named \"${p.name}\" as its parent \"${p.parent}\".`,\n\t\t\t\tfix: \"Include the parent route params in the absolute child path.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/essentials/nested-routes.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0105: {\n\t\t\t\twhy: (p) => `Finding ancestor route \"${p.ancestor}\" failed for \"${p.record}\"`,\n\t\t\t\tfix: \"Report a reproduction at https://github.com/vuejs/router/issues/new/choose.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0110: {\n\t\t\t\twhy: `A hash base must end with a \"#\"`,\n\t\t\t\tfix: (p) => `Append \"#\" to the \"base\" argument passed to \"createWebHashHistory()\": \"${p.base}\" should be \"${p.suggestion}\".`\n\t\t\t},\n\t\t\tVUE_ROUTER_R0120: {\n\t\t\t\twhy: \"Error with push/replace State\",\n\t\t\t\tfix: \"The browser rejected the history API call; check for cross-origin or rate-limit issues.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R0121: {\n\t\t\t\twhy: \"history.state seems to have been manually replaced without preserving the necessary values.\\nYou can find more information at https://router.vuejs.org/guide/migration/#Usage-of-history-state\",\n\t\t\t\tfix: \"Merge the router's state into your own when calling it manually: `history.replaceState({ ...history.state, ...yourState }, '', url)`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/guide/migration.html#Usage-of-history-state\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1001: {\n\t\t\t\twhy: (p) => `Data loader \"${String(p.key)}\" has a different parent than the current context. This shouldn't be happening.`,\n\t\t\t\tfix: \"Report a bug with a minimal reproduction at https://github.com/vuejs/router/.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1002: {\n\t\t\t\twhy: \"Returning a NavigationResult is deprecated.\",\n\t\t\t\tfix: \"Replace `return new NavigationResult(to)` with `reroute(to)`, which throws internally to reroute.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders/navigation-aware.html#Controlling-the-navigation-with-reroute-\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1003: {\n\t\t\t\twhy: (p) => `Loader \"${p.key}\"'s \"commit()\" was called but there is no staged data.`,\n\t\t\t\tfix: \"Ensure the loader resolved before calling `commit()`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders/defining-loaders.html#Delaying-data-updates-with-commit\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1004: {\n\t\t\t\twhy: (p) => \"A loader returned a NavigationResult but is not registered on the route.\" + p.key,\n\t\t\t\tfix: \"Export the loader from the page component so it gets registered, e.g. `export const useUserData = defineLoader(...)`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders/organization.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1005: {\n\t\t\t\twhy: (p) => `Data loader \"${p.key}\" has itself as parent. This shouldn't be happening.`,\n\t\t\t\tfix: \"Report a bug with a minimal reproduction at https://github.com/vuejs/router/.\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1006: {\n\t\t\t\twhy: (p) => `A query was defined with the same key as the loader \"[${p.key}]\".\\nSee https://pinia-colada.esm.dev/#TODO`,\n\t\t\t\tfix: \"If the key is meant to match, use the data loader directly; otherwise rename the `useQuery()` key so it no longer collides.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders/colada.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1007: {\n\t\t\t\twhy: \"Data Loader was setup twice.\",\n\t\t\t\tfix: \"Register `DataLoaderPlugin` a single time via `app.use()`.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders.html#Installation\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1008: {\n\t\t\t\twhy: \"Data Loader is experimental and subject to breaking changes in the future.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders.html\"\n\t\t\t},\n\t\t\tVUE_ROUTER_R1009: {\n\t\t\t\twhy: \"Returning a NavigationResult from a loader is deprecated.\",\n\t\t\t\tfix: \"Call `reroute(to)` inside the loader instead of returning `new NavigationResult(to)`; it throws internally to reroute.\",\n\t\t\t\tdocs: \"https://router.vuejs.org/data-loaders/navigation-aware.html#Controlling-the-navigation-with-reroute-\"\n\t\t\t}\n\t\t}\n\t});\n\t//#endregion\n\t//#region src/encoding.ts\n\t/**\n\t* Encoding Rules (␣ = Space)\n\t* - Path: ␣ \" < > # ? { }\n\t* - Query: ␣ \" < > # & =\n\t* - Hash: ␣ \" < > `\n\t*\n\t* On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2)\n\t* defines some extra characters to be encoded. Most browsers do not encode them\n\t* in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to\n\t* also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`)\n\t* plus `-._~`. This extra safety should be applied to query by patching the\n\t* string returned by encodeURIComponent encodeURI also encodes `[\\]^`. `\\`\n\t* should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\\`\n\t* into a `/` if directly typed in. The _backtick_ (`````) should also be\n\t* encoded everywhere because some browsers like FF encode it when directly\n\t* written while others don't. Safari and IE don't encode ``\"<>{}``` in hash.\n\t*/\n\tconst HASH_RE = /#/g;\n\tconst AMPERSAND_RE = /&/g;\n\tconst SLASH_RE = /\\//g;\n\tconst EQUAL_RE = /=/g;\n\tconst IM_RE = /\\?/g;\n\tconst PLUS_RE = /\\+/g;\n\t/**\n\t* NOTE: It's not clear to me if we should encode the + symbol in queries, it\n\t* seems to be less flexible than not doing so and I can't find out the legacy\n\t* systems requiring this for regular requests like text/html. In the standard,\n\t* the encoding of the plus character is only mentioned for\n\t* application/x-www-form-urlencoded\n\t* (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo\n\t* leave the plus character as is in queries. To be more flexible, we allow the\n\t* plus character on the query, but it can also be manually encoded by the user.\n\t*\n\t* Resources:\n\t* - https://url.spec.whatwg.org/#urlencoded-parsing\n\t* - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20\n\t*/\n\tconst ENC_BRACKET_OPEN_RE = /%5B/g;\n\tconst ENC_BRACKET_CLOSE_RE = /%5D/g;\n\tconst ENC_CARET_RE = /%5E/g;\n\tconst ENC_BACKTICK_RE = /%60/g;\n\tconst ENC_CURLY_OPEN_RE = /%7B/g;\n\tconst ENC_PIPE_RE = /%7C/g;\n\tconst ENC_CURLY_CLOSE_RE = /%7D/g;\n\tconst ENC_SPACE_RE = /%20/g;\n\t/**\n\t* Encode characters that need to be encoded on the path, search and hash\n\t* sections of the URL.\n\t*\n\t* @internal\n\t* @param text - string to encode\n\t* @returns encoded string\n\t*/\n\tfunction commonEncode(text) {\n\t\treturn text == null ? \"\" : encodeURI(\"\" + text).replace(ENC_PIPE_RE, \"|\").replace(ENC_BRACKET_OPEN_RE, \"[\").replace(ENC_BRACKET_CLOSE_RE, \"]\");\n\t}\n\t/**\n\t* Encode characters that need to be encoded on the hash section of the URL.\n\t*\n\t* @param text - string to encode\n\t* @returns encoded string\n\t*/\n\tfunction encodeHash(text) {\n\t\treturn commonEncode(text).replace(ENC_CURLY_OPEN_RE, \"{\").replace(ENC_CURLY_CLOSE_RE, \"}\").replace(ENC_CARET_RE, \"^\");\n\t}\n\t/**\n\t* Encode characters that need to be encoded query values on the query\n\t* section of the URL.\n\t*\n\t* @param text - string to encode\n\t* @returns encoded string\n\t*/\n\tfunction encodeQueryValue(text) {\n\t\treturn commonEncode(text).replace(PLUS_RE, \"%2B\").replace(ENC_SPACE_RE, \"+\").replace(HASH_RE, \"%23\").replace(AMPERSAND_RE, \"%26\").replace(ENC_BACKTICK_RE, \"`\").replace(ENC_CURLY_OPEN_RE, \"{\").replace(ENC_CURLY_CLOSE_RE, \"}\").replace(ENC_CARET_RE, \"^\");\n\t}\n\t/**\n\t* Like `encodeQueryValue` but also encodes the `=` character.\n\t*\n\t* @param text - string to encode\n\t*/\n\tfunction encodeQueryKey(text) {\n\t\treturn encodeQueryValue(text).replace(EQUAL_RE, \"%3D\");\n\t}\n\t/**\n\t* Encode characters that need to be encoded on the path section of the URL.\n\t*\n\t* @param text - string to encode\n\t* @returns encoded string\n\t*/\n\tfunction encodePath(text) {\n\t\treturn commonEncode(text).replace(HASH_RE, \"%23\").replace(IM_RE, \"%3F\");\n\t}\n\t/**\n\t* Encode characters that need to be encoded on the path section of the URL as a\n\t* param. This function encodes everything {@link encodePath} does plus the\n\t* slash (`/`) character. If `text` is `null` or `undefined`, returns an empty\n\t* string instead.\n\t*\n\t* @param text - string to encode\n\t* @returns encoded string\n\t*/\n\tfunction encodeParam(text) {\n\t\treturn encodePath(text).replace(SLASH_RE, \"%2F\");\n\t}\n\tfunction decode(text) {\n\t\tif (text == null) return null;\n\t\ttry {\n\t\t\treturn decodeURIComponent(\"\" + text);\n\t\t} catch {\n\t\t\tdiagnostics.VUE_ROUTER_R0080({ text: \"\" + text });\n\t\t}\n\t\treturn \"\" + text;\n\t}\n\t//#endregion\n\t//#region src/location.ts\n\tconst TRAILING_SLASH_RE = /\\/$/;\n\tconst removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, \"\");\n\t/**\n\t* Transforms a URI into a normalized history location\n\t*\n\t* @param parseQuery\n\t* @param location - URI to normalize\n\t* @param currentLocation - current absolute location. Allows resolving relative\n\t* paths. Must start with `/`. Defaults to `/`\n\t* @returns a normalized history location\n\t*/\n\tfunction parseURL(parseQuery, location, currentLocation = \"/\") {\n\t\tlet path, query = {}, searchString = \"\", hash = \"\";\n\t\tconst hashPos = location.indexOf(\"#\");\n\t\tlet searchPos = location.indexOf(\"?\");\n\t\tsearchPos = hashPos >= 0 && searchPos > hashPos ? -1 : searchPos;\n\t\tif (searchPos >= 0) {\n\t\t\tpath = location.slice(0, searchPos);\n\t\t\tsearchString = location.slice(searchPos, hashPos > 0 ? hashPos : location.length);\n\t\t\tquery = parseQuery(searchString.slice(1));\n\t\t}\n\t\tif (hashPos >= 0) {\n\t\t\tpath = path || location.slice(0, hashPos);\n\t\t\thash = location.slice(hashPos, location.length);\n\t\t}\n\t\tpath = resolveRelativePath(path != null ? path : location, currentLocation);\n\t\treturn {\n\t\t\tfullPath: path + searchString + hash,\n\t\t\tpath,\n\t\t\tquery,\n\t\t\thash: decode(hash)\n\t\t};\n\t}\n\t/**\n\t* Stringifies a URL object\n\t*\n\t* @param stringifyQuery\n\t* @param location\n\t*/\n\tfunction stringifyURL(stringifyQuery, location) {\n\t\tconst query = location.query ? stringifyQuery(location.query) : \"\";\n\t\treturn location.path + (query && \"?\") + query + (location.hash || \"\");\n\t}\n\t/**\n\t* Strips off the base from the beginning of a location.pathname in a non-case-sensitive way.\n\t*\n\t* @param pathname - location.pathname\n\t* @param base - base to strip off\n\t*/\n\tfunction stripBase(pathname, base) {\n\t\tif (!base || !pathname.toLowerCase().startsWith(base.toLowerCase())) return pathname;\n\t\treturn pathname.slice(base.length) || \"/\";\n\t}\n\t/**\n\t* Checks if two RouteLocation are equal. This means that both locations are\n\t* pointing towards the same {@link RouteRecord} and that all `params`, `query`\n\t* parameters and `hash` are the same\n\t*\n\t* @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it.\n\t* @param a - first {@link RouteLocation}\n\t* @param b - second {@link RouteLocation}\n\t*/\n\tfunction isSameRouteLocation(stringifyQuery, a, b) {\n\t\tconst aLastIndex = a.matched.length - 1;\n\t\tconst bLastIndex = b.matched.length - 1;\n\t\treturn aLastIndex > -1 && aLastIndex === bLastIndex && isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && isSameRouteLocationParams(a.params, b.params) && stringifyQuery(a.query) === stringifyQuery(b.query) && a.hash === b.hash;\n\t}\n\t/**\n\t* Check if two `RouteRecords` are equal. Takes into account aliases: they are\n\t* considered equal to the `RouteRecord` they are aliasing.\n\t*\n\t* @param a - first {@link RouteRecord}\n\t* @param b - second {@link RouteRecord}\n\t*/\n\tfunction isSameRouteRecord(a, b) {\n\t\treturn (a.aliasOf || a) === (b.aliasOf || b);\n\t}\n\tfunction isSameRouteLocationParams(a, b) {\n\t\tif (Object.keys(a).length !== Object.keys(b).length) return false;\n\t\tfor (var key in a) if (!isSameRouteLocationParamsValue(a[key], b[key])) return false;\n\t\treturn true;\n\t}\n\tfunction isSameRouteLocationParamsValue(a, b) {\n\t\treturn isArray(a) ? isEquivalentArray(a, b) : isArray(b) ? isEquivalentArray(b, a) : (a && a.valueOf()) === (b && b.valueOf());\n\t}\n\t/**\n\t* Check if two arrays are the same or if an array with one single entry is the\n\t* same as another primitive value. Used to check query and parameters\n\t*\n\t* @param a - array of values\n\t* @param b - array of values or a single value\n\t*/\n\tfunction isEquivalentArray(a, b) {\n\t\treturn isArray(b) ? a.length === b.length && a.every((value, i) => value === b[i]) : a.length === 1 && a[0] === b;\n\t}\n\t/**\n\t* Resolves a relative path that starts with `.`.\n\t*\n\t* @param to - path location we are resolving\n\t* @param from - currentLocation.path, should start with `/`\n\t*/\n\tfunction resolveRelativePath(to, from) {\n\t\tif (to.startsWith(\"/\")) return to;\n\t\tif (!from.startsWith(\"/\")) {\n\t\t\tdiagnostics.VUE_ROUTER_R0070({\n\t\t\t\tto,\n\t\t\t\tfrom\n\t\t\t});\n\t\t\treturn to;\n\t\t}\n\t\tif (!to) return from;\n\t\tconst fromSegments = from.split(\"/\");\n\t\tconst toSegments = to.split(\"/\");\n\t\tconst lastToSegment = toSegments[toSegments.length - 1];\n\t\tif (lastToSegment === \"..\" || lastToSegment === \".\") toSegments.push(\"\");\n\t\tlet position = fromSegments.length - 1;\n\t\tlet toPosition;\n\t\tlet segment;\n\t\tfor (toPosition = 0; toPosition < toSegments.length; toPosition++) {\n\t\t\tsegment = toSegments[toPosition];\n\t\t\tif (segment === \".\") continue;\n\t\t\tif (segment === \"..\") {\n\t\t\t\tif (position > 1) position--;\n\t\t\t} else break;\n\t\t}\n\t\treturn fromSegments.slice(0, position).join(\"/\") + \"/\" + toSegments.slice(toPosition).join(\"/\");\n\t}\n\t/**\n\t* Initial route location where the router is. Can be used in navigation guards\n\t* to differentiate the initial navigation.\n\t*\n\t* @example\n\t* ```js\n\t* import { START_LOCATION } from 'vue-router'\n\t*\n\t* router.beforeEach((to, from) => {\n\t*   if (from === START_LOCATION) {\n\t*     // initial navigation\n\t*   }\n\t* })\n\t* ```\n\t*/\n\tconst START_LOCATION_NORMALIZED = {\n\t\tpath: \"/\",\n\t\tname: void 0,\n\t\tparams: {},\n\t\tquery: {},\n\t\thash: \"\",\n\t\tfullPath: \"/\",\n\t\tmatched: [],\n\t\tmeta: {},\n\t\tredirectedFrom: void 0\n\t};\n\t//#endregion\n\t//#region src/history/common.ts\n\t/**\n\t* Normalizes a base by removing any trailing slash and reading the base tag if\n\t* present.\n\t*\n\t* @param base - base to normalize\n\t*/\n\tfunction normalizeBase(base) {\n\t\tif (!base) if (isBrowser) {\n\t\t\tconst baseEl = document.querySelector(\"base\");\n\t\t\tbase = baseEl && baseEl.getAttribute(\"href\") || \"/\";\n\t\t\tbase = base.replace(/^\\w+:\\/\\/[^/]+/, \"\");\n\t\t} else base = \"/\";\n\t\tif (base[0] !== \"/\" && base[0] !== \"#\") base = \"/\" + base;\n\t\treturn removeTrailingSlash(base);\n\t}\n\tconst BEFORE_HASH_RE = /^[^#]+#/;\n\tfunction createHref(base, location) {\n\t\treturn base.replace(BEFORE_HASH_RE, \"#\") + location;\n\t}\n\t//#endregion\n\t//#region src/scrollBehavior.ts\n\tfunction getElementPosition(el, offset) {\n\t\tconst docRect = document.documentElement.getBoundingClientRect();\n\t\tconst elRect = el.getBoundingClientRect();\n\t\treturn {\n\t\t\tbehavior: offset.behavior,\n\t\t\tleft: elRect.left - docRect.left - (offset.left || 0),\n\t\t\ttop: elRect.top - docRect.top - (offset.top || 0)\n\t\t};\n\t}\n\tconst computeScrollPosition = () => ({\n\t\tleft: window.scrollX,\n\t\ttop: window.scrollY\n\t});\n\tfunction scrollToPosition(position) {\n\t\tlet scrollToOptions;\n\t\tif (\"el\" in position) {\n\t\t\tconst positionEl = position.el;\n\t\t\tconst isIdSelector = typeof positionEl === \"string\" && positionEl.startsWith(\"#\");\n\t\t\t/**\n\t\t\t* `id`s can accept pretty much any characters, including CSS combinators\n\t\t\t* like `>` or `~`. It's still possible to retrieve elements using\n\t\t\t* `document.getElementById('~')` but it needs to be escaped when using\n\t\t\t* `document.querySelector('#\\\\~')` for it to be valid. The only\n\t\t\t* requirements for `id`s are them to be unique on the page and to not be\n\t\t\t* empty (`id=\"\"`). Because of that, when passing an id selector, it should\n\t\t\t* be properly escaped for it to work with `querySelector`. We could check\n\t\t\t* for the id selector to be simple (no CSS combinators `+ >~`) but that\n\t\t\t* would make things inconsistent since they are valid characters for an\n\t\t\t* `id` but would need to be escaped when using `querySelector`, breaking\n\t\t\t* their usage and ending up in no selector returned. Selectors need to be\n\t\t\t* escaped:\n\t\t\t*\n\t\t\t* - `#1-thing` becomes `#\\31 -thing`\n\t\t\t* - `#with~symbols` becomes `#with\\\\~symbols`\n\t\t\t*\n\t\t\t* - More information about  the topic can be found at\n\t\t\t*   https://mathiasbynens.be/notes/html5-id-class.\n\t\t\t* - Practical example: https://mathiasbynens.be/demo/html5-id\n\t\t\t*/\n\t\t\tif (typeof position.el === \"string\") {\n\t\t\t\tif (!isIdSelector || !document.getElementById(position.el.slice(1))) try {\n\t\t\t\t\tconst foundEl = document.querySelector(position.el);\n\t\t\t\t\tif (isIdSelector && foundEl) {\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0040({ el: position.el });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0041({ el: position.el });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst el = typeof positionEl === \"string\" ? isIdSelector ? document.getElementById(positionEl.slice(1)) : document.querySelector(positionEl) : positionEl;\n\t\t\tif (!el) {\n\t\t\t\tdiagnostics.VUE_ROUTER_R0042({ el: position.el });\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tscrollToOptions = getElementPosition(el, position);\n\t\t} else scrollToOptions = position;\n\t\tif (\"scrollBehavior\" in document.documentElement.style) window.scrollTo(scrollToOptions);\n\t\telse window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.scrollX, scrollToOptions.top != null ? scrollToOptions.top : window.scrollY);\n\t}\n\tfunction getScrollKey(path, delta) {\n\t\treturn (history.state ? history.state.position - delta : -1) + path;\n\t}\n\tconst scrollPositions = /* @__PURE__ */ new Map();\n\tfunction saveScrollPosition(key, scrollPosition) {\n\t\tscrollPositions.set(key, scrollPosition);\n\t}\n\tfunction getSavedScrollPosition(key) {\n\t\tconst scroll = scrollPositions.get(key);\n\t\tscrollPositions.delete(key);\n\t\treturn scroll;\n\t}\n\t/**\n\t* ScrollBehavior instance used by the router to compute and restore the scroll\n\t* position when navigating.\n\t*/\n\t//#endregion\n\t//#region src/history/html5.ts\n\tlet createBaseLocation = () => location.protocol + \"//\" + location.host;\n\t/**\n\t* Creates a normalized history location from a window.location object\n\t* @param base - The base path\n\t* @param location - The window.location object\n\t*/\n\tfunction createCurrentLocation(base, location) {\n\t\tconst { pathname, search, hash } = location;\n\t\tconst hashPos = base.indexOf(\"#\");\n\t\tif (hashPos > -1) {\n\t\t\tlet slicePos = hash.includes(base.slice(hashPos)) ? base.slice(hashPos).length : 1;\n\t\t\tlet pathFromHash = hash.slice(slicePos);\n\t\t\tif (pathFromHash[0] !== \"/\") pathFromHash = \"/\" + pathFromHash;\n\t\t\treturn stripBase(pathFromHash, \"\");\n\t\t}\n\t\treturn stripBase(pathname, base) + search + hash;\n\t}\n\tfunction useHistoryListeners(base, historyState, currentLocation, replace) {\n\t\tlet listeners = [];\n\t\tlet teardowns = [];\n\t\tlet pauseState = null;\n\t\tconst popStateHandler = ({ state }) => {\n\t\t\tconst to = createCurrentLocation(base, location);\n\t\t\tconst from = currentLocation.value;\n\t\t\tconst fromState = historyState.value;\n\t\t\tlet delta = 0;\n\t\t\tif (state) {\n\t\t\t\tcurrentLocation.value = to;\n\t\t\t\thistoryState.value = state;\n\t\t\t\tif (pauseState && pauseState === from) {\n\t\t\t\t\tpauseState = null;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdelta = fromState ? state.position - fromState.position : 0;\n\t\t\t} else replace(to);\n\t\t\tlisteners.forEach((listener) => {\n\t\t\t\tlistener(currentLocation.value, from, {\n\t\t\t\t\tdelta,\n\t\t\t\t\ttype: \"pop\",\n\t\t\t\t\tdirection: delta ? delta > 0 ? \"forward\" : \"back\" : \"\"\n\t\t\t\t});\n\t\t\t});\n\t\t};\n\t\tfunction pauseListeners() {\n\t\t\tpauseState = currentLocation.value;\n\t\t}\n\t\tfunction listen(callback) {\n\t\t\tlisteners.push(callback);\n\t\t\tconst teardown = () => {\n\t\t\t\tconst index = listeners.indexOf(callback);\n\t\t\t\tif (index > -1) listeners.splice(index, 1);\n\t\t\t};\n\t\t\tteardowns.push(teardown);\n\t\t\treturn teardown;\n\t\t}\n\t\tfunction beforeUnloadListener() {\n\t\t\tif (document.visibilityState === \"hidden\") {\n\t\t\t\tconst { history } = window;\n\t\t\t\tif (!history.state) return;\n\t\t\t\thistory.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), \"\");\n\t\t\t}\n\t\t}\n\t\tfunction destroy() {\n\t\t\tfor (const teardown of teardowns) teardown();\n\t\t\tteardowns = [];\n\t\t\twindow.removeEventListener(\"popstate\", popStateHandler);\n\t\t\twindow.removeEventListener(\"pagehide\", beforeUnloadListener);\n\t\t\tdocument.removeEventListener(\"visibilitychange\", beforeUnloadListener);\n\t\t}\n\t\twindow.addEventListener(\"popstate\", popStateHandler);\n\t\twindow.addEventListener(\"pagehide\", beforeUnloadListener);\n\t\tdocument.addEventListener(\"visibilitychange\", beforeUnloadListener);\n\t\treturn {\n\t\t\tpauseListeners,\n\t\t\tlisten,\n\t\t\tdestroy\n\t\t};\n\t}\n\t/**\n\t* Creates a state object\n\t*/\n\tfunction buildState(back, current, forward, replaced = false, computeScroll = false) {\n\t\treturn {\n\t\t\tback,\n\t\t\tcurrent,\n\t\t\tforward,\n\t\t\treplaced,\n\t\t\tposition: window.history.length,\n\t\t\tscroll: computeScroll ? computeScrollPosition() : null\n\t\t};\n\t}\n\tfunction useHistoryStateNavigation(base) {\n\t\tconst { history, location } = window;\n\t\tconst currentLocation = { value: createCurrentLocation(base, location) };\n\t\tconst historyState = { value: history.state };\n\t\tif (!historyState.value) changeLocation(currentLocation.value, {\n\t\t\tback: null,\n\t\t\tcurrent: currentLocation.value,\n\t\t\tforward: null,\n\t\t\tposition: history.length - 1,\n\t\t\treplaced: true,\n\t\t\tscroll: null\n\t\t}, true);\n\t\tfunction changeLocation(to, state, replace) {\n\t\t\t/**\n\t\t\t* if a base tag is provided, and we are on a normal domain, we have to\n\t\t\t* respect the provided `base` attribute because pushState() will use it and\n\t\t\t* potentially erase anything before the `#` like at\n\t\t\t* https://github.com/vuejs/router/issues/685 where a base of\n\t\t\t* `/folder/#` but a base of `/` would erase the `/folder/` section. If\n\t\t\t* there is no host, the `<base>` tag makes no sense and if there isn't a\n\t\t\t* base tag we can just use everything after the `#`.\n\t\t\t*/\n\t\t\tconst hashIndex = base.indexOf(\"#\");\n\t\t\tconst url = hashIndex > -1 ? (location.host && document.querySelector(\"base\") ? base : base.slice(hashIndex)) + to : createBaseLocation() + base + to;\n\t\t\ttry {\n\t\t\t\thistory[replace ? \"replaceState\" : \"pushState\"](state, \"\", url);\n\t\t\t\thistoryState.value = state;\n\t\t\t} catch (err) {\n\t\t\t\tdiagnostics.VUE_ROUTER_R0120({ cause: err });\n\t\t\t\tlocation[replace ? \"replace\" : \"assign\"](url);\n\t\t\t}\n\t\t}\n\t\tfunction replace(to, data) {\n\t\t\tchangeLocation(to, assign({}, history.state, buildState(historyState.value.back, to, historyState.value.forward, true), data, { position: historyState.value.position }), true);\n\t\t\tcurrentLocation.value = to;\n\t\t}\n\t\tfunction push(to, data) {\n\t\t\tconst currentState = assign({}, historyState.value, history.state, {\n\t\t\t\tforward: to,\n\t\t\t\tscroll: computeScrollPosition()\n\t\t\t});\n\t\t\tif (!history.state) diagnostics.VUE_ROUTER_R0121();\n\t\t\tchangeLocation(currentState.current, currentState, true);\n\t\t\tchangeLocation(to, assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data), false);\n\t\t\tcurrentLocation.value = to;\n\t\t}\n\t\treturn {\n\t\t\tlocation: currentLocation,\n\t\t\tstate: historyState,\n\t\t\tpush,\n\t\t\treplace\n\t\t};\n\t}\n\t/**\n\t* Creates an HTML5 history. Most common history for single page applications.\n\t*\n\t* @param base -\n\t*/\n\tfunction createWebHistory(base) {\n\t\tbase = normalizeBase(base);\n\t\tconst historyNavigation = useHistoryStateNavigation(base);\n\t\tconst historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace);\n\t\tfunction go(delta, triggerListeners = true) {\n\t\t\tif (!triggerListeners) historyListeners.pauseListeners();\n\t\t\thistory.go(delta);\n\t\t}\n\t\tconst routerHistory = assign({\n\t\t\tlocation: \"\",\n\t\t\tbase,\n\t\t\tgo,\n\t\t\tcreateHref: createHref.bind(null, base)\n\t\t}, historyNavigation, historyListeners);\n\t\tObject.defineProperty(routerHistory, \"location\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => historyNavigation.location.value\n\t\t});\n\t\tObject.defineProperty(routerHistory, \"state\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => historyNavigation.state.value\n\t\t});\n\t\treturn routerHistory;\n\t}\n\t//#endregion\n\t//#region src/history/hash.ts\n\t/**\n\t* Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to\n\t* handle any URL is not possible.\n\t*\n\t* @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag\n\t* in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState()\n\t* calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything\n\t* after the `#`).\n\t*\n\t* @example\n\t* ```js\n\t* // at https://example.com/folder\n\t* createWebHashHistory() // gives a url of `https://example.com/folder#`\n\t* createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#`\n\t* // if the `#` is provided in the base, it won't be added by `createWebHashHistory`\n\t* createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/`\n\t* // you should avoid doing this because it changes the original url and breaks copying urls\n\t* createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#`\n\t*\n\t* // at file:///usr/etc/folder/index.html\n\t* // for locations with no `host`, the base is ignored\n\t* createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#`\n\t* ```\n\t*/\n\tfunction createWebHashHistory(base) {\n\t\tbase = location.host ? base || location.pathname + location.search : \"\";\n\t\tif (!base.includes(\"#\")) base += \"#\";\n\t\tif (!base.endsWith(\"#/\") && !base.endsWith(\"#\")) diagnostics.VUE_ROUTER_R0110({\n\t\t\tbase,\n\t\t\tsuggestion: base.replace(/#.*$/, \"#\")\n\t\t});\n\t\treturn createWebHistory(base);\n\t}\n\t//#endregion\n\t//#region src/history/memory.ts\n\t/**\n\t* Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere.\n\t* It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`.\n\t*\n\t* @param base - Base applied to all urls, defaults to '/'\n\t* @returns a history object that can be passed to the router constructor\n\t*/\n\tfunction createMemoryHistory(base = \"\") {\n\t\tlet listeners = [];\n\t\tlet queue = [[\"\", {}]];\n\t\tlet position = 0;\n\t\tbase = normalizeBase(base);\n\t\tfunction setLocation(location, state = {}) {\n\t\t\tposition++;\n\t\t\tif (position !== queue.length) queue.splice(position);\n\t\t\tqueue.push([location, state]);\n\t\t}\n\t\tfunction triggerListeners(to, from, { direction, delta }) {\n\t\t\tconst info = {\n\t\t\t\tdirection,\n\t\t\t\tdelta,\n\t\t\t\ttype: \"pop\"\n\t\t\t};\n\t\t\tfor (const callback of listeners) callback(to, from, info);\n\t\t}\n\t\tconst routerHistory = {\n\t\t\tlocation: \"\",\n\t\t\tstate: {},\n\t\t\tbase,\n\t\t\tcreateHref: createHref.bind(null, base),\n\t\t\treplace(to, state) {\n\t\t\t\tqueue.splice(position--, 1);\n\t\t\t\tsetLocation(to, state);\n\t\t\t},\n\t\t\tpush(to, state) {\n\t\t\t\tsetLocation(to, state);\n\t\t\t},\n\t\t\tlisten(callback) {\n\t\t\t\tlisteners.push(callback);\n\t\t\t\treturn () => {\n\t\t\t\t\tconst index = listeners.indexOf(callback);\n\t\t\t\t\tif (index > -1) listeners.splice(index, 1);\n\t\t\t\t};\n\t\t\t},\n\t\t\tdestroy() {\n\t\t\t\tlisteners = [];\n\t\t\t\tqueue = [[\"\", {}]];\n\t\t\t\tposition = 0;\n\t\t\t},\n\t\t\tgo(delta, shouldTrigger = true) {\n\t\t\t\tconst from = this.location;\n\t\t\t\tconst direction = delta < 0 ? \"back\" : \"forward\";\n\t\t\t\tposition = Math.max(0, Math.min(position + delta, queue.length - 1));\n\t\t\t\tif (shouldTrigger) triggerListeners(this.location, from, {\n\t\t\t\t\tdirection,\n\t\t\t\t\tdelta\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tObject.defineProperty(routerHistory, \"location\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => queue[position][0]\n\t\t});\n\t\tObject.defineProperty(routerHistory, \"state\", {\n\t\t\tenumerable: true,\n\t\t\tget: () => queue[position][1]\n\t\t});\n\t\treturn routerHistory;\n\t}\n\t//#endregion\n\t//#region src/types/typeGuards.ts\n\tfunction isRouteLocation(route) {\n\t\treturn typeof route === \"string\" || route && typeof route === \"object\";\n\t}\n\tfunction isRouteName(name) {\n\t\treturn typeof name === \"string\" || typeof name === \"symbol\";\n\t}\n\t//#endregion\n\t//#region src/matcher/pathTokenizer.ts\n\tconst ROOT_TOKEN = {\n\t\ttype: 0,\n\t\tvalue: \"\"\n\t};\n\tconst VALID_PARAM_RE = /[a-zA-Z0-9_]/;\n\tfunction tokenizePath(path) {\n\t\tif (!path) return [[]];\n\t\tif (path === \"/\") return [[ROOT_TOKEN]];\n\t\tif (!path.startsWith(\"/\")) throw new Error(`Route paths should start with a \"/\": \"${path}\" should be \"/${path}\".`);\n\t\tfunction crash(message) {\n\t\t\tthrow new Error(`ERR (${state})/\"${buffer}\": ${message}`);\n\t\t}\n\t\tlet state = 0;\n\t\tlet previousState = state;\n\t\tconst tokens = [];\n\t\tlet segment;\n\t\tfunction finalizeSegment() {\n\t\t\tif (segment) tokens.push(segment);\n\t\t\tsegment = [];\n\t\t}\n\t\tlet i = 0;\n\t\tlet char;\n\t\tlet buffer = \"\";\n\t\tlet customRe = \"\";\n\t\tfunction consumeBuffer() {\n\t\t\tif (!buffer) return;\n\t\t\tif (state === 0) segment.push({\n\t\t\t\ttype: 0,\n\t\t\t\tvalue: buffer\n\t\t\t});\n\t\t\telse if (state === 1 || state === 2 || state === 3) {\n\t\t\t\tif (segment.length > 1 && (char === \"*\" || char === \"+\")) crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`);\n\t\t\t\tsegment.push({\n\t\t\t\t\ttype: 1,\n\t\t\t\t\tvalue: buffer,\n\t\t\t\t\tregexp: customRe,\n\t\t\t\t\trepeatable: char === \"*\" || char === \"+\",\n\t\t\t\t\toptional: char === \"*\" || char === \"?\"\n\t\t\t\t});\n\t\t\t} else crash(\"Invalid state to consume buffer\");\n\t\t\tbuffer = \"\";\n\t\t}\n\t\tfunction addCharToBuffer() {\n\t\t\tbuffer += char;\n\t\t}\n\t\twhile (i < path.length) {\n\t\t\tchar = path[i++];\n\t\t\tswitch (state) {\n\t\t\t\tcase 0:\n\t\t\t\t\tif (char === \"\\\\\") {\n\t\t\t\t\t\tpreviousState = state;\n\t\t\t\t\t\tstate = 4;\n\t\t\t\t\t} else if (char === \"/\") {\n\t\t\t\t\t\tif (buffer) consumeBuffer();\n\t\t\t\t\t\tfinalizeSegment();\n\t\t\t\t\t} else if (char === \":\") {\n\t\t\t\t\t\tconsumeBuffer();\n\t\t\t\t\t\tstate = 1;\n\t\t\t\t\t} else addCharToBuffer();\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\taddCharToBuffer();\n\t\t\t\t\tstate = previousState;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 1:\n\t\t\t\t\tif (char === \"(\") state = 2;\n\t\t\t\t\telse if (VALID_PARAM_RE.test(char)) addCharToBuffer();\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsumeBuffer();\n\t\t\t\t\t\tstate = 0;\n\t\t\t\t\t\tif (char !== \"*\" && char !== \"?\" && char !== \"+\") i--;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 2:\n\t\t\t\t\tif (char === \")\") if (customRe[customRe.length - 1] == \"\\\\\") customRe = customRe.slice(0, -1) + char;\n\t\t\t\t\telse state = 3;\n\t\t\t\t\telse customRe += char;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 3:\n\t\t\t\t\tconsumeBuffer();\n\t\t\t\t\tstate = 0;\n\t\t\t\t\tif (char !== \"*\" && char !== \"?\" && char !== \"+\") i--;\n\t\t\t\t\tcustomRe = \"\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcrash(\"Unknown state\");\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (state === 2) crash(`Unfinished custom RegExp for param \"${buffer}\"`);\n\t\tconsumeBuffer();\n\t\tfinalizeSegment();\n\t\treturn tokens;\n\t}\n\t//#endregion\n\t//#region src/matcher/pathParserRanker.ts\n\tconst BASE_PARAM_PATTERN = \"[^/]+?\";\n\tconst BASE_PATH_PARSER_OPTIONS = {\n\t\tsensitive: false,\n\t\tstrict: false,\n\t\tstart: true,\n\t\tend: true\n\t};\n\tconst REGEX_CHARS_RE = /[.+*?^${}()[\\]/\\\\]/g;\n\t/**\n\t* Creates a path parser from an array of Segments (a segment is an array of Tokens)\n\t*\n\t* @param segments - array of segments returned by tokenizePath\n\t* @param extraOptions - optional options for the regexp\n\t* @returns a PathParser\n\t*/\n\tfunction tokensToParser(segments, extraOptions) {\n\t\tconst options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions);\n\t\tconst score = [];\n\t\tlet pattern = options.start ? \"^\" : \"\";\n\t\tconst keys = [];\n\t\tfor (const segment of segments) {\n\t\t\tconst segmentScores = segment.length ? [] : [90];\n\t\t\tif (options.strict && !segment.length) pattern += \"/\";\n\t\t\tfor (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) {\n\t\t\t\tconst token = segment[tokenIndex];\n\t\t\t\tlet subSegmentScore = 40 + (options.sensitive ? .25 : 0);\n\t\t\t\tif (token.type === 0) {\n\t\t\t\t\tif (!tokenIndex) pattern += \"/\";\n\t\t\t\t\tpattern += token.value.replace(REGEX_CHARS_RE, \"\\\\$&\");\n\t\t\t\t\tsubSegmentScore += 40;\n\t\t\t\t} else if (token.type === 1) {\n\t\t\t\t\tconst { value, repeatable, optional, regexp } = token;\n\t\t\t\t\tkeys.push({\n\t\t\t\t\t\tname: value,\n\t\t\t\t\t\trepeatable,\n\t\t\t\t\t\toptional\n\t\t\t\t\t});\n\t\t\t\t\tconst re = regexp ? regexp : BASE_PARAM_PATTERN;\n\t\t\t\t\tif (re !== BASE_PARAM_PATTERN) {\n\t\t\t\t\t\tsubSegmentScore += 10;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tnew RegExp(`(${re})`);\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\tthrow new Error(`Invalid custom RegExp for param \"${value}\" (${re}): ` + err.message);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`;\n\t\t\t\t\tif (!tokenIndex) subPattern = optional && segment.length < 2 ? `(?:/${subPattern})` : \"/\" + subPattern;\n\t\t\t\t\tif (optional) subPattern += \"?\";\n\t\t\t\t\tpattern += subPattern;\n\t\t\t\t\tsubSegmentScore += 20;\n\t\t\t\t\tif (optional) subSegmentScore += -8;\n\t\t\t\t\tif (repeatable) subSegmentScore += -20;\n\t\t\t\t\tif (re === \".*\") subSegmentScore += -50;\n\t\t\t\t}\n\t\t\t\tsegmentScores.push(subSegmentScore);\n\t\t\t}\n\t\t\tscore.push(segmentScores);\n\t\t}\n\t\tif (options.strict && options.end) {\n\t\t\tconst i = score.length - 1;\n\t\t\tscore[i][score[i].length - 1] += .7000000000000001;\n\t\t}\n\t\tif (!options.strict) pattern += \"/?\";\n\t\tif (options.end) pattern += \"$\";\n\t\telse if (options.strict && !pattern.endsWith(\"/\")) pattern += \"(?:/|$)\";\n\t\tconst re = new RegExp(pattern, options.sensitive ? \"\" : \"i\");\n\t\tfunction parse(path) {\n\t\t\tconst match = path.match(re);\n\t\t\tconst params = {};\n\t\t\tif (!match) return null;\n\t\t\tfor (let i = 1; i < match.length; i++) {\n\t\t\t\tconst value = match[i] || \"\";\n\t\t\t\tconst key = keys[i - 1];\n\t\t\t\tparams[key.name] = value && key.repeatable ? value.split(\"/\") : value;\n\t\t\t}\n\t\t\treturn params;\n\t\t}\n\t\tfunction stringify(params) {\n\t\t\tlet path = \"\";\n\t\t\tlet avoidDuplicatedSlash = false;\n\t\t\tfor (const segment of segments) {\n\t\t\t\tif (!avoidDuplicatedSlash || !path.endsWith(\"/\")) path += \"/\";\n\t\t\t\tavoidDuplicatedSlash = false;\n\t\t\t\tfor (const token of segment) if (token.type === 0) path += token.value;\n\t\t\t\telse if (token.type === 1) {\n\t\t\t\t\tconst { value, repeatable, optional } = token;\n\t\t\t\t\tconst param = value in params ? params[value] : \"\";\n\t\t\t\t\tif (isArray(param) && !repeatable) throw new Error(`Provided param \"${value}\" is an array but it is not repeatable (* or + modifiers)`);\n\t\t\t\t\tconst text = isArray(param) ? param.join(\"/\") : param;\n\t\t\t\t\tif (!text) if (optional) {\n\t\t\t\t\t\tif (segment.length < 2) if (path.endsWith(\"/\")) path = path.slice(0, -1);\n\t\t\t\t\t\telse avoidDuplicatedSlash = true;\n\t\t\t\t\t} else throw new Error(`Missing required param \"${value}\"`);\n\t\t\t\t\tpath += text;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn path || \"/\";\n\t\t}\n\t\treturn {\n\t\t\tre,\n\t\t\tscore,\n\t\t\tkeys,\n\t\t\tparse,\n\t\t\tstringify\n\t\t};\n\t}\n\t/**\n\t* Compares an array of numbers as used in PathParser.score and returns a\n\t* number. This function can be used to `sort` an array\n\t*\n\t* @param a - first array of numbers\n\t* @param b - second array of numbers\n\t* @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n\t* should be sorted first\n\t*/\n\tfunction compareScoreArray(a, b) {\n\t\tlet i = 0;\n\t\twhile (i < a.length && i < b.length) {\n\t\t\tconst diff = b[i] - a[i];\n\t\t\tif (diff) return diff;\n\t\t\ti++;\n\t\t}\n\t\tif (a.length < b.length) return a.length === 1 && a[0] === 80 ? -1 : 1;\n\t\telse if (a.length > b.length) return b.length === 1 && b[0] === 80 ? 1 : -1;\n\t\treturn 0;\n\t}\n\t/**\n\t* Compare function that can be used with `sort` to sort an array of PathParser\n\t*\n\t* @param a - first PathParser\n\t* @param b - second PathParser\n\t* @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b\n\t*/\n\tfunction comparePathParserScore(a, b) {\n\t\tlet i = 0;\n\t\tconst aScore = a.score;\n\t\tconst bScore = b.score;\n\t\twhile (i < aScore.length && i < bScore.length) {\n\t\t\tconst comp = compareScoreArray(aScore[i], bScore[i]);\n\t\t\tif (comp) return comp;\n\t\t\ti++;\n\t\t}\n\t\tif (Math.abs(bScore.length - aScore.length) === 1) {\n\t\t\tif (isLastScoreNegative(aScore)) return 1;\n\t\t\tif (isLastScoreNegative(bScore)) return -1;\n\t\t}\n\t\treturn bScore.length - aScore.length;\n\t}\n\t/**\n\t* This allows detecting splats at the end of a path: /home/:id(.*)*\n\t*\n\t* @param score - score to check\n\t* @returns true if the last entry is negative\n\t*/\n\tfunction isLastScoreNegative(score) {\n\t\tconst last = score[score.length - 1];\n\t\treturn score.length > 0 && last[last.length - 1] < 0;\n\t}\n\tconst PATH_PARSER_OPTIONS_DEFAULTS = {\n\t\tstrict: false,\n\t\tend: true,\n\t\tsensitive: false\n\t};\n\t//#endregion\n\t//#region src/matcher/pathMatcher.ts\n\tfunction createRouteRecordMatcher(record, parent, options) {\n\t\tconst parser = tokensToParser(tokenizePath(record.path), options);\n\t\t{\n\t\t\tconst existingKeys = /* @__PURE__ */ new Set();\n\t\t\tfor (const key of parser.keys) {\n\t\t\t\tif (existingKeys.has(key.name)) diagnostics.VUE_ROUTER_R0090({\n\t\t\t\t\tname: key.name,\n\t\t\t\t\tpath: record.path\n\t\t\t\t});\n\t\t\t\texistingKeys.add(key.name);\n\t\t\t}\n\t\t}\n\t\tconst matcher = assign(parser, {\n\t\t\trecord,\n\t\t\tparent,\n\t\t\tchildren: [],\n\t\t\talias: []\n\t\t});\n\t\tif (parent) {\n\t\t\tif (!matcher.record.aliasOf === !parent.record.aliasOf) parent.children.push(matcher);\n\t\t}\n\t\treturn matcher;\n\t}\n\t//#endregion\n\t//#region src/matcher/index.ts\n\t/**\n\t* Creates a Router Matcher.\n\t*\n\t* @internal\n\t* @param routes - array of initial routes\n\t* @param globalOptions - global route options\n\t*/\n\tfunction createRouterMatcher(routes, globalOptions) {\n\t\tconst matchers = [];\n\t\tconst matcherMap = /* @__PURE__ */ new Map();\n\t\tglobalOptions = mergeOptions(PATH_PARSER_OPTIONS_DEFAULTS, globalOptions);\n\t\tfunction getRecordMatcher(name) {\n\t\t\treturn matcherMap.get(name);\n\t\t}\n\t\tfunction addRoute(record, parent, originalRecord) {\n\t\t\tconst isRootAdd = !originalRecord;\n\t\t\tconst mainNormalizedRecord = normalizeRouteRecord(record);\n\t\t\tcheckChildMissingNameWithEmptyPath(mainNormalizedRecord, parent);\n\t\t\tmainNormalizedRecord.aliasOf = originalRecord && originalRecord.record;\n\t\t\tconst options = mergeOptions(globalOptions, record);\n\t\t\tconst normalizedRecords = [mainNormalizedRecord];\n\t\t\tif (\"alias\" in record) {\n\t\t\t\tconst aliases = typeof record.alias === \"string\" ? [record.alias] : record.alias;\n\t\t\t\tfor (const alias of aliases) normalizedRecords.push(normalizeRouteRecord(assign({}, mainNormalizedRecord, {\n\t\t\t\t\tcomponents: originalRecord ? originalRecord.record.components : mainNormalizedRecord.components,\n\t\t\t\t\tpath: alias,\n\t\t\t\t\taliasOf: originalRecord ? originalRecord.record : mainNormalizedRecord\n\t\t\t\t})));\n\t\t\t}\n\t\t\tlet matcher;\n\t\t\tlet originalMatcher;\n\t\t\tfor (const normalizedRecord of normalizedRecords) {\n\t\t\t\tconst { path } = normalizedRecord;\n\t\t\t\tif (parent && path[0] !== \"/\") {\n\t\t\t\t\tconst parentPath = parent.record.path;\n\t\t\t\t\tconst connectingSlash = parentPath[parentPath.length - 1] === \"/\" ? \"\" : \"/\";\n\t\t\t\t\tnormalizedRecord.path = parent.record.path + (path && connectingSlash + path);\n\t\t\t\t}\n\t\t\t\tif (normalizedRecord.path === \"*\") throw new Error(\"Catch all routes (\\\"*\\\") must now be defined using a param with a custom regexp.\\nSee more at https://router.vuejs.org/guide/migration/#Removed-star-or-catch-all-routes.\");\n\t\t\t\tmatcher = createRouteRecordMatcher(normalizedRecord, parent, options);\n\t\t\t\tif (parent && path[0] === \"/\") checkMissingParamsInAbsolutePath(matcher, parent);\n\t\t\t\tif (originalRecord) {\n\t\t\t\t\toriginalRecord.alias.push(matcher);\n\t\t\t\t\tcheckSameParams(originalRecord, matcher);\n\t\t\t\t} else {\n\t\t\t\t\toriginalMatcher = originalMatcher || matcher;\n\t\t\t\t\tif (originalMatcher !== matcher) originalMatcher.alias.push(matcher);\n\t\t\t\t\tif (isRootAdd && record.name && !isAliasRecord(matcher)) {\n\t\t\t\t\t\tcheckSameNameAsAncestor(record, parent);\n\t\t\t\t\t\tremoveRoute(record.name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isMatchable(matcher)) insertMatcher(matcher);\n\t\t\t\tif (mainNormalizedRecord.children) {\n\t\t\t\t\tconst children = mainNormalizedRecord.children;\n\t\t\t\t\tfor (let i = 0; i < children.length; i++) addRoute(children[i], matcher, originalRecord && originalRecord.children[i]);\n\t\t\t\t}\n\t\t\t\toriginalRecord = originalRecord || matcher;\n\t\t\t}\n\t\t\treturn originalMatcher ? () => {\n\t\t\t\tremoveRoute(originalMatcher);\n\t\t\t} : noop;\n\t\t}\n\t\tfunction removeRoute(matcherRef) {\n\t\t\tif (isRouteName(matcherRef)) {\n\t\t\t\tconst matcher = matcherMap.get(matcherRef);\n\t\t\t\tif (matcher) {\n\t\t\t\t\tmatcherMap.delete(matcherRef);\n\t\t\t\t\tmatchers.splice(matchers.indexOf(matcher), 1);\n\t\t\t\t\tmatcher.children.forEach(removeRoute);\n\t\t\t\t\tmatcher.alias.forEach(removeRoute);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst index = matchers.indexOf(matcherRef);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\tmatchers.splice(index, 1);\n\t\t\t\t\tif (matcherRef.record.name) matcherMap.delete(matcherRef.record.name);\n\t\t\t\t\tmatcherRef.children.forEach(removeRoute);\n\t\t\t\t\tmatcherRef.alias.forEach(removeRoute);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfunction getRoutes() {\n\t\t\treturn matchers;\n\t\t}\n\t\tfunction insertMatcher(matcher) {\n\t\t\tconst index = findInsertionIndex(matcher, matchers);\n\t\t\tmatchers.splice(index, 0, matcher);\n\t\t\tif (matcher.record.name && !isAliasRecord(matcher)) matcherMap.set(matcher.record.name, matcher);\n\t\t}\n\t\tfunction resolve(location, currentLocation) {\n\t\t\tlet matcher;\n\t\t\tlet params = {};\n\t\t\tlet path;\n\t\t\tlet name;\n\t\t\tif (\"name\" in location && location.name) {\n\t\t\t\tmatcher = matcherMap.get(location.name);\n\t\t\t\tif (!matcher) throw createRouterError(1, { location });\n\t\t\t\t{\n\t\t\t\t\tconst invalidParams = Object.keys(location.params || {}).filter((paramName) => !matcher.keys.find((k) => k.name === paramName));\n\t\t\t\t\tif (invalidParams.length) {\n\t\t\t\t\t\tconst isInherited = !matcher.keys.length && invalidParams.some((name) => name in currentLocation.params);\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0100({\n\t\t\t\t\t\t\tparams: invalidParams.join(\"\\\", \\\"\"),\n\t\t\t\t\t\t\tinherited: isInherited ? ` If you are using a catch-all route with a named redirect, pass an empty \\`params\\` object: \\`redirect: { name: '...', params: {} }\\`.` : \"\"\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tname = matcher.record.name;\n\t\t\t\tparams = assign(pickParams(currentLocation.params, matcher.keys.filter((k) => !k.optional).concat(matcher.parent ? matcher.parent.keys.filter((k) => k.optional) : []).map((k) => k.name)), location.params && pickParams(location.params, matcher.keys.map((k) => k.name)));\n\t\t\t\tpath = matcher.stringify(params);\n\t\t\t} else if (location.path != null) {\n\t\t\t\tpath = location.path;\n\t\t\t\tif (!path.startsWith(\"/\")) diagnostics.VUE_ROUTER_R0101({ path });\n\t\t\t\tmatcher = matchers.find((m) => m.re.test(path));\n\t\t\t\tif (matcher) {\n\t\t\t\t\tparams = matcher.parse(path);\n\t\t\t\t\tname = matcher.record.name;\n\t\t\t\t\tmatcher.keys.forEach((key) => {\n\t\t\t\t\t\tif (key.optional && !params[key.name]) delete params[key.name];\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmatcher = currentLocation.name ? matcherMap.get(currentLocation.name) : matchers.find((m) => m.re.test(currentLocation.path));\n\t\t\t\tif (!matcher) throw createRouterError(1, {\n\t\t\t\t\tlocation,\n\t\t\t\t\tcurrentLocation\n\t\t\t\t});\n\t\t\t\tname = matcher.record.name;\n\t\t\t\tparams = assign({}, currentLocation.params, location.params);\n\t\t\t\tpath = matcher.stringify(params);\n\t\t\t}\n\t\t\tconst matched = [];\n\t\t\tlet parentMatcher = matcher;\n\t\t\twhile (parentMatcher) {\n\t\t\t\tmatched.unshift(parentMatcher.record);\n\t\t\t\tparentMatcher = parentMatcher.parent;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tname,\n\t\t\t\tpath,\n\t\t\t\tparams,\n\t\t\t\tmatched,\n\t\t\t\tmeta: mergeMetaFields(matched)\n\t\t\t};\n\t\t}\n\t\troutes.forEach((route) => addRoute(route));\n\t\tfunction clearRoutes() {\n\t\t\tmatchers.length = 0;\n\t\t\tmatcherMap.clear();\n\t\t}\n\t\treturn {\n\t\t\taddRoute,\n\t\t\tresolve,\n\t\t\tremoveRoute,\n\t\t\tclearRoutes,\n\t\t\tgetRoutes,\n\t\t\tgetRecordMatcher\n\t\t};\n\t}\n\t/**\n\t* Picks an object param to contain only specified keys.\n\t*\n\t* @param params - params object to pick from\n\t* @param keys - keys to pick\n\t*/\n\tfunction pickParams(params, keys) {\n\t\tconst newParams = {};\n\t\tfor (const key of keys) if (key in params) newParams[key] = params[key];\n\t\treturn newParams;\n\t}\n\t/**\n\t* Normalizes a RouteRecordRaw. Creates a copy\n\t*\n\t* @param record\n\t* @returns the normalized version\n\t*/\n\tfunction normalizeRouteRecord(record) {\n\t\tconst normalized = {\n\t\t\tpath: record.path,\n\t\t\tredirect: record.redirect,\n\t\t\tname: record.name,\n\t\t\tmeta: record.meta || {},\n\t\t\taliasOf: record.aliasOf,\n\t\t\tbeforeEnter: record.beforeEnter,\n\t\t\tprops: normalizeRecordProps(record),\n\t\t\tchildren: record.children || [],\n\t\t\tinstances: {},\n\t\t\tleaveGuards: /* @__PURE__ */ new Set(),\n\t\t\tupdateGuards: /* @__PURE__ */ new Set(),\n\t\t\tenterCallbacks: {},\n\t\t\tcomponents: \"components\" in record ? record.components || null : record.component && { default: record.component }\n\t\t};\n\t\tObject.defineProperty(normalized, \"mods\", { value: {} });\n\t\treturn normalized;\n\t}\n\t/**\n\t* Normalize the optional `props` in a record to always be an object similar to\n\t* components. Also accept a boolean for components.\n\t* @param record\n\t*/\n\tfunction normalizeRecordProps(record) {\n\t\tconst propsObject = {};\n\t\tconst props = record.props || false;\n\t\tif (\"component\" in record) propsObject.default = props;\n\t\telse for (const name in record.components) propsObject[name] = typeof props === \"object\" ? props[name] : props;\n\t\treturn propsObject;\n\t}\n\t/**\n\t* Checks if a record or any of its parent is an alias\n\t* @param record\n\t*/\n\tfunction isAliasRecord(record) {\n\t\twhile (record) {\n\t\t\tif (record.record.aliasOf) return true;\n\t\t\trecord = record.parent;\n\t\t}\n\t\treturn false;\n\t}\n\t/**\n\t* Merge meta fields of an array of records\n\t*\n\t* @param matched - array of matched records\n\t*/\n\tfunction mergeMetaFields(matched) {\n\t\treturn matched.reduce((meta, record) => assign(meta, record.meta), {});\n\t}\n\tfunction isSameParam(a, b) {\n\t\treturn a.name === b.name && a.optional === b.optional && a.repeatable === b.repeatable;\n\t}\n\t/**\n\t* Check if a path and its alias have the same required params\n\t*\n\t* @param a - original record\n\t* @param b - alias record\n\t*/\n\tfunction checkSameParams(a, b) {\n\t\tfor (const key of a.keys) if (!key.optional && !b.keys.find(isSameParam.bind(null, key))) {\n\t\t\tdiagnostics.VUE_ROUTER_R0102({\n\t\t\t\talias: b.record.path,\n\t\t\t\toriginal: a.record.path,\n\t\t\t\tname: key.name\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tfor (const key of b.keys) if (!key.optional && !a.keys.find(isSameParam.bind(null, key))) {\n\t\t\tdiagnostics.VUE_ROUTER_R0102({\n\t\t\t\talias: b.record.path,\n\t\t\t\toriginal: a.record.path,\n\t\t\t\tname: key.name\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t}\n\t/**\n\t* A route with a name and a child with an empty path without a name should warn when adding the route\n\t*\n\t* @param mainNormalizedRecord - RouteRecordNormalized\n\t* @param parent - RouteRecordMatcher\n\t*/\n\tfunction checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) {\n\t\tif (parent && parent.record.name && !mainNormalizedRecord.name && !mainNormalizedRecord.path && mainNormalizedRecord.children.length === 0) diagnostics.VUE_ROUTER_R0103({ name: String(parent.record.name) });\n\t}\n\tfunction checkSameNameAsAncestor(record, parent) {\n\t\tfor (let ancestor = parent; ancestor; ancestor = ancestor.parent) if (ancestor.record.name === record.name) throw new Error(`A route named \"${String(record.name)}\" has been added as a ${parent === ancestor ? \"child\" : \"descendant\"} of a route with the same name. Route names must be unique and a nested route cannot use the same name as an ancestor.`);\n\t}\n\tfunction checkMissingParamsInAbsolutePath(record, parent) {\n\t\tfor (const key of parent.keys) if (!record.keys.find(isSameParam.bind(null, key))) {\n\t\t\tdiagnostics.VUE_ROUTER_R0104({\n\t\t\t\tpath: record.record.path,\n\t\t\t\tname: key.name,\n\t\t\t\tparent: parent.record.path\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t}\n\t/**\n\t* Performs a binary search to find the correct insertion index for a new matcher.\n\t*\n\t* Matchers are primarily sorted by their score. If scores are tied then we also consider parent/child relationships,\n\t* with descendants coming before ancestors. If there's still a tie, new routes are inserted after existing routes.\n\t*\n\t* @param matcher - new matcher to be inserted\n\t* @param matchers - existing matchers\n\t*/\n\tfunction findInsertionIndex(matcher, matchers) {\n\t\tlet lower = 0;\n\t\tlet upper = matchers.length;\n\t\twhile (lower !== upper) {\n\t\t\tconst mid = lower + upper >> 1;\n\t\t\tif (comparePathParserScore(matcher, matchers[mid]) < 0) upper = mid;\n\t\t\telse lower = mid + 1;\n\t\t}\n\t\tconst insertionAncestor = getInsertionAncestor(matcher);\n\t\tif (insertionAncestor) {\n\t\t\tupper = matchers.lastIndexOf(insertionAncestor, upper - 1);\n\t\t\tif (upper < 0) diagnostics.VUE_ROUTER_R0105({\n\t\t\t\tancestor: insertionAncestor.record.path,\n\t\t\t\trecord: matcher.record.path\n\t\t\t});\n\t\t}\n\t\treturn upper;\n\t}\n\tfunction getInsertionAncestor(matcher) {\n\t\tlet ancestor = matcher;\n\t\twhile (ancestor = ancestor.parent) if (isMatchable(ancestor) && comparePathParserScore(matcher, ancestor) === 0) return ancestor;\n\t}\n\t/**\n\t* Checks if a matcher can be reachable. This means if it's possible to reach it as a route. For example, routes without\n\t* a component, or name, or redirect, are just used to group other routes.\n\t* @param matcher\n\t* @param matcher.record record of the matcher\n\t* @returns\n\t*/\n\tfunction isMatchable({ record }) {\n\t\treturn !!(record.name || record.components && Object.keys(record.components).length || record.redirect);\n\t}\n\t//#endregion\n\t//#region src/query.ts\n\t/**\n\t* Transforms a queryString into a {@link LocationQuery} object. Accept both, a\n\t* version with the leading `?` and without Should work as URLSearchParams\n\t\n\t* @internal\n\t*\n\t* @param search - search string to parse\n\t* @returns a query object\n\t*/\n\tfunction parseQuery(search) {\n\t\tconst query = {};\n\t\tif (search === \"\" || search === \"?\") return query;\n\t\tconst searchParams = (search[0] === \"?\" ? search.slice(1) : search).split(\"&\");\n\t\tfor (let i = 0; i < searchParams.length; ++i) {\n\t\t\tconst searchParam = searchParams[i].replace(PLUS_RE, \" \");\n\t\t\tconst eqPos = searchParam.indexOf(\"=\");\n\t\t\tconst key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos));\n\t\t\tconst value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1));\n\t\t\tif (key in query) {\n\t\t\t\tlet currentValue = query[key];\n\t\t\t\tif (!isArray(currentValue)) currentValue = query[key] = [currentValue];\n\t\t\t\tcurrentValue.push(value);\n\t\t\t} else query[key] = value;\n\t\t}\n\t\treturn query;\n\t}\n\t/**\n\t* Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it\n\t* doesn't prepend a `?`\n\t*\n\t* @internal\n\t*\n\t* @param query - query object to stringify\n\t* @returns string version of the query without the leading `?`\n\t*/\n\tfunction stringifyQuery(query) {\n\t\tlet search = \"\";\n\t\tfor (let key in query) {\n\t\t\tconst value = query[key];\n\t\t\tkey = encodeQueryKey(key);\n\t\t\tif (value == null) {\n\t\t\t\tif (value !== void 0) search += (search.length ? \"&\" : \"\") + key;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t(isArray(value) ? value.map((v) => v && encodeQueryValue(v)) : [value && encodeQueryValue(value)]).forEach((value) => {\n\t\t\t\tif (value !== void 0) {\n\t\t\t\t\tsearch += (search.length ? \"&\" : \"\") + key;\n\t\t\t\t\tif (value != null) search += \"=\" + value;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn search;\n\t}\n\t/**\n\t* Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting\n\t* numbers into strings, removing keys with an undefined value and replacing\n\t* undefined with null in arrays\n\t*\n\t* @param query - query object to normalize\n\t* @returns a normalized query object\n\t*/\n\tfunction normalizeQuery(query) {\n\t\tconst normalizedQuery = {};\n\t\tfor (const key in query) {\n\t\t\tconst value = query[key];\n\t\t\tif (value !== void 0) normalizedQuery[key] = isArray(value) ? value.map((v) => v == null ? null : \"\" + v) : value == null ? value : \"\" + value;\n\t\t}\n\t\treturn normalizedQuery;\n\t}\n\t//#endregion\n\t//#region src/injectionSymbols.ts\n\t/**\n\t* RouteRecord being rendered by the closest ancestor Router View. Used for\n\t* `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View\n\t* Location Matched\n\t*\n\t* @internal\n\t*/\n\tconst matchedRouteKey = Symbol(\"router view location matched\");\n\t/**\n\t* Allows overriding the router view depth to control which component in\n\t* `matched` is rendered. rvd stands for Router View Depth\n\t*\n\t* @internal\n\t*/\n\tconst viewDepthKey = Symbol(\"router view depth\");\n\t/**\n\t* Allows overriding the router instance returned by `useRouter` in tests. r\n\t* stands for router\n\t*\n\t* @internal\n\t*/\n\tconst routerKey = Symbol(\"router\");\n\t/**\n\t* Allows overriding the current route returned by `useRoute` in tests. rl\n\t* stands for route location\n\t*\n\t* @internal\n\t*/\n\tconst routeLocationKey = Symbol(\"route location\");\n\t/**\n\t* Allows overriding the current route used by router-view. Internally this is\n\t* used when the `route` prop is passed.\n\t*\n\t* @internal\n\t*/\n\tconst routerViewLocationKey = Symbol(\"router view location\");\n\t//#endregion\n\t//#region src/utils/callbacks.ts\n\t/**\n\t* Create a list of callbacks that can be reset. Used to create before and after navigation guards list\n\t*/\n\tfunction useCallbacks() {\n\t\tlet handlers = [];\n\t\tfunction add(handler) {\n\t\t\thandlers.push(handler);\n\t\t\treturn () => {\n\t\t\t\tconst i = handlers.indexOf(handler);\n\t\t\t\tif (i > -1) handlers.splice(i, 1);\n\t\t\t};\n\t\t}\n\t\tfunction reset() {\n\t\t\thandlers = [];\n\t\t}\n\t\treturn {\n\t\t\tadd,\n\t\t\tlist: () => handlers.slice(),\n\t\t\treset\n\t\t};\n\t}\n\t//#endregion\n\t//#region src/navigationGuards.ts\n\tfunction registerGuard(activeRecordRef, name, guard) {\n\t\tconst record = activeRecordRef.value;\n\t\tif (!record) {\n\t\t\t{\n\t\t\t\tconst fnName = name === \"updateGuards\" ? \"onBeforeRouteUpdate\" : \"onBeforeRouteLeave\";\n\t\t\t\tdiagnostics.VUE_ROUTER_R0020({ fn: fnName });\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\tlet currentRecord = record;\n\t\tconst removeFromList = () => {\n\t\t\tcurrentRecord[name].delete(guard);\n\t\t};\n\t\t(0, vue.onUnmounted)(removeFromList);\n\t\t(0, vue.onDeactivated)(removeFromList);\n\t\t(0, vue.onActivated)(() => {\n\t\t\tconst newRecord = activeRecordRef.value;\n\t\t\tif (!newRecord) diagnostics.VUE_ROUTER_R0021();\n\t\t\tif (newRecord) currentRecord = newRecord;\n\t\t\tcurrentRecord[name].add(guard);\n\t\t});\n\t\tcurrentRecord[name].add(guard);\n\t}\n\t/**\n\t* Add a navigation guard that triggers whenever the component for the current\n\t* location is about to be left. Similar to {@link beforeRouteLeave} but can be\n\t* used in any component. The guard is removed when the component is unmounted.\n\t*\n\t* @param leaveGuard - {@link NavigationGuard}\n\t*/\n\tfunction onBeforeRouteLeave(leaveGuard) {\n\t\tif (!(0, vue.getCurrentInstance)()) {\n\t\t\tdiagnostics.VUE_ROUTER_R0022({ fn: \"onBeforeRouteLeave\" });\n\t\t\treturn;\n\t\t}\n\t\tregisterGuard((0, vue.inject)(matchedRouteKey, {}), \"leaveGuards\", leaveGuard);\n\t}\n\t/**\n\t* Add a navigation guard that triggers whenever the current location is about\n\t* to be updated. Similar to {@link beforeRouteUpdate} but can be used in any\n\t* component. The guard is removed when the component is unmounted.\n\t*\n\t* @param updateGuard - {@link NavigationGuard}\n\t*/\n\tfunction onBeforeRouteUpdate(updateGuard) {\n\t\tif (!(0, vue.getCurrentInstance)()) {\n\t\t\tdiagnostics.VUE_ROUTER_R0022({ fn: \"onBeforeRouteUpdate\" });\n\t\t\treturn;\n\t\t}\n\t\tregisterGuard((0, vue.inject)(matchedRouteKey, {}), \"updateGuards\", updateGuard);\n\t}\n\tfunction guardToPromiseFn(guard, to, from, record, name, runWithContext = (fn) => fn()) {\n\t\tconst enterCallbackArray = record && (record.enterCallbacks[name] = record.enterCallbacks[name] || []);\n\t\treturn () => new Promise((resolve, reject) => {\n\t\t\tconst next = (valid) => {\n\t\t\t\tif (valid === false) reject(createRouterError(4, {\n\t\t\t\t\tfrom,\n\t\t\t\t\tto\n\t\t\t\t}));\n\t\t\t\telse if (valid instanceof Error) reject(valid);\n\t\t\t\telse if (isRouteLocation(valid)) reject(createRouterError(2, {\n\t\t\t\t\tfrom: to,\n\t\t\t\t\tto: valid\n\t\t\t\t}));\n\t\t\t\telse {\n\t\t\t\t\tif (enterCallbackArray && record.enterCallbacks[name] === enterCallbackArray && typeof valid === \"function\") enterCallbackArray.push(valid);\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst guardReturn = runWithContext(() => guard.call(record && record.instances[name], to, from, withDeprecationWarning(canOnlyBeCalledOnce(next, to, from))));\n\t\t\tlet guardCall = Promise.resolve(guardReturn);\n\t\t\tif (guard.length < 3) guardCall = guardCall.then(next);\n\t\t\tif (guard.length > 2) {\n\t\t\t\tconst guardInfo = {\n\t\t\t\t\tname: guard.name,\n\t\t\t\t\tguard: guard.toString()\n\t\t\t\t};\n\t\t\t\tif (typeof guardReturn === \"object\" && \"then\" in guardReturn) guardCall = guardCall.then((resolvedValue) => {\n\t\t\t\t\tif (!next._called) {\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0023(guardInfo);\n\t\t\t\t\t\treturn Promise.reject(/* @__PURE__ */ new Error(\"Invalid navigation guard\"));\n\t\t\t\t\t}\n\t\t\t\t\treturn resolvedValue;\n\t\t\t\t});\n\t\t\t\telse if (guardReturn !== void 0) {\n\t\t\t\t\tif (!next._called) {\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0023(guardInfo);\n\t\t\t\t\t\treject(/* @__PURE__ */ new Error(\"Invalid navigation guard\"));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tguardCall.catch((err) => reject(err));\n\t\t});\n\t}\n\t/**\n\t* Wraps the next callback to warn when it is used. Dev-only: when __DEV__ is\n\t* false (production builds), this branch is dead code and is stripped from the\n\t* bundle.\n\t*\n\t* @internal\n\t*/\n\tfunction withDeprecationWarning(next) {\n\t\tlet warned = false;\n\t\treturn function() {\n\t\t\tif (!warned) {\n\t\t\t\twarned = true;\n\t\t\t\tdiagnostics.VUE_ROUTER_R0025();\n\t\t\t}\n\t\t\treturn next.apply(this, arguments);\n\t\t};\n\t}\n\tfunction canOnlyBeCalledOnce(next, to, from) {\n\t\tlet called = 0;\n\t\treturn function() {\n\t\t\tif (called++ === 1) diagnostics.VUE_ROUTER_R0024({\n\t\t\t\tfrom: from.fullPath,\n\t\t\t\tto: to.fullPath\n\t\t\t});\n\t\t\tnext._called = true;\n\t\t\tif (called === 1) next.apply(null, arguments);\n\t\t};\n\t}\n\tfunction extractComponentsGuards(matched, guardType, to, from, runWithContext = (fn) => fn()) {\n\t\tconst guards = [];\n\t\tfor (const record of matched) {\n\t\t\tif (!record.components && record.children && !record.children.length) diagnostics.VUE_ROUTER_R0026({ path: record.path });\n\t\t\tfor (const name in record.components) {\n\t\t\t\tlet rawComponent = record.components[name];\n\t\t\t\tif (!rawComponent || typeof rawComponent !== \"object\" && typeof rawComponent !== \"function\") {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0027({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path,\n\t\t\t\t\t\treceived: String(rawComponent)\n\t\t\t\t\t});\n\t\t\t\t\tthrow new Error(\"Invalid route component\");\n\t\t\t\t} else if (\"then\" in rawComponent) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0028({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path\n\t\t\t\t\t});\n\t\t\t\t\tconst promise = rawComponent;\n\t\t\t\t\trawComponent = () => promise;\n\t\t\t\t} else if (rawComponent.__asyncLoader && !rawComponent.__warnedDefineAsync) {\n\t\t\t\t\trawComponent.__warnedDefineAsync = true;\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0029({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath: record.path\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (guardType !== \"beforeRouteEnter\" && !record.instances[name]) continue;\n\t\t\t\tif (isRouteComponent(rawComponent)) {\n\t\t\t\t\tconst guard = (rawComponent.__vccOpts || rawComponent)[guardType];\n\t\t\t\t\tguard && guards.push(guardToPromiseFn(guard, to, from, record, name, runWithContext));\n\t\t\t\t} else {\n\t\t\t\t\tlet componentPromise = rawComponent();\n\t\t\t\t\tif (!(\"catch\" in componentPromise)) {\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0030({\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tpath: record.path\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcomponentPromise = Promise.resolve(componentPromise);\n\t\t\t\t\t}\n\t\t\t\t\tguards.push(() => componentPromise.then((resolved) => {\n\t\t\t\t\t\tif (!resolved) throw new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\"`);\n\t\t\t\t\t\tconst resolvedComponent = isESModule(resolved) ? resolved.default : resolved;\n\t\t\t\t\t\trecord.mods[name] = resolved;\n\t\t\t\t\t\trecord.components[name] = resolvedComponent;\n\t\t\t\t\t\tconst guard = (resolvedComponent.__vccOpts || resolvedComponent)[guardType];\n\t\t\t\t\t\treturn guard && guardToPromiseFn(guard, to, from, record, name, runWithContext)();\n\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn guards;\n\t}\n\t/**\n\t* Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`.\n\t*\n\t* @param route - resolved route to load\n\t*/\n\tfunction loadRouteLocation(route) {\n\t\treturn route.matched.every((record) => record.redirect) ? Promise.reject(/* @__PURE__ */ new Error(\"Cannot load a route that redirects.\")) : Promise.all(route.matched.map((record) => record.components && Promise.all(Object.keys(record.components).reduce((promises, name) => {\n\t\t\tconst rawComponent = record.components[name];\n\t\t\tif (typeof rawComponent === \"function\" && !(\"displayName\" in rawComponent)) promises.push(rawComponent().then((resolved) => {\n\t\t\t\tif (!resolved) return Promise.reject(/* @__PURE__ */ new Error(`Couldn't resolve component \"${name}\" at \"${record.path}\". Ensure you passed a function that returns a promise.`));\n\t\t\t\tconst resolvedComponent = isESModule(resolved) ? resolved.default : resolved;\n\t\t\t\trecord.mods[name] = resolved;\n\t\t\t\trecord.components[name] = resolvedComponent;\n\t\t\t}));\n\t\t\treturn promises;\n\t\t}, [])))).then(() => route);\n\t}\n\t/**\n\t* Split the leaving, updating, and entering records.\n\t* @internal\n\t*\n\t* @param  to - Location we are navigating to\n\t* @param from - Location we are navigating from\n\t*/\n\tfunction extractChangingRecords(to, from) {\n\t\tconst leavingRecords = [];\n\t\tconst updatingRecords = [];\n\t\tconst enteringRecords = [];\n\t\tconst len = Math.max(from.matched.length, to.matched.length);\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tconst recordFrom = from.matched[i];\n\t\t\tif (recordFrom) if (to.matched.find((record) => isSameRouteRecord(record, recordFrom))) updatingRecords.push(recordFrom);\n\t\t\telse leavingRecords.push(recordFrom);\n\t\t\tconst recordTo = to.matched[i];\n\t\t\tif (recordTo) {\n\t\t\t\tif (!from.matched.find((record) => isSameRouteRecord(record, recordTo))) enteringRecords.push(recordTo);\n\t\t\t}\n\t\t}\n\t\treturn [\n\t\t\tleavingRecords,\n\t\t\tupdatingRecords,\n\t\t\tenteringRecords\n\t\t];\n\t}\n\t//#endregion\n\t//#region src/RouterLink.ts\n\t/**\n\t* Returns the internal behavior of a {@link RouterLink} without the rendering part.\n\t*\n\t* @param props - a `to` location and an optional `replace` flag\n\t*/\n\tfunction useLink(props) {\n\t\tconst router = (0, vue.inject)(routerKey);\n\t\tconst currentRoute = (0, vue.inject)(routeLocationKey);\n\t\tlet hasPrevious = false;\n\t\tlet previousTo = null;\n\t\tconst route = (0, vue.computed)(() => {\n\t\t\tconst to = (0, vue.unref)(props.to);\n\t\t\tif (!hasPrevious || to !== previousTo) {\n\t\t\t\tif (!isRouteLocation(to)) diagnostics.VUE_ROUTER_R0050({ to });\n\t\t\t\tpreviousTo = to;\n\t\t\t\thasPrevious = true;\n\t\t\t}\n\t\t\treturn router.resolve(to);\n\t\t});\n\t\tconst activeRecordIndex = (0, vue.computed)(() => {\n\t\t\tconst { matched } = route.value;\n\t\t\tconst { length } = matched;\n\t\t\tconst routeMatched = matched[length - 1];\n\t\t\tconst currentMatched = currentRoute.matched;\n\t\t\tif (!routeMatched || !currentMatched.length) return -1;\n\t\t\tconst index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched));\n\t\t\tif (index > -1) return index;\n\t\t\tconst parentRecordPath = getOriginalPath(matched[length - 2]);\n\t\t\treturn length > 1 && getOriginalPath(routeMatched) === parentRecordPath && currentMatched[currentMatched.length - 1].path !== parentRecordPath ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) : index;\n\t\t});\n\t\tconst isActive = (0, vue.computed)(() => activeRecordIndex.value > -1 && includesParams(currentRoute.params, route.value.params));\n\t\tconst isExactActive = (0, vue.computed)(() => activeRecordIndex.value > -1 && activeRecordIndex.value === currentRoute.matched.length - 1 && isSameRouteLocationParams(currentRoute.params, route.value.params));\n\t\tfunction navigate(e = {}) {\n\t\t\tif (guardEvent(e)) {\n\t\t\t\tconst p = router[(0, vue.unref)(props.replace) ? \"replace\" : \"push\"]((0, vue.unref)(props.to)).catch(noop);\n\t\t\t\tif (props.viewTransition && typeof document !== \"undefined\" && \"startViewTransition\" in document) document.startViewTransition(() => p);\n\t\t\t\treturn p;\n\t\t\t}\n\t\t\treturn Promise.resolve();\n\t\t}\n\t\tif (isBrowser) {\n\t\t\tconst instance = (0, vue.getCurrentInstance)();\n\t\t\tif (instance) {\n\t\t\t\tconst linkContextDevtools = {\n\t\t\t\t\troute: route.value,\n\t\t\t\t\tisActive: isActive.value,\n\t\t\t\t\tisExactActive: isExactActive.value,\n\t\t\t\t\terror: null\n\t\t\t\t};\n\t\t\t\tinstance.__vrl_devtools = instance.__vrl_devtools || [];\n\t\t\t\tinstance.__vrl_devtools.push(linkContextDevtools);\n\t\t\t\t(0, vue.watchEffect)(() => {\n\t\t\t\t\tlinkContextDevtools.route = route.value;\n\t\t\t\t\tlinkContextDevtools.isActive = isActive.value;\n\t\t\t\t\tlinkContextDevtools.isExactActive = isExactActive.value;\n\t\t\t\t\tlinkContextDevtools.error = isRouteLocation((0, vue.unref)(props.to)) ? null : \"Invalid \\\"to\\\" value\";\n\t\t\t\t}, { flush: \"post\" });\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t* NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this\n\t\t*/\n\t\treturn {\n\t\t\troute,\n\t\t\thref: (0, vue.computed)(() => route.value.href),\n\t\t\tisActive,\n\t\t\tisExactActive,\n\t\t\tnavigate\n\t\t};\n\t}\n\tfunction preferSingleVNode(vnodes) {\n\t\treturn vnodes.length === 1 ? vnodes[0] : vnodes;\n\t}\n\t/**\n\t* Component to render a link that triggers a navigation on click.\n\t*/\n\tconst RouterLink = /* @__PURE__ */ (0, vue.defineComponent)({\n\t\tname: \"RouterLink\",\n\t\tcompatConfig: { MODE: 3 },\n\t\tprops: {\n\t\t\tto: {\n\t\t\t\ttype: [String, Object],\n\t\t\t\trequired: true\n\t\t\t},\n\t\t\treplace: Boolean,\n\t\t\tactiveClass: String,\n\t\t\texactActiveClass: String,\n\t\t\tcustom: Boolean,\n\t\t\tariaCurrentValue: {\n\t\t\t\ttype: String,\n\t\t\t\tdefault: \"page\"\n\t\t\t},\n\t\t\tviewTransition: Boolean\n\t\t},\n\t\tuseLink,\n\t\tsetup(props, { slots }) {\n\t\t\tconst link = (0, vue.reactive)(useLink(props));\n\t\t\tconst { options } = (0, vue.inject)(routerKey);\n\t\t\tconst elClass = (0, vue.computed)(() => ({\n\t\t\t\t[getLinkClass(props.activeClass, options.linkActiveClass, \"router-link-active\")]: link.isActive,\n\t\t\t\t[getLinkClass(props.exactActiveClass, options.linkExactActiveClass, \"router-link-exact-active\")]: link.isExactActive\n\t\t\t}));\n\t\t\treturn () => {\n\t\t\t\tconst children = slots.default && preferSingleVNode(slots.default(link));\n\t\t\t\treturn props.custom ? children : (0, vue.h)(\"a\", {\n\t\t\t\t\t\"aria-current\": link.isExactActive ? props.ariaCurrentValue : null,\n\t\t\t\t\thref: link.href,\n\t\t\t\t\tonClick: link.navigate,\n\t\t\t\t\tclass: elClass.value\n\t\t\t\t}, children);\n\t\t\t};\n\t\t}\n\t});\n\tfunction guardEvent(e) {\n\t\tif (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;\n\t\tif (e.defaultPrevented) return;\n\t\tif (e.button !== void 0 && e.button !== 0) return;\n\t\tif (e.currentTarget && e.currentTarget.getAttribute) {\n\t\t\tconst target = e.currentTarget.getAttribute(\"target\");\n\t\t\tif (/\\b_blank\\b/i.test(target)) return;\n\t\t}\n\t\tif (e.preventDefault) e.preventDefault();\n\t\treturn true;\n\t}\n\tfunction includesParams(outer, inner) {\n\t\tfor (const key in inner) {\n\t\t\tconst innerValue = inner[key];\n\t\t\tconst outerValue = outer[key];\n\t\t\tif (typeof innerValue === \"string\") {\n\t\t\t\tif (innerValue !== outerValue) return false;\n\t\t\t} else if (!isArray(outerValue) || outerValue.length !== innerValue.length || innerValue.some((value, i) => value.valueOf() !== outerValue[i].valueOf())) return false;\n\t\t}\n\t\treturn true;\n\t}\n\t/**\n\t* Get the original path value of a record by following its aliasOf\n\t* @param record\n\t*/\n\tfunction getOriginalPath(record) {\n\t\treturn record ? record.aliasOf ? record.aliasOf.path : record.path : \"\";\n\t}\n\t/**\n\t* Utility class to get the active class based on defaults.\n\t* @param propClass\n\t* @param globalClass\n\t* @param defaultClass\n\t*/\n\tconst getLinkClass = (propClass, globalClass, defaultClass) => propClass != null ? propClass : globalClass != null ? globalClass : defaultClass;\n\t//#endregion\n\t//#region src/RouterView.ts\n\tconst RouterViewImpl = /*#__PURE__*/ (0, vue.defineComponent)({\n\t\tname: \"RouterView\",\n\t\tinheritAttrs: false,\n\t\tprops: {\n\t\t\tname: {\n\t\t\t\ttype: String,\n\t\t\t\tdefault: \"default\"\n\t\t\t},\n\t\t\troute: Object\n\t\t},\n\t\tcompatConfig: { MODE: 3 },\n\t\tsetup(props, { attrs, slots }) {\n\t\t\twarnDeprecatedUsage();\n\t\t\tconst injectedRoute = (0, vue.inject)(routerViewLocationKey);\n\t\t\tconst routeToDisplay = (0, vue.computed)(() => props.route || injectedRoute.value);\n\t\t\tconst injectedDepth = (0, vue.inject)(viewDepthKey, 0);\n\t\t\tconst depth = (0, vue.computed)(() => {\n\t\t\t\tlet initialDepth = (0, vue.unref)(injectedDepth);\n\t\t\t\tconst { matched } = routeToDisplay.value;\n\t\t\t\tlet matchedRoute;\n\t\t\t\twhile ((matchedRoute = matched[initialDepth]) && !matchedRoute.components) initialDepth++;\n\t\t\t\treturn initialDepth;\n\t\t\t});\n\t\t\tconst matchedRouteRef = (0, vue.computed)(() => routeToDisplay.value.matched[depth.value]);\n\t\t\t(0, vue.provide)(viewDepthKey, (0, vue.computed)(() => depth.value + 1));\n\t\t\t(0, vue.provide)(matchedRouteKey, matchedRouteRef);\n\t\t\t(0, vue.provide)(routerViewLocationKey, routeToDisplay);\n\t\t\tconst viewRef = (0, vue.ref)();\n\t\t\t(0, vue.watch)(() => [\n\t\t\t\tviewRef.value,\n\t\t\t\tmatchedRouteRef.value,\n\t\t\t\tprops.name\n\t\t\t], ([instance, to, name], [oldInstance, from, _oldName]) => {\n\t\t\t\tif (to) {\n\t\t\t\t\tto.instances[name] = instance;\n\t\t\t\t\tif (from && from !== to && instance && instance === oldInstance) {\n\t\t\t\t\t\tif (!to.leaveGuards.size) to.leaveGuards = from.leaveGuards;\n\t\t\t\t\t\tif (!to.updateGuards.size) to.updateGuards = from.updateGuards;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (instance && to && (!from || !isSameRouteRecord(to, from) || !oldInstance)) (to.enterCallbacks[name] || []).forEach((callback) => callback(instance));\n\t\t\t}, { flush: \"post\" });\n\t\t\treturn () => {\n\t\t\t\tconst route = routeToDisplay.value;\n\t\t\t\tconst currentName = props.name;\n\t\t\t\tconst matchedRoute = matchedRouteRef.value;\n\t\t\t\tconst ViewComponent = matchedRoute && matchedRoute.components[currentName];\n\t\t\t\tif (!ViewComponent) return normalizeSlot(slots.default, {\n\t\t\t\t\tComponent: ViewComponent,\n\t\t\t\t\troute\n\t\t\t\t});\n\t\t\t\tconst routePropsOption = matchedRoute.props[currentName];\n\t\t\t\tconst routeProps = routePropsOption ? routePropsOption === true ? route.params : typeof routePropsOption === \"function\" ? routePropsOption(route) : routePropsOption : null;\n\t\t\t\tconst onVnodeUnmounted = (vnode) => {\n\t\t\t\t\tif (vnode.component.isUnmounted) matchedRoute.instances[currentName] = null;\n\t\t\t\t};\n\t\t\t\tconst component = (0, vue.h)(ViewComponent, assign({}, routeProps, attrs, {\n\t\t\t\t\tonVnodeUnmounted,\n\t\t\t\t\tref: viewRef\n\t\t\t\t}));\n\t\t\t\tif (isBrowser && component.ref) {\n\t\t\t\t\tconst info = {\n\t\t\t\t\t\tdepth: depth.value,\n\t\t\t\t\t\tname: matchedRoute.name,\n\t\t\t\t\t\tpath: matchedRoute.path,\n\t\t\t\t\t\tmeta: matchedRoute.meta\n\t\t\t\t\t};\n\t\t\t\t\t(isArray(component.ref) ? component.ref.map((r) => r.i) : [component.ref.i]).forEach((instance) => {\n\t\t\t\t\t\tinstance.__vrv_devtools = info;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn normalizeSlot(slots.default, {\n\t\t\t\t\tComponent: component,\n\t\t\t\t\troute\n\t\t\t\t}) || component;\n\t\t\t};\n\t\t}\n\t});\n\tfunction normalizeSlot(slot, data) {\n\t\tif (!slot) return null;\n\t\tconst slotContent = slot(data);\n\t\treturn slotContent.length === 1 ? slotContent[0] : slotContent;\n\t}\n\t/**\n\t* Component to display the current route the user is at.\n\t*/\n\tconst RouterView = RouterViewImpl;\n\tfunction warnDeprecatedUsage() {\n\t\tconst instance = (0, vue.getCurrentInstance)();\n\t\tconst parentName = instance.parent && instance.parent.type.name;\n\t\tconst parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type;\n\t\tif (parentName && (parentName === \"KeepAlive\" || parentName.includes(\"Transition\")) && typeof parentSubTreeType === \"object\" && parentSubTreeType.name === \"RouterView\") {\n\t\t\tconst comp = parentName === \"KeepAlive\" ? \"keep-alive\" : \"transition\";\n\t\t\tdiagnostics.VUE_ROUTER_R0060({ comp });\n\t\t}\n\t}\n\t//#endregion\n\t//#region src/router.ts\n\t/**\n\t* Creates a Router instance that can be used by a Vue app.\n\t*\n\t* @param options - {@link RouterOptions}\n\t*/\n\tfunction createRouter(options) {\n\t\tconst matcher = createRouterMatcher(options.routes, options);\n\t\tconst parseQuery$1 = options.parseQuery || parseQuery;\n\t\tconst stringifyQuery$1 = options.stringifyQuery || stringifyQuery;\n\t\tconst routerHistory = options.history;\n\t\tif (!routerHistory) throw new Error(\"Provide the \\\"history\\\" option when calling \\\"createRouter()\\\": https://router.vuejs.org/api/interfaces/RouterOptions.html#history\");\n\t\tconst beforeGuards = useCallbacks();\n\t\tconst beforeResolveGuards = useCallbacks();\n\t\tconst afterGuards = useCallbacks();\n\t\tconst currentRoute = (0, vue.shallowRef)(START_LOCATION_NORMALIZED);\n\t\tlet pendingLocation = START_LOCATION_NORMALIZED;\n\t\tif (isBrowser && options.scrollBehavior && \"scrollRestoration\" in history) history.scrollRestoration = \"manual\";\n\t\tconst normalizeParams = applyToParams.bind(null, (paramValue) => \"\" + paramValue);\n\t\tconst encodeParams = applyToParams.bind(null, encodeParam);\n\t\tconst decodeParams = applyToParams.bind(null, decode);\n\t\tfunction addRoute(parentOrRoute, route) {\n\t\t\tlet parent;\n\t\t\tlet record;\n\t\t\tif (isRouteName(parentOrRoute)) {\n\t\t\t\tparent = matcher.getRecordMatcher(parentOrRoute);\n\t\t\t\tif (!parent) diagnostics.VUE_ROUTER_R0001({ name: String(parentOrRoute) });\n\t\t\t\trecord = route;\n\t\t\t} else record = parentOrRoute;\n\t\t\treturn matcher.addRoute(record, parent);\n\t\t}\n\t\tfunction removeRoute(name) {\n\t\t\tconst recordMatcher = matcher.getRecordMatcher(name);\n\t\t\tif (recordMatcher) matcher.removeRoute(recordMatcher);\n\t\t\telse diagnostics.VUE_ROUTER_R0002({ name: String(name) });\n\t\t}\n\t\tfunction getRoutes() {\n\t\t\treturn matcher.getRoutes().map((routeMatcher) => routeMatcher.record);\n\t\t}\n\t\tfunction hasRoute(name) {\n\t\t\treturn !!matcher.getRecordMatcher(name);\n\t\t}\n\t\tfunction resolve(rawLocation, currentLocation) {\n\t\t\tcurrentLocation = assign({}, currentLocation || currentRoute.value);\n\t\t\tif (typeof rawLocation === \"string\") {\n\t\t\t\tconst locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path);\n\t\t\t\tconst matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation);\n\t\t\t\tconst href = routerHistory.createHref(locationNormalized.fullPath);\n\t\t\t\tif (href.startsWith(\"//\")) diagnostics.VUE_ROUTER_R0003({\n\t\t\t\t\tlocation: rawLocation,\n\t\t\t\t\thref\n\t\t\t\t});\n\t\t\t\telse if (!matchedRoute.matched.length) diagnostics.VUE_ROUTER_R0004({ path: rawLocation });\n\t\t\t\treturn assign(locationNormalized, matchedRoute, {\n\t\t\t\t\tparams: decodeParams(matchedRoute.params),\n\t\t\t\t\tredirectedFrom: void 0,\n\t\t\t\t\thref\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (!isRouteLocation(rawLocation)) {\n\t\t\t\tdiagnostics.VUE_ROUTER_R0005({ rawLocation });\n\t\t\t\treturn resolve({});\n\t\t\t}\n\t\t\tlet matcherLocation;\n\t\t\tif (rawLocation.path != null) {\n\t\t\t\tif (\"params\" in rawLocation && !(\"name\" in rawLocation) && Object.keys(rawLocation.params).length) diagnostics.VUE_ROUTER_R0006({ path: rawLocation.path });\n\t\t\t\tmatcherLocation = assign({}, rawLocation, { path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path });\n\t\t\t} else {\n\t\t\t\tconst targetParams = assign({}, rawLocation.params);\n\t\t\t\tfor (const key in targetParams) if (targetParams[key] == null) delete targetParams[key];\n\t\t\t\tmatcherLocation = assign({}, rawLocation, { params: encodeParams(targetParams) });\n\t\t\t\tcurrentLocation.params = encodeParams(currentLocation.params);\n\t\t\t}\n\t\t\tconst matchedRoute = matcher.resolve(matcherLocation, currentLocation);\n\t\t\tconst hash = rawLocation.hash || \"\";\n\t\t\tif (hash && !hash.startsWith(\"#\")) diagnostics.VUE_ROUTER_R0007({ hash });\n\t\t\tmatchedRoute.params = normalizeParams(decodeParams(matchedRoute.params));\n\t\t\tconst fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, {\n\t\t\t\thash: encodeHash(hash),\n\t\t\t\tpath: matchedRoute.path\n\t\t\t}));\n\t\t\tconst href = routerHistory.createHref(fullPath);\n\t\t\tif (href.startsWith(\"//\")) diagnostics.VUE_ROUTER_R0003({\n\t\t\t\tlocation: rawLocation,\n\t\t\t\thref\n\t\t\t});\n\t\t\telse if (!matchedRoute.matched.length) diagnostics.VUE_ROUTER_R0004({ path: rawLocation.path != null ? rawLocation.path : rawLocation });\n\t\t\treturn assign({\n\t\t\t\tfullPath,\n\t\t\t\thash,\n\t\t\t\tquery: stringifyQuery$1 === stringifyQuery ? normalizeQuery(rawLocation.query) : rawLocation.query || {}\n\t\t\t}, matchedRoute, {\n\t\t\t\tredirectedFrom: void 0,\n\t\t\t\thref\n\t\t\t});\n\t\t}\n\t\tfunction locationAsObject(to) {\n\t\t\treturn typeof to === \"string\" ? parseURL(parseQuery$1, to, currentRoute.value.path) : assign({}, to);\n\t\t}\n\t\tfunction checkCanceledNavigation(to, from) {\n\t\t\tif (pendingLocation !== to) return createRouterError(8, {\n\t\t\t\tfrom,\n\t\t\t\tto\n\t\t\t});\n\t\t}\n\t\tfunction push(to) {\n\t\t\treturn pushWithRedirect(to);\n\t\t}\n\t\tfunction replace(to) {\n\t\t\treturn push(assign(locationAsObject(to), { replace: true }));\n\t\t}\n\t\tfunction handleRedirectRecord(to, from) {\n\t\t\tconst lastMatched = to.matched[to.matched.length - 1];\n\t\t\tif (lastMatched && lastMatched.redirect) {\n\t\t\t\tconst { redirect } = lastMatched;\n\t\t\t\tlet newTargetLocation = typeof redirect === \"function\" ? redirect(to, from) : redirect;\n\t\t\t\tif (typeof newTargetLocation === \"string\") {\n\t\t\t\t\tnewTargetLocation = newTargetLocation.includes(\"?\") || newTargetLocation.includes(\"#\") ? newTargetLocation = locationAsObject(newTargetLocation) : { path: newTargetLocation };\n\t\t\t\t\tnewTargetLocation.params = {};\n\t\t\t\t}\n\t\t\t\tif (newTargetLocation.path == null && !(\"name\" in newTargetLocation)) {\n\t\t\t\t\tdiagnostics.VUE_ROUTER_R0008({\n\t\t\t\t\t\ttarget: JSON.stringify(newTargetLocation, null, 2),\n\t\t\t\t\t\tto: to.fullPath\n\t\t\t\t\t});\n\t\t\t\t\tthrow new Error(\"Invalid redirect\");\n\t\t\t\t}\n\t\t\t\treturn assign({\n\t\t\t\t\tquery: to.query,\n\t\t\t\t\thash: to.hash,\n\t\t\t\t\tparams: newTargetLocation.path != null ? {} : to.params\n\t\t\t\t}, newTargetLocation);\n\t\t\t}\n\t\t}\n\t\tfunction pushWithRedirect(to, redirectedFrom) {\n\t\t\tconst targetLocation = pendingLocation = resolve(to);\n\t\t\tconst from = currentRoute.value;\n\t\t\tconst data = to.state;\n\t\t\tconst force = to.force;\n\t\t\tconst replace = to.replace === true;\n\t\t\tconst shouldRedirect = handleRedirectRecord(targetLocation, from);\n\t\t\tif (shouldRedirect) return pushWithRedirect(assign(locationAsObject(shouldRedirect), {\n\t\t\t\tstate: typeof shouldRedirect === \"object\" ? assign({}, data, shouldRedirect.state) : data,\n\t\t\t\tforce,\n\t\t\t\treplace\n\t\t\t}), redirectedFrom || targetLocation);\n\t\t\tconst toLocation = targetLocation;\n\t\t\ttoLocation.redirectedFrom = redirectedFrom;\n\t\t\tlet failure;\n\t\t\tif (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) {\n\t\t\t\tfailure = createRouterError(16, {\n\t\t\t\t\tto: toLocation,\n\t\t\t\t\tfrom\n\t\t\t\t});\n\t\t\t\thandleScroll(from, from, true, false);\n\t\t\t}\n\t\t\treturn (failure ? Promise.resolve(failure) : navigate(toLocation, from)).catch((error) => isNavigationFailure(error) ? isNavigationFailure(error, 2) ? error : markAsReady(error) : triggerError(error, toLocation, from)).then((failure) => {\n\t\t\t\tif (failure) {\n\t\t\t\t\tif (isNavigationFailure(failure, 2)) {\n\t\t\t\t\t\tif (isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) && redirectedFrom && (redirectedFrom._count = redirectedFrom._count ? redirectedFrom._count + 1 : 1) > 30) {\n\t\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0009({\n\t\t\t\t\t\t\t\tfrom: from.fullPath,\n\t\t\t\t\t\t\t\tto: toLocation.fullPath\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn Promise.reject(/* @__PURE__ */ new Error(\"Infinite redirect in navigation guard\"));\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn pushWithRedirect(assign({ replace }, locationAsObject(failure.to), {\n\t\t\t\t\t\t\tstate: typeof failure.to === \"object\" ? assign({}, data, failure.to.state) : data,\n\t\t\t\t\t\t\tforce\n\t\t\t\t\t\t}), redirectedFrom || toLocation);\n\t\t\t\t\t}\n\t\t\t\t} else failure = finalizeNavigation(toLocation, from, true, replace, data);\n\t\t\t\ttriggerAfterEach(toLocation, from, failure);\n\t\t\t\treturn failure;\n\t\t\t});\n\t\t}\n\t\t/**\n\t\t* Helper to reject and skip all navigation guards if a new navigation happened\n\t\t* @param to\n\t\t* @param from\n\t\t*/\n\t\tfunction checkCanceledNavigationAndReject(to, from) {\n\t\t\tconst error = checkCanceledNavigation(to, from);\n\t\t\treturn error ? Promise.reject(error) : Promise.resolve();\n\t\t}\n\t\tfunction runWithContext(fn) {\n\t\t\tconst app = installedApps.values().next().value;\n\t\t\treturn app && typeof app.runWithContext === \"function\" ? app.runWithContext(fn) : fn();\n\t\t}\n\t\tfunction navigate(to, from) {\n\t\t\tlet guards;\n\t\t\tconst [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from);\n\t\t\tguards = extractComponentsGuards(leavingRecords.reverse(), \"beforeRouteLeave\", to, from);\n\t\t\tfor (const record of leavingRecords) record.leaveGuards.forEach((guard) => {\n\t\t\t\tguards.push(guardToPromiseFn(guard, to, from));\n\t\t\t});\n\t\t\tconst canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from);\n\t\t\tguards.push(canceledNavigationCheck);\n\t\t\treturn runGuardQueue(guards).then(() => {\n\t\t\t\tguards = [];\n\t\t\t\tfor (const guard of beforeGuards.list()) guards.push(guardToPromiseFn(guard, to, from));\n\t\t\t\tguards.push(canceledNavigationCheck);\n\t\t\t\treturn runGuardQueue(guards);\n\t\t\t}).then(() => {\n\t\t\t\tguards = extractComponentsGuards(updatingRecords, \"beforeRouteUpdate\", to, from);\n\t\t\t\tfor (const record of updatingRecords) record.updateGuards.forEach((guard) => {\n\t\t\t\t\tguards.push(guardToPromiseFn(guard, to, from));\n\t\t\t\t});\n\t\t\t\tguards.push(canceledNavigationCheck);\n\t\t\t\treturn runGuardQueue(guards);\n\t\t\t}).then(() => {\n\t\t\t\tguards = [];\n\t\t\t\tfor (const record of enteringRecords) if (record.beforeEnter) if (isArray(record.beforeEnter)) for (const beforeEnter of record.beforeEnter) guards.push(guardToPromiseFn(beforeEnter, to, from));\n\t\t\t\telse guards.push(guardToPromiseFn(record.beforeEnter, to, from));\n\t\t\t\tguards.push(canceledNavigationCheck);\n\t\t\t\treturn runGuardQueue(guards);\n\t\t\t}).then(() => {\n\t\t\t\tto.matched.forEach((record) => record.enterCallbacks = {});\n\t\t\t\tguards = extractComponentsGuards(enteringRecords, \"beforeRouteEnter\", to, from, runWithContext);\n\t\t\t\tguards.push(canceledNavigationCheck);\n\t\t\t\treturn runGuardQueue(guards);\n\t\t\t}).then(() => {\n\t\t\t\tguards = [];\n\t\t\t\tfor (const guard of beforeResolveGuards.list()) guards.push(guardToPromiseFn(guard, to, from));\n\t\t\t\tguards.push(canceledNavigationCheck);\n\t\t\t\treturn runGuardQueue(guards);\n\t\t\t}).catch((err) => isNavigationFailure(err, 8) ? err : Promise.reject(err));\n\t\t}\n\t\tfunction triggerAfterEach(to, from, failure) {\n\t\t\tafterGuards.list().forEach((guard) => runWithContext(() => guard(to, from, failure)));\n\t\t}\n\t\t/**\n\t\t* - Cleans up any navigation guards\n\t\t* - Changes the url if necessary\n\t\t* - Calls the scrollBehavior\n\t\t*/\n\t\tfunction finalizeNavigation(toLocation, from, isPush, replace, data) {\n\t\t\tconst error = checkCanceledNavigation(toLocation, from);\n\t\t\tif (error) return error;\n\t\t\tconst isFirstNavigation = from === START_LOCATION_NORMALIZED;\n\t\t\tconst state = !isBrowser ? {} : history.state;\n\t\t\tif (isPush) if (replace || isFirstNavigation) routerHistory.replace(toLocation.fullPath, assign({ scroll: isFirstNavigation && state && state.scroll }, data));\n\t\t\telse routerHistory.push(toLocation.fullPath, data);\n\t\t\tcurrentRoute.value = toLocation;\n\t\t\thandleScroll(toLocation, from, isPush, isFirstNavigation);\n\t\t\tmarkAsReady();\n\t\t}\n\t\tlet removeHistoryListener;\n\t\tfunction setupListeners() {\n\t\t\tif (removeHistoryListener) return;\n\t\t\tremoveHistoryListener = routerHistory.listen((to, _from, info) => {\n\t\t\t\tif (!router.listening) return;\n\t\t\t\tconst toLocation = resolve(to);\n\t\t\t\tconst shouldRedirect = handleRedirectRecord(toLocation, router.currentRoute.value);\n\t\t\t\tif (shouldRedirect) {\n\t\t\t\t\tpushWithRedirect(assign(shouldRedirect, {\n\t\t\t\t\t\treplace: true,\n\t\t\t\t\t\tforce: true\n\t\t\t\t\t}), toLocation).catch(noop);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tpendingLocation = toLocation;\n\t\t\t\tconst from = currentRoute.value;\n\t\t\t\tif (isBrowser) saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition());\n\t\t\t\tnavigate(toLocation, from).catch((error) => {\n\t\t\t\t\tif (isNavigationFailure(error, 12)) return error;\n\t\t\t\t\tif (isNavigationFailure(error, 2)) {\n\t\t\t\t\t\tpushWithRedirect(assign(locationAsObject(error.to), { force: true }), toLocation).then((failure) => {\n\t\t\t\t\t\t\tif (isNavigationFailure(failure, 20) && !info.delta && info.type === \"pop\") routerHistory.go(-1, false);\n\t\t\t\t\t\t}).catch(noop);\n\t\t\t\t\t\treturn Promise.reject();\n\t\t\t\t\t}\n\t\t\t\t\tif (info.delta) routerHistory.go(-info.delta, false);\n\t\t\t\t\treturn triggerError(error, toLocation, from);\n\t\t\t\t}).then((failure) => {\n\t\t\t\t\tfailure = failure || finalizeNavigation(toLocation, from, false);\n\t\t\t\t\tif (failure) {\n\t\t\t\t\t\tif (info.delta && !isNavigationFailure(failure, 8)) routerHistory.go(-info.delta, false);\n\t\t\t\t\t\telse if (info.type === \"pop\" && isNavigationFailure(failure, 20)) routerHistory.go(-1, false);\n\t\t\t\t\t}\n\t\t\t\t\ttriggerAfterEach(toLocation, from, failure);\n\t\t\t\t}).catch(noop);\n\t\t\t});\n\t\t}\n\t\tlet readyHandlers = useCallbacks();\n\t\tlet errorListeners = useCallbacks();\n\t\tlet ready;\n\t\t/**\n\t\t* Trigger errorListeners added via onError and throws the error as well\n\t\t*\n\t\t* @param error - error to throw\n\t\t* @param to - location we were navigating to when the error happened\n\t\t* @param from - location we were navigating from when the error happened\n\t\t* @returns the error as a rejected promise\n\t\t*/\n\t\tfunction triggerError(error, to, from) {\n\t\t\tmarkAsReady(error);\n\t\t\tconst list = errorListeners.list();\n\t\t\tif (list.length) list.forEach((handler) => handler(error, to, from));\n\t\t\telse {\n\t\t\t\tdiagnostics.VUE_ROUTER_R0010();\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\t\t\treturn Promise.reject(error);\n\t\t}\n\t\tfunction isReady() {\n\t\t\tif (ready && currentRoute.value !== START_LOCATION_NORMALIZED) return Promise.resolve();\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\treadyHandlers.add([resolve, reject]);\n\t\t\t});\n\t\t}\n\t\tfunction markAsReady(err) {\n\t\t\tif (!ready) {\n\t\t\t\tready = !err;\n\t\t\t\tsetupListeners();\n\t\t\t\treadyHandlers.list().forEach(([resolve, reject]) => err ? reject(err) : resolve());\n\t\t\t\treadyHandlers.reset();\n\t\t\t}\n\t\t\treturn err;\n\t\t}\n\t\tfunction handleScroll(to, from, isPush, isFirstNavigation) {\n\t\t\tconst { scrollBehavior } = options;\n\t\t\tif (!isBrowser || !scrollBehavior) return Promise.resolve();\n\t\t\tconst scrollPosition = !isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0)) || (isFirstNavigation || !isPush) && history.state && history.state.scroll || null;\n\t\t\treturn (0, vue.nextTick)().then(() => scrollBehavior(to, from, scrollPosition)).then((position) => to === currentRoute.value && position && scrollToPosition(position)).catch((err) => to === currentRoute.value && triggerError(err, to, from));\n\t\t}\n\t\tconst go = (delta) => routerHistory.go(delta);\n\t\tlet started;\n\t\tconst installedApps = /* @__PURE__ */ new Set();\n\t\tconst router = {\n\t\t\tcurrentRoute,\n\t\t\tlistening: true,\n\t\t\taddRoute,\n\t\t\tremoveRoute,\n\t\t\tclearRoutes: matcher.clearRoutes,\n\t\t\thasRoute,\n\t\t\tgetRoutes,\n\t\t\tresolve,\n\t\t\toptions,\n\t\t\tpush,\n\t\t\treplace,\n\t\t\tgo,\n\t\t\tback: () => go(-1),\n\t\t\tforward: () => go(1),\n\t\t\tbeforeEach: beforeGuards.add,\n\t\t\tbeforeResolve: beforeResolveGuards.add,\n\t\t\tafterEach: afterGuards.add,\n\t\t\tonError: errorListeners.add,\n\t\t\tisReady,\n\t\t\tinstall(app) {\n\t\t\t\tapp.component(\"RouterLink\", RouterLink);\n\t\t\t\tapp.component(\"RouterView\", RouterView);\n\t\t\t\tapp.config.globalProperties.$router = router;\n\t\t\t\tObject.defineProperty(app.config.globalProperties, \"$route\", {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: () => (0, vue.unref)(currentRoute)\n\t\t\t\t});\n\t\t\t\tif (isBrowser && !started && currentRoute.value === START_LOCATION_NORMALIZED) {\n\t\t\t\t\tstarted = true;\n\t\t\t\t\tpush(routerHistory.location).catch((err) => {\n\t\t\t\t\t\tdiagnostics.VUE_ROUTER_R0011({ cause: err });\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst reactiveRoute = {};\n\t\t\t\tfor (const key in START_LOCATION_NORMALIZED) Object.defineProperty(reactiveRoute, key, {\n\t\t\t\t\tget: () => currentRoute.value[key],\n\t\t\t\t\tenumerable: true\n\t\t\t\t});\n\t\t\t\tapp.provide(routerKey, router);\n\t\t\t\tapp.provide(routeLocationKey, (0, vue.shallowReactive)(reactiveRoute));\n\t\t\t\tapp.provide(routerViewLocationKey, currentRoute);\n\t\t\t\tconst unmountApp = app.unmount;\n\t\t\t\tinstalledApps.add(app);\n\t\t\t\tapp.unmount = function() {\n\t\t\t\t\tinstalledApps.delete(app);\n\t\t\t\t\tif (installedApps.size < 1) {\n\t\t\t\t\t\tpendingLocation = START_LOCATION_NORMALIZED;\n\t\t\t\t\t\tremoveHistoryListener && removeHistoryListener();\n\t\t\t\t\t\tremoveHistoryListener = null;\n\t\t\t\t\t\tcurrentRoute.value = START_LOCATION_NORMALIZED;\n\t\t\t\t\t\tstarted = false;\n\t\t\t\t\t\tready = false;\n\t\t\t\t\t}\n\t\t\t\t\tunmountApp();\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\tfunction runGuardQueue(guards) {\n\t\t\treturn guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve());\n\t\t}\n\t\treturn router;\n\t}\n\t//#endregion\n\t//#region src/useApi.ts\n\t/**\n\t* Returns the router instance. Equivalent to using `$router` inside\n\t* templates.\n\t*/\n\tfunction useRouter() {\n\t\treturn (0, vue.inject)(routerKey);\n\t}\n\t/**\n\t* Returns the current route location. Equivalent to using `$route` inside\n\t* templates.\n\t*/\n\tfunction useRoute(_name) {\n\t\treturn (0, vue.inject)(routeLocationKey);\n\t}\n\t//#endregion\n\texports.NavigationFailureType = NavigationFailureType;\n\texports.RouterLink = RouterLink;\n\texports.RouterView = RouterView;\n\texports.START_LOCATION = START_LOCATION_NORMALIZED;\n\texports.createMemoryHistory = createMemoryHistory;\n\texports.createRouter = createRouter;\n\texports.createRouterMatcher = createRouterMatcher;\n\texports.createWebHashHistory = createWebHashHistory;\n\texports.createWebHistory = createWebHistory;\n\texports.isNavigationFailure = isNavigationFailure;\n\texports.loadRouteLocation = loadRouteLocation;\n\texports.matchedRouteKey = matchedRouteKey;\n\texports.onBeforeRouteLeave = onBeforeRouteLeave;\n\texports.onBeforeRouteUpdate = onBeforeRouteUpdate;\n\texports.parseQuery = parseQuery;\n\texports.routeLocationKey = routeLocationKey;\n\texports.routerKey = routerKey;\n\texports.routerViewLocationKey = routerViewLocationKey;\n\texports.stringifyQuery = stringifyQuery;\n\texports.useLink = useLink;\n\texports.useRoute = useRoute;\n\texports.useRouter = useRouter;\n\texports.viewDepthKey = viewDepthKey;\n\treturn exports;\n})({}, nostics, Vue);\n"]}