Index: imaps-frontend/node_modules/react-router/CHANGELOG.md
===================================================================
--- imaps-frontend/node_modules/react-router/CHANGELOG.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/CHANGELOG.md	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,53 +1,3 @@
 # `react-router`
-
-## 6.28.0
-
-### Minor Changes
-
-- - Log deprecation warnings for v7 flags ([#11750](https://github.com/remix-run/react-router/pull/11750))
-  - Add deprecation warnings to `json`/`defer` in favor of returning raw objects
-    - These methods will be removed in React Router v7
-
-### Patch Changes
-
-- Update JSDoc URLs for new website structure (add /v6/ segment) ([#12141](https://github.com/remix-run/react-router/pull/12141))
-- Updated dependencies:
-  - `@remix-run/router@1.21.0`
-
-## 6.27.0
-
-### Minor Changes
-
-- Stabilize `unstable_patchRoutesOnNavigation` ([#11973](https://github.com/remix-run/react-router/pull/11973))
-  - Add new `PatchRoutesOnNavigationFunctionArgs` type for convenience ([#11967](https://github.com/remix-run/react-router/pull/11967))
-- Stabilize `unstable_dataStrategy` ([#11974](https://github.com/remix-run/react-router/pull/11974))
-- Stabilize the `unstable_flushSync` option for navigations and fetchers ([#11989](https://github.com/remix-run/react-router/pull/11989))
-- Stabilize the `unstable_viewTransition` option for navigations and the corresponding `unstable_useViewTransitionState` hook ([#11989](https://github.com/remix-run/react-router/pull/11989))
-
-### Patch Changes
-
-- Fix bug when submitting to the current contextual route (parent route with an index child) when an `?index` param already exists from a prior submission ([#12003](https://github.com/remix-run/react-router/pull/12003))
-
-- Fix `useFormAction` bug - when removing `?index` param it would not keep other non-Remix `index` params ([#12003](https://github.com/remix-run/react-router/pull/12003))
-
-- Fix types for `RouteObject` within `PatchRoutesOnNavigationFunction`'s `patch` method so it doesn't expect agnostic route objects passed to `patch` ([#11967](https://github.com/remix-run/react-router/pull/11967))
-
-- Updated dependencies:
-  - `@remix-run/router@1.20.0`
-
-## 6.26.2
-
-### Patch Changes
-
-- Updated dependencies:
-  - `@remix-run/router@1.19.2`
-
-## 6.26.1
-
-### Patch Changes
-
-- Rename `unstable_patchRoutesOnMiss` to `unstable_patchRoutesOnNavigation` to match new behavior ([#11888](https://github.com/remix-run/react-router/pull/11888))
-- Updated dependencies:
-  - `@remix-run/router@1.19.1`
 
 ## 6.26.0
@@ -97,5 +47,5 @@
 - Add support for Lazy Route Discovery (a.k.a. Fog of War) ([#11626](https://github.com/remix-run/react-router/pull/11626))
   - RFC: <https://github.com/remix-run/react-router/discussions/11113>
-  - `unstable_patchRoutesOnMiss` docs: <https://reactrouter.com/v6/routers/create-browser-router>
+  - `unstable_patchRoutesOnMiss` docs: <https://reactrouter.com/en/main/routers/create-browser-router>
 
 ### Patch Changes
@@ -343,5 +293,5 @@
 
 - Add `unstable_flushSync` option to `useNavigate`/`useSumbit`/`fetcher.load`/`fetcher.submit` to opt-out of `React.startTransition` and into `ReactDOM.flushSync` for state updates ([#11005](https://github.com/remix-run/react-router/pull/11005))
-- Remove the `unstable_` prefix from the [`useBlocker`](https://reactrouter.com/v6/hooks/use-blocker) hook as it's been in use for enough time that we are confident in the API. We do not plan to remove the prefix from `unstable_usePrompt` due to differences in how browsers handle `window.confirm` that prevent React Router from guaranteeing consistent/correct behavior. ([#10991](https://github.com/remix-run/react-router/pull/10991))
+- Remove the `unstable_` prefix from the [`useBlocker`](https://reactrouter.com/en/main/hooks/use-blocker) hook as it's been in use for enough time that we are confident in the API. We do not plan to remove the prefix from `unstable_usePrompt` due to differences in how browsers handle `window.confirm` that prevent React Router from guaranteeing consistent/correct behavior. ([#10991](https://github.com/remix-run/react-router/pull/10991))
 
 ### Patch Changes
@@ -433,5 +383,5 @@
 ### Minor Changes
 
-- Move [`React.startTransition`](https://react.dev/reference/react/startTransition) usage behind a [future flag](https://reactrouter.com/v6/guides/api-development-strategy) to avoid issues with existing incompatible `Suspense` usages. We recommend folks adopting this flag to be better compatible with React concurrent mode, but if you run into issues you can continue without the use of `startTransition` until v7. Issues usually boils down to creating net-new promises during the render cycle, so if you run into issues you should either lift your promise creation out of the render cycle or put it behind a `useMemo`. ([#10596](https://github.com/remix-run/react-router/pull/10596))
+- Move [`React.startTransition`](https://react.dev/reference/react/startTransition) usage behind a [future flag](https://reactrouter.com/en/main/guides/api-development-strategy) to avoid issues with existing incompatible `Suspense` usages. We recommend folks adopting this flag to be better compatible with React concurrent mode, but if you run into issues you can continue without the use of `startTransition` until v7. Issues usually boils down to creating net-new promises during the render cycle, so if you run into issues you should either lift your promise creation out of the render cycle or put it behind a `useMemo`. ([#10596](https://github.com/remix-run/react-router/pull/10596))
 
   Existing behavior will no longer include `React.startTransition`:
@@ -516,5 +466,5 @@
 ### Minor Changes
 
-- Added support for [**Future Flags**](https://reactrouter.com/v6/guides/api-development-strategy) in React Router. The first flag being introduced is `future.v7_normalizeFormMethod` which will normalize the exposed `useNavigation()/useFetcher()` `formMethod` fields as uppercase HTTP methods to align with the `fetch()` behavior. ([#10207](https://github.com/remix-run/react-router/pull/10207))
+- Added support for [**Future Flags**](https://reactrouter.com/en/main/guides/api-development-strategy) in React Router. The first flag being introduced is `future.v7_normalizeFormMethod` which will normalize the exposed `useNavigation()/useFetcher()` `formMethod` fields as uppercase HTTP methods to align with the `fetch()` behavior. ([#10207](https://github.com/remix-run/react-router/pull/10207))
 
   - When `future.v7_normalizeFormMethod === false` (default v6 behavior),
@@ -793,5 +743,5 @@
 ## 6.4.0
 
-Whoa this is a big one! `6.4.0` brings all the data loading and mutation APIs over from Remix. Here's a quick high level overview, but it's recommended you go check out the [docs](https://reactrouter.com), especially the [feature overview](https://reactrouter.com/en/6.4.0/start/overview) and the [tutorial](https://reactrouter.com/en/6.4.0/start/tutorial).
+Whoa this is a big one! `6.4.0` brings all the data loading and mutation APIs over from Remix. Here's a quick high level overview, but it's recommended you go check out the [docs](https://reactrouter.com), especially the [feature overview](https://reactrouter.com/start/overview) and the [tutorial](https://reactrouter.com/start/tutorial).
 
 **New APIs**
Index: imaps-frontend/node_modules/react-router/dist/index.d.ts
===================================================================
--- imaps-frontend/node_modules/react-router/dist/index.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/index.d.ts	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,3 +1,3 @@
-import type { ActionFunction, ActionFunctionArgs, AgnosticPatchRoutesOnNavigationFunction, AgnosticPatchRoutesOnNavigationFunctionArgs, Blocker, BlockerFunction, DataStrategyFunction, DataStrategyFunctionArgs, DataStrategyMatch, DataStrategyResult, ErrorResponse, Fetcher, HydrationState, InitialEntry, JsonFunction, LazyRouteFunction, LoaderFunction, LoaderFunctionArgs, Location, Navigation, ParamParseKey, Params, Path, PathMatch, PathParam, PathPattern, RedirectFunction, RelativeRoutingType, Router as RemixRouter, FutureConfig as RouterFutureConfig, ShouldRevalidateFunction, ShouldRevalidateFunctionArgs, To, UIMatch } from "@remix-run/router";
+import type { ActionFunction, ActionFunctionArgs, Blocker, BlockerFunction, unstable_DataStrategyFunction, unstable_DataStrategyFunctionArgs, unstable_DataStrategyMatch, ErrorResponse, Fetcher, HydrationState, InitialEntry, JsonFunction, LazyRouteFunction, LoaderFunction, LoaderFunctionArgs, Location, Navigation, ParamParseKey, Params, Path, PathMatch, PathParam, PathPattern, RedirectFunction, RelativeRoutingType, Router as RemixRouter, FutureConfig as RouterFutureConfig, ShouldRevalidateFunction, ShouldRevalidateFunctionArgs, To, UIMatch, unstable_HandlerResult, unstable_AgnosticPatchRoutesOnMissFunction } from "@remix-run/router";
 import { AbortedDeferredError, Action as NavigationType, createPath, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, replace, resolvePath } from "@remix-run/router";
 import type { AwaitProps, FutureConfig, IndexRouteProps, LayoutRouteProps, MemoryRouterProps, NavigateProps, OutletProps, PathRouteProps, RouteProps, RouterProps, RouterProviderProps, RoutesProps } from "./lib/components";
@@ -7,15 +7,14 @@
 import type { NavigateFunction } from "./lib/hooks";
 import { useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteId, useRouteLoaderData, useRoutes, useRoutesImpl } from "./lib/hooks";
-import { logV6DeprecationWarnings } from "./lib/deprecations";
 type Hash = string;
 type Pathname = string;
 type Search = string;
-export type { ActionFunction, ActionFunctionArgs, AwaitProps, DataRouteMatch, DataRouteObject, DataStrategyFunction, DataStrategyFunctionArgs, DataStrategyMatch, DataStrategyResult, ErrorResponse, Fetcher, FutureConfig, Hash, IndexRouteObject, IndexRouteProps, JsonFunction, LayoutRouteProps, LazyRouteFunction, LoaderFunction, LoaderFunctionArgs, Location, MemoryRouterProps, NavigateFunction, NavigateOptions, NavigateProps, Navigation, Navigator, NonIndexRouteObject, OutletProps, ParamParseKey, Params, Path, PathMatch, PathParam, PathPattern, PathRouteProps, Pathname, RedirectFunction, RelativeRoutingType, RouteMatch, RouteObject, RouteProps, RouterProps, RouterProviderProps, RoutesProps, Search, ShouldRevalidateFunction, ShouldRevalidateFunctionArgs, To, UIMatch, Blocker, BlockerFunction, };
+export type { ActionFunction, ActionFunctionArgs, AwaitProps, DataRouteMatch, DataRouteObject, unstable_DataStrategyFunction, unstable_DataStrategyFunctionArgs, unstable_DataStrategyMatch, ErrorResponse, Fetcher, FutureConfig, Hash, IndexRouteObject, IndexRouteProps, JsonFunction, LayoutRouteProps, LazyRouteFunction, LoaderFunction, LoaderFunctionArgs, Location, MemoryRouterProps, NavigateFunction, NavigateOptions, NavigateProps, Navigation, Navigator, NonIndexRouteObject, OutletProps, ParamParseKey, Params, Path, PathMatch, PathParam, PathPattern, PathRouteProps, Pathname, RedirectFunction, RelativeRoutingType, RouteMatch, RouteObject, RouteProps, RouterProps, RouterProviderProps, RoutesProps, Search, ShouldRevalidateFunction, ShouldRevalidateFunctionArgs, To, UIMatch, Blocker, BlockerFunction, unstable_HandlerResult, };
 export { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, Routes, createPath, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, replace, renderMatches, resolvePath, useBlocker, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes, };
-export type PatchRoutesOnNavigationFunctionArgs = AgnosticPatchRoutesOnNavigationFunctionArgs<RouteObject, RouteMatch>;
-export type PatchRoutesOnNavigationFunction = AgnosticPatchRoutesOnNavigationFunction<RouteObject, RouteMatch>;
 declare function mapRouteProperties(route: RouteObject): Partial<RouteObject> & {
     hasErrorBoundary: boolean;
 };
+export interface unstable_PatchRoutesOnMissFunction extends unstable_AgnosticPatchRoutesOnMissFunction<RouteMatch> {
+}
 export declare function createMemoryRouter(routes: RouteObject[], opts?: {
     basename?: string;
@@ -24,7 +23,7 @@
     initialEntries?: InitialEntry[];
     initialIndex?: number;
-    dataStrategy?: DataStrategyFunction;
-    patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;
+    unstable_dataStrategy?: unstable_DataStrategyFunction;
+    unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;
 }): RemixRouter;
 /** @internal */
-export { DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings, };
+export { DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, };
Index: imaps-frontend/node_modules/react-router/dist/index.js
===================================================================
--- imaps-frontend/node_modules/react-router/dist/index.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/index.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,4 +1,4 @@
 /**
- * React Router v6.28.0
+ * React Router v6.26.0
  *
  * Copyright (c) Remix Software Inc.
@@ -78,5 +78,5 @@
  * custom links that are also accessible and preserve right-click behavior.
  *
- * @see https://reactrouter.com/v6/hooks/use-href
+ * @see https://reactrouter.com/hooks/use-href
  */
 function useHref(to, _temp) {
@@ -117,5 +117,5 @@
  * Returns true if this component is a descendant of a `<Router>`.
  *
- * @see https://reactrouter.com/v6/hooks/use-in-router-context
+ * @see https://reactrouter.com/hooks/use-in-router-context
  */
 function useInRouterContext() {
@@ -131,5 +131,5 @@
  * be able to provide something higher-level to better suit your needs.
  *
- * @see https://reactrouter.com/v6/hooks/use-location
+ * @see https://reactrouter.com/hooks/use-location
  */
 function useLocation() {
@@ -144,5 +144,5 @@
  * the current location, either by a pop, push, or replace on the history stack.
  *
- * @see https://reactrouter.com/v6/hooks/use-navigation-type
+ * @see https://reactrouter.com/hooks/use-navigation-type
  */
 function useNavigationType() {
@@ -155,5 +155,5 @@
  * `<NavLink>`.
  *
- * @see https://reactrouter.com/v6/hooks/use-match
+ * @see https://reactrouter.com/hooks/use-match
  */
 function useMatch(pattern) {
@@ -188,5 +188,5 @@
  * may also be used by other elements to change the location.
  *
- * @see https://reactrouter.com/v6/hooks/use-navigate
+ * @see https://reactrouter.com/hooks/use-navigate
  */
 function useNavigate() {
@@ -252,5 +252,5 @@
  * Returns the context (if provided) for the child route at this level of the route
  * hierarchy.
- * @see https://reactrouter.com/v6/hooks/use-outlet-context
+ * @see https://reactrouter.com/hooks/use-outlet-context
  */
 function useOutletContext() {
@@ -262,5 +262,5 @@
  * hierarchy. Used internally by `<Outlet>` to render child routes.
  *
- * @see https://reactrouter.com/v6/hooks/use-outlet
+ * @see https://reactrouter.com/hooks/use-outlet
  */
 function useOutlet(context) {
@@ -278,5 +278,5 @@
  * URL that were matched by the route path.
  *
- * @see https://reactrouter.com/v6/hooks/use-params
+ * @see https://reactrouter.com/hooks/use-params
  */
 function useParams() {
@@ -291,5 +291,5 @@
  * Resolves the pathname of the given `to` value against the current location.
  *
- * @see https://reactrouter.com/v6/hooks/use-resolved-path
+ * @see https://reactrouter.com/hooks/use-resolved-path
  */
 function useResolvedPath(to, _temp2) {
@@ -316,5 +316,5 @@
  * element.
  *
- * @see https://reactrouter.com/v6/hooks/use-routes
+ * @see https://reactrouter.com/hooks/use-routes
  */
 function useRoutes(routes, locationArg) {
@@ -552,5 +552,5 @@
     } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {
       // Don't bail if we're initializing with partial hydration and we have
-      // router matches.  That means we're actively running `patchRoutesOnNavigation`
+      // router matches.  That means we're actively running `patchRoutesOnMiss`
       // so we should render down the partial matches to the appropriate
       // `HydrateFallback`.  We only do this if `parentMatches` is empty so it
@@ -691,5 +691,5 @@
 }(DataRouterStateHook || {});
 function getDataRouterConsoleError(hookName) {
-  return hookName + " must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.";
+  return hookName + " must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.";
 }
 function useDataRouterContext(hookName) {
@@ -921,40 +921,9 @@
   return navigate;
 }
-const alreadyWarned$1 = {};
+const alreadyWarned = {};
 function warningOnce(key, cond, message) {
-  if (!cond && !alreadyWarned$1[key]) {
-    alreadyWarned$1[key] = true;
+  if (!cond && !alreadyWarned[key]) {
+    alreadyWarned[key] = true;
     process.env.NODE_ENV !== "production" ? UNSAFE_warning(false, message) : void 0;
-  }
-}
-
-const alreadyWarned = {};
-function warnOnce(key, message) {
-  if (!alreadyWarned[message]) {
-    alreadyWarned[message] = true;
-    console.warn(message);
-  }
-}
-const logDeprecation = (flag, msg, link) => warnOnce(flag, "\u26A0\uFE0F React Router Future Flag Warning: " + msg + ". " + ("You can use the `" + flag + "` future flag to opt-in early. ") + ("For more information, see " + link + "."));
-function logV6DeprecationWarnings(renderFuture, routerFuture) {
-  if (!(renderFuture != null && renderFuture.v7_startTransition)) {
-    logDeprecation("v7_startTransition", "React Router will begin wrapping state updates in `React.startTransition` in v7", "https://reactrouter.com/v6/upgrading/future#v7_starttransition");
-  }
-  if (!(renderFuture != null && renderFuture.v7_relativeSplatPath) && (!routerFuture || !routerFuture.v7_relativeSplatPath)) {
-    logDeprecation("v7_relativeSplatPath", "Relative route resolution within Splat routes is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath");
-  }
-  if (routerFuture) {
-    if (!routerFuture.v7_fetcherPersist) {
-      logDeprecation("v7_fetcherPersist", "The persistence behavior of fetchers is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist");
-    }
-    if (!routerFuture.v7_normalizeFormMethod) {
-      logDeprecation("v7_normalizeFormMethod", "Casing of `formMethod` fields is being normalized to uppercase in v7", "https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod");
-    }
-    if (!routerFuture.v7_partialHydration) {
-      logDeprecation("v7_partialHydration", "`RouterProvider` hydration behavior is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_partialhydration");
-    }
-    if (!routerFuture.v7_skipActionErrorRevalidation) {
-      logDeprecation("v7_skipActionErrorRevalidation", "The revalidation behavior after 4xx/5xx `action` responses is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation");
-    }
   }
 }
@@ -1036,5 +1005,4 @@
     basename
   }), [router, navigator, basename]);
-  React.useEffect(() => logV6DeprecationWarnings(future, router.future), [router, future]);
 
   // The fragment and {null} here are important!  We need them to keep React 18's
@@ -1073,5 +1041,5 @@
  * A `<Router>` that stores all entries in memory.
  *
- * @see https://reactrouter.com/v6/router-components/memory-router
+ * @see https://reactrouter.com/router-components/memory-router
  */
 function MemoryRouter(_ref3) {
@@ -1103,5 +1071,4 @@
   }, [setStateImpl, v7_startTransition]);
   React.useLayoutEffect(() => history.listen(setState), [history, setState]);
-  React.useEffect(() => logV6DeprecationWarnings(future), [future]);
   return /*#__PURE__*/React.createElement(Router, {
     basename: basename,
@@ -1120,5 +1087,5 @@
  * `useNavigate` hook instead.
  *
- * @see https://reactrouter.com/v6/components/navigate
+ * @see https://reactrouter.com/components/navigate
  */
 function Navigate(_ref4) {
@@ -1159,5 +1126,5 @@
  * Renders the child route's element, if there is one.
  *
- * @see https://reactrouter.com/v6/components/outlet
+ * @see https://reactrouter.com/components/outlet
  */
 function Outlet(props) {
@@ -1167,5 +1134,5 @@
  * Declares an element that should be rendered at a certain URL path.
  *
- * @see https://reactrouter.com/v6/components/route
+ * @see https://reactrouter.com/components/route
  */
 function Route(_props) {
@@ -1179,5 +1146,5 @@
  * in web browsers or a `<StaticRouter>` for server rendering.
  *
- * @see https://reactrouter.com/v6/router-components/router
+ * @see https://reactrouter.com/router-components/router
  */
 function Router(_ref5) {
@@ -1245,5 +1212,5 @@
  * that best matches the current location.
  *
- * @see https://reactrouter.com/v6/components/routes
+ * @see https://reactrouter.com/components/routes
  */
 function Routes(_ref6) {
@@ -1386,5 +1353,5 @@
  * `<Routes>` to create a route config from its children.
  *
- * @see https://reactrouter.com/v6/utils/create-routes-from-children
+ * @see https://reactrouter.com/utils/create-routes-from-children
  */
 function createRoutesFromChildren(children, parentPath) {
@@ -1492,9 +1459,9 @@
     routes,
     mapRouteProperties,
-    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
-    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation
+    unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,
+    unstable_patchRoutesOnMiss: opts == null ? void 0 : opts.unstable_patchRoutesOnMiss
   }).initialize();
 }
 
-export { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };
+export { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };
 //# sourceMappingURL=index.js.map
Index: imaps-frontend/node_modules/react-router/dist/index.js.map
===================================================================
--- imaps-frontend/node_modules/react-router/dist/index.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/index.js.map	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","sources":["../lib/context.ts","../lib/hooks.tsx","../lib/deprecations.ts","../lib/components.tsx","../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  flushSync?: boolean;\n  viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnNavigation`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n  if (!alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n  warnOnce(\n    flag,\n    `⚠️ React Router Future Flag Warning: ${msg}. ` +\n      `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n      `For more information, see ${link}.`\n  );\n\nexport function logV6DeprecationWarnings(\n  renderFuture: Partial<RenderFutureConfig> | undefined,\n  routerFuture?: Omit<RouterFutureConfig, \"v7_prependBasename\">\n) {\n  if (!renderFuture?.v7_startTransition) {\n    logDeprecation(\n      \"v7_startTransition\",\n      \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n    );\n  }\n\n  if (\n    !renderFuture?.v7_relativeSplatPath &&\n    (!routerFuture || !routerFuture.v7_relativeSplatPath)\n  ) {\n    logDeprecation(\n      \"v7_relativeSplatPath\",\n      \"Relative route resolution within Splat routes is changing in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n    );\n  }\n\n  if (routerFuture) {\n    if (!routerFuture.v7_fetcherPersist) {\n      logDeprecation(\n        \"v7_fetcherPersist\",\n        \"The persistence behavior of fetchers is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n      );\n    }\n\n    if (!routerFuture.v7_normalizeFormMethod) {\n      logDeprecation(\n        \"v7_normalizeFormMethod\",\n        \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n      );\n    }\n\n    if (!routerFuture.v7_partialHydration) {\n      logDeprecation(\n        \"v7_partialHydration\",\n        \"`RouterProvider` hydration behavior is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n      );\n    }\n\n    if (!routerFuture.v7_skipActionErrorRevalidation) {\n      logDeprecation(\n        \"v7_skipActionErrorRevalidation\",\n        \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n      );\n    }\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  React.useEffect(\n    () => logV6DeprecationWarnings(future, router.future),\n    [router, future]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AgnosticPatchRoutesOnNavigationFunction,\n  AgnosticPatchRoutesOnNavigationFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\nimport { logV6DeprecationWarnings } from \"./lib/deprecations\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nexport type PatchRoutesOnNavigationFunctionArgs =\n  AgnosticPatchRoutesOnNavigationFunctionArgs<RouteObject, RouteMatch>;\n\nexport type PatchRoutesOnNavigationFunction =\n  AgnosticPatchRoutesOnNavigationFunction<RouteObject, RouteMatch>;\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    dataStrategy?: DataStrategyFunction;\n    patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n  logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings,\n};\n"],"names":["DataRouterContext","React","createContext","process","env","NODE_ENV","displayName","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","_temp","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","navigateEffectWarning","useIsomorphicLayoutEffect","cb","isStatic","static","useLayoutEffect","useNavigate","useNavigateStable","useNavigateUnstable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","activeRef","useRef","current","navigate","useCallback","options","warning","go","path","resolveTo","parse","replace","push","state","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","_temp2","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathname","parentPathnameBase","pathnameBase","parentRoute","route","parentPath","warningOnce","endsWith","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","segments","slice","join","matchRoutes","element","undefined","Component","lazy","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","_extends","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","console","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","constructor","props","revalidation","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","id","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","keys","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","index","shouldRenderHydrateFallback","concat","getChildren","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","router","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","_state$errors","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","UseNavigateStable","fromRouteId","alreadyWarned","cond","warnOnce","warn","logDeprecation","flag","msg","link","logV6DeprecationWarnings","renderFuture","routerFuture","v7_startTransition","v7_fetcherPersist","v7_normalizeFormMethod","v7_skipActionErrorRevalidation","START_TRANSITION","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","_ref2","MemoryRouter","_ref3","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","_ref4","jsonPath","Outlet","Route","_props","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","Await","_ref7","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","success","defineProperty","renderError","reject","catch","_tracked","then","data","AbortedDeferredError","_ref8","toRender","Children","forEach","isValidElement","treePath","type","apply","name","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","dataStrategy","patchRoutesOnNavigation","initialize"],"mappings":"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"}
+{"version":3,"file":"index.js","sources":["../lib/context.ts","../lib/hooks.tsx","../lib/components.tsx","../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnMiss`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  unstable_HandlerResult,\n  unstable_AgnosticPatchRoutesOnMissFunction,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n  unstable_HandlerResult,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport interface unstable_PatchRoutesOnMissFunction\n  extends unstable_AgnosticPatchRoutesOnMissFunction<RouteMatch> {}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    unstable_dataStrategy?: unstable_DataStrategyFunction;\n    unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n"],"names":["DataRouterContext","React","createContext","process","env","NODE_ENV","displayName","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","_temp","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","navigateEffectWarning","useIsomorphicLayoutEffect","cb","isStatic","static","useLayoutEffect","useNavigate","useNavigateStable","useNavigateUnstable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","activeRef","useRef","current","navigate","useCallback","options","warning","go","path","resolveTo","parse","replace","push","state","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","_temp2","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathname","parentPathnameBase","pathnameBase","parentRoute","route","parentPath","warningOnce","endsWith","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","segments","slice","join","matchRoutes","element","undefined","Component","lazy","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","_extends","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","console","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","constructor","props","revalidation","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","id","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","keys","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","index","shouldRenderHydrateFallback","concat","getChildren","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","router","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","_state$errors","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","UseNavigateStable","fromRouteId","alreadyWarned","cond","START_TRANSITION","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","v7_startTransition","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","_ref2","MemoryRouter","_ref3","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","_ref4","jsonPath","Outlet","Route","_props","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","Await","_ref7","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","success","defineProperty","renderError","reject","catch","_tracked","then","data","AbortedDeferredError","_ref8","toRender","Children","forEach","isValidElement","treePath","type","apply","name","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","unstable_dataStrategy","unstable_patchRoutesOnMiss","initialize"],"mappings":"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"}
Index: imaps-frontend/node_modules/react-router/dist/lib/components.d.ts
===================================================================
--- imaps-frontend/node_modules/react-router/dist/lib/components.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/lib/components.d.ts	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -26,5 +26,5 @@
  * A `<Router>` that stores all entries in memory.
  *
- * @see https://reactrouter.com/v6/router-components/memory-router
+ * @see https://reactrouter.com/router-components/memory-router
  */
 export declare function MemoryRouter({ basename, children, initialEntries, initialIndex, future, }: MemoryRouterProps): React.ReactElement;
@@ -42,5 +42,5 @@
  * `useNavigate` hook instead.
  *
- * @see https://reactrouter.com/v6/components/navigate
+ * @see https://reactrouter.com/components/navigate
  */
 export declare function Navigate({ to, replace, state, relative, }: NavigateProps): null;
@@ -51,5 +51,5 @@
  * Renders the child route's element, if there is one.
  *
- * @see https://reactrouter.com/v6/components/outlet
+ * @see https://reactrouter.com/components/outlet
  */
 export declare function Outlet(props: OutletProps): React.ReactElement | null;
@@ -98,5 +98,5 @@
  * Declares an element that should be rendered at a certain URL path.
  *
- * @see https://reactrouter.com/v6/components/route
+ * @see https://reactrouter.com/components/route
  */
 export declare function Route(_props: RouteProps): React.ReactElement | null;
@@ -117,5 +117,5 @@
  * in web browsers or a `<StaticRouter>` for server rendering.
  *
- * @see https://reactrouter.com/v6/router-components/router
+ * @see https://reactrouter.com/router-components/router
  */
 export declare function Router({ basename: basenameProp, children, location: locationProp, navigationType, navigator, static: staticProp, future, }: RouterProps): React.ReactElement | null;
@@ -128,5 +128,5 @@
  * that best matches the current location.
  *
- * @see https://reactrouter.com/v6/components/routes
+ * @see https://reactrouter.com/components/routes
  */
 export declare function Routes({ children, location, }: RoutesProps): React.ReactElement | null;
@@ -149,5 +149,5 @@
  * `<Routes>` to create a route config from its children.
  *
- * @see https://reactrouter.com/v6/utils/create-routes-from-children
+ * @see https://reactrouter.com/utils/create-routes-from-children
  */
 export declare function createRoutesFromChildren(children: React.ReactNode, parentPath?: number[]): RouteObject[];
Index: imaps-frontend/node_modules/react-router/dist/lib/context.d.ts
===================================================================
--- imaps-frontend/node_modules/react-router/dist/lib/context.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/lib/context.d.ts	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -60,6 +60,6 @@
     preventScrollReset?: boolean;
     relative?: RelativeRoutingType;
-    flushSync?: boolean;
-    viewTransition?: boolean;
+    unstable_flushSync?: boolean;
+    unstable_viewTransition?: boolean;
 }
 /**
Index: imaps-frontend/node_modules/react-router/dist/lib/deprecations.d.ts
===================================================================
--- imaps-frontend/node_modules/react-router/dist/lib/deprecations.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ 	(revision )
@@ -1,4 +1,0 @@
-import type { FutureConfig as RouterFutureConfig } from "@remix-run/router";
-import type { FutureConfig as RenderFutureConfig } from "./components";
-export declare function warnOnce(key: string, message: string): void;
-export declare function logV6DeprecationWarnings(renderFuture: Partial<RenderFutureConfig> | undefined, routerFuture?: Omit<RouterFutureConfig, "v7_prependBasename">): void;
Index: imaps-frontend/node_modules/react-router/dist/lib/hooks.d.ts
===================================================================
--- imaps-frontend/node_modules/react-router/dist/lib/hooks.d.ts	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/lib/hooks.d.ts	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -7,5 +7,5 @@
  * custom links that are also accessible and preserve right-click behavior.
  *
- * @see https://reactrouter.com/v6/hooks/use-href
+ * @see https://reactrouter.com/hooks/use-href
  */
 export declare function useHref(to: To, { relative }?: {
@@ -15,5 +15,5 @@
  * Returns true if this component is a descendant of a `<Router>`.
  *
- * @see https://reactrouter.com/v6/hooks/use-in-router-context
+ * @see https://reactrouter.com/hooks/use-in-router-context
  */
 export declare function useInRouterContext(): boolean;
@@ -26,5 +26,5 @@
  * be able to provide something higher-level to better suit your needs.
  *
- * @see https://reactrouter.com/v6/hooks/use-location
+ * @see https://reactrouter.com/hooks/use-location
  */
 export declare function useLocation(): Location;
@@ -33,5 +33,5 @@
  * the current location, either by a pop, push, or replace on the history stack.
  *
- * @see https://reactrouter.com/v6/hooks/use-navigation-type
+ * @see https://reactrouter.com/hooks/use-navigation-type
  */
 export declare function useNavigationType(): NavigationType;
@@ -41,5 +41,5 @@
  * `<NavLink>`.
  *
- * @see https://reactrouter.com/v6/hooks/use-match
+ * @see https://reactrouter.com/hooks/use-match
  */
 export declare function useMatch<ParamKey extends ParamParseKey<Path>, Path extends string>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null;
@@ -55,5 +55,5 @@
  * may also be used by other elements to change the location.
  *
- * @see https://reactrouter.com/v6/hooks/use-navigate
+ * @see https://reactrouter.com/hooks/use-navigate
  */
 export declare function useNavigate(): NavigateFunction;
@@ -61,5 +61,5 @@
  * Returns the context (if provided) for the child route at this level of the route
  * hierarchy.
- * @see https://reactrouter.com/v6/hooks/use-outlet-context
+ * @see https://reactrouter.com/hooks/use-outlet-context
  */
 export declare function useOutletContext<Context = unknown>(): Context;
@@ -68,5 +68,5 @@
  * hierarchy. Used internally by `<Outlet>` to render child routes.
  *
- * @see https://reactrouter.com/v6/hooks/use-outlet
+ * @see https://reactrouter.com/hooks/use-outlet
  */
 export declare function useOutlet(context?: unknown): React.ReactElement | null;
@@ -75,5 +75,5 @@
  * URL that were matched by the route path.
  *
- * @see https://reactrouter.com/v6/hooks/use-params
+ * @see https://reactrouter.com/hooks/use-params
  */
 export declare function useParams<ParamsOrKey extends string | Record<string, string | undefined> = string>(): Readonly<[
@@ -83,5 +83,5 @@
  * Resolves the pathname of the given `to` value against the current location.
  *
- * @see https://reactrouter.com/v6/hooks/use-resolved-path
+ * @see https://reactrouter.com/hooks/use-resolved-path
  */
 export declare function useResolvedPath(to: To, { relative }?: {
@@ -94,5 +94,5 @@
  * element.
  *
- * @see https://reactrouter.com/v6/hooks/use-routes
+ * @see https://reactrouter.com/hooks/use-routes
  */
 export declare function useRoutes(routes: RouteObject[], locationArg?: Partial<Location> | string): React.ReactElement | null;
Index: imaps-frontend/node_modules/react-router/dist/main.js
===================================================================
--- imaps-frontend/node_modules/react-router/dist/main.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/main.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,4 +1,4 @@
 /**
- * React Router v6.28.0
+ * React Router v6.26.0
  *
  * Copyright (c) Remix Software Inc.
Index: imaps-frontend/node_modules/react-router/dist/react-router.development.js
===================================================================
--- imaps-frontend/node_modules/react-router/dist/react-router.development.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/react-router.development.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,4 +1,4 @@
 /**
- * React Router v6.28.0
+ * React Router v6.26.0
  *
  * Copyright (c) Remix Software Inc.
@@ -50,5 +50,5 @@
  * custom links that are also accessible and preserve right-click behavior.
  *
- * @see https://reactrouter.com/v6/hooks/use-href
+ * @see https://reactrouter.com/hooks/use-href
  */
 function useHref(to, {
@@ -87,5 +87,5 @@
  * Returns true if this component is a descendant of a `<Router>`.
  *
- * @see https://reactrouter.com/v6/hooks/use-in-router-context
+ * @see https://reactrouter.com/hooks/use-in-router-context
  */
 function useInRouterContext() {
@@ -100,5 +100,5 @@
  * be able to provide something higher-level to better suit your needs.
  *
- * @see https://reactrouter.com/v6/hooks/use-location
+ * @see https://reactrouter.com/hooks/use-location
  */
 function useLocation() {
@@ -113,5 +113,5 @@
  * the current location, either by a pop, push, or replace on the history stack.
  *
- * @see https://reactrouter.com/v6/hooks/use-navigation-type
+ * @see https://reactrouter.com/hooks/use-navigation-type
  */
 function useNavigationType() {
@@ -123,5 +123,5 @@
  * `<NavLink>`.
  *
- * @see https://reactrouter.com/v6/hooks/use-match
+ * @see https://reactrouter.com/hooks/use-match
  */
 function useMatch(pattern) {
@@ -150,5 +150,5 @@
  * may also be used by other elements to change the location.
  *
- * @see https://reactrouter.com/v6/hooks/use-navigate
+ * @see https://reactrouter.com/hooks/use-navigate
  */
 function useNavigate() {
@@ -209,5 +209,5 @@
  * Returns the context (if provided) for the child route at this level of the route
  * hierarchy.
- * @see https://reactrouter.com/v6/hooks/use-outlet-context
+ * @see https://reactrouter.com/hooks/use-outlet-context
  */
 function useOutletContext() {
@@ -218,5 +218,5 @@
  * hierarchy. Used internally by `<Outlet>` to render child routes.
  *
- * @see https://reactrouter.com/v6/hooks/use-outlet
+ * @see https://reactrouter.com/hooks/use-outlet
  */
 function useOutlet(context) {
@@ -233,5 +233,5 @@
  * URL that were matched by the route path.
  *
- * @see https://reactrouter.com/v6/hooks/use-params
+ * @see https://reactrouter.com/hooks/use-params
  */
 function useParams() {
@@ -245,5 +245,5 @@
  * Resolves the pathname of the given `to` value against the current location.
  *
- * @see https://reactrouter.com/v6/hooks/use-resolved-path
+ * @see https://reactrouter.com/hooks/use-resolved-path
  */
 function useResolvedPath(to, {
@@ -268,5 +268,5 @@
  * element.
  *
- * @see https://reactrouter.com/v6/hooks/use-routes
+ * @see https://reactrouter.com/hooks/use-routes
  */
 function useRoutes(routes, locationArg) {
@@ -489,5 +489,5 @@
     } else if (future?.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {
       // Don't bail if we're initializing with partial hydration and we have
-      // router matches.  That means we're actively running `patchRoutesOnNavigation`
+      // router matches.  That means we're actively running `patchRoutesOnMiss`
       // so we should render down the partial matches to the appropriate
       // `HydrateFallback`.  We only do this if `parentMatches` is empty so it
@@ -626,5 +626,5 @@
 })(DataRouterStateHook || (DataRouterStateHook = {}));
 function getDataRouterConsoleError(hookName) {
-  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;
+  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;
 }
 function useDataRouterContext(hookName) {
@@ -835,40 +835,9 @@
   return navigate;
 }
-const alreadyWarned$1 = {};
+const alreadyWarned = {};
 function warningOnce(key, cond, message) {
-  if (!cond && !alreadyWarned$1[key]) {
-    alreadyWarned$1[key] = true;
+  if (!cond && !alreadyWarned[key]) {
+    alreadyWarned[key] = true;
     UNSAFE_warning(false, message) ;
-  }
-}
-
-const alreadyWarned = {};
-function warnOnce(key, message) {
-  if (!alreadyWarned[message]) {
-    alreadyWarned[message] = true;
-    console.warn(message);
-  }
-}
-const logDeprecation = (flag, msg, link) => warnOnce(flag, `⚠️ React Router Future Flag Warning: ${msg}. ` + `You can use the \`${flag}\` future flag to opt-in early. ` + `For more information, see ${link}.`);
-function logV6DeprecationWarnings(renderFuture, routerFuture) {
-  if (!renderFuture?.v7_startTransition) {
-    logDeprecation("v7_startTransition", "React Router will begin wrapping state updates in `React.startTransition` in v7", "https://reactrouter.com/v6/upgrading/future#v7_starttransition");
-  }
-  if (!renderFuture?.v7_relativeSplatPath && (!routerFuture || !routerFuture.v7_relativeSplatPath)) {
-    logDeprecation("v7_relativeSplatPath", "Relative route resolution within Splat routes is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath");
-  }
-  if (routerFuture) {
-    if (!routerFuture.v7_fetcherPersist) {
-      logDeprecation("v7_fetcherPersist", "The persistence behavior of fetchers is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist");
-    }
-    if (!routerFuture.v7_normalizeFormMethod) {
-      logDeprecation("v7_normalizeFormMethod", "Casing of `formMethod` fields is being normalized to uppercase in v7", "https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod");
-    }
-    if (!routerFuture.v7_partialHydration) {
-      logDeprecation("v7_partialHydration", "`RouterProvider` hydration behavior is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_partialhydration");
-    }
-    if (!routerFuture.v7_skipActionErrorRevalidation) {
-      logDeprecation("v7_skipActionErrorRevalidation", "The revalidation behavior after 4xx/5xx `action` responses is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation");
-    }
   }
 }
@@ -947,5 +916,4 @@
     basename
   }), [router, navigator, basename]);
-  React.useEffect(() => logV6DeprecationWarnings(future, router.future), [router, future]);
   // The fragment and {null} here are important!  We need them to keep React 18's
   // useId happy when we are server-rendering since we may have a <script> here
@@ -982,5 +950,5 @@
  * A `<Router>` that stores all entries in memory.
  *
- * @see https://reactrouter.com/v6/router-components/memory-router
+ * @see https://reactrouter.com/router-components/memory-router
  */
 function MemoryRouter({
@@ -1011,5 +979,4 @@
   }, [setStateImpl, v7_startTransition]);
   React.useLayoutEffect(() => history.listen(setState), [history, setState]);
-  React.useEffect(() => logV6DeprecationWarnings(future), [future]);
   return /*#__PURE__*/React.createElement(Router, {
     basename: basename,
@@ -1028,5 +995,5 @@
  * `useNavigate` hook instead.
  *
- * @see https://reactrouter.com/v6/components/navigate
+ * @see https://reactrouter.com/components/navigate
  */
 function Navigate({
@@ -1066,5 +1033,5 @@
  * Renders the child route's element, if there is one.
  *
- * @see https://reactrouter.com/v6/components/outlet
+ * @see https://reactrouter.com/components/outlet
  */
 function Outlet(props) {
@@ -1074,5 +1041,5 @@
  * Declares an element that should be rendered at a certain URL path.
  *
- * @see https://reactrouter.com/v6/components/route
+ * @see https://reactrouter.com/components/route
  */
 function Route(_props) {
@@ -1086,5 +1053,5 @@
  * in web browsers or a `<StaticRouter>` for server rendering.
  *
- * @see https://reactrouter.com/v6/router-components/router
+ * @see https://reactrouter.com/router-components/router
  */
 function Router({
@@ -1151,5 +1118,5 @@
  * that best matches the current location.
  *
- * @see https://reactrouter.com/v6/components/routes
+ * @see https://reactrouter.com/components/routes
  */
 function Routes({
@@ -1285,5 +1252,5 @@
  * `<Routes>` to create a route config from its children.
  *
- * @see https://reactrouter.com/v6/utils/create-routes-from-children
+ * @see https://reactrouter.com/utils/create-routes-from-children
  */
 function createRoutesFromChildren(children, parentPath = []) {
@@ -1388,9 +1355,9 @@
     routes,
     mapRouteProperties,
-    dataStrategy: opts?.dataStrategy,
-    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation
+    unstable_dataStrategy: opts?.unstable_dataStrategy,
+    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss
   }).initialize();
 }
 
-export { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };
+export { Await, MemoryRouter, Navigate, Outlet, Route, Router, RouterProvider, Routes, DataRouterContext as UNSAFE_DataRouterContext, DataRouterStateContext as UNSAFE_DataRouterStateContext, LocationContext as UNSAFE_LocationContext, NavigationContext as UNSAFE_NavigationContext, RouteContext as UNSAFE_RouteContext, mapRouteProperties as UNSAFE_mapRouteProperties, useRouteId as UNSAFE_useRouteId, useRoutesImpl as UNSAFE_useRoutesImpl, createMemoryRouter, createRoutesFromChildren, createRoutesFromChildren as createRoutesFromElements, renderMatches, useActionData, useAsyncError, useAsyncValue, useBlocker, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes };
 //# sourceMappingURL=react-router.development.js.map
Index: imaps-frontend/node_modules/react-router/dist/react-router.development.js.map
===================================================================
--- imaps-frontend/node_modules/react-router/dist/react-router.development.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/react-router.development.js.map	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,1 +1,1 @@
-{"version":3,"file":"react-router.development.js","sources":["../lib/context.ts","../lib/hooks.tsx","../lib/deprecations.ts","../lib/components.tsx","../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  flushSync?: boolean;\n  viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnNavigation`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n  if (!alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n  warnOnce(\n    flag,\n    `⚠️ React Router Future Flag Warning: ${msg}. ` +\n      `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n      `For more information, see ${link}.`\n  );\n\nexport function logV6DeprecationWarnings(\n  renderFuture: Partial<RenderFutureConfig> | undefined,\n  routerFuture?: Omit<RouterFutureConfig, \"v7_prependBasename\">\n) {\n  if (!renderFuture?.v7_startTransition) {\n    logDeprecation(\n      \"v7_startTransition\",\n      \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n    );\n  }\n\n  if (\n    !renderFuture?.v7_relativeSplatPath &&\n    (!routerFuture || !routerFuture.v7_relativeSplatPath)\n  ) {\n    logDeprecation(\n      \"v7_relativeSplatPath\",\n      \"Relative route resolution within Splat routes is changing in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n    );\n  }\n\n  if (routerFuture) {\n    if (!routerFuture.v7_fetcherPersist) {\n      logDeprecation(\n        \"v7_fetcherPersist\",\n        \"The persistence behavior of fetchers is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n      );\n    }\n\n    if (!routerFuture.v7_normalizeFormMethod) {\n      logDeprecation(\n        \"v7_normalizeFormMethod\",\n        \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n      );\n    }\n\n    if (!routerFuture.v7_partialHydration) {\n      logDeprecation(\n        \"v7_partialHydration\",\n        \"`RouterProvider` hydration behavior is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n      );\n    }\n\n    if (!routerFuture.v7_skipActionErrorRevalidation) {\n      logDeprecation(\n        \"v7_skipActionErrorRevalidation\",\n        \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n      );\n    }\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  React.useEffect(\n    () => logV6DeprecationWarnings(future, router.future),\n    [router, future]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AgnosticPatchRoutesOnNavigationFunction,\n  AgnosticPatchRoutesOnNavigationFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\nimport { logV6DeprecationWarnings } from \"./lib/deprecations\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nexport type PatchRoutesOnNavigationFunctionArgs =\n  AgnosticPatchRoutesOnNavigationFunctionArgs<RouteObject, RouteMatch>;\n\nexport type PatchRoutesOnNavigationFunction =\n  AgnosticPatchRoutesOnNavigationFunction<RouteObject, RouteMatch>;\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    dataStrategy?: DataStrategyFunction;\n    patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n  logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings,\n};\n"],"names":["DataRouterContext","React","createContext","displayName","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","navigateEffectWarning","useIsomorphicLayoutEffect","cb","isStatic","static","useLayoutEffect","useNavigate","useNavigateStable","useNavigateUnstable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","activeRef","useRef","current","navigate","useCallback","options","process","warning","go","path","resolveTo","parse","replace","push","state","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathname","parentPathnameBase","pathnameBase","parentRoute","route","parentPath","warningOnce","endsWith","locationFromContext","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","segments","slice","join","matchRoutes","element","undefined","Component","lazy","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","console","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","constructor","props","revalidation","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","render","routeContext","children","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","id","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","keys","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","index","shouldRenderHydrateFallback","concat","getChildren","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","router","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","UseNavigateStable","fromRouteId","alreadyWarned","cond","warnOnce","warn","logDeprecation","flag","msg","link","logV6DeprecationWarnings","renderFuture","routerFuture","v7_startTransition","v7_fetcherPersist","v7_normalizeFormMethod","v7_skipActionErrorRevalidation","START_TRANSITION","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","MemoryRouter","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","jsonPath","Outlet","Route","_props","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","Await","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","success","defineProperty","renderError","reject","catch","_tracked","then","data","AbortedDeferredError","toRender","Children","forEach","isValidElement","treePath","type","apply","name","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","dataStrategy","patchRoutesOnNavigation","initialize"],"mappings":"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"}
+{"version":3,"file":"react-router.development.js","sources":["../lib/context.ts","../lib/hooks.tsx","../lib/components.tsx","../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnMiss`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  unstable_HandlerResult,\n  unstable_AgnosticPatchRoutesOnMissFunction,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n  unstable_HandlerResult,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport interface unstable_PatchRoutesOnMissFunction\n  extends unstable_AgnosticPatchRoutesOnMissFunction<RouteMatch> {}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    unstable_dataStrategy?: unstable_DataStrategyFunction;\n    unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n"],"names":["DataRouterContext","React","createContext","displayName","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","navigateEffectWarning","useIsomorphicLayoutEffect","cb","isStatic","static","useLayoutEffect","useNavigate","useNavigateStable","useNavigateUnstable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","activeRef","useRef","current","navigate","useCallback","options","process","warning","go","path","resolveTo","parse","replace","push","state","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathname","parentPathnameBase","pathnameBase","parentRoute","route","parentPath","warningOnce","endsWith","locationFromContext","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","segments","slice","join","matchRoutes","element","undefined","Component","lazy","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","console","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","constructor","props","revalidation","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","render","routeContext","children","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","id","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","keys","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","index","shouldRenderHydrateFallback","concat","getChildren","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","router","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","UseNavigateStable","fromRouteId","alreadyWarned","cond","START_TRANSITION","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","v7_startTransition","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","MemoryRouter","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","jsonPath","Outlet","Route","_props","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","Await","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","success","defineProperty","renderError","reject","catch","_tracked","then","data","AbortedDeferredError","toRender","Children","forEach","isValidElement","treePath","type","apply","name","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","unstable_dataStrategy","unstable_patchRoutesOnMiss","initialize"],"mappings":"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"}
Index: imaps-frontend/node_modules/react-router/dist/react-router.production.min.js
===================================================================
--- imaps-frontend/node_modules/react-router/dist/react-router.production.min.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/react-router.production.min.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,4 +1,4 @@
 /**
- * React Router v6.28.0
+ * React Router v6.26.0
  *
  * Copyright (c) Remix Software Inc.
@@ -9,4 +9,4 @@
  * @license MIT
  */
-import*as e from"react";import{UNSAFE_invariant as t,joinPaths as r,matchPath as a,UNSAFE_decodePath as n,UNSAFE_getResolveToMatches as o,resolveTo as i,parsePath as l,matchRoutes as u,Action as s,UNSAFE_convertRouteMatchToUiMatch as c,stripBasename as d,IDLE_BLOCKER as p,isRouteErrorResponse as h,createMemoryHistory as m,AbortedDeferredError as v,createRouter as f}from"@remix-run/router";export{AbortedDeferredError,Action as NavigationType,createPath,defer,generatePath,isRouteErrorResponse,json,matchPath,matchRoutes,parsePath,redirect,redirectDocument,replace,resolvePath}from"@remix-run/router";const g=e.createContext(null),E=e.createContext(null),y=e.createContext(null),x=e.createContext(null),C=e.createContext(null),b=e.createContext({outlet:null,matches:[],isDataRoute:!1}),R=e.createContext(null);function _(a,{relative:n}={}){S()||t(!1);let{basename:o,navigator:i}=e.useContext(x),{hash:l,pathname:u,search:s}=O(a,{relative:n}),c=u;return"/"!==o&&(c="/"===u?o:r([o,u])),i.createHref({pathname:c,search:s,hash:l})}function S(){return null!=e.useContext(C)}function P(){return S()||t(!1),e.useContext(C).location}function U(){return e.useContext(C).navigationType}function k(r){S()||t(!1);let{pathname:o}=P();return e.useMemo((()=>a(r,n(o))),[o,r])}function D(t){e.useContext(x).static||e.useLayoutEffect(t)}function F(){let{isDataRoute:a}=e.useContext(b);return a?function(){let{router:t}=W(J.UseNavigateStable),r=Y($.UseNavigateStable),a=e.useRef(!1);return D((()=>{a.current=!0})),e.useCallback(((e,n={})=>{a.current&&("number"==typeof e?t.navigate(e):t.navigate(e,{fromRouteId:r,...n}))}),[t,r])}():function(){S()||t(!1);let a=e.useContext(g),{basename:n,future:l,navigator:u}=e.useContext(x),{matches:s}=e.useContext(b),{pathname:c}=P(),d=JSON.stringify(o(s,l.v7_relativeSplatPath)),p=e.useRef(!1);return D((()=>{p.current=!0})),e.useCallback(((e,t={})=>{if(!p.current)return;if("number"==typeof e)return void u.go(e);let o=i(e,JSON.parse(d),c,"path"===t.relative);null==a&&"/"!==n&&(o.pathname="/"===o.pathname?n:r([n,o.pathname])),(t.replace?u.replace:u.push)(o,t.state,t)}),[n,u,d,c,a])}()}const N=e.createContext(null);function B(){return e.useContext(N)}function L(t){let r=e.useContext(b).outlet;return r?e.createElement(N.Provider,{value:t},r):r}function A(){let{matches:t}=e.useContext(b),r=t[t.length-1];return r?r.params:{}}function O(t,{relative:r}={}){let{future:a}=e.useContext(x),{matches:n}=e.useContext(b),{pathname:l}=P(),u=JSON.stringify(o(n,a.v7_relativeSplatPath));return e.useMemo((()=>i(t,JSON.parse(u),l,"path"===r)),[t,u,l,r])}function j(e,t){return T(e,t)}function T(a,n,o,i){S()||t(!1);let{navigator:c}=e.useContext(x),{matches:d}=e.useContext(b),p=d[d.length-1],h=p?p.params:{};!p||p.pathname;let m=p?p.pathnameBase:"/";p&&p.route;let v,f=P();if(n){let e="string"==typeof n?l(n):n;"/"===m||e.pathname?.startsWith(m)||t(!1),v=e}else v=f;let g=v.pathname||"/",E=g;if("/"!==m){let e=m.replace(/^\//,"").split("/");E="/"+g.replace(/^\//,"").split("/").slice(e.length).join("/")}let y=u(a,{pathname:E}),R=z(y&&y.map((e=>Object.assign({},e,{params:Object.assign({},h,e.params),pathname:r([m,c.encodeLocation?c.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?m:r([m,c.encodeLocation?c.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),d,o,i);return n&&R?e.createElement(C.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...v},navigationType:s.Pop}},R):R}function M(){let t=te(),r=h(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),a=t instanceof Error?t.stack:null,n={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return e.createElement(e.Fragment,null,e.createElement("h2",null,"Unexpected Application Error!"),e.createElement("h3",{style:{fontStyle:"italic"}},r),a?e.createElement("pre",{style:n},a):null,null)}const I=e.createElement(M,null);class H extends e.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?e.createElement(b.Provider,{value:this.props.routeContext},e.createElement(R.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function w({routeContext:t,match:r,children:a}){let n=e.useContext(g);return n&&n.static&&n.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(n.staticContext._deepestRenderedBoundaryId=r.route.id),e.createElement(b.Provider,{value:t},a)}function z(r,a=[],n=null,o=null){if(null==r){if(!n)return null;if(n.errors)r=n.matches;else{if(!(o?.v7_partialHydration&&0===a.length&&!n.initialized&&n.matches.length>0))return null;r=n.matches}}let i=r,l=n?.errors;if(null!=l){let e=i.findIndex((e=>e.route.id&&void 0!==l?.[e.route.id]));e>=0||t(!1),i=i.slice(0,Math.min(i.length,e+1))}let u=!1,s=-1;if(n&&o&&o.v7_partialHydration)for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:r}=n,a=t.route.loader&&void 0===e[t.route.id]&&(!r||void 0===r[t.route.id]);if(t.route.lazy||a){u=!0,i=s>=0?i.slice(0,s+1):[i[0]];break}}}return i.reduceRight(((t,r,o)=>{let c,d=!1,p=null,h=null;var m;n&&(c=l&&r.route.id?l[r.route.id]:void 0,p=r.route.errorElement||I,u&&(s<0&&0===o?(m="route-fallback",!1||ie[m]||(ie[m]=!0),d=!0,h=null):s===o&&(d=!0,h=r.route.hydrateFallbackElement||null)));let v=a.concat(i.slice(0,o+1)),f=()=>{let a;return a=c?p:d?h:r.route.Component?e.createElement(r.route.Component,null):r.route.element?r.route.element:t,e.createElement(w,{match:r,routeContext:{outlet:t,matches:v,isDataRoute:null!=n},children:a})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===o)?e.createElement(H,{location:n.location,revalidation:n.revalidation,component:p,error:c,children:f(),routeContext:{outlet:null,matches:v,isDataRoute:!0}}):f()}),null)}var J=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(J||{}),$=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}($||{});function W(r){let a=e.useContext(g);return a||t(!1),a}function V(r){let a=e.useContext(E);return a||t(!1),a}function Y(r){let a=function(r){let a=e.useContext(b);return a||t(!1),a}(),n=a.matches[a.matches.length-1];return n.route.id||t(!1),n.route.id}function q(){return Y($.UseRouteId)}function G(){return V($.UseNavigation).navigation}function K(){let t=W(J.UseRevalidator),r=V($.UseRevalidator);return e.useMemo((()=>({revalidate:t.router.revalidate,state:r.revalidation})),[t.router.revalidate,r.revalidation])}function Q(){let{matches:t,loaderData:r}=V($.UseMatches);return e.useMemo((()=>t.map((e=>c(e,r)))),[t,r])}function X(){let e=V($.UseLoaderData),t=Y($.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error(`You cannot \`useLoaderData\` in an errorElement (routeId: ${t})`)}function Z(e){return V($.UseRouteLoaderData).loaderData[e]}function ee(){let e=V($.UseActionData),t=Y($.UseLoaderData);return e.actionData?e.actionData[t]:void 0}function te(){let t=e.useContext(R),r=V($.UseRouteError),a=Y($.UseRouteError);return void 0!==t?t:r.errors?.[a]}function re(){return e.useContext(y)?._data}function ae(){return e.useContext(y)?._error}let ne=0;function oe(t){let{router:r,basename:a}=W(J.UseBlocker),n=V($.UseBlocker),[o,i]=e.useState(""),l=e.useCallback((e=>{if("function"!=typeof t)return!!t;if("/"===a)return t(e);let{currentLocation:r,nextLocation:n,historyAction:o}=e;return t({currentLocation:{...r,pathname:d(r.pathname,a)||r.pathname},nextLocation:{...n,pathname:d(n.pathname,a)||n.pathname},historyAction:o})}),[a,t]);return e.useEffect((()=>{let e=String(++ne);return i(e),()=>r.deleteBlocker(e)}),[r]),e.useEffect((()=>{""!==o&&r.getBlocker(o,l)}),[r,o,l]),o&&n.blockers.has(o)?n.blockers.get(o):p}const ie={};const le={};const ue=(e,t,r)=>{var a;le[a=`⚠️ React Router Future Flag Warning: ${t}. You can use the \`${e}\` future flag to opt-in early. For more information, see ${r}.`]||(le[a]=!0,console.warn(a))};function se(e,t){e?.v7_startTransition||ue("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),e?.v7_relativeSplatPath||t&&t.v7_relativeSplatPath||ue("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),t&&(t.v7_fetcherPersist||ue("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),t.v7_normalizeFormMethod||ue("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),t.v7_partialHydration||ue("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),t.v7_skipActionErrorRevalidation||ue("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}const ce=e.startTransition;function de({fallbackElement:t,router:r,future:a}){let[n,o]=e.useState(r.state),{v7_startTransition:i}=a||{},l=e.useCallback((e=>{i&&ce?ce((()=>o(e))):o(e)}),[o,i]);e.useLayoutEffect((()=>r.subscribe(l)),[r,l]),e.useEffect((()=>{}),[]);let u=e.useMemo((()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:e=>r.navigate(e),push:(e,t,a)=>r.navigate(e,{state:t,preventScrollReset:a?.preventScrollReset}),replace:(e,t,a)=>r.navigate(e,{replace:!0,state:t,preventScrollReset:a?.preventScrollReset})})),[r]),s=r.basename||"/",c=e.useMemo((()=>({router:r,navigator:u,static:!1,basename:s})),[r,u,s]);return e.useEffect((()=>se(a,r.future)),[r,a]),e.createElement(e.Fragment,null,e.createElement(g.Provider,{value:c},e.createElement(E.Provider,{value:n},e.createElement(ge,{basename:s,location:n.location,navigationType:n.historyAction,navigator:u,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},n.initialized||r.future.v7_partialHydration?e.createElement(pe,{routes:r.routes,future:r.future,state:n}):t))),null)}function pe({routes:e,future:t,state:r}){return T(e,void 0,r,t)}function he({basename:t,children:r,initialEntries:a,initialIndex:n,future:o}){let i=e.useRef();null==i.current&&(i.current=m({initialEntries:a,initialIndex:n,v5Compat:!0}));let l=i.current,[u,s]=e.useState({action:l.action,location:l.location}),{v7_startTransition:c}=o||{},d=e.useCallback((e=>{c&&ce?ce((()=>s(e))):s(e)}),[s,c]);return e.useLayoutEffect((()=>l.listen(d)),[l,d]),e.useEffect((()=>se(o)),[o]),e.createElement(ge,{basename:t,children:r,location:u.location,navigationType:u.action,navigator:l,future:o})}function me({to:r,replace:a,state:n,relative:l}){S()||t(!1);let{future:u,static:s}=e.useContext(x),{matches:c}=e.useContext(b),{pathname:d}=P(),p=F(),h=i(r,o(c,u.v7_relativeSplatPath),d,"path"===l),m=JSON.stringify(h);return e.useEffect((()=>p(JSON.parse(m),{replace:a,state:n,relative:l})),[p,m,l,a,n]),null}function ve(e){return L(e.context)}function fe(e){t(!1)}function ge({basename:r="/",children:a=null,location:n,navigationType:o=s.Pop,navigator:i,static:u=!1,future:c}){S()&&t(!1);let p=r.replace(/^\/*/,"/"),h=e.useMemo((()=>({basename:p,navigator:i,static:u,future:{v7_relativeSplatPath:!1,...c}})),[p,c,i,u]);"string"==typeof n&&(n=l(n));let{pathname:m="/",search:v="",hash:f="",state:g=null,key:E="default"}=n,y=e.useMemo((()=>{let e=d(m,p);return null==e?null:{location:{pathname:e,search:v,hash:f,state:g,key:E},navigationType:o}}),[p,m,v,f,g,E,o]);return null==y?null:e.createElement(x.Provider,{value:h},e.createElement(C.Provider,{children:a,value:y}))}function Ee({children:e,location:t}){return j(_e(e),t)}function ye({children:t,errorElement:r,resolve:a}){return e.createElement(be,{resolve:a,errorElement:r},e.createElement(Re,null,t))}var xe=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(xe||{});const Ce=new Promise((()=>{}));class be extends e.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:t,errorElement:r,resolve:a}=this.props,n=null,o=xe.pending;if(a instanceof Promise)if(this.state.error){o=xe.error;let e=this.state.error;n=Promise.reject().catch((()=>{})),Object.defineProperty(n,"_tracked",{get:()=>!0}),Object.defineProperty(n,"_error",{get:()=>e})}else a._tracked?(n=a,o="_error"in n?xe.error:"_data"in n?xe.success:xe.pending):(o=xe.pending,Object.defineProperty(a,"_tracked",{get:()=>!0}),n=a.then((e=>Object.defineProperty(a,"_data",{get:()=>e})),(e=>Object.defineProperty(a,"_error",{get:()=>e}))));else o=xe.success,n=Promise.resolve(),Object.defineProperty(n,"_tracked",{get:()=>!0}),Object.defineProperty(n,"_data",{get:()=>a});if(o===xe.error&&n._error instanceof v)throw Ce;if(o===xe.error&&!r)throw n._error;if(o===xe.error)return e.createElement(y.Provider,{value:n,children:r});if(o===xe.success)return e.createElement(y.Provider,{value:n,children:t});throw n}}function Re({children:t}){let r=re(),a="function"==typeof t?t(r):t;return e.createElement(e.Fragment,null,a)}function _e(r,a=[]){let n=[];return e.Children.forEach(r,((r,o)=>{if(!e.isValidElement(r))return;let i=[...a,o];if(r.type===e.Fragment)return void n.push.apply(n,_e(r.props.children,i));r.type!==fe&&t(!1),r.props.index&&r.props.children&&t(!1);let l={id:r.props.id||i.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:null!=r.props.ErrorBoundary||null!=r.props.errorElement,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(l.children=_e(r.props.children,i)),n.push(l)})),n}function Se(e){return z(e)}function Pe(t){let r={hasErrorBoundary:null!=t.ErrorBoundary||null!=t.errorElement};return t.Component&&Object.assign(r,{element:e.createElement(t.Component),Component:void 0}),t.HydrateFallback&&Object.assign(r,{hydrateFallbackElement:e.createElement(t.HydrateFallback),HydrateFallback:void 0}),t.ErrorBoundary&&Object.assign(r,{errorElement:e.createElement(t.ErrorBoundary),ErrorBoundary:void 0}),r}function Ue(e,t){return f({basename:t?.basename,future:{...t?.future,v7_prependBasename:!0},history:m({initialEntries:t?.initialEntries,initialIndex:t?.initialIndex}),hydrationData:t?.hydrationData,routes:e,mapRouteProperties:Pe,dataStrategy:t?.dataStrategy,patchRoutesOnNavigation:t?.patchRoutesOnNavigation}).initialize()}export{ye as Await,he as MemoryRouter,me as Navigate,ve as Outlet,fe as Route,ge as Router,de as RouterProvider,Ee as Routes,g as UNSAFE_DataRouterContext,E as UNSAFE_DataRouterStateContext,C as UNSAFE_LocationContext,x as UNSAFE_NavigationContext,b as UNSAFE_RouteContext,se as UNSAFE_logV6DeprecationWarnings,Pe as UNSAFE_mapRouteProperties,q as UNSAFE_useRouteId,T as UNSAFE_useRoutesImpl,Ue as createMemoryRouter,_e as createRoutesFromChildren,_e as createRoutesFromElements,Se as renderMatches,ee as useActionData,ae as useAsyncError,re as useAsyncValue,oe as useBlocker,_ as useHref,S as useInRouterContext,X as useLoaderData,P as useLocation,k as useMatch,Q as useMatches,F as useNavigate,G as useNavigation,U as useNavigationType,L as useOutlet,B as useOutletContext,A as useParams,O as useResolvedPath,K as useRevalidator,te as useRouteError,Z as useRouteLoaderData,j as useRoutes};
+import*as e from"react";import{UNSAFE_invariant as t,joinPaths as r,matchPath as n,UNSAFE_decodePath as a,UNSAFE_getResolveToMatches as o,resolveTo as l,parsePath as i,matchRoutes as u,Action as s,UNSAFE_convertRouteMatchToUiMatch as c,stripBasename as d,IDLE_BLOCKER as p,isRouteErrorResponse as m,createMemoryHistory as h,AbortedDeferredError as f,createRouter as v}from"@remix-run/router";export{AbortedDeferredError,Action as NavigationType,createPath,defer,generatePath,isRouteErrorResponse,json,matchPath,matchRoutes,parsePath,redirect,redirectDocument,replace,resolvePath}from"@remix-run/router";const E=e.createContext(null),g=e.createContext(null),y=e.createContext(null),x=e.createContext(null),C=e.createContext(null),b=e.createContext({outlet:null,matches:[],isDataRoute:!1}),R=e.createContext(null);function S(n,{relative:a}={}){_()||t(!1);let{basename:o,navigator:l}=e.useContext(x),{hash:i,pathname:u,search:s}=A(n,{relative:a}),c=u;return"/"!==o&&(c="/"===u?o:r([o,u])),l.createHref({pathname:c,search:s,hash:i})}function _(){return null!=e.useContext(C)}function P(){return _()||t(!1),e.useContext(C).location}function U(){return e.useContext(C).navigationType}function k(r){_()||t(!1);let{pathname:o}=P();return e.useMemo((()=>n(r,a(o))),[o,r])}function D(t){e.useContext(x).static||e.useLayoutEffect(t)}function B(){let{isDataRoute:n}=e.useContext(b);return n?function(){let{router:t}=V(z.UseNavigateStable),r=Y($.UseNavigateStable),n=e.useRef(!1);return D((()=>{n.current=!0})),e.useCallback(((e,a={})=>{n.current&&("number"==typeof e?t.navigate(e):t.navigate(e,{fromRouteId:r,...a}))}),[t,r])}():function(){_()||t(!1);let n=e.useContext(E),{basename:a,future:i,navigator:u}=e.useContext(x),{matches:s}=e.useContext(b),{pathname:c}=P(),d=JSON.stringify(o(s,i.v7_relativeSplatPath)),p=e.useRef(!1);return D((()=>{p.current=!0})),e.useCallback(((e,t={})=>{if(!p.current)return;if("number"==typeof e)return void u.go(e);let o=l(e,JSON.parse(d),c,"path"===t.relative);null==n&&"/"!==a&&(o.pathname="/"===o.pathname?a:r([a,o.pathname])),(t.replace?u.replace:u.push)(o,t.state,t)}),[a,u,d,c,n])}()}const N=e.createContext(null);function F(){return e.useContext(N)}function L(t){let r=e.useContext(b).outlet;return r?e.createElement(N.Provider,{value:t},r):r}function O(){let{matches:t}=e.useContext(b),r=t[t.length-1];return r?r.params:{}}function A(t,{relative:r}={}){let{future:n}=e.useContext(x),{matches:a}=e.useContext(b),{pathname:i}=P(),u=JSON.stringify(o(a,n.v7_relativeSplatPath));return e.useMemo((()=>l(t,JSON.parse(u),i,"path"===r)),[t,u,i,r])}function j(e,t){return M(e,t)}function M(n,a,o,l){_()||t(!1);let{navigator:c}=e.useContext(x),{matches:d}=e.useContext(b),p=d[d.length-1],m=p?p.params:{};!p||p.pathname;let h=p?p.pathnameBase:"/";p&&p.route;let f,v=P();if(a){let e="string"==typeof a?i(a):a;"/"===h||e.pathname?.startsWith(h)||t(!1),f=e}else f=v;let E=f.pathname||"/",g=E;if("/"!==h){let e=h.replace(/^\//,"").split("/");g="/"+E.replace(/^\//,"").split("/").slice(e.length).join("/")}let y=u(n,{pathname:g}),R=J(y&&y.map((e=>Object.assign({},e,{params:Object.assign({},m,e.params),pathname:r([h,c.encodeLocation?c.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?h:r([h,c.encodeLocation?c.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),d,o,l);return a&&R?e.createElement(C.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...f},navigationType:s.Pop}},R):R}function I(){let t=te(),r=m(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,a={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return e.createElement(e.Fragment,null,e.createElement("h2",null,"Unexpected Application Error!"),e.createElement("h3",{style:{fontStyle:"italic"}},r),n?e.createElement("pre",{style:a},n):null,null)}const T=e.createElement(I,null);class H extends e.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?e.createElement(b.Provider,{value:this.props.routeContext},e.createElement(R.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function w({routeContext:t,match:r,children:n}){let a=e.useContext(E);return a&&a.static&&a.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=r.route.id),e.createElement(b.Provider,{value:t},n)}function J(r,n=[],a=null,o=null){if(null==r){if(!a)return null;if(a.errors)r=a.matches;else{if(!(o?.v7_partialHydration&&0===n.length&&!a.initialized&&a.matches.length>0))return null;r=a.matches}}let l=r,i=a?.errors;if(null!=i){let e=l.findIndex((e=>e.route.id&&void 0!==i?.[e.route.id]));e>=0||t(!1),l=l.slice(0,Math.min(l.length,e+1))}let u=!1,s=-1;if(a&&o&&o.v7_partialHydration)for(let e=0;e<l.length;e++){let t=l[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:r}=a,n=t.route.loader&&void 0===e[t.route.id]&&(!r||void 0===r[t.route.id]);if(t.route.lazy||n){u=!0,l=s>=0?l.slice(0,s+1):[l[0]];break}}}return l.reduceRight(((t,r,o)=>{let c,d=!1,p=null,m=null;var h;a&&(c=i&&r.route.id?i[r.route.id]:void 0,p=r.route.errorElement||T,u&&(s<0&&0===o?(h="route-fallback",!1||le[h]||(le[h]=!0),d=!0,m=null):s===o&&(d=!0,m=r.route.hydrateFallbackElement||null)));let f=n.concat(l.slice(0,o+1)),v=()=>{let n;return n=c?p:d?m:r.route.Component?e.createElement(r.route.Component,null):r.route.element?r.route.element:t,e.createElement(w,{match:r,routeContext:{outlet:t,matches:f,isDataRoute:null!=a},children:n})};return a&&(r.route.ErrorBoundary||r.route.errorElement||0===o)?e.createElement(H,{location:a.location,revalidation:a.revalidation,component:p,error:c,children:v(),routeContext:{outlet:null,matches:f,isDataRoute:!0}}):v()}),null)}var z=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(z||{}),$=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}($||{});function V(r){let n=e.useContext(E);return n||t(!1),n}function W(r){let n=e.useContext(g);return n||t(!1),n}function Y(r){let n=function(r){let n=e.useContext(b);return n||t(!1),n}(),a=n.matches[n.matches.length-1];return a.route.id||t(!1),a.route.id}function q(){return Y($.UseRouteId)}function G(){return W($.UseNavigation).navigation}function K(){let t=V(z.UseRevalidator),r=W($.UseRevalidator);return e.useMemo((()=>({revalidate:t.router.revalidate,state:r.revalidation})),[t.router.revalidate,r.revalidation])}function Q(){let{matches:t,loaderData:r}=W($.UseMatches);return e.useMemo((()=>t.map((e=>c(e,r)))),[t,r])}function X(){let e=W($.UseLoaderData),t=Y($.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error(`You cannot \`useLoaderData\` in an errorElement (routeId: ${t})`)}function Z(e){return W($.UseRouteLoaderData).loaderData[e]}function ee(){let e=W($.UseActionData),t=Y($.UseLoaderData);return e.actionData?e.actionData[t]:void 0}function te(){let t=e.useContext(R),r=W($.UseRouteError),n=Y($.UseRouteError);return void 0!==t?t:r.errors?.[n]}function re(){return e.useContext(y)?._data}function ne(){return e.useContext(y)?._error}let ae=0;function oe(t){let{router:r,basename:n}=V(z.UseBlocker),a=W($.UseBlocker),[o,l]=e.useState(""),i=e.useCallback((e=>{if("function"!=typeof t)return!!t;if("/"===n)return t(e);let{currentLocation:r,nextLocation:a,historyAction:o}=e;return t({currentLocation:{...r,pathname:d(r.pathname,n)||r.pathname},nextLocation:{...a,pathname:d(a.pathname,n)||a.pathname},historyAction:o})}),[n,t]);return e.useEffect((()=>{let e=String(++ae);return l(e),()=>r.deleteBlocker(e)}),[r]),e.useEffect((()=>{""!==o&&r.getBlocker(o,i)}),[r,o,i]),o&&a.blockers.has(o)?a.blockers.get(o):p}const le={};const ie=e.startTransition;function ue({fallbackElement:t,router:r,future:n}){let[a,o]=e.useState(r.state),{v7_startTransition:l}=n||{},i=e.useCallback((e=>{l&&ie?ie((()=>o(e))):o(e)}),[o,l]);e.useLayoutEffect((()=>r.subscribe(i)),[r,i]),e.useEffect((()=>{}),[]);let u=e.useMemo((()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:e=>r.navigate(e),push:(e,t,n)=>r.navigate(e,{state:t,preventScrollReset:n?.preventScrollReset}),replace:(e,t,n)=>r.navigate(e,{replace:!0,state:t,preventScrollReset:n?.preventScrollReset})})),[r]),s=r.basename||"/",c=e.useMemo((()=>({router:r,navigator:u,static:!1,basename:s})),[r,u,s]);return e.createElement(e.Fragment,null,e.createElement(E.Provider,{value:c},e.createElement(g.Provider,{value:a},e.createElement(he,{basename:s,location:a.location,navigationType:a.historyAction,navigator:u,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},a.initialized||r.future.v7_partialHydration?e.createElement(se,{routes:r.routes,future:r.future,state:a}):t))),null)}function se({routes:e,future:t,state:r}){return M(e,void 0,r,t)}function ce({basename:t,children:r,initialEntries:n,initialIndex:a,future:o}){let l=e.useRef();null==l.current&&(l.current=h({initialEntries:n,initialIndex:a,v5Compat:!0}));let i=l.current,[u,s]=e.useState({action:i.action,location:i.location}),{v7_startTransition:c}=o||{},d=e.useCallback((e=>{c&&ie?ie((()=>s(e))):s(e)}),[s,c]);return e.useLayoutEffect((()=>i.listen(d)),[i,d]),e.createElement(he,{basename:t,children:r,location:u.location,navigationType:u.action,navigator:i,future:o})}function de({to:r,replace:n,state:a,relative:i}){_()||t(!1);let{future:u,static:s}=e.useContext(x),{matches:c}=e.useContext(b),{pathname:d}=P(),p=B(),m=l(r,o(c,u.v7_relativeSplatPath),d,"path"===i),h=JSON.stringify(m);return e.useEffect((()=>p(JSON.parse(h),{replace:n,state:a,relative:i})),[p,h,i,n,a]),null}function pe(e){return L(e.context)}function me(e){t(!1)}function he({basename:r="/",children:n=null,location:a,navigationType:o=s.Pop,navigator:l,static:u=!1,future:c}){_()&&t(!1);let p=r.replace(/^\/*/,"/"),m=e.useMemo((()=>({basename:p,navigator:l,static:u,future:{v7_relativeSplatPath:!1,...c}})),[p,c,l,u]);"string"==typeof a&&(a=i(a));let{pathname:h="/",search:f="",hash:v="",state:E=null,key:g="default"}=a,y=e.useMemo((()=>{let e=d(h,p);return null==e?null:{location:{pathname:e,search:f,hash:v,state:E,key:g},navigationType:o}}),[p,h,f,v,E,g,o]);return null==y?null:e.createElement(x.Provider,{value:m},e.createElement(C.Provider,{children:n,value:y}))}function fe({children:e,location:t}){return j(Ce(e),t)}function ve({children:t,errorElement:r,resolve:n}){return e.createElement(ye,{resolve:n,errorElement:r},e.createElement(xe,null,t))}var Ee=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(Ee||{});const ge=new Promise((()=>{}));class ye extends e.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:t,errorElement:r,resolve:n}=this.props,a=null,o=Ee.pending;if(n instanceof Promise)if(this.state.error){o=Ee.error;let e=this.state.error;a=Promise.reject().catch((()=>{})),Object.defineProperty(a,"_tracked",{get:()=>!0}),Object.defineProperty(a,"_error",{get:()=>e})}else n._tracked?(a=n,o="_error"in a?Ee.error:"_data"in a?Ee.success:Ee.pending):(o=Ee.pending,Object.defineProperty(n,"_tracked",{get:()=>!0}),a=n.then((e=>Object.defineProperty(n,"_data",{get:()=>e})),(e=>Object.defineProperty(n,"_error",{get:()=>e}))));else o=Ee.success,a=Promise.resolve(),Object.defineProperty(a,"_tracked",{get:()=>!0}),Object.defineProperty(a,"_data",{get:()=>n});if(o===Ee.error&&a._error instanceof f)throw ge;if(o===Ee.error&&!r)throw a._error;if(o===Ee.error)return e.createElement(y.Provider,{value:a,children:r});if(o===Ee.success)return e.createElement(y.Provider,{value:a,children:t});throw a}}function xe({children:t}){let r=re(),n="function"==typeof t?t(r):t;return e.createElement(e.Fragment,null,n)}function Ce(r,n=[]){let a=[];return e.Children.forEach(r,((r,o)=>{if(!e.isValidElement(r))return;let l=[...n,o];if(r.type===e.Fragment)return void a.push.apply(a,Ce(r.props.children,l));r.type!==me&&t(!1),r.props.index&&r.props.children&&t(!1);let i={id:r.props.id||l.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,loader:r.props.loader,action:r.props.action,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:null!=r.props.ErrorBoundary||null!=r.props.errorElement,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(i.children=Ce(r.props.children,l)),a.push(i)})),a}function be(e){return J(e)}function Re(t){let r={hasErrorBoundary:null!=t.ErrorBoundary||null!=t.errorElement};return t.Component&&Object.assign(r,{element:e.createElement(t.Component),Component:void 0}),t.HydrateFallback&&Object.assign(r,{hydrateFallbackElement:e.createElement(t.HydrateFallback),HydrateFallback:void 0}),t.ErrorBoundary&&Object.assign(r,{errorElement:e.createElement(t.ErrorBoundary),ErrorBoundary:void 0}),r}function Se(e,t){return v({basename:t?.basename,future:{...t?.future,v7_prependBasename:!0},history:h({initialEntries:t?.initialEntries,initialIndex:t?.initialIndex}),hydrationData:t?.hydrationData,routes:e,mapRouteProperties:Re,unstable_dataStrategy:t?.unstable_dataStrategy,unstable_patchRoutesOnMiss:t?.unstable_patchRoutesOnMiss}).initialize()}export{ve as Await,ce as MemoryRouter,de as Navigate,pe as Outlet,me as Route,he as Router,ue as RouterProvider,fe as Routes,E as UNSAFE_DataRouterContext,g as UNSAFE_DataRouterStateContext,C as UNSAFE_LocationContext,x as UNSAFE_NavigationContext,b as UNSAFE_RouteContext,Re as UNSAFE_mapRouteProperties,q as UNSAFE_useRouteId,M as UNSAFE_useRoutesImpl,Se as createMemoryRouter,Ce as createRoutesFromChildren,Ce as createRoutesFromElements,be as renderMatches,ee as useActionData,ne as useAsyncError,re as useAsyncValue,oe as useBlocker,S as useHref,_ as useInRouterContext,X as useLoaderData,P as useLocation,k as useMatch,Q as useMatches,B as useNavigate,G as useNavigation,U as useNavigationType,L as useOutlet,F as useOutletContext,O as useParams,A as useResolvedPath,K as useRevalidator,te as useRouteError,Z as useRouteLoaderData,j as useRoutes};
 //# sourceMappingURL=react-router.production.min.js.map
Index: imaps-frontend/node_modules/react-router/dist/react-router.production.min.js.map
===================================================================
--- imaps-frontend/node_modules/react-router/dist/react-router.production.min.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/react-router.production.min.js.map	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,1 +1,1 @@
-{"version":3,"file":"react-router.production.min.js","sources":["../lib/context.ts","../lib/hooks.tsx","../lib/deprecations.ts","../lib/components.tsx","../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  flushSync?: boolean;\n  viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnNavigation`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n  if (!alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n  warnOnce(\n    flag,\n    `⚠️ React Router Future Flag Warning: ${msg}. ` +\n      `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n      `For more information, see ${link}.`\n  );\n\nexport function logV6DeprecationWarnings(\n  renderFuture: Partial<RenderFutureConfig> | undefined,\n  routerFuture?: Omit<RouterFutureConfig, \"v7_prependBasename\">\n) {\n  if (!renderFuture?.v7_startTransition) {\n    logDeprecation(\n      \"v7_startTransition\",\n      \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n    );\n  }\n\n  if (\n    !renderFuture?.v7_relativeSplatPath &&\n    (!routerFuture || !routerFuture.v7_relativeSplatPath)\n  ) {\n    logDeprecation(\n      \"v7_relativeSplatPath\",\n      \"Relative route resolution within Splat routes is changing in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n    );\n  }\n\n  if (routerFuture) {\n    if (!routerFuture.v7_fetcherPersist) {\n      logDeprecation(\n        \"v7_fetcherPersist\",\n        \"The persistence behavior of fetchers is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n      );\n    }\n\n    if (!routerFuture.v7_normalizeFormMethod) {\n      logDeprecation(\n        \"v7_normalizeFormMethod\",\n        \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n      );\n    }\n\n    if (!routerFuture.v7_partialHydration) {\n      logDeprecation(\n        \"v7_partialHydration\",\n        \"`RouterProvider` hydration behavior is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n      );\n    }\n\n    if (!routerFuture.v7_skipActionErrorRevalidation) {\n      logDeprecation(\n        \"v7_skipActionErrorRevalidation\",\n        \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n      );\n    }\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  React.useEffect(\n    () => logV6DeprecationWarnings(future, router.future),\n    [router, future]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AgnosticPatchRoutesOnNavigationFunction,\n  AgnosticPatchRoutesOnNavigationFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\nimport { logV6DeprecationWarnings } from \"./lib/deprecations\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nexport type PatchRoutesOnNavigationFunctionArgs =\n  AgnosticPatchRoutesOnNavigationFunctionArgs<RouteObject, RouteMatch>;\n\nexport type PatchRoutesOnNavigationFunction =\n  AgnosticPatchRoutesOnNavigationFunction<RouteObject, RouteMatch>;\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    dataStrategy?: DataStrategyFunction;\n    patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n  logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings,\n};\n"],"names":["DataRouterContext","React","createContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","useIsomorphicLayoutEffect","cb","static","useLayoutEffect","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","id","useCurrentRouteId","DataRouterStateHook","activeRef","useRef","current","useCallback","options","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","go","path","resolveTo","parse","replace","push","state","useNavigateUnstable","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","pathnameBase","route","locationFromContext","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","slice","join","matchRoutes","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","preStyles","padding","backgroundColor","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","Component","constructor","props","super","this","revalidation","undefined","componentDidCatch","errorInfo","console","render","routeContext","children","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","lazy","reduceRight","index","shouldRenderHydrateFallback","alreadyWarned","concat","getChildren","element","hookName","ctx","useDataRouterState","useRouteContext","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","logDeprecation","flag","msg","link","warn","logV6DeprecationWarnings","renderFuture","routerFuture","v7_startTransition","v7_fetcherPersist","v7_normalizeFormMethod","v7_skipActionErrorRevalidation","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","MemoryRouter","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","isStatic","jsonPath","Outlet","Route","_props","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","Await","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","renderError","reject","catch","defineProperty","_tracked","success","then","data","AbortedDeferredError","toRender","parentPath","Children","forEach","isValidElement","treePath","type","apply","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","dataStrategy","patchRoutesOnNavigation","initialize"],"mappings":"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"}
+{"version":3,"file":"react-router.production.min.js","sources":["../lib/context.ts","../lib/hooks.tsx","../lib/components.tsx","../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnMiss`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  unstable_HandlerResult,\n  unstable_AgnosticPatchRoutesOnMissFunction,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n  unstable_HandlerResult,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport interface unstable_PatchRoutesOnMissFunction\n  extends unstable_AgnosticPatchRoutesOnMissFunction<RouteMatch> {}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    unstable_dataStrategy?: unstable_DataStrategyFunction;\n    unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n"],"names":["DataRouterContext","React","createContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","useIsomorphicLayoutEffect","cb","static","useLayoutEffect","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","id","useCurrentRouteId","DataRouterStateHook","activeRef","useRef","current","useCallback","options","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","go","path","resolveTo","parse","replace","push","state","useNavigateUnstable","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","pathnameBase","route","locationFromContext","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","slice","join","matchRoutes","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","preStyles","padding","backgroundColor","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","Component","constructor","props","super","this","revalidation","undefined","componentDidCatch","errorInfo","console","render","routeContext","children","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","lazy","reduceRight","index","shouldRenderHydrateFallback","alreadyWarned","concat","getChildren","element","hookName","ctx","useDataRouterState","useRouteContext","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","v7_startTransition","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","MemoryRouter","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","isStatic","jsonPath","Outlet","Route","_props","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","createRoutesFromChildren","Await","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","renderError","reject","catch","defineProperty","_tracked","success","then","data","AbortedDeferredError","toRender","parentPath","Children","forEach","isValidElement","treePath","type","apply","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","unstable_dataStrategy","unstable_patchRoutesOnMiss","initialize"],"mappings":"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"}
Index: imaps-frontend/node_modules/react-router/dist/umd/react-router.development.js
===================================================================
--- imaps-frontend/node_modules/react-router/dist/umd/react-router.development.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/umd/react-router.development.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,4 +1,4 @@
 /**
- * React Router v6.28.0
+ * React Router v6.26.0
  *
  * Copyright (c) Remix Software Inc.
@@ -100,5 +100,5 @@
    * custom links that are also accessible and preserve right-click behavior.
    *
-   * @see https://reactrouter.com/v6/hooks/use-href
+   * @see https://reactrouter.com/hooks/use-href
    */
   function useHref(to, _temp) {
@@ -139,5 +139,5 @@
    * Returns true if this component is a descendant of a `<Router>`.
    *
-   * @see https://reactrouter.com/v6/hooks/use-in-router-context
+   * @see https://reactrouter.com/hooks/use-in-router-context
    */
   function useInRouterContext() {
@@ -153,5 +153,5 @@
    * be able to provide something higher-level to better suit your needs.
    *
-   * @see https://reactrouter.com/v6/hooks/use-location
+   * @see https://reactrouter.com/hooks/use-location
    */
   function useLocation() {
@@ -166,5 +166,5 @@
    * the current location, either by a pop, push, or replace on the history stack.
    *
-   * @see https://reactrouter.com/v6/hooks/use-navigation-type
+   * @see https://reactrouter.com/hooks/use-navigation-type
    */
   function useNavigationType() {
@@ -177,5 +177,5 @@
    * `<NavLink>`.
    *
-   * @see https://reactrouter.com/v6/hooks/use-match
+   * @see https://reactrouter.com/hooks/use-match
    */
   function useMatch(pattern) {
@@ -210,5 +210,5 @@
    * may also be used by other elements to change the location.
    *
-   * @see https://reactrouter.com/v6/hooks/use-navigate
+   * @see https://reactrouter.com/hooks/use-navigate
    */
   function useNavigate() {
@@ -274,5 +274,5 @@
    * Returns the context (if provided) for the child route at this level of the route
    * hierarchy.
-   * @see https://reactrouter.com/v6/hooks/use-outlet-context
+   * @see https://reactrouter.com/hooks/use-outlet-context
    */
   function useOutletContext() {
@@ -284,5 +284,5 @@
    * hierarchy. Used internally by `<Outlet>` to render child routes.
    *
-   * @see https://reactrouter.com/v6/hooks/use-outlet
+   * @see https://reactrouter.com/hooks/use-outlet
    */
   function useOutlet(context) {
@@ -300,5 +300,5 @@
    * URL that were matched by the route path.
    *
-   * @see https://reactrouter.com/v6/hooks/use-params
+   * @see https://reactrouter.com/hooks/use-params
    */
   function useParams() {
@@ -313,5 +313,5 @@
    * Resolves the pathname of the given `to` value against the current location.
    *
-   * @see https://reactrouter.com/v6/hooks/use-resolved-path
+   * @see https://reactrouter.com/hooks/use-resolved-path
    */
   function useResolvedPath(to, _temp2) {
@@ -338,5 +338,5 @@
    * element.
    *
-   * @see https://reactrouter.com/v6/hooks/use-routes
+   * @see https://reactrouter.com/hooks/use-routes
    */
   function useRoutes(routes, locationArg) {
@@ -574,5 +574,5 @@
       } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {
         // Don't bail if we're initializing with partial hydration and we have
-        // router matches.  That means we're actively running `patchRoutesOnNavigation`
+        // router matches.  That means we're actively running `patchRoutesOnMiss`
         // so we should render down the partial matches to the appropriate
         // `HydrateFallback`.  We only do this if `parentMatches` is empty so it
@@ -713,5 +713,5 @@
   }(DataRouterStateHook || {});
   function getDataRouterConsoleError(hookName) {
-    return hookName + " must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.";
+    return hookName + " must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.";
   }
   function useDataRouterContext(hookName) {
@@ -943,40 +943,9 @@
     return navigate;
   }
-  const alreadyWarned$1 = {};
+  const alreadyWarned = {};
   function warningOnce(key, cond, message) {
-    if (!cond && !alreadyWarned$1[key]) {
-      alreadyWarned$1[key] = true;
+    if (!cond && !alreadyWarned[key]) {
+      alreadyWarned[key] = true;
       router.UNSAFE_warning(false, message) ;
-    }
-  }
-
-  const alreadyWarned = {};
-  function warnOnce(key, message) {
-    if (!alreadyWarned[message]) {
-      alreadyWarned[message] = true;
-      console.warn(message);
-    }
-  }
-  const logDeprecation = (flag, msg, link) => warnOnce(flag, "\u26A0\uFE0F React Router Future Flag Warning: " + msg + ". " + ("You can use the `" + flag + "` future flag to opt-in early. ") + ("For more information, see " + link + "."));
-  function logV6DeprecationWarnings(renderFuture, routerFuture) {
-    if (!(renderFuture != null && renderFuture.v7_startTransition)) {
-      logDeprecation("v7_startTransition", "React Router will begin wrapping state updates in `React.startTransition` in v7", "https://reactrouter.com/v6/upgrading/future#v7_starttransition");
-    }
-    if (!(renderFuture != null && renderFuture.v7_relativeSplatPath) && (!routerFuture || !routerFuture.v7_relativeSplatPath)) {
-      logDeprecation("v7_relativeSplatPath", "Relative route resolution within Splat routes is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath");
-    }
-    if (routerFuture) {
-      if (!routerFuture.v7_fetcherPersist) {
-        logDeprecation("v7_fetcherPersist", "The persistence behavior of fetchers is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist");
-      }
-      if (!routerFuture.v7_normalizeFormMethod) {
-        logDeprecation("v7_normalizeFormMethod", "Casing of `formMethod` fields is being normalized to uppercase in v7", "https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod");
-      }
-      if (!routerFuture.v7_partialHydration) {
-        logDeprecation("v7_partialHydration", "`RouterProvider` hydration behavior is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_partialhydration");
-      }
-      if (!routerFuture.v7_skipActionErrorRevalidation) {
-        logDeprecation("v7_skipActionErrorRevalidation", "The revalidation behavior after 4xx/5xx `action` responses is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation");
-      }
     }
   }
@@ -1058,5 +1027,4 @@
       basename
     }), [router$1, navigator, basename]);
-    React__namespace.useEffect(() => logV6DeprecationWarnings(future, router$1.future), [router$1, future]);
 
     // The fragment and {null} here are important!  We need them to keep React 18's
@@ -1095,5 +1063,5 @@
    * A `<Router>` that stores all entries in memory.
    *
-   * @see https://reactrouter.com/v6/router-components/memory-router
+   * @see https://reactrouter.com/router-components/memory-router
    */
   function MemoryRouter(_ref3) {
@@ -1125,5 +1093,4 @@
     }, [setStateImpl, v7_startTransition]);
     React__namespace.useLayoutEffect(() => history.listen(setState), [history, setState]);
-    React__namespace.useEffect(() => logV6DeprecationWarnings(future), [future]);
     return /*#__PURE__*/React__namespace.createElement(Router, {
       basename: basename,
@@ -1142,5 +1109,5 @@
    * `useNavigate` hook instead.
    *
-   * @see https://reactrouter.com/v6/components/navigate
+   * @see https://reactrouter.com/components/navigate
    */
   function Navigate(_ref4) {
@@ -1181,5 +1148,5 @@
    * Renders the child route's element, if there is one.
    *
-   * @see https://reactrouter.com/v6/components/outlet
+   * @see https://reactrouter.com/components/outlet
    */
   function Outlet(props) {
@@ -1189,5 +1156,5 @@
    * Declares an element that should be rendered at a certain URL path.
    *
-   * @see https://reactrouter.com/v6/components/route
+   * @see https://reactrouter.com/components/route
    */
   function Route(_props) {
@@ -1201,5 +1168,5 @@
    * in web browsers or a `<StaticRouter>` for server rendering.
    *
-   * @see https://reactrouter.com/v6/router-components/router
+   * @see https://reactrouter.com/router-components/router
    */
   function Router(_ref5) {
@@ -1267,5 +1234,5 @@
    * that best matches the current location.
    *
-   * @see https://reactrouter.com/v6/components/routes
+   * @see https://reactrouter.com/components/routes
    */
   function Routes(_ref6) {
@@ -1408,5 +1375,5 @@
    * `<Routes>` to create a route config from its children.
    *
-   * @see https://reactrouter.com/v6/utils/create-routes-from-children
+   * @see https://reactrouter.com/utils/create-routes-from-children
    */
   function createRoutesFromChildren(children, parentPath) {
@@ -1514,6 +1481,6 @@
       routes,
       mapRouteProperties,
-      dataStrategy: opts == null ? void 0 : opts.dataStrategy,
-      patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation
+      unstable_dataStrategy: opts == null ? void 0 : opts.unstable_dataStrategy,
+      unstable_patchRoutesOnMiss: opts == null ? void 0 : opts.unstable_patchRoutesOnMiss
     }).initialize();
   }
@@ -1588,5 +1555,4 @@
   exports.UNSAFE_NavigationContext = NavigationContext;
   exports.UNSAFE_RouteContext = RouteContext;
-  exports.UNSAFE_logV6DeprecationWarnings = logV6DeprecationWarnings;
   exports.UNSAFE_mapRouteProperties = mapRouteProperties;
   exports.UNSAFE_useRouteId = useRouteId;
Index: imaps-frontend/node_modules/react-router/dist/umd/react-router.development.js.map
===================================================================
--- imaps-frontend/node_modules/react-router/dist/umd/react-router.development.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/umd/react-router.development.js.map	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,1 +1,1 @@
-{"version":3,"file":"react-router.development.js","sources":["../../lib/context.ts","../../lib/hooks.tsx","../../lib/deprecations.ts","../../lib/components.tsx","../../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  flushSync?: boolean;\n  viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnNavigation`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n  if (!alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n  warnOnce(\n    flag,\n    `⚠️ React Router Future Flag Warning: ${msg}. ` +\n      `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n      `For more information, see ${link}.`\n  );\n\nexport function logV6DeprecationWarnings(\n  renderFuture: Partial<RenderFutureConfig> | undefined,\n  routerFuture?: Omit<RouterFutureConfig, \"v7_prependBasename\">\n) {\n  if (!renderFuture?.v7_startTransition) {\n    logDeprecation(\n      \"v7_startTransition\",\n      \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n    );\n  }\n\n  if (\n    !renderFuture?.v7_relativeSplatPath &&\n    (!routerFuture || !routerFuture.v7_relativeSplatPath)\n  ) {\n    logDeprecation(\n      \"v7_relativeSplatPath\",\n      \"Relative route resolution within Splat routes is changing in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n    );\n  }\n\n  if (routerFuture) {\n    if (!routerFuture.v7_fetcherPersist) {\n      logDeprecation(\n        \"v7_fetcherPersist\",\n        \"The persistence behavior of fetchers is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n      );\n    }\n\n    if (!routerFuture.v7_normalizeFormMethod) {\n      logDeprecation(\n        \"v7_normalizeFormMethod\",\n        \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n      );\n    }\n\n    if (!routerFuture.v7_partialHydration) {\n      logDeprecation(\n        \"v7_partialHydration\",\n        \"`RouterProvider` hydration behavior is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n      );\n    }\n\n    if (!routerFuture.v7_skipActionErrorRevalidation) {\n      logDeprecation(\n        \"v7_skipActionErrorRevalidation\",\n        \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n      );\n    }\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  React.useEffect(\n    () => logV6DeprecationWarnings(future, router.future),\n    [router, future]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AgnosticPatchRoutesOnNavigationFunction,\n  AgnosticPatchRoutesOnNavigationFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\nimport { logV6DeprecationWarnings } from \"./lib/deprecations\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nexport type PatchRoutesOnNavigationFunctionArgs =\n  AgnosticPatchRoutesOnNavigationFunctionArgs<RouteObject, RouteMatch>;\n\nexport type PatchRoutesOnNavigationFunction =\n  AgnosticPatchRoutesOnNavigationFunction<RouteObject, RouteMatch>;\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    dataStrategy?: DataStrategyFunction;\n    patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n  logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings,\n};\n"],"names":["DataRouterContext","React","createContext","displayName","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","_temp","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","navigateEffectWarning","useIsomorphicLayoutEffect","cb","isStatic","static","useLayoutEffect","useNavigate","useNavigateStable","useNavigateUnstable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","activeRef","useRef","current","navigate","useCallback","options","process","warning","go","path","resolveTo","parse","replace","push","state","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","_temp2","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathname","parentPathnameBase","pathnameBase","parentRoute","route","parentPath","warningOnce","endsWith","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","segments","slice","join","matchRoutes","element","undefined","Component","lazy","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","_extends","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","console","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","constructor","props","revalidation","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","id","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","keys","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","index","shouldRenderHydrateFallback","concat","getChildren","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","router","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","_state$errors","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","UseNavigateStable","fromRouteId","alreadyWarned","cond","warnOnce","warn","logDeprecation","flag","msg","link","logV6DeprecationWarnings","renderFuture","routerFuture","v7_startTransition","v7_fetcherPersist","v7_normalizeFormMethod","v7_skipActionErrorRevalidation","START_TRANSITION","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","_ref2","MemoryRouter","_ref3","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","_ref4","jsonPath","Outlet","Route","_props","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","Await","_ref7","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","success","defineProperty","renderError","reject","catch","_tracked","then","data","AbortedDeferredError","_ref8","toRender","Children","forEach","isValidElement","treePath","type","apply","name","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","dataStrategy","patchRoutesOnNavigation","initialize"],"mappings":"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"}
+{"version":3,"file":"react-router.development.js","sources":["../../lib/context.ts","../../lib/hooks.tsx","../../lib/components.tsx","../../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnMiss`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  unstable_HandlerResult,\n  unstable_AgnosticPatchRoutesOnMissFunction,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n  unstable_HandlerResult,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport interface unstable_PatchRoutesOnMissFunction\n  extends unstable_AgnosticPatchRoutesOnMissFunction<RouteMatch> {}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    unstable_dataStrategy?: unstable_DataStrategyFunction;\n    unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n"],"names":["DataRouterContext","React","createContext","displayName","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useHref","to","_temp","relative","useInRouterContext","invariant","basename","navigator","useContext","hash","pathname","search","useResolvedPath","joinedPathname","joinPaths","createHref","useLocation","location","useNavigationType","navigationType","useMatch","pattern","useMemo","matchPath","decodePath","navigateEffectWarning","useIsomorphicLayoutEffect","cb","isStatic","static","useLayoutEffect","useNavigate","useNavigateStable","useNavigateUnstable","dataRouterContext","future","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","activeRef","useRef","current","navigate","useCallback","options","process","warning","go","path","resolveTo","parse","replace","push","state","OutletContext","useOutletContext","useOutlet","context","createElement","Provider","value","useParams","routeMatch","length","params","_temp2","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathname","parentPathnameBase","pathnameBase","parentRoute","route","parentPath","warningOnce","endsWith","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","segments","slice","join","matchRoutes","element","undefined","Component","lazy","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","_extends","key","NavigationType","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","lightgrey","preStyles","padding","backgroundColor","codeStyles","devInfo","console","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","constructor","props","revalidation","getDerivedStateFromError","getDerivedStateFromProps","componentDidCatch","errorInfo","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","id","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","keys","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","index","shouldRenderHydrateFallback","concat","getChildren","DataRouterHook","DataRouterStateHook","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","UseRouteId","useNavigation","UseNavigation","navigation","useRevalidator","UseRevalidator","revalidate","router","useMatches","UseMatches","convertRouteMatchToUiMatch","useLoaderData","UseLoaderData","routeId","useRouteLoaderData","UseRouteLoaderData","useActionData","UseActionData","actionData","_state$errors","UseRouteError","useAsyncValue","_data","useAsyncError","_error","blockerId","useBlocker","shouldBlock","UseBlocker","blockerKey","setBlockerKey","useState","blockerFunction","arg","currentLocation","nextLocation","historyAction","stripBasename","useEffect","String","deleteBlocker","getBlocker","blockers","has","get","IDLE_BLOCKER","UseNavigateStable","fromRouteId","alreadyWarned","cond","START_TRANSITION","startTransitionImpl","RouterProvider","fallbackElement","setStateImpl","v7_startTransition","setState","newState","subscribe","n","opts","preventScrollReset","Router","DataRoutes","_ref2","MemoryRouter","_ref3","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","action","listen","Navigate","_ref4","jsonPath","Outlet","Route","_props","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","Await","_ref7","resolve","AwaitErrorBoundary","ResolveAwait","AwaitRenderStatus","neverSettledPromise","Promise","promise","pending","success","defineProperty","renderError","reject","catch","_tracked","then","data","AbortedDeferredError","_ref8","toRender","Children","forEach","isValidElement","treePath","type","apply","name","caseSensitive","hasErrorBoundary","shouldRevalidate","handle","renderMatches","mapRouteProperties","updates","createMemoryRouter","createRouter","v7_prependBasename","hydrationData","unstable_dataStrategy","unstable_patchRoutesOnMiss","initialize"],"mappings":"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"}
Index: imaps-frontend/node_modules/react-router/dist/umd/react-router.production.min.js
===================================================================
--- imaps-frontend/node_modules/react-router/dist/umd/react-router.production.min.js	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/umd/react-router.production.min.js	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,4 +1,4 @@
 /**
- * React Router v6.28.0
+ * React Router v6.26.0
  *
  * Copyright (c) Remix Software Inc.
@@ -9,4 +9,4 @@
  * @license MIT
  */
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@remix-run/router")):"function"==typeof define&&define.amd?define(["exports","react","@remix-run/router"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactRouter={},e.React,e.RemixRouter)}(this,(function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=n(t);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},o.apply(this,arguments)}const i=a.createContext(null),u=a.createContext(null),l=a.createContext(null),s=a.createContext(null),c=a.createContext(null),d=a.createContext({outlet:null,matches:[],isDataRoute:!1}),p=a.createContext(null);function v(){return null!=a.useContext(c)}function f(){return v()||r.UNSAFE_invariant(!1),a.useContext(c).location}function h(e){a.useContext(s).static||a.useLayoutEffect(e)}function m(){let{isDataRoute:e}=a.useContext(d);return e?function(){let{router:e}=F(U.UseNavigateStable),t=O(N.UseNavigateStable),r=a.useRef(!1);return h((()=>{r.current=!0})),a.useCallback((function(n,a){void 0===a&&(a={}),r.current&&("number"==typeof n?e.navigate(n):e.navigate(n,o({fromRouteId:t},a)))}),[e,t])}():function(){v()||r.UNSAFE_invariant(!1);let e=a.useContext(i),{basename:t,future:n,navigator:o}=a.useContext(s),{matches:u}=a.useContext(d),{pathname:l}=f(),c=JSON.stringify(r.UNSAFE_getResolveToMatches(u,n.v7_relativeSplatPath)),p=a.useRef(!1);return h((()=>{p.current=!0})),a.useCallback((function(n,a){if(void 0===a&&(a={}),!p.current)return;if("number"==typeof n)return void o.go(n);let i=r.resolveTo(n,JSON.parse(c),l,"path"===a.relative);null==e&&"/"!==t&&(i.pathname="/"===i.pathname?t:r.joinPaths([t,i.pathname])),(a.replace?o.replace:o.push)(i,a.state,a)}),[t,o,c,l,e])}()}const g=a.createContext(null);function E(e){let t=a.useContext(d).outlet;return t?a.createElement(g.Provider,{value:e},t):t}function y(e,t){let{relative:n}=void 0===t?{}:t,{future:o}=a.useContext(s),{matches:i}=a.useContext(d),{pathname:u}=f(),l=JSON.stringify(r.UNSAFE_getResolveToMatches(i,o.v7_relativeSplatPath));return a.useMemo((()=>r.resolveTo(e,JSON.parse(l),u,"path"===n)),[e,l,u,n])}function b(e,t){return R(e,t)}function R(e,t,n,i){v()||r.UNSAFE_invariant(!1);let{navigator:u}=a.useContext(s),{matches:l}=a.useContext(d),p=l[l.length-1],h=p?p.params:{};!p||p.pathname;let m=p?p.pathnameBase:"/";p&&p.route;let g,E=f();if(t){var y;let e="string"==typeof t?r.parsePath(t):t;"/"===m||(null==(y=e.pathname)?void 0:y.startsWith(m))||r.UNSAFE_invariant(!1),g=e}else g=E;let b=g.pathname||"/",R=b;if("/"!==m){let e=m.replace(/^\//,"").split("/");R="/"+b.replace(/^\//,"").split("/").slice(e.length).join("/")}let _=r.matchRoutes(e,{pathname:R}),P=S(_&&_.map((e=>Object.assign({},e,{params:Object.assign({},h,e.params),pathname:r.joinPaths([m,u.encodeLocation?u.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?m:r.joinPaths([m,u.encodeLocation?u.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),l,n,i);return t&&P?a.createElement(c.Provider,{value:{location:o({pathname:"/",search:"",hash:"",state:null,key:"default"},g),navigationType:r.Action.Pop}},P):P}function _(){let e=j(),t=r.isRouteErrorResponse(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return a.createElement(a.Fragment,null,a.createElement("h2",null,"Unexpected Application Error!"),a.createElement("h3",{style:{fontStyle:"italic"}},t),n?a.createElement("pre",{style:o},n):null,null)}const P=a.createElement(_,null);class x extends a.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?a.createElement(d.Provider,{value:this.props.routeContext},a.createElement(p.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function C(e){let{routeContext:t,match:r,children:n}=e,o=a.useContext(i);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),a.createElement(d.Provider,{value:t},n)}function S(e,t,n,o){var i;if(void 0===t&&(t=[]),void 0===n&&(n=null),void 0===o&&(o=null),null==e){var u;if(!n)return null;if(n.errors)e=n.matches;else{if(!(null!=(u=o)&&u.v7_partialHydration&&0===t.length&&!n.initialized&&n.matches.length>0))return null;e=n.matches}}let l=e,s=null==(i=n)?void 0:i.errors;if(null!=s){let e=l.findIndex((e=>e.route.id&&void 0!==(null==s?void 0:s[e.route.id])));e>=0||r.UNSAFE_invariant(!1),l=l.slice(0,Math.min(l.length,e+1))}let c=!1,d=-1;if(n&&o&&o.v7_partialHydration)for(let e=0;e<l.length;e++){let t=l[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(d=e),t.route.id){let{loaderData:e,errors:r}=n,a=t.route.loader&&void 0===e[t.route.id]&&(!r||void 0===r[t.route.id]);if(t.route.lazy||a){c=!0,l=d>=0?l.slice(0,d+1):[l[0]];break}}}return l.reduceRight(((e,r,o)=>{let i,u=!1,p=null,v=null;var f;n&&(i=s&&r.route.id?s[r.route.id]:void 0,p=r.route.errorElement||P,c&&(d<0&&0===o?(f="route-fallback",!1||B[f]||(B[f]=!0),u=!0,v=null):d===o&&(u=!0,v=r.route.hydrateFallbackElement||null)));let h=t.concat(l.slice(0,o+1)),m=()=>{let t;return t=i?p:u?v:r.route.Component?a.createElement(r.route.Component,null):r.route.element?r.route.element:e,a.createElement(C,{match:r,routeContext:{outlet:e,matches:h,isDataRoute:null!=n},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===o)?a.createElement(x,{location:n.location,revalidation:n.revalidation,component:p,error:i,children:m(),routeContext:{outlet:null,matches:h,isDataRoute:!0}}):m()}),null)}var U=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(U||{}),N=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(N||{});function F(e){let t=a.useContext(i);return t||r.UNSAFE_invariant(!1),t}function A(e){let t=a.useContext(u);return t||r.UNSAFE_invariant(!1),t}function O(e){let t=function(e){let t=a.useContext(d);return t||r.UNSAFE_invariant(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||r.UNSAFE_invariant(!1),n.route.id}function j(){var e;let t=a.useContext(p),r=A(N.UseRouteError),n=O(N.UseRouteError);return void 0!==t?t:null==(e=r.errors)?void 0:e[n]}function D(){let e=a.useContext(l);return null==e?void 0:e._data}let k=0;const B={};const M={};const L=(e,t,r)=>{var n;M[n="⚠️ React Router Future Flag Warning: "+t+". You can use the `"+e+"` future flag to opt-in early. For more information, see "+r+"."]||(M[n]=!0,console.warn(n))};function T(e,t){null!=e&&e.v7_startTransition||L("v7_startTransition","React Router will begin wrapping state updates in `React.startTransition` in v7","https://reactrouter.com/v6/upgrading/future#v7_starttransition"),null!=e&&e.v7_relativeSplatPath||t&&t.v7_relativeSplatPath||L("v7_relativeSplatPath","Relative route resolution within Splat routes is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath"),t&&(t.v7_fetcherPersist||L("v7_fetcherPersist","The persistence behavior of fetchers is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist"),t.v7_normalizeFormMethod||L("v7_normalizeFormMethod","Casing of `formMethod` fields is being normalized to uppercase in v7","https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod"),t.v7_partialHydration||L("v7_partialHydration","`RouterProvider` hydration behavior is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_partialhydration"),t.v7_skipActionErrorRevalidation||L("v7_skipActionErrorRevalidation","The revalidation behavior after 4xx/5xx `action` responses is changing in v7","https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation"))}const H=a.startTransition;function I(e){let{routes:t,future:r,state:n}=e;return R(t,void 0,n,r)}function w(e){r.UNSAFE_invariant(!1)}function z(e){let{basename:t="/",children:n=null,location:i,navigationType:u=r.Action.Pop,navigator:l,static:d=!1,future:p}=e;v()&&r.UNSAFE_invariant(!1);let f=t.replace(/^\/*/,"/"),h=a.useMemo((()=>({basename:f,navigator:l,static:d,future:o({v7_relativeSplatPath:!1},p)})),[f,p,l,d]);"string"==typeof i&&(i=r.parsePath(i));let{pathname:m="/",search:g="",hash:E="",state:y=null,key:b="default"}=i,R=a.useMemo((()=>{let e=r.stripBasename(m,f);return null==e?null:{location:{pathname:e,search:g,hash:E,state:y,key:b},navigationType:u}}),[f,m,g,E,y,b,u]);return null==R?null:a.createElement(s.Provider,{value:h},a.createElement(c.Provider,{children:n,value:R}))}var J=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(J||{});const V=new Promise((()=>{}));class W extends a.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:e,errorElement:t,resolve:n}=this.props,o=null,i=J.pending;if(n instanceof Promise)if(this.state.error){i=J.error;let e=this.state.error;o=Promise.reject().catch((()=>{})),Object.defineProperty(o,"_tracked",{get:()=>!0}),Object.defineProperty(o,"_error",{get:()=>e})}else n._tracked?(o=n,i="_error"in o?J.error:"_data"in o?J.success:J.pending):(i=J.pending,Object.defineProperty(n,"_tracked",{get:()=>!0}),o=n.then((e=>Object.defineProperty(n,"_data",{get:()=>e})),(e=>Object.defineProperty(n,"_error",{get:()=>e}))));else i=J.success,o=Promise.resolve(),Object.defineProperty(o,"_tracked",{get:()=>!0}),Object.defineProperty(o,"_data",{get:()=>n});if(i===J.error&&o._error instanceof r.AbortedDeferredError)throw V;if(i===J.error&&!t)throw o._error;if(i===J.error)return a.createElement(l.Provider,{value:o,children:t});if(i===J.success)return a.createElement(l.Provider,{value:o,children:e});throw o}}function q(e){let{children:t}=e,r=D(),n="function"==typeof t?t(r):t;return a.createElement(a.Fragment,null,n)}function Y(e,t){void 0===t&&(t=[]);let n=[];return a.Children.forEach(e,((e,o)=>{if(!a.isValidElement(e))return;let i=[...t,o];if(e.type===a.Fragment)return void n.push.apply(n,Y(e.props.children,i));e.type!==w&&r.UNSAFE_invariant(!1),e.props.index&&e.props.children&&r.UNSAFE_invariant(!1);let u={id:e.props.id||i.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(u.children=Y(e.props.children,i)),n.push(u)})),n}function K(e){let t={hasErrorBoundary:null!=e.ErrorBoundary||null!=e.errorElement};return e.Component&&Object.assign(t,{element:a.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:a.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:a.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}Object.defineProperty(e,"AbortedDeferredError",{enumerable:!0,get:function(){return r.AbortedDeferredError}}),Object.defineProperty(e,"NavigationType",{enumerable:!0,get:function(){return r.Action}}),Object.defineProperty(e,"createPath",{enumerable:!0,get:function(){return r.createPath}}),Object.defineProperty(e,"defer",{enumerable:!0,get:function(){return r.defer}}),Object.defineProperty(e,"generatePath",{enumerable:!0,get:function(){return r.generatePath}}),Object.defineProperty(e,"isRouteErrorResponse",{enumerable:!0,get:function(){return r.isRouteErrorResponse}}),Object.defineProperty(e,"json",{enumerable:!0,get:function(){return r.json}}),Object.defineProperty(e,"matchPath",{enumerable:!0,get:function(){return r.matchPath}}),Object.defineProperty(e,"matchRoutes",{enumerable:!0,get:function(){return r.matchRoutes}}),Object.defineProperty(e,"parsePath",{enumerable:!0,get:function(){return r.parsePath}}),Object.defineProperty(e,"redirect",{enumerable:!0,get:function(){return r.redirect}}),Object.defineProperty(e,"redirectDocument",{enumerable:!0,get:function(){return r.redirectDocument}}),Object.defineProperty(e,"replace",{enumerable:!0,get:function(){return r.replace}}),Object.defineProperty(e,"resolvePath",{enumerable:!0,get:function(){return r.resolvePath}}),e.Await=function(e){let{children:t,errorElement:r,resolve:n}=e;return a.createElement(W,{resolve:n,errorElement:r},a.createElement(q,null,t))},e.MemoryRouter=function(e){let{basename:t,children:n,initialEntries:o,initialIndex:i,future:u}=e,l=a.useRef();null==l.current&&(l.current=r.createMemoryHistory({initialEntries:o,initialIndex:i,v5Compat:!0}));let s=l.current,[c,d]=a.useState({action:s.action,location:s.location}),{v7_startTransition:p}=u||{},v=a.useCallback((e=>{p&&H?H((()=>d(e))):d(e)}),[d,p]);return a.useLayoutEffect((()=>s.listen(v)),[s,v]),a.useEffect((()=>T(u)),[u]),a.createElement(z,{basename:t,children:n,location:c.location,navigationType:c.action,navigator:s,future:u})},e.Navigate=function(e){let{to:t,replace:n,state:o,relative:i}=e;v()||r.UNSAFE_invariant(!1);let{future:u,static:l}=a.useContext(s),{matches:c}=a.useContext(d),{pathname:p}=f(),h=m(),g=r.resolveTo(t,r.UNSAFE_getResolveToMatches(c,u.v7_relativeSplatPath),p,"path"===i),E=JSON.stringify(g);return a.useEffect((()=>h(JSON.parse(E),{replace:n,state:o,relative:i})),[h,E,i,n,o]),null},e.Outlet=function(e){return E(e.context)},e.Route=w,e.Router=z,e.RouterProvider=function(e){let{fallbackElement:t,router:r,future:n}=e,[o,l]=a.useState(r.state),{v7_startTransition:s}=n||{},c=a.useCallback((e=>{s&&H?H((()=>l(e))):l(e)}),[l,s]);a.useLayoutEffect((()=>r.subscribe(c)),[r,c]),a.useEffect((()=>{}),[]);let d=a.useMemo((()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:e=>r.navigate(e),push:(e,t,n)=>r.navigate(e,{state:t,preventScrollReset:null==n?void 0:n.preventScrollReset}),replace:(e,t,n)=>r.navigate(e,{replace:!0,state:t,preventScrollReset:null==n?void 0:n.preventScrollReset})})),[r]),p=r.basename||"/",v=a.useMemo((()=>({router:r,navigator:d,static:!1,basename:p})),[r,d,p]);return a.useEffect((()=>T(n,r.future)),[r,n]),a.createElement(a.Fragment,null,a.createElement(i.Provider,{value:v},a.createElement(u.Provider,{value:o},a.createElement(z,{basename:p,location:o.location,navigationType:o.historyAction,navigator:d,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},o.initialized||r.future.v7_partialHydration?a.createElement(I,{routes:r.routes,future:r.future,state:o}):t))),null)},e.Routes=function(e){let{children:t,location:r}=e;return b(Y(t),r)},e.UNSAFE_DataRouterContext=i,e.UNSAFE_DataRouterStateContext=u,e.UNSAFE_LocationContext=c,e.UNSAFE_NavigationContext=s,e.UNSAFE_RouteContext=d,e.UNSAFE_logV6DeprecationWarnings=T,e.UNSAFE_mapRouteProperties=K,e.UNSAFE_useRouteId=function(){return O(N.UseRouteId)},e.UNSAFE_useRoutesImpl=R,e.createMemoryRouter=function(e,t){return r.createRouter({basename:null==t?void 0:t.basename,future:o({},null==t?void 0:t.future,{v7_prependBasename:!0}),history:r.createMemoryHistory({initialEntries:null==t?void 0:t.initialEntries,initialIndex:null==t?void 0:t.initialIndex}),hydrationData:null==t?void 0:t.hydrationData,routes:e,mapRouteProperties:K,dataStrategy:null==t?void 0:t.dataStrategy,patchRoutesOnNavigation:null==t?void 0:t.patchRoutesOnNavigation}).initialize()},e.createRoutesFromChildren=Y,e.createRoutesFromElements=Y,e.renderMatches=function(e){return S(e)},e.useActionData=function(){let e=A(N.UseActionData),t=O(N.UseLoaderData);return e.actionData?e.actionData[t]:void 0},e.useAsyncError=function(){let e=a.useContext(l);return null==e?void 0:e._error},e.useAsyncValue=D,e.useBlocker=function(e){let{router:t,basename:n}=F(U.UseBlocker),i=A(N.UseBlocker),[u,l]=a.useState(""),s=a.useCallback((t=>{if("function"!=typeof e)return!!e;if("/"===n)return e(t);let{currentLocation:a,nextLocation:i,historyAction:u}=t;return e({currentLocation:o({},a,{pathname:r.stripBasename(a.pathname,n)||a.pathname}),nextLocation:o({},i,{pathname:r.stripBasename(i.pathname,n)||i.pathname}),historyAction:u})}),[n,e]);return a.useEffect((()=>{let e=String(++k);return l(e),()=>t.deleteBlocker(e)}),[t]),a.useEffect((()=>{""!==u&&t.getBlocker(u,s)}),[t,u,s]),u&&i.blockers.has(u)?i.blockers.get(u):r.IDLE_BLOCKER},e.useHref=function(e,t){let{relative:n}=void 0===t?{}:t;v()||r.UNSAFE_invariant(!1);let{basename:o,navigator:i}=a.useContext(s),{hash:u,pathname:l,search:c}=y(e,{relative:n}),d=l;return"/"!==o&&(d="/"===l?o:r.joinPaths([o,l])),i.createHref({pathname:d,search:c,hash:u})},e.useInRouterContext=v,e.useLoaderData=function(){let e=A(N.UseLoaderData),t=O(N.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error("You cannot `useLoaderData` in an errorElement (routeId: "+t+")")},e.useLocation=f,e.useMatch=function(e){v()||r.UNSAFE_invariant(!1);let{pathname:t}=f();return a.useMemo((()=>r.matchPath(e,r.UNSAFE_decodePath(t))),[t,e])},e.useMatches=function(){let{matches:e,loaderData:t}=A(N.UseMatches);return a.useMemo((()=>e.map((e=>r.UNSAFE_convertRouteMatchToUiMatch(e,t)))),[e,t])},e.useNavigate=m,e.useNavigation=function(){return A(N.UseNavigation).navigation},e.useNavigationType=function(){return a.useContext(c).navigationType},e.useOutlet=E,e.useOutletContext=function(){return a.useContext(g)},e.useParams=function(){let{matches:e}=a.useContext(d),t=e[e.length-1];return t?t.params:{}},e.useResolvedPath=y,e.useRevalidator=function(){let e=F(U.UseRevalidator),t=A(N.UseRevalidator);return a.useMemo((()=>({revalidate:e.router.revalidate,state:t.revalidation})),[e.router.revalidate,t.revalidation])},e.useRouteError=j,e.useRouteLoaderData=function(e){return A(N.UseRouteLoaderData).loaderData[e]},e.useRoutes=b,Object.defineProperty(e,"__esModule",{value:!0})}));
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("@remix-run/router")):"function"==typeof define&&define.amd?define(["exports","react","@remix-run/router"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).ReactRouter={},e.React,e.RemixRouter)}(this,(function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var a=n(t);function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},o.apply(this,arguments)}const i=a.createContext(null),u=a.createContext(null),l=a.createContext(null),s=a.createContext(null),c=a.createContext(null),d=a.createContext({outlet:null,matches:[],isDataRoute:!1}),p=a.createContext(null);function f(){return null!=a.useContext(c)}function m(){return f()||r.UNSAFE_invariant(!1),a.useContext(c).location}function v(e){a.useContext(s).static||a.useLayoutEffect(e)}function h(){let{isDataRoute:e}=a.useContext(d);return e?function(){let{router:e}=O(U.UseNavigateStable),t=j(N.UseNavigateStable),r=a.useRef(!1);return v((()=>{r.current=!0})),a.useCallback((function(n,a){void 0===a&&(a={}),r.current&&("number"==typeof n?e.navigate(n):e.navigate(n,o({fromRouteId:t},a)))}),[e,t])}():function(){f()||r.UNSAFE_invariant(!1);let e=a.useContext(i),{basename:t,future:n,navigator:o}=a.useContext(s),{matches:u}=a.useContext(d),{pathname:l}=m(),c=JSON.stringify(r.UNSAFE_getResolveToMatches(u,n.v7_relativeSplatPath)),p=a.useRef(!1);return v((()=>{p.current=!0})),a.useCallback((function(n,a){if(void 0===a&&(a={}),!p.current)return;if("number"==typeof n)return void o.go(n);let i=r.resolveTo(n,JSON.parse(c),l,"path"===a.relative);null==e&&"/"!==t&&(i.pathname="/"===i.pathname?t:r.joinPaths([t,i.pathname])),(a.replace?o.replace:o.push)(i,a.state,a)}),[t,o,c,l,e])}()}const E=a.createContext(null);function g(e){let t=a.useContext(d).outlet;return t?a.createElement(E.Provider,{value:e},t):t}function y(e,t){let{relative:n}=void 0===t?{}:t,{future:o}=a.useContext(s),{matches:i}=a.useContext(d),{pathname:u}=m(),l=JSON.stringify(r.UNSAFE_getResolveToMatches(i,o.v7_relativeSplatPath));return a.useMemo((()=>r.resolveTo(e,JSON.parse(l),u,"path"===n)),[e,l,u,n])}function b(e,t){return R(e,t)}function R(e,t,n,i){f()||r.UNSAFE_invariant(!1);let{navigator:u}=a.useContext(s),{matches:l}=a.useContext(d),p=l[l.length-1],v=p?p.params:{};!p||p.pathname;let h=p?p.pathnameBase:"/";p&&p.route;let E,g=m();if(t){var y;let e="string"==typeof t?r.parsePath(t):t;"/"===h||(null==(y=e.pathname)?void 0:y.startsWith(h))||r.UNSAFE_invariant(!1),E=e}else E=g;let b=E.pathname||"/",R=b;if("/"!==h){let e=h.replace(/^\//,"").split("/");R="/"+b.replace(/^\//,"").split("/").slice(e.length).join("/")}let P=r.matchRoutes(e,{pathname:R}),x=S(P&&P.map((e=>Object.assign({},e,{params:Object.assign({},v,e.params),pathname:r.joinPaths([h,u.encodeLocation?u.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?h:r.joinPaths([h,u.encodeLocation?u.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])}))),l,n,i);return t&&x?a.createElement(c.Provider,{value:{location:o({pathname:"/",search:"",hash:"",state:null,key:"default"},E),navigationType:r.Action.Pop}},x):x}function P(){let e=F(),t=r.isRouteErrorResponse(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return a.createElement(a.Fragment,null,a.createElement("h2",null,"Unexpected Application Error!"),a.createElement("h3",{style:{fontStyle:"italic"}},t),n?a.createElement("pre",{style:o},n):null,null)}const x=a.createElement(P,null);class C extends a.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?a.createElement(d.Provider,{value:this.props.routeContext},a.createElement(p.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function _(e){let{routeContext:t,match:r,children:n}=e,o=a.useContext(i);return o&&o.static&&o.staticContext&&(r.route.errorElement||r.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=r.route.id),a.createElement(d.Provider,{value:t},n)}function S(e,t,n,o){var i;if(void 0===t&&(t=[]),void 0===n&&(n=null),void 0===o&&(o=null),null==e){var u;if(!n)return null;if(n.errors)e=n.matches;else{if(!(null!=(u=o)&&u.v7_partialHydration&&0===t.length&&!n.initialized&&n.matches.length>0))return null;e=n.matches}}let l=e,s=null==(i=n)?void 0:i.errors;if(null!=s){let e=l.findIndex((e=>e.route.id&&void 0!==(null==s?void 0:s[e.route.id])));e>=0||r.UNSAFE_invariant(!1),l=l.slice(0,Math.min(l.length,e+1))}let c=!1,d=-1;if(n&&o&&o.v7_partialHydration)for(let e=0;e<l.length;e++){let t=l[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(d=e),t.route.id){let{loaderData:e,errors:r}=n,a=t.route.loader&&void 0===e[t.route.id]&&(!r||void 0===r[t.route.id]);if(t.route.lazy||a){c=!0,l=d>=0?l.slice(0,d+1):[l[0]];break}}}return l.reduceRight(((e,r,o)=>{let i,u=!1,p=null,f=null;var m;n&&(i=s&&r.route.id?s[r.route.id]:void 0,p=r.route.errorElement||x,c&&(d<0&&0===o?(m="route-fallback",!1||B[m]||(B[m]=!0),u=!0,f=null):d===o&&(u=!0,f=r.route.hydrateFallbackElement||null)));let v=t.concat(l.slice(0,o+1)),h=()=>{let t;return t=i?p:u?f:r.route.Component?a.createElement(r.route.Component,null):r.route.element?r.route.element:e,a.createElement(_,{match:r,routeContext:{outlet:e,matches:v,isDataRoute:null!=n},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===o)?a.createElement(C,{location:n.location,revalidation:n.revalidation,component:p,error:i,children:h(),routeContext:{outlet:null,matches:v,isDataRoute:!0}}):h()}),null)}var U=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(U||{}),N=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(N||{});function O(e){let t=a.useContext(i);return t||r.UNSAFE_invariant(!1),t}function A(e){let t=a.useContext(u);return t||r.UNSAFE_invariant(!1),t}function j(e){let t=function(e){let t=a.useContext(d);return t||r.UNSAFE_invariant(!1),t}(),n=t.matches[t.matches.length-1];return n.route.id||r.UNSAFE_invariant(!1),n.route.id}function F(){var e;let t=a.useContext(p),r=A(N.UseRouteError),n=j(N.UseRouteError);return void 0!==t?t:null==(e=r.errors)?void 0:e[n]}function D(){let e=a.useContext(l);return null==e?void 0:e._data}let k=0;const B={};const L=a.startTransition;function M(e){let{routes:t,future:r,state:n}=e;return R(t,void 0,n,r)}function T(e){r.UNSAFE_invariant(!1)}function I(e){let{basename:t="/",children:n=null,location:i,navigationType:u=r.Action.Pop,navigator:l,static:d=!1,future:p}=e;f()&&r.UNSAFE_invariant(!1);let m=t.replace(/^\/*/,"/"),v=a.useMemo((()=>({basename:m,navigator:l,static:d,future:o({v7_relativeSplatPath:!1},p)})),[m,p,l,d]);"string"==typeof i&&(i=r.parsePath(i));let{pathname:h="/",search:E="",hash:g="",state:y=null,key:b="default"}=i,R=a.useMemo((()=>{let e=r.stripBasename(h,m);return null==e?null:{location:{pathname:e,search:E,hash:g,state:y,key:b},navigationType:u}}),[m,h,E,g,y,b,u]);return null==R?null:a.createElement(s.Provider,{value:v},a.createElement(c.Provider,{children:n,value:R}))}var H=function(e){return e[e.pending=0]="pending",e[e.success=1]="success",e[e.error=2]="error",e}(H||{});const w=new Promise((()=>{}));class z extends a.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){console.error("<Await> caught the following error during render",e,t)}render(){let{children:e,errorElement:t,resolve:n}=this.props,o=null,i=H.pending;if(n instanceof Promise)if(this.state.error){i=H.error;let e=this.state.error;o=Promise.reject().catch((()=>{})),Object.defineProperty(o,"_tracked",{get:()=>!0}),Object.defineProperty(o,"_error",{get:()=>e})}else n._tracked?(o=n,i="_error"in o?H.error:"_data"in o?H.success:H.pending):(i=H.pending,Object.defineProperty(n,"_tracked",{get:()=>!0}),o=n.then((e=>Object.defineProperty(n,"_data",{get:()=>e})),(e=>Object.defineProperty(n,"_error",{get:()=>e}))));else i=H.success,o=Promise.resolve(),Object.defineProperty(o,"_tracked",{get:()=>!0}),Object.defineProperty(o,"_data",{get:()=>n});if(i===H.error&&o._error instanceof r.AbortedDeferredError)throw w;if(i===H.error&&!t)throw o._error;if(i===H.error)return a.createElement(l.Provider,{value:o,children:t});if(i===H.success)return a.createElement(l.Provider,{value:o,children:e});throw o}}function J(e){let{children:t}=e,r=D(),n="function"==typeof t?t(r):t;return a.createElement(a.Fragment,null,n)}function q(e,t){void 0===t&&(t=[]);let n=[];return a.Children.forEach(e,((e,o)=>{if(!a.isValidElement(e))return;let i=[...t,o];if(e.type===a.Fragment)return void n.push.apply(n,q(e.props.children,i));e.type!==T&&r.UNSAFE_invariant(!1),e.props.index&&e.props.children&&r.UNSAFE_invariant(!1);let u={id:e.props.id||i.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(u.children=q(e.props.children,i)),n.push(u)})),n}function V(e){let t={hasErrorBoundary:null!=e.ErrorBoundary||null!=e.errorElement};return e.Component&&Object.assign(t,{element:a.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:a.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:a.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}Object.defineProperty(e,"AbortedDeferredError",{enumerable:!0,get:function(){return r.AbortedDeferredError}}),Object.defineProperty(e,"NavigationType",{enumerable:!0,get:function(){return r.Action}}),Object.defineProperty(e,"createPath",{enumerable:!0,get:function(){return r.createPath}}),Object.defineProperty(e,"defer",{enumerable:!0,get:function(){return r.defer}}),Object.defineProperty(e,"generatePath",{enumerable:!0,get:function(){return r.generatePath}}),Object.defineProperty(e,"isRouteErrorResponse",{enumerable:!0,get:function(){return r.isRouteErrorResponse}}),Object.defineProperty(e,"json",{enumerable:!0,get:function(){return r.json}}),Object.defineProperty(e,"matchPath",{enumerable:!0,get:function(){return r.matchPath}}),Object.defineProperty(e,"matchRoutes",{enumerable:!0,get:function(){return r.matchRoutes}}),Object.defineProperty(e,"parsePath",{enumerable:!0,get:function(){return r.parsePath}}),Object.defineProperty(e,"redirect",{enumerable:!0,get:function(){return r.redirect}}),Object.defineProperty(e,"redirectDocument",{enumerable:!0,get:function(){return r.redirectDocument}}),Object.defineProperty(e,"replace",{enumerable:!0,get:function(){return r.replace}}),Object.defineProperty(e,"resolvePath",{enumerable:!0,get:function(){return r.resolvePath}}),e.Await=function(e){let{children:t,errorElement:r,resolve:n}=e;return a.createElement(z,{resolve:n,errorElement:r},a.createElement(J,null,t))},e.MemoryRouter=function(e){let{basename:t,children:n,initialEntries:o,initialIndex:i,future:u}=e,l=a.useRef();null==l.current&&(l.current=r.createMemoryHistory({initialEntries:o,initialIndex:i,v5Compat:!0}));let s=l.current,[c,d]=a.useState({action:s.action,location:s.location}),{v7_startTransition:p}=u||{},f=a.useCallback((e=>{p&&L?L((()=>d(e))):d(e)}),[d,p]);return a.useLayoutEffect((()=>s.listen(f)),[s,f]),a.createElement(I,{basename:t,children:n,location:c.location,navigationType:c.action,navigator:s,future:u})},e.Navigate=function(e){let{to:t,replace:n,state:o,relative:i}=e;f()||r.UNSAFE_invariant(!1);let{future:u,static:l}=a.useContext(s),{matches:c}=a.useContext(d),{pathname:p}=m(),v=h(),E=r.resolveTo(t,r.UNSAFE_getResolveToMatches(c,u.v7_relativeSplatPath),p,"path"===i),g=JSON.stringify(E);return a.useEffect((()=>v(JSON.parse(g),{replace:n,state:o,relative:i})),[v,g,i,n,o]),null},e.Outlet=function(e){return g(e.context)},e.Route=T,e.Router=I,e.RouterProvider=function(e){let{fallbackElement:t,router:r,future:n}=e,[o,l]=a.useState(r.state),{v7_startTransition:s}=n||{},c=a.useCallback((e=>{s&&L?L((()=>l(e))):l(e)}),[l,s]);a.useLayoutEffect((()=>r.subscribe(c)),[r,c]),a.useEffect((()=>{}),[]);let d=a.useMemo((()=>({createHref:r.createHref,encodeLocation:r.encodeLocation,go:e=>r.navigate(e),push:(e,t,n)=>r.navigate(e,{state:t,preventScrollReset:null==n?void 0:n.preventScrollReset}),replace:(e,t,n)=>r.navigate(e,{replace:!0,state:t,preventScrollReset:null==n?void 0:n.preventScrollReset})})),[r]),p=r.basename||"/",f=a.useMemo((()=>({router:r,navigator:d,static:!1,basename:p})),[r,d,p]);return a.createElement(a.Fragment,null,a.createElement(i.Provider,{value:f},a.createElement(u.Provider,{value:o},a.createElement(I,{basename:p,location:o.location,navigationType:o.historyAction,navigator:d,future:{v7_relativeSplatPath:r.future.v7_relativeSplatPath}},o.initialized||r.future.v7_partialHydration?a.createElement(M,{routes:r.routes,future:r.future,state:o}):t))),null)},e.Routes=function(e){let{children:t,location:r}=e;return b(q(t),r)},e.UNSAFE_DataRouterContext=i,e.UNSAFE_DataRouterStateContext=u,e.UNSAFE_LocationContext=c,e.UNSAFE_NavigationContext=s,e.UNSAFE_RouteContext=d,e.UNSAFE_mapRouteProperties=V,e.UNSAFE_useRouteId=function(){return j(N.UseRouteId)},e.UNSAFE_useRoutesImpl=R,e.createMemoryRouter=function(e,t){return r.createRouter({basename:null==t?void 0:t.basename,future:o({},null==t?void 0:t.future,{v7_prependBasename:!0}),history:r.createMemoryHistory({initialEntries:null==t?void 0:t.initialEntries,initialIndex:null==t?void 0:t.initialIndex}),hydrationData:null==t?void 0:t.hydrationData,routes:e,mapRouteProperties:V,unstable_dataStrategy:null==t?void 0:t.unstable_dataStrategy,unstable_patchRoutesOnMiss:null==t?void 0:t.unstable_patchRoutesOnMiss}).initialize()},e.createRoutesFromChildren=q,e.createRoutesFromElements=q,e.renderMatches=function(e){return S(e)},e.useActionData=function(){let e=A(N.UseActionData),t=j(N.UseLoaderData);return e.actionData?e.actionData[t]:void 0},e.useAsyncError=function(){let e=a.useContext(l);return null==e?void 0:e._error},e.useAsyncValue=D,e.useBlocker=function(e){let{router:t,basename:n}=O(U.UseBlocker),i=A(N.UseBlocker),[u,l]=a.useState(""),s=a.useCallback((t=>{if("function"!=typeof e)return!!e;if("/"===n)return e(t);let{currentLocation:a,nextLocation:i,historyAction:u}=t;return e({currentLocation:o({},a,{pathname:r.stripBasename(a.pathname,n)||a.pathname}),nextLocation:o({},i,{pathname:r.stripBasename(i.pathname,n)||i.pathname}),historyAction:u})}),[n,e]);return a.useEffect((()=>{let e=String(++k);return l(e),()=>t.deleteBlocker(e)}),[t]),a.useEffect((()=>{""!==u&&t.getBlocker(u,s)}),[t,u,s]),u&&i.blockers.has(u)?i.blockers.get(u):r.IDLE_BLOCKER},e.useHref=function(e,t){let{relative:n}=void 0===t?{}:t;f()||r.UNSAFE_invariant(!1);let{basename:o,navigator:i}=a.useContext(s),{hash:u,pathname:l,search:c}=y(e,{relative:n}),d=l;return"/"!==o&&(d="/"===l?o:r.joinPaths([o,l])),i.createHref({pathname:d,search:c,hash:u})},e.useInRouterContext=f,e.useLoaderData=function(){let e=A(N.UseLoaderData),t=j(N.UseLoaderData);if(!e.errors||null==e.errors[t])return e.loaderData[t];console.error("You cannot `useLoaderData` in an errorElement (routeId: "+t+")")},e.useLocation=m,e.useMatch=function(e){f()||r.UNSAFE_invariant(!1);let{pathname:t}=m();return a.useMemo((()=>r.matchPath(e,r.UNSAFE_decodePath(t))),[t,e])},e.useMatches=function(){let{matches:e,loaderData:t}=A(N.UseMatches);return a.useMemo((()=>e.map((e=>r.UNSAFE_convertRouteMatchToUiMatch(e,t)))),[e,t])},e.useNavigate=h,e.useNavigation=function(){return A(N.UseNavigation).navigation},e.useNavigationType=function(){return a.useContext(c).navigationType},e.useOutlet=g,e.useOutletContext=function(){return a.useContext(E)},e.useParams=function(){let{matches:e}=a.useContext(d),t=e[e.length-1];return t?t.params:{}},e.useResolvedPath=y,e.useRevalidator=function(){let e=O(U.UseRevalidator),t=A(N.UseRevalidator);return a.useMemo((()=>({revalidate:e.router.revalidate,state:t.revalidation})),[e.router.revalidate,t.revalidation])},e.useRouteError=F,e.useRouteLoaderData=function(e){return A(N.UseRouteLoaderData).loaderData[e]},e.useRoutes=b,Object.defineProperty(e,"__esModule",{value:!0})}));
 //# sourceMappingURL=react-router.production.min.js.map
Index: imaps-frontend/node_modules/react-router/dist/umd/react-router.production.min.js.map
===================================================================
--- imaps-frontend/node_modules/react-router/dist/umd/react-router.production.min.js.map	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/dist/umd/react-router.production.min.js.map	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,1 +1,1 @@
-{"version":3,"file":"react-router.production.min.js","sources":["../../lib/context.ts","../../lib/hooks.tsx","../../lib/deprecations.ts","../../lib/components.tsx","../../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  flushSync?: boolean;\n  viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/v6/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/v6/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/v6/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/v6/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/v6/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnNavigation`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type { FutureConfig as RouterFutureConfig } from \"@remix-run/router\";\nimport type { FutureConfig as RenderFutureConfig } from \"./components\";\n\nconst alreadyWarned: { [key: string]: boolean } = {};\n\nexport function warnOnce(key: string, message: string): void {\n  if (!alreadyWarned[message]) {\n    alreadyWarned[message] = true;\n    console.warn(message);\n  }\n}\n\nconst logDeprecation = (flag: string, msg: string, link: string) =>\n  warnOnce(\n    flag,\n    `⚠️ React Router Future Flag Warning: ${msg}. ` +\n      `You can use the \\`${flag}\\` future flag to opt-in early. ` +\n      `For more information, see ${link}.`\n  );\n\nexport function logV6DeprecationWarnings(\n  renderFuture: Partial<RenderFutureConfig> | undefined,\n  routerFuture?: Omit<RouterFutureConfig, \"v7_prependBasename\">\n) {\n  if (!renderFuture?.v7_startTransition) {\n    logDeprecation(\n      \"v7_startTransition\",\n      \"React Router will begin wrapping state updates in `React.startTransition` in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_starttransition\"\n    );\n  }\n\n  if (\n    !renderFuture?.v7_relativeSplatPath &&\n    (!routerFuture || !routerFuture.v7_relativeSplatPath)\n  ) {\n    logDeprecation(\n      \"v7_relativeSplatPath\",\n      \"Relative route resolution within Splat routes is changing in v7\",\n      \"https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath\"\n    );\n  }\n\n  if (routerFuture) {\n    if (!routerFuture.v7_fetcherPersist) {\n      logDeprecation(\n        \"v7_fetcherPersist\",\n        \"The persistence behavior of fetchers is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist\"\n      );\n    }\n\n    if (!routerFuture.v7_normalizeFormMethod) {\n      logDeprecation(\n        \"v7_normalizeFormMethod\",\n        \"Casing of `formMethod` fields is being normalized to uppercase in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod\"\n      );\n    }\n\n    if (!routerFuture.v7_partialHydration) {\n      logDeprecation(\n        \"v7_partialHydration\",\n        \"`RouterProvider` hydration behavior is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_partialhydration\"\n      );\n    }\n\n    if (!routerFuture.v7_skipActionErrorRevalidation) {\n      logDeprecation(\n        \"v7_skipActionErrorRevalidation\",\n        \"The revalidation behavior after 4xx/5xx `action` responses is changing in v7\",\n        \"https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation\"\n      );\n    }\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\nimport { logV6DeprecationWarnings } from \"./deprecations\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  React.useEffect(\n    () => logV6DeprecationWarnings(future, router.future),\n    [router, future]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/v6/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  React.useEffect(() => logV6DeprecationWarnings(future), [future]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/v6/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/v6/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/v6/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AgnosticPatchRoutesOnNavigationFunction,\n  AgnosticPatchRoutesOnNavigationFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\nimport { logV6DeprecationWarnings } from \"./lib/deprecations\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  DataStrategyFunction,\n  DataStrategyFunctionArgs,\n  DataStrategyMatch,\n  DataStrategyResult,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nexport type PatchRoutesOnNavigationFunctionArgs =\n  AgnosticPatchRoutesOnNavigationFunctionArgs<RouteObject, RouteMatch>;\n\nexport type PatchRoutesOnNavigationFunction =\n  AgnosticPatchRoutesOnNavigationFunction<RouteObject, RouteMatch>;\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    dataStrategy?: DataStrategyFunction;\n    patchRoutesOnNavigation?: PatchRoutesOnNavigationFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    dataStrategy: opts?.dataStrategy,\n    patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n  logV6DeprecationWarnings as UNSAFE_logV6DeprecationWarnings,\n};\n"],"names":["DataRouterContext","React","createContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useInRouterContext","useContext","useLocation","invariant","location","useIsomorphicLayoutEffect","cb","static","useLayoutEffect","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","id","useCurrentRouteId","DataRouterStateHook","activeRef","useRef","current","useCallback","to","options","navigate","_extends","fromRouteId","useNavigateStable","dataRouterContext","basename","future","navigator","pathname","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","go","path","resolveTo","parse","relative","joinPaths","replace","push","state","useNavigateUnstable","OutletContext","useOutlet","context","createElement","Provider","value","useResolvedPath","_temp2","useMemo","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","routeMatch","length","parentParams","params","parentPathnameBase","pathnameBase","route","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","slice","join","matchRoutes","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","search","hash","key","navigationType","NavigationType","Action","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","preStyles","padding","backgroundColor","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","Component","constructor","props","super","this","revalidation","undefined","componentDidCatch","errorInfo","console","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","UNSAFE_invariant","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","lazy","reduceRight","index","shouldRenderHydrateFallback","alreadyWarned","concat","getChildren","element","hookName","ctx","useDataRouterState","useRouteContext","thisRoute","_state$errors","UseRouteError","routeId","useAsyncValue","_data","blockerId","logDeprecation","flag","msg","link","warn","logV6DeprecationWarnings","renderFuture","routerFuture","v7_startTransition","v7_fetcherPersist","v7_normalizeFormMethod","v7_skipActionErrorRevalidation","startTransitionImpl","DataRoutes","_ref2","Route","_props","Router","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","stripBasename","AwaitRenderStatus","neverSettledPromise","Promise","AwaitErrorBoundary","resolve","promise","pending","renderError","reject","catch","defineProperty","get","_tracked","success","then","data","_error","AbortedDeferredError","ResolveAwait","_ref8","toRender","createRoutesFromChildren","parentPath","Children","forEach","isValidElement","treePath","type","apply","caseSensitive","action","hasErrorBoundary","shouldRevalidate","handle","mapRouteProperties","updates","_ref7","_ref3","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","setStateImpl","useState","setState","newState","listen","useEffect","_ref4","isStatic","UNSAFE_getResolveToMatches","jsonPath","fallbackElement","subscribe","createHref","n","opts","preventScrollReset","historyAction","_ref6","UseRouteId","createRouter","v7_prependBasename","hydrationData","dataStrategy","patchRoutesOnNavigation","initialize","UseActionData","UseLoaderData","actionData","shouldBlock","UseBlocker","blockerKey","setBlockerKey","blockerFunction","arg","currentLocation","nextLocation","String","deleteBlocker","getBlocker","blockers","has","IDLE_BLOCKER","_temp","joinedPathname","pattern","matchPath","decodePath","UseMatches","convertRouteMatchToUiMatch","UseNavigation","navigation","UseRevalidator","revalidate","UseRouteLoaderData"],"mappings":"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"}
+{"version":3,"file":"react-router.production.min.js","sources":["../../lib/context.ts","../../lib/hooks.tsx","../../lib/components.tsx","../../index.ts"],"sourcesContent":["import * as React from \"react\";\nimport type {\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  AgnosticRouteMatch,\n  History,\n  LazyRouteFunction,\n  Location,\n  Action as NavigationType,\n  RelativeRoutingType,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n  lazy?: LazyRouteFunction<RouteObject>;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject\n  // Omit `future` since those can be pulled from the `router`\n  // `NavigationContext` needs future since it doesn't have a `router` in all cases\n  extends Omit<NavigationContextObject, \"future\"> {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  unstable_flushSync?: boolean;\n  unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `<Router>` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n  future: {\n    v7_relativeSplatPath: boolean;\n  };\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n  isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n  isDataRoute: false,\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n  Blocker,\n  BlockerFunction,\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RevalidationState,\n  To,\n  UIMatch,\n} from \"@remix-run/router\";\nimport {\n  IDLE_BLOCKER,\n  Action as NavigationType,\n  UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n  UNSAFE_decodePath as decodePath,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  DataRouteMatch,\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a `<Router>`.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * `<NavLink>`.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, decodePath(pathname)),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\nconst navigateEffectWarning =\n  `You should call navigate() in a React.useEffect(), not when ` +\n  `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n  cb: Parameters<typeof React.useLayoutEffect>[0]\n) {\n  let isStatic = React.useContext(NavigationContext).static;\n  if (!isStatic) {\n    // We should be able to get rid of this once react 18.3 is released\n    // See: https://github.com/facebook/react/pull/26395\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(cb);\n  }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by `<Link>`s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  let { isDataRoute } = React.useContext(RouteContext);\n  // Conditional usage is OK here because the usage of a data router is static\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let dataRouterContext = React.useContext(DataRouterContext);\n  let { basename, future, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our history listener yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history (but only if we're not in a data router,\n      // otherwise it'll prepend the basename inside of the router).\n      // If this is a root navigation, then we navigate to the raw basename\n      // which allows the basename to have full control over the presence of a\n      // trailing slash on root links\n      if (dataRouterContext == null && basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [\n      basename,\n      navigator,\n      routePathnamesJson,\n      locationPathname,\n      dataRouterContext,\n    ]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `<Outlet>` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { future } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let routePathnamesJson = JSON.stringify(\n    getResolveToMatches(matches, future.v7_relativeSplatPath)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `<Outlet>` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string,\n  dataRouterState?: RemixRouter[\"state\"],\n  future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n\n  let remainingPathname = pathname;\n  if (parentPathnameBase !== \"/\") {\n    // Determine the remaining pathname by removing the # of URL segments the\n    // parentPathnameBase has, instead of removing based on character count.\n    // This is because we can't guarantee that incoming/outgoing encodings/\n    // decodings will match exactly.\n    // We decode paths before matching on a per-segment basis with\n    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n    // match what `window.location.pathname` would reflect.  Those don't 100%\n    // align when it comes to encoded URI characters such as % and &.\n    //\n    // So we may end up with:\n    //   pathname:           \"/descendant/a%25b/match\"\n    //   parentPathnameBase: \"/descendant/a%b\"\n    //\n    // And the direct substring removal approach won't work :/\n    let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n    let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n    remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n  }\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined ||\n        matches[matches.length - 1].route.Component !== undefined ||\n        matches[matches.length - 1].route.lazy !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n        `does not have an element or Component. This means it will render an <Outlet /> with a ` +\n        `null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterState,\n    future\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n  let devInfo = null;\n  if (__DEV__) {\n    console.error(\n      \"Error handled by React Router default ErrorBoundary:\",\n      error\n    );\n\n    devInfo = (\n      <>\n        <p>💿 Hey developer 👋</p>\n        <p>\n          You can provide a way better UX than this when your app throws errors\n          by providing your own <code style={codeStyles}>ErrorBoundary</code> or{\" \"}\n          <code style={codeStyles}>errorElement</code> prop on your route.\n        </p>\n      </>\n    );\n  }\n\n  return (\n    <>\n      <h2>Unexpected Application Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      {devInfo}\n    </>\n  );\n}\n\nconst defaultErrorElement = <DefaultErrorComponent />;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  revalidation: RevalidationState;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      revalidation: props.revalidation,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (\n      state.location !== props.location ||\n      (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n    ) {\n      return {\n        error: props.error,\n        location: props.location,\n        revalidation: props.revalidation,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error !== undefined ? props.error : state.error,\n      location: state.location,\n      revalidation: props.revalidation || state.revalidation,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error !== undefined ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    (match.route.errorElement || match.route.ErrorBoundary)\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState: RemixRouter[\"state\"] | null = null,\n  future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n  if (matches == null) {\n    if (!dataRouterState) {\n      return null;\n    }\n\n    if (dataRouterState.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else if (\n      future?.v7_partialHydration &&\n      parentMatches.length === 0 &&\n      !dataRouterState.initialized &&\n      dataRouterState.matches.length > 0\n    ) {\n      // Don't bail if we're initializing with partial hydration and we have\n      // router matches.  That means we're actively running `patchRoutesOnMiss`\n      // so we should render down the partial matches to the appropriate\n      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it\n      // only impacts the root matches for `RouterProvider` and no descendant\n      // `<Routes>`\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id] !== undefined\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for errors on route IDs: ${Object.keys(\n        errors\n      ).join(\",\")}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  // If we're in a partial hydration mode, detect if we need to render down to\n  // a given HydrateFallback while we load the rest of the hydration data\n  let renderFallback = false;\n  let fallbackIndex = -1;\n  if (dataRouterState && future && future.v7_partialHydration) {\n    for (let i = 0; i < renderedMatches.length; i++) {\n      let match = renderedMatches[i];\n      // Track the deepest fallback up until the first route without data\n      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n        fallbackIndex = i;\n      }\n\n      if (match.route.id) {\n        let { loaderData, errors } = dataRouterState;\n        let needsToRunLoader =\n          match.route.loader &&\n          loaderData[match.route.id] === undefined &&\n          (!errors || errors[match.route.id] === undefined);\n        if (match.route.lazy || needsToRunLoader) {\n          // We found the first route that's not ready to render (waiting on\n          // lazy, or has a loader that hasn't run yet).  Flag that we need to\n          // render a fallback and render up until the appropriate fallback\n          renderFallback = true;\n          if (fallbackIndex >= 0) {\n            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n          } else {\n            renderedMatches = [renderedMatches[0]];\n          }\n          break;\n        }\n      }\n    }\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    // Only data routers handle errors/fallbacks\n    let error: any;\n    let shouldRenderHydrateFallback = false;\n    let errorElement: React.ReactNode | null = null;\n    let hydrateFallbackElement: React.ReactNode | null = null;\n    if (dataRouterState) {\n      error = errors && match.route.id ? errors[match.route.id] : undefined;\n      errorElement = match.route.errorElement || defaultErrorElement;\n\n      if (renderFallback) {\n        if (fallbackIndex < 0 && index === 0) {\n          warningOnce(\n            \"route-fallback\",\n            false,\n            \"No `HydrateFallback` element provided to render during initial hydration\"\n          );\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = null;\n        } else if (fallbackIndex === index) {\n          shouldRenderHydrateFallback = true;\n          hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n        }\n      }\n    }\n\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => {\n      let children: React.ReactNode;\n      if (error) {\n        children = errorElement;\n      } else if (shouldRenderHydrateFallback) {\n        children = hydrateFallbackElement;\n      } else if (match.route.Component) {\n        // Note: This is a de-optimized path since React won't re-use the\n        // ReactElement since it's identity changes with each new\n        // React.createElement call.  We keep this so folks can use\n        // `<Route Component={...}>` in `<Routes>` but generally `Component`\n        // usage is only advised in `RouterProvider` when we can convert it to\n        // `element` ahead of time.\n        children = <match.route.Component />;\n      } else if (match.route.element) {\n        children = match.route.element;\n      } else {\n        children = outlet;\n      }\n      return (\n        <RenderedRoute\n          match={match}\n          routeContext={{\n            outlet,\n            matches,\n            isDataRoute: dataRouterState != null,\n          }}\n          children={children}\n        />\n      );\n    };\n    // Only wrap in an error boundary within data router usages when we have an\n    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to\n    // an ancestor ErrorBoundary/errorElement\n    return dataRouterState &&\n      (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        revalidation={dataRouterState.revalidation}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches, isDataRoute: true }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseBlocker = \"useBlocker\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n  UseBlocker = \"useBlocker\",\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n  UseNavigateStable = \"useNavigate\",\n  UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n  return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return React.useMemo(\n    () => ({\n      revalidate: dataRouterContext.router.revalidate,\n      state: state.revalidation,\n    }),\n    [dataRouterContext.router.revalidate, state.revalidation]\n  );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n  return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error !== undefined) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `<Await />` value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `<Await />` value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation.  Mostly used to avoid\n * using half-filled form data.  This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n  let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n  let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n  let [blockerKey, setBlockerKey] = React.useState(\"\");\n  let blockerFunction = React.useCallback<BlockerFunction>(\n    (arg) => {\n      if (typeof shouldBlock !== \"function\") {\n        return !!shouldBlock;\n      }\n      if (basename === \"/\") {\n        return shouldBlock(arg);\n      }\n\n      // If they provided us a function and we've got an active basename, strip\n      // it from the locations we expose to the user to match the behavior of\n      // useLocation\n      let { currentLocation, nextLocation, historyAction } = arg;\n      return shouldBlock({\n        currentLocation: {\n          ...currentLocation,\n          pathname:\n            stripBasename(currentLocation.pathname, basename) ||\n            currentLocation.pathname,\n        },\n        nextLocation: {\n          ...nextLocation,\n          pathname:\n            stripBasename(nextLocation.pathname, basename) ||\n            nextLocation.pathname,\n        },\n        historyAction,\n      });\n    },\n    [basename, shouldBlock]\n  );\n\n  // This effect is in charge of blocker key assignment and deletion (which is\n  // tightly coupled to the key)\n  React.useEffect(() => {\n    let key = String(++blockerId);\n    setBlockerKey(key);\n    return () => router.deleteBlocker(key);\n  }, [router]);\n\n  // This effect handles assigning the blockerFunction.  This is to handle\n  // unstable blocker function identities, and happens only after the prior\n  // effect so we don't get an orphaned blockerFunction in the router with a\n  // key of \"\".  Until then we just have the IDLE_BLOCKER.\n  React.useEffect(() => {\n    if (blockerKey !== \"\") {\n      router.getBlocker(blockerKey, blockerFunction);\n    }\n  }, [router, blockerKey, blockerFunction]);\n\n  // Prefer the blocker from `state` not `router.state` since DataRouterContext\n  // is memoized so this ensures we update on blocker state updates\n  return blockerKey && state.blockers.has(blockerKey)\n    ? state.blockers.get(blockerKey)!\n    : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n  let activeRef = React.useRef(false);\n  useIsomorphicLayoutEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(activeRef.current, navigateEffectWarning);\n\n      // Short circuit here since if this happens on first render the navigate\n      // is useless because we haven't wired up our router subscriber yet\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        router.navigate(to);\n      } else {\n        router.navigate(to, { fromRouteId: id, ...options });\n      }\n    },\n    [router, id]\n  );\n\n  return navigate;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n","import type {\n  InitialEntry,\n  LazyRouteFunction,\n  Location,\n  MemoryHistory,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  RouterState,\n  RouterSubscriber,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  UNSAFE_getResolveToMatches as getResolveToMatches,\n  UNSAFE_invariant as invariant,\n  parsePath,\n  resolveTo,\n  stripBasename,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./context\";\nimport {\n  AwaitContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./context\";\nimport {\n  _renderMatches,\n  useAsyncValue,\n  useInRouterContext,\n  useLocation,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n  v7_relativeSplatPath: boolean;\n  v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n  // Only accept future flags relevant to rendering behavior\n  // routing flags should be accessed via router.future\n  future?: Partial<Pick<FutureConfig, \"v7_startTransition\">>;\n}\n\n/**\n  Webpack + React 17 fails to compile on any of the following because webpack\n  complains that `startTransition` doesn't exist in `React`:\n  * import { startTransition } from \"react\"\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n  * import * as React from from \"react\";\n    \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n  Moving it to a constant such as the following solves the Webpack/React 17 issue:\n  * import * as React from from \"react\";\n    const START_TRANSITION = \"startTransition\";\n    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n  However, that introduces webpack/terser minification issues in production builds\n  in React 18 where minification/obfuscation ends up removing the call of\n  React.startTransition entirely from the first half of the ternary.  Grabbing\n  this exported reference once up front resolves that issue.\n\n  See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n  future,\n}: RouterProviderProps): React.ReactElement {\n  let [state, setStateImpl] = React.useState(router.state);\n  let { v7_startTransition } = future || {};\n\n  let setState = React.useCallback<RouterSubscriber>(\n    (newState: RouterState) => {\n      if (v7_startTransition && startTransitionImpl) {\n        startTransitionImpl(() => setStateImpl(newState));\n      } else {\n        setStateImpl(newState);\n      }\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  // Need to use a layout effect here so we are subscribed early enough to\n  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)\n  React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n  React.useEffect(() => {\n    warning(\n      fallbackElement == null || !router.future.v7_partialHydration,\n      \"`<RouterProvider fallbackElement>` is deprecated when using \" +\n        \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n    );\n    // Only log this once on initial mount\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  let dataRouterContext = React.useMemo(\n    () => ({\n      router,\n      navigator,\n      static: false,\n      basename,\n    }),\n    [router, navigator, basename]\n  );\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider value={dataRouterContext}>\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={basename}\n            location={state.location}\n            navigationType={state.historyAction}\n            navigator={navigator}\n            future={{\n              v7_relativeSplatPath: router.future.v7_relativeSplatPath,\n            }}\n          >\n            {state.initialized || router.future.v7_partialHydration ? (\n              <DataRoutes\n                routes={router.routes}\n                future={router.future}\n                state={state}\n              />\n            ) : (\n              fallbackElement\n            )}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nfunction DataRoutes({\n  routes,\n  future,\n  state,\n}: {\n  routes: DataRouteObject[];\n  future: RemixRouter[\"future\"];\n  state: RouterState;\n}): React.ReactElement | null {\n  return useRoutesImpl(routes, undefined, state, future);\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  future?: Partial<FutureConfig>;\n}\n\n/**\n * A `<Router>` that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n  future,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setStateImpl] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n  let { v7_startTransition } = future || {};\n  let setState = React.useCallback(\n    (newState: { action: NavigationType; location: Location }) => {\n      v7_startTransition && startTransitionImpl\n        ? startTransitionImpl(() => setStateImpl(newState))\n        : setStateImpl(newState);\n    },\n    [setStateImpl, v7_startTransition]\n  );\n\n  React.useLayoutEffect(() => history.listen(setState), [history, setState]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n      future={future}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  let { future, static: isStatic } = React.useContext(NavigationContext);\n\n  warning(\n    !isStatic,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n  let navigate = useNavigate();\n\n  // Resolve the path outside of the effect so that when effects run twice in\n  // StrictMode they navigate to the same place\n  let path = resolveTo(\n    to,\n    getResolveToMatches(matches, future.v7_relativeSplatPath),\n    locationPathname,\n    relative === \"path\"\n  );\n  let jsonPath = JSON.stringify(path);\n\n  React.useEffect(\n    () => navigate(JSON.parse(jsonPath), { replace, state, relative }),\n    [navigate, jsonPath, relative, replace, state]\n  );\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<NonIndexRouteObject>;\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  lazy?: LazyRouteFunction<IndexRouteObject>;\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  hydrateFallbackElement?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n  Component?: React.ComponentType | null;\n  HydrateFallback?: React.ComponentType | null;\n  ErrorBoundary?: React.ComponentType | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n  future?: Partial<Pick<FutureConfig, \"v7_relativeSplatPath\">>;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a `<Router>` directly. Instead, you'll render a\n * router that is more specific to your environment such as a `<BrowserRouter>`\n * in web browsers or a `<StaticRouter>` for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n  future,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({\n      basename,\n      navigator,\n      static: staticProp,\n      future: {\n        v7_relativeSplatPath: false,\n        ...future,\n      },\n    }),\n    [basename, future, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let locationContext = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      location: {\n        pathname: trailingPathname,\n        search,\n        hash,\n        state,\n        key,\n      },\n      navigationType,\n    };\n  }, [basename, pathname, search, hash, state, key, navigationType]);\n\n  warning(\n    locationContext != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (locationContext == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider children={children} value={locationContext} />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of `<Route>` elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  return useRoutes(createRoutesFromChildren(children), location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactNode;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        \"_error\" in promise\n          ? AwaitRenderStatus.error\n          : \"_data\" in promise\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  let toRender = typeof children === \"function\" ? children(data) : children;\n  return <>{toRender}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    let treePath = [...parentPath, index];\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, treePath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      Component: element.props.Component,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      ErrorBoundary: element.props.ErrorBoundary,\n      hasErrorBoundary:\n        element.props.ErrorBoundary != null ||\n        element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n      lazy: element.props.lazy,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n","import * as React from \"react\";\nimport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  Blocker,\n  BlockerFunction,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  HydrationState,\n  InitialEntry,\n  JsonFunction,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  RedirectFunction,\n  RelativeRoutingType,\n  Router as RemixRouter,\n  FutureConfig as RouterFutureConfig,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  unstable_HandlerResult,\n  unstable_AgnosticPatchRoutesOnMissFunction,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  resolvePath,\n  UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  FutureConfig,\n  IndexRouteProps,\n  LayoutRouteProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  PathRouteProps,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n} from \"./lib/components\";\nimport {\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createRoutesFromChildren,\n  renderMatches,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  NavigateOptions,\n  Navigator,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useBlocker,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteId,\n  useRouteLoaderData,\n  useRoutes,\n  useRoutesImpl,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  unstable_DataStrategyFunction,\n  unstable_DataStrategyFunctionArgs,\n  unstable_DataStrategyMatch,\n  ErrorResponse,\n  Fetcher,\n  FutureConfig,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LazyRouteFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathParam,\n  PathPattern,\n  PathRouteProps,\n  Pathname,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  ShouldRevalidateFunctionArgs,\n  To,\n  UIMatch,\n  Blocker,\n  BlockerFunction,\n  unstable_HandlerResult,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  redirectDocument,\n  replace,\n  renderMatches,\n  resolvePath,\n  useBlocker,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nfunction mapRouteProperties(route: RouteObject) {\n  let updates: Partial<RouteObject> & { hasErrorBoundary: boolean } = {\n    // Note: this check also occurs in createRoutesFromChildren so update\n    // there if you change this -- please and thank you!\n    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null,\n  };\n\n  if (route.Component) {\n    if (__DEV__) {\n      if (route.element) {\n        warning(\n          false,\n          \"You should not include both `Component` and `element` on your route - \" +\n            \"`Component` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      element: React.createElement(route.Component),\n      Component: undefined,\n    });\n  }\n\n  if (route.HydrateFallback) {\n    if (__DEV__) {\n      if (route.hydrateFallbackElement) {\n        warning(\n          false,\n          \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - \" +\n            \"`HydrateFallback` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      hydrateFallbackElement: React.createElement(route.HydrateFallback),\n      HydrateFallback: undefined,\n    });\n  }\n\n  if (route.ErrorBoundary) {\n    if (__DEV__) {\n      if (route.errorElement) {\n        warning(\n          false,\n          \"You should not include both `ErrorBoundary` and `errorElement` on your route - \" +\n            \"`ErrorBoundary` will be used.\"\n        );\n      }\n    }\n    Object.assign(updates, {\n      errorElement: React.createElement(route.ErrorBoundary),\n      ErrorBoundary: undefined,\n    });\n  }\n\n  return updates;\n}\n\nexport interface unstable_PatchRoutesOnMissFunction\n  extends unstable_AgnosticPatchRoutesOnMissFunction<RouteMatch> {}\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    future?: Partial<Omit<RouterFutureConfig, \"v7_prependBasename\">>;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n    unstable_dataStrategy?: unstable_DataStrategyFunction;\n    unstable_patchRoutesOnMiss?: unstable_PatchRoutesOnMissFunction;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    future: {\n      ...opts?.future,\n      v7_prependBasename: true,\n    },\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes,\n    mapRouteProperties,\n    unstable_dataStrategy: opts?.unstable_dataStrategy,\n    unstable_patchRoutesOnMiss: opts?.unstable_patchRoutesOnMiss,\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  LocationContext as UNSAFE_LocationContext,\n  NavigationContext as UNSAFE_NavigationContext,\n  RouteContext as UNSAFE_RouteContext,\n  mapRouteProperties as UNSAFE_mapRouteProperties,\n  useRouteId as UNSAFE_useRouteId,\n  useRoutesImpl as UNSAFE_useRoutesImpl,\n};\n"],"names":["DataRouterContext","React","createContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","matches","isDataRoute","RouteErrorContext","useInRouterContext","useContext","useLocation","invariant","location","useIsomorphicLayoutEffect","cb","static","useLayoutEffect","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","id","useCurrentRouteId","DataRouterStateHook","activeRef","useRef","current","useCallback","to","options","navigate","_extends","fromRouteId","useNavigateStable","dataRouterContext","basename","future","navigator","pathname","locationPathname","routePathnamesJson","JSON","stringify","getResolveToMatches","v7_relativeSplatPath","go","path","resolveTo","parse","relative","joinPaths","replace","push","state","useNavigateUnstable","OutletContext","useOutlet","context","createElement","Provider","value","useResolvedPath","_temp2","useMemo","useRoutes","routes","locationArg","useRoutesImpl","dataRouterState","parentMatches","routeMatch","length","parentParams","params","parentPathnameBase","pathnameBase","route","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parsePath","startsWith","remainingPathname","parentSegments","split","slice","join","matchRoutes","renderedMatches","_renderMatches","map","match","Object","assign","encodeLocation","search","hash","key","navigationType","NavigationType","Action","Pop","DefaultErrorComponent","error","useRouteError","message","isRouteErrorResponse","status","statusText","Error","stack","preStyles","padding","backgroundColor","Fragment","style","fontStyle","defaultErrorElement","RenderErrorBoundary","Component","constructor","props","super","this","revalidation","undefined","componentDidCatch","errorInfo","console","render","routeContext","children","component","RenderedRoute","_ref","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState","_future","errors","v7_partialHydration","initialized","errorIndex","findIndex","m","UNSAFE_invariant","Math","min","renderFallback","fallbackIndex","i","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","lazy","reduceRight","index","shouldRenderHydrateFallback","alreadyWarned","concat","getChildren","element","hookName","ctx","useDataRouterState","useRouteContext","thisRoute","_state$errors","UseRouteError","routeId","useAsyncValue","_data","blockerId","startTransitionImpl","DataRoutes","_ref2","Route","_props","Router","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","stripBasename","AwaitRenderStatus","neverSettledPromise","Promise","AwaitErrorBoundary","resolve","promise","pending","renderError","reject","catch","defineProperty","get","_tracked","success","then","data","_error","AbortedDeferredError","ResolveAwait","_ref8","toRender","createRoutesFromChildren","parentPath","Children","forEach","isValidElement","treePath","type","apply","caseSensitive","action","hasErrorBoundary","shouldRevalidate","handle","mapRouteProperties","updates","_ref7","_ref3","initialEntries","initialIndex","historyRef","createMemoryHistory","v5Compat","history","setStateImpl","useState","v7_startTransition","setState","newState","listen","_ref4","isStatic","UNSAFE_getResolveToMatches","jsonPath","useEffect","fallbackElement","subscribe","createHref","n","opts","preventScrollReset","historyAction","_ref6","UseRouteId","createRouter","v7_prependBasename","hydrationData","unstable_dataStrategy","unstable_patchRoutesOnMiss","initialize","UseActionData","UseLoaderData","actionData","shouldBlock","UseBlocker","blockerKey","setBlockerKey","blockerFunction","arg","currentLocation","nextLocation","String","deleteBlocker","getBlocker","blockers","has","IDLE_BLOCKER","_temp","joinedPathname","pattern","matchPath","decodePath","UseMatches","convertRouteMatchToUiMatch","UseNavigation","navigation","UseRevalidator","revalidate","UseRouteLoaderData"],"mappings":"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"}
Index: imaps-frontend/node_modules/react-router/package.json
===================================================================
--- imaps-frontend/node_modules/react-router/package.json	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-frontend/node_modules/react-router/package.json	(revision d56544918790c0c3bc50f2f0a98c99f3d2988ccf)
@@ -1,53 +1,6 @@
 {
-  "_from": "react-router@6.28.0",
-  "_id": "react-router@6.28.0",
-  "_inBundle": false,
-  "_integrity": "sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==",
-  "_location": "/react-router",
-  "_phantomChildren": {},
-  "_requested": {
-    "type": "version",
-    "registry": true,
-    "raw": "react-router@6.28.0",
-    "name": "react-router",
-    "escapedName": "react-router",
-    "rawSpec": "6.28.0",
-    "saveSpec": null,
-    "fetchSpec": "6.28.0"
-  },
-  "_requiredBy": [
-    "/react-router-dom"
-  ],
-  "_resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.0.tgz",
-  "_shasum": "29247c86d7ba901d7e5a13aa79a96723c3e59d0d",
-  "_spec": "react-router@6.28.0",
-  "_where": "/home/stevetosak/Proekt/IMaps/imaps-frontend/node_modules/react-router-dom",
-  "author": {
-    "name": "Remix Software",
-    "email": "hello@remix.run"
-  },
-  "bugs": {
-    "url": "https://github.com/remix-run/react-router/issues"
-  },
-  "bundleDependencies": false,
-  "dependencies": {
-    "@remix-run/router": "1.21.0"
-  },
-  "deprecated": false,
+  "name": "react-router",
+  "version": "6.26.0",
   "description": "Declarative routing for React",
-  "devDependencies": {
-    "react": "^18.2.0",
-    "react-router-dom": "6.28.0"
-  },
-  "engines": {
-    "node": ">=14.0.0"
-  },
-  "files": [
-    "dist/",
-    "CHANGELOG.md",
-    "LICENSE.md",
-    "README.md"
-  ],
-  "homepage": "https://github.com/remix-run/react-router#readme",
   "keywords": [
     "react",
@@ -58,19 +11,34 @@
     "link"
   ],
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/remix-run/react-router",
+    "directory": "packages/react-router"
+  },
   "license": "MIT",
+  "author": "Remix Software <hello@remix.run>",
+  "sideEffects": false,
   "main": "./dist/main.js",
+  "unpkg": "./dist/umd/react-router.production.min.js",
   "module": "./dist/index.js",
-  "name": "react-router",
+  "types": "./dist/index.d.ts",
+  "dependencies": {
+    "@remix-run/router": "1.19.0"
+  },
+  "devDependencies": {
+    "react": "^18.2.0",
+    "react-router-dom": "6.26.0"
+  },
   "peerDependencies": {
     "react": ">=16.8"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/remix-run/react-router.git",
-    "directory": "packages/react-router"
-  },
-  "sideEffects": false,
-  "types": "./dist/index.d.ts",
-  "unpkg": "./dist/umd/react-router.production.min.js",
-  "version": "6.28.0"
+  "files": [
+    "dist/",
+    "CHANGELOG.md",
+    "LICENSE.md",
+    "README.md"
+  ],
+  "engines": {
+    "node": ">=14.0.0"
+  }
 }
