{"version":3,"sources":["../src/index.tsx","../src/components/pages/error/index.tsx","../src/hooks/auth/usePermissions/index.ts","../src/contexts/auth/index.tsx","../src/definitions/table/index.ts","../src/definitions/helpers/userFriendlySeconds/index.ts","../src/definitions/helpers/importCSVMapper/index.ts","../src/definitions/helpers/userFriendlyResourceName/index.ts","../src/definitions/helpers/handleUseParams/index.tsx","../src/definitions/helpers/keys/index.ts","../src/definitions/helpers/pickNotDeprecated/index.ts","../src/definitions/helpers/queryKeys/index.ts","../src/definitions/helpers/hasPermission/index.ts","../src/definitions/helpers/router/is-parameter.ts","../src/definitions/helpers/router/split-to-segments.ts","../src/definitions/helpers/router/is-segment-counts-same.ts","../src/definitions/helpers/router/remove-leading-trailing-slashes.ts","../src/definitions/helpers/router/check-by-segments.ts","../src/definitions/helpers/router/get-default-action-path.ts","../src/definitions/helpers/router/get-parent-resource.ts","../src/definitions/helpers/router/get-parent-prefix-for-resource.ts","../src/definitions/helpers/router/get-action-routes-from-resource.ts","../src/definitions/helpers/router/pick-matched-route.ts","../src/definitions/helpers/router/match-resource-from-route.ts","../src/definitions/helpers/routeGenerator/index.ts","../src/definitions/helpers/treeView/createTreeView/index.ts","../src/definitions/helpers/humanizeString/index.ts","../src/contexts/refine/index.tsx","../src/components/layoutWrapper/defaultLayout/index.tsx","../src/definitions/helpers/handleRefineOptions/index.ts","../src/definitions/helpers/redirectPage/index.ts","../src/definitions/helpers/sequentialPromises/index.ts","../src/definitions/helpers/pick-resource/index.ts","../src/definitions/helpers/pickDataProvider/index.ts","../src/definitions/helpers/handleMultiple/index.ts","../src/definitions/helpers/useInfinitePagination/index.ts","../src/definitions/helpers/legacy-resource-transform/index.ts","../src/definitions/helpers/router/pick-route-params.ts","../src/definitions/helpers/router/prepare-route-params.ts","../src/definitions/helpers/router/compose-route.ts","../src/definitions/helpers/useActiveAuthProvider/index.ts","../src/definitions/helpers/handlePaginationParams/index.ts","../src/definitions/helpers/useMediaQuery/index.ts","../src/definitions/helpers/safe-translate/index.ts","../src/definitions/helpers/generateDocumentTitle/index.ts","../src/hooks/refine/useMutationMode.ts","../src/hooks/refine/useWarnAboutChange/index.ts","../src/contexts/unsavedWarn/index.tsx","../src/hooks/refine/useSyncWithLocation.ts","../src/hooks/refine/useTitle.tsx","../src/hooks/refine/useRefineContext.ts","../src/definitions/helpers/useUserFriendlyName/index.ts","../src/definitions/helpers/flatten-object-keys/index.ts","../src/definitions/helpers/property-path-to-array/index.ts","../src/definitions/helpers/downloadInBrowser/index.ts","../src/definitions/helpers/defer-execution/index.ts","../src/definitions/helpers/async-debounce/index.ts","../src/definitions/helpers/prepare-query-context/index.ts","../src/definitions/upload/file2Base64/index.ts","../src/hooks/useKeys/index.tsx","../src/hooks/auth/useGetIdentity/index.ts","../src/hooks/auth/useLogout/index.ts","../src/hooks/auth/useInvalidateAuthStore/index.ts","../src/hooks/auth/useLogin/index.ts","../src/hooks/auth/useRegister/index.ts","../src/hooks/auth/useForgotPassword/index.ts","../src/hooks/auth/useUpdatePassword/index.ts","../src/hooks/auth/useIsAuthenticated/index.ts","../src/hooks/auth/useOnError/index.ts","../src/hooks/auth/useIsExistAuthentication/index.ts","../src/hooks/data/useList.ts","../src/hooks/useLoadingOvertime/index.ts","../src/hooks/data/useOne.ts","../src/hooks/data/useMany.ts","../src/hooks/data/useUpdate.ts","../src/contexts/undoableQueue/types.ts","../src/hooks/data/useCreate.ts","../src/hooks/data/useDelete.ts","../src/hooks/data/useCreateMany.ts","../src/hooks/data/useUpdateMany.ts","../src/hooks/data/useDeleteMany.ts","../src/hooks/data/useApiUrl.ts","../src/hooks/data/useCustom.ts","../src/hooks/data/useCustomMutation.ts","../src/hooks/data/useDataProvider.tsx","../src/contexts/data/index.tsx","../src/hooks/data/useInfiniteList.ts","../src/hooks/live/useResourceSubscription/index.ts","../src/contexts/live/index.tsx","../src/hooks/invalidate/index.tsx","../src/hooks/resource/useResource/index.ts","../src/contexts/resource/index.tsx","../src/hooks/deepMemo/index.tsx","../src/hooks/memoized/index.tsx","../src/contexts/router/picker/index.tsx","../src/hooks/router/use-parsed/index.tsx","../src/contexts/router/index.tsx","../src/hooks/router/use-parse/index.tsx","../src/hooks/resource/useResourceWithRoute/index.ts","../src/hooks/live/useLiveMode/index.ts","../src/hooks/live/useSubscription/index.ts","../src/hooks/live/usePublish/index.ts","../src/hooks/notification/useCancelNotification/index.tsx","../src/contexts/undoableQueue/index.tsx","../src/hooks/notification/useNotification/index.ts","../src/contexts/notification/index.tsx","../src/hooks/notification/useHandleNotification/index.ts","../src/hooks/i18n/useSetLocale.ts","../src/contexts/i18n/index.tsx","../src/hooks/i18n/useTranslate.ts","../src/hooks/i18n/useGetLocale.ts","../src/hooks/i18n/useTranslation.tsx","../src/hooks/export/index.ts","../src/hooks/form/index.ts","../src/hooks/redirection/index.ts","../src/hooks/router/use-back/index.tsx","../src/hooks/router/use-go/index.tsx","../src/hooks/router/use-get-to-path/index.ts","../src/hooks/navigation/index.ts","../src/hooks/show/index.ts","../src/hooks/import/index.tsx","../src/hooks/modal/useModal/index.tsx","../src/hooks/router/use-to-path/index.ts","../src/components/link/index.tsx","../src/hooks/router/use-link/index.tsx","../src/hooks/legacy-router/useRouterContext.ts","../src/contexts/router/legacy/index.tsx","../src/hooks/accessControl/useCan/index.ts","../src/contexts/accessControl/index.tsx","../src/definitions/helpers/sanitize-resource/index.ts","../src/hooks/accessControl/useCanWithoutCache.ts","../src/hooks/useSelect/index.ts","../src/hooks/useTable/index.ts","../src/hooks/auditLog/useLog/index.ts","../src/contexts/auditLog/index.tsx","../src/hooks/auditLog/useLogList/index.ts","../src/hooks/breadcrumb/index.ts","../src/hooks/menu/useMenu.tsx","../src/definitions/helpers/menu/create-resource-key.ts","../src/definitions/helpers/menu/create-tree.ts","../src/contexts/metaContext/index.tsx","../src/hooks/useMeta/index.ts","../src/hooks/use-refine-options/index.tsx","../src/hooks/use-resource-params/index.ts","../src/hooks/use-resource-params/use-id/index.tsx","../src/hooks/use-resource-params/use-action/index.tsx","../src/hooks/button/actionable-button/index.tsx","../src/hooks/button/navigation-button/index.tsx","../src/hooks/button/button-can-access/index.tsx","../src/hooks/button/delete-button/index.tsx","../src/hooks/button/refresh-button/index.tsx","../src/hooks/button/index.tsx","../src/components/pages/login/index.tsx","../src/components/pages/auth/index.tsx","../src/components/pages/auth/components/login/index.tsx","../src/components/pages/auth/components/register/index.tsx","../src/components/pages/auth/components/forgotPassword/index.tsx","../src/components/pages/auth/components/updatePassword/index.tsx","../src/components/pages/ready/index.tsx","../src/components/pages/welcome/index.tsx","../src/components/pages/config-success/index.tsx","../src/components/pages/config-error/index.tsx","../src/components/containers/refine/index.tsx","../src/components/telemetry/index.tsx","../src/hooks/useTelemetryData/index.ts","../src/definitions/helpers/check-router-prop-misuse/index.ts","../src/hooks/router/use-router-misuse-warning/index.ts","../src/components/undoableQueue/index.tsx","../src/components/layoutWrapper/index.tsx","../src/components/authenticated/index.tsx","../src/components/routeChangeHandler/index.tsx","../src/components/canAccess/index.tsx","../src/components/gh-banner/index.tsx","../src/components/gh-banner/styles.ts","../src/components/autoSaveIndicator/index.tsx"],"sourcesContent":["export * from \"./components/index.js\";\nexport * from \"./hooks/index.js\";\n\n// all auth types\nexport * from \"./components/pages/auth/types.js\";\nexport { ILoginForm } from \"./components/pages/login/index.js\";\n\nexport {\n  getDefaultFilter,\n  getDefaultSortOrder,\n  parseTableParams,\n  parseTableParamsFromQuery,\n  setInitialFilters,\n  setInitialSorters,\n  stringifyTableParams,\n  unionFilters,\n  unionSorters,\n} from \"./definitions/table/index.js\";\nexport {\n  createTreeView,\n  handleUseParams,\n  importCSVMapper,\n  routeGenerator,\n  userFriendlyResourceName,\n  getNextPageParam,\n  getPreviousPageParam,\n  pickNotDeprecated,\n  legacyResourceTransform,\n  matchResourceFromRoute,\n  useActiveAuthProvider,\n  useUserFriendlyName,\n  queryKeys,\n  pickDataProvider,\n  keys,\n  KeyBuilder,\n  flattenObjectKeys,\n  propertyPathToArray,\n} from \"./definitions/helpers/index.js\";\nexport { file2Base64 } from \"./definitions/upload/index.js\";\nexport { generateDefaultDocumentTitle } from \"./definitions/index.js\";\n\nexport { ResourceContext } from \"./contexts/resource/index.js\";\n\nexport { AccessControlContext } from \"./contexts/accessControl/index.js\";\n\nexport {\n  AccessControlProvider,\n  AccessControlProvider as AccessControlBindings,\n  CanParams,\n  CanResponse,\n  CanReturnType,\n  IAccessControlContext,\n  IAccessControlContextReturnType,\n} from \"./contexts/accessControl/types.js\";\n\nexport {\n  AuditLogProvider,\n  IAuditLogContext,\n  ILog,\n  ILogData,\n  LogParams,\n} from \"./contexts/auditLog/types.js\";\n\nexport {\n  AuthActionResponse,\n  AuthBindings,\n  AuthProvider,\n  CheckResponse,\n  IAuthContext,\n  IdentityResponse,\n  ILegacyAuthContext,\n  LegacyAuthProvider,\n  OnErrorResponse,\n  PermissionResponse,\n  SuccessNotificationResponse,\n} from \"./contexts/auth/types.js\";\n\nexport {\n  ConditionalFilter,\n  CreateManyResponse,\n  CreateResponse,\n  CrudFilter,\n  CrudFilters,\n  CrudOperators,\n  CrudSort,\n  CrudSorting,\n  CustomResponse,\n  DataBindings,\n  DeleteManyResponse,\n  DeleteOneResponse,\n  GetListResponse,\n  GetManyResponse,\n  GetOneResponse,\n  LogicalFilter,\n  Pagination,\n  SortOrder,\n  UpdateManyResponse,\n  UpdateResponse,\n  GetListParams,\n  GetManyParams,\n  GetOneParams,\n  CreateParams,\n  CreateManyParams,\n  UpdateParams,\n  UpdateManyParams,\n  DeleteOneParams,\n  DeleteManyParams,\n  CustomParams,\n  DataProvider,\n  BaseKey,\n  BaseRecord,\n  HttpError,\n  MetaQuery,\n  MetaDataQuery,\n  MutationMode,\n  Option,\n  BaseOption,\n  IQueryKeys,\n  Prettify,\n  Context,\n  ContextQuery,\n  DataProviders,\n  IDataContext,\n  GraphQLQueryOptions,\n  Fields,\n  NestedField,\n  PrevContext,\n  PreviousQuery,\n  QueryBuilderOptions,\n  QueryResponse,\n  RefineError,\n  ValidationErrors,\n  VariableOptions,\n} from \"./contexts/data/types.js\";\n\nexport {\n  I18nContext,\n  I18nContext as TranslationContext,\n} from \"./contexts/i18n/index.js\";\n\nexport {\n  I18nProvider,\n  I18nProvider as TranslationProvider,\n  I18nProvider as i18nBindings,\n  II18nContext as ITranslationContext,\n} from \"./contexts/i18n/types.js\";\n\nexport {\n  ILiveContext,\n  ILiveModeContextProvider,\n  LiveEvent,\n  LiveCommonParams,\n  LiveManyParams,\n  LiveModeProps,\n  LiveOneParams,\n  LiveProvider,\n  LiveListParams,\n} from \"./contexts/live/types.js\";\n\nexport {\n  INotificationContext,\n  NotificationProvider,\n  NotificationProvider as NotificationsBindings,\n  OpenNotificationParams,\n  SuccessErrorNotification,\n} from \"./contexts/notification/types.js\";\n\nexport {\n  DashboardPageProps,\n  IRefineContext,\n  IRefineContextOptions,\n  IRefineContextProvider,\n  IRefineOptions,\n  LayoutProps,\n  RefineProps,\n  TextTransformers,\n  TitleProps,\n} from \"./contexts/refine/types.js\";\n\nexport {\n  ResourceProps,\n  IResourceComponents,\n  IResourceComponentsProps,\n  IResourceContext,\n  IResourceItem,\n  ITreeMenu,\n  IMenuItem,\n  ResourceAuditLogPermissions,\n  ResourceBindings,\n  RouteableProperties,\n  ResourceRouteComponent,\n  ResourceRouteComposition,\n  ResourceRouteDefinition,\n  ResourceRoutePath,\n} from \"./contexts/resource/types.js\";\n\nexport {\n  ActionWithPage,\n  LegacyRouterProvider,\n  LegacyRouterProvider as IRouterContext,\n  LegacyRouterProvider as IRouterProvider,\n  PromptProps,\n  ResourceErrorRouterParams,\n  ResourceRouterParams,\n  RouteAction,\n} from \"./contexts/router/legacy/types.js\";\n\nexport {\n  Action,\n  BackFunction,\n  GoConfig,\n  GoFunction,\n  ParseResponse,\n  ParsedParams,\n  ParseFunction,\n  RouterProvider,\n  RouterProvider as RouterBindings,\n} from \"./contexts/router/types.js\";\n\nexport {\n  ActionTypes,\n  IUndoableQueue,\n  IUndoableQueueContext,\n} from \"./contexts/undoableQueue/types.js\";\n\nexport { IUnsavedWarnContext } from \"./contexts/unsavedWarn/types.js\";\n\nexport {\n  MetaContextProvider,\n  useMetaContext,\n} from \"./contexts/metaContext/index.js\";\n","import React, { useEffect, useState } from \"react\";\n\nimport {\n  useNavigation,\n  useTranslate,\n  useResource,\n  useGo,\n  useRouterType,\n} from \"@hooks\";\n\n/**\n * When the app is navigated to a non-existent route, refine shows a default error page.\n * A custom error component can be used for this error page.\n *\n * @see {@link https://refine.dev/docs/packages/documentation/routers/} for more details.\n */\nexport const ErrorComponent: React.FC = () => {\n  const [errorMessage, setErrorMessage] = useState<string>();\n  const translate = useTranslate();\n  const { push } = useNavigation();\n  const go = useGo();\n  const routerType = useRouterType();\n\n  const { resource, action } = useResource();\n\n  useEffect(() => {\n    if (resource && action) {\n      setErrorMessage(\n        translate(\n          \"pages.error.info\",\n          {\n            action: action,\n            resource: resource.name,\n          },\n          `You may have forgotten to add the \"${action}\" component to \"${resource.name}\" resource.`,\n        ),\n      );\n    }\n  }, [resource, action]);\n\n  return (\n    <>\n      <h1>\n        {translate(\n          \"pages.error.404\",\n          undefined,\n          \"Sorry, the page you visited does not exist.\",\n        )}\n      </h1>\n      {errorMessage && <p>{errorMessage}</p>}\n      <button\n        onClick={() => {\n          if (routerType === \"legacy\") {\n            push(\"/\");\n          } else {\n            go({ to: \"/\" });\n          }\n        }}\n      >\n        {translate(\"pages.error.backHome\", undefined, \"Back Home\")}\n      </button>\n    </>\n  );\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { PermissionResponse } from \"../../../contexts/auth/types\";\n\nexport type UsePermissionsLegacyProps<\n  TData = any,\n  TParams extends Record<string, any> = Record<string, any>,\n> = {\n  v3LegacyAuthProviderCompatible: true;\n  options?: UseQueryOptions<TData>;\n  params?: TParams;\n};\n\nexport type UsePermissionsProps<\n  TData = PermissionResponse,\n  TParams extends Record<string, any> = Record<string, any>,\n> = {\n  v3LegacyAuthProviderCompatible?: false;\n  options?: UseQueryOptions<TData>;\n  params?: TParams;\n};\n\nexport type UsePermissionsCombinedProps<\n  TData = any,\n  TParams extends Record<string, any> = Record<string, any>,\n> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  options?: UseQueryOptions<TData> | UseQueryOptions<PermissionResponse>;\n  params?: TParams;\n};\n\nexport type UsePermissionsLegacyReturnType<TData = any> = UseQueryResult<\n  TData,\n  unknown\n>;\n\nexport type UsePermissionsReturnType<TData = PermissionResponse> =\n  UseQueryResult<TData, unknown>;\n\nexport type UsePermissionsCombinedReturnType<TData = any> =\n  | UseQueryResult<TData, unknown>\n  | UseQueryResult<PermissionResponse, unknown>;\n\nexport function usePermissions<\n  TData = any,\n  TParams extends Record<string, any> = Record<string, any>,\n>(\n  props: UsePermissionsLegacyProps<TData, TParams>,\n): UsePermissionsLegacyReturnType<TData>;\n\nexport function usePermissions<\n  TData = PermissionResponse,\n  TParams extends Record<string, any> = Record<string, any>,\n>(props?: UsePermissionsProps<TData, TParams>): UsePermissionsReturnType<TData>;\n\nexport function usePermissions<\n  TData = any,\n  TParams extends Record<string, any> = Record<string, any>,\n>(\n  props?: UsePermissionsCombinedProps<TData, TParams>,\n): UsePermissionsCombinedReturnType<TData>;\n\n/**\n * `usePermissions` calls the `getPermissions` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/usePermissions} for more details.\n *\n * @typeParam TData - Result data of the query\n *\n * @typeParam TParams - Params will be passed to the `getPermissions` method of {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`}.\n *\n */\nexport function usePermissions<\n  TData = any,\n  TParams extends Record<string, any> = Record<string, any>,\n>({\n  v3LegacyAuthProviderCompatible = false,\n  options,\n  params,\n}:\n  | UsePermissionsProps<TData, TParams>\n  | UsePermissionsLegacyProps<TData, TParams> = {}):\n  | UsePermissionsReturnType\n  | UsePermissionsLegacyReturnType<TData> {\n  const { getPermissions: legacyGetPermission } = useLegacyAuthContext();\n  const { getPermissions } = useAuthBindingsContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const queryResponse = useQuery<TData>({\n    queryKey: keys().auth().action(\"permissions\").get(preferLegacyKeys),\n    // Enabled check for `getPermissions` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n    queryFn: (getPermissions\n      ? () => getPermissions(params)\n      : () => Promise.resolve(undefined)) as (\n      params?: unknown,\n    ) => Promise<TData>,\n    enabled: !v3LegacyAuthProviderCompatible && !!getPermissions,\n    ...(v3LegacyAuthProviderCompatible ? {} : options),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? {} : options?.meta),\n      ...getXRay(\"usePermissions\", preferLegacyKeys),\n    },\n  });\n\n  const legacyQueryResponse = useQuery<TData>({\n    queryKey: [\n      ...keys().auth().action(\"permissions\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    // Enabled check for `getPermissions` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n    queryFn: (legacyGetPermission\n      ? () => legacyGetPermission(params)\n      : () => Promise.resolve(undefined)) as (\n      params?: unknown,\n    ) => Promise<TData>,\n    enabled: v3LegacyAuthProviderCompatible && !!legacyGetPermission,\n    ...(v3LegacyAuthProviderCompatible ? options : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? options?.meta : {}),\n      ...getXRay(\"usePermissions\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible ? legacyQueryResponse : queryResponse;\n}\n","import React, { type PropsWithChildren } from \"react\";\n\nimport { useNavigation } from \"@hooks\";\n\nimport type { IAuthContext, ILegacyAuthContext } from \"./types\";\n\n/**\n * @deprecated `LegacyAuthContext` is deprecated with refine@4, use `AuthBindingsContext` instead, however, we still support `LegacyAuthContext` for backward compatibility.\n */\nexport const LegacyAuthContext = React.createContext<ILegacyAuthContext>({});\n\n/**\n * @deprecated `LegacyAuthContextProvider` is deprecated with refine@4, use `AuthBindingsContextProvider` instead, however, we still support `LegacyAuthContextProvider` for backward compatibility.\n */\nexport const LegacyAuthContextProvider: React.FC<\n  PropsWithChildren<ILegacyAuthContext>\n> = ({ children, isProvided, ...authOperations }) => {\n  const { replace } = useNavigation();\n\n  const loginFunc = async (params: any) => {\n    try {\n      const result = await authOperations.login?.(params);\n\n      return result;\n    } catch (error) {\n      return Promise.reject(error);\n    }\n  };\n\n  const registerFunc = async (params: any) => {\n    try {\n      const result = await authOperations.register?.(params);\n\n      return result;\n    } catch (error) {\n      return Promise.reject(error);\n    }\n  };\n\n  const logoutFunc = async (params: any) => {\n    try {\n      const redirectPath = await authOperations.logout?.(params);\n\n      return redirectPath;\n    } catch (error) {\n      return Promise.reject(error);\n    }\n  };\n\n  const checkAuthFunc = async (params: any) => {\n    try {\n      await authOperations.checkAuth?.(params);\n      return Promise.resolve();\n    } catch (error) {\n      if ((error as { redirectPath?: string })?.redirectPath) {\n        replace((error as { redirectPath: string }).redirectPath);\n      }\n\n      return Promise.reject(error);\n    }\n  };\n\n  return (\n    <LegacyAuthContext.Provider\n      value={{\n        ...authOperations,\n        login: loginFunc,\n        logout: logoutFunc,\n        checkAuth: checkAuthFunc,\n        register: registerFunc,\n        isProvided,\n      }}\n    >\n      {children}\n    </LegacyAuthContext.Provider>\n  );\n};\n\nexport const AuthBindingsContext = React.createContext<Partial<IAuthContext>>(\n  {},\n);\n\nexport const AuthBindingsContextProvider: React.FC<\n  PropsWithChildren<IAuthContext>\n> = ({ children, isProvided, ...authBindings }) => {\n  const handleLogin = async (params: unknown) => {\n    try {\n      const result = await authBindings.login?.(params);\n\n      return result;\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in login: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleRegister = async (params: unknown) => {\n    try {\n      const result = await authBindings.register?.(params);\n\n      return result;\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in register: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleLogout = async (params: unknown) => {\n    try {\n      const result = await authBindings.logout?.(params);\n\n      return result;\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in logout: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleCheck = async (params: unknown) => {\n    try {\n      const result = await authBindings.check?.(params);\n\n      return Promise.resolve(result);\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in check: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleForgotPassword = async (params: unknown) => {\n    try {\n      const result = await authBindings.forgotPassword?.(params);\n\n      return Promise.resolve(result);\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in forgotPassword: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  const handleUpdatePassword = async (params: unknown) => {\n    try {\n      const result = await authBindings.updatePassword?.(params);\n      return Promise.resolve(result);\n    } catch (error) {\n      console.warn(\n        \"Unhandled Error in updatePassword: refine always expects a resolved promise.\",\n        error,\n      );\n      return Promise.reject(error);\n    }\n  };\n\n  return (\n    <AuthBindingsContext.Provider\n      value={{\n        ...authBindings,\n        login: handleLogin as IAuthContext[\"login\"],\n        logout: handleLogout as IAuthContext[\"logout\"],\n        check: handleCheck as IAuthContext[\"check\"],\n        register: handleRegister as IAuthContext[\"register\"],\n        forgotPassword: handleForgotPassword as IAuthContext[\"forgotPassword\"],\n        updatePassword: handleUpdatePassword as IAuthContext[\"updatePassword\"],\n        isProvided,\n      }}\n    >\n      {children}\n    </AuthBindingsContext.Provider>\n  );\n};\n\n/**\n * @deprecated `useLegacyAuthContext` is deprecated with refine@4, use `useAuthBindingsContext` instead, however, we still support `useLegacyAuthContext` for backward compatibility.\n */\nexport const useLegacyAuthContext = () => {\n  const context = React.useContext(LegacyAuthContext);\n\n  return context;\n};\n\nexport const useAuthBindingsContext = () => {\n  const context = React.useContext(AuthBindingsContext);\n\n  return context;\n};\n","import differenceWith from \"lodash/differenceWith\";\nimport unionWith from \"lodash/unionWith\";\nimport qs, { type IStringifyOptions } from \"qs\";\nimport warnOnce from \"warn-once\";\n\nimport { pickNotDeprecated } from \"@definitions/helpers\";\n\nimport type {\n  CrudFilter,\n  CrudOperators,\n  CrudSort,\n  SortOrder,\n} from \"../../contexts/data/types\";\n\nexport const parseTableParams = (url: string) => {\n  const { current, pageSize, sorter, sorters, filters } = qs.parse(\n    url.substring(1), // remove first ? character\n  );\n\n  return {\n    parsedCurrent: current && Number(current),\n    parsedPageSize: pageSize && Number(pageSize),\n    parsedSorter: (pickNotDeprecated(sorters, sorter) as CrudSort[]) ?? [],\n    parsedFilters: (filters as CrudFilter[]) ?? [],\n  };\n};\n\nexport const parseTableParamsFromQuery = (params: any) => {\n  const url = qs.stringify(params);\n  return parseTableParams(`/${url}`);\n};\n\n/**\n * @internal This function is used to stringify table params from the useTable hook.\n */\nexport const stringifyTableParams = (params: {\n  pagination?: { current?: number; pageSize?: number };\n  sorters: CrudSort[];\n  filters: CrudFilter[];\n  [key: string]: any;\n}): string => {\n  const options: IStringifyOptions = {\n    skipNulls: true,\n    arrayFormat: \"indices\",\n    encode: false,\n  };\n  const { pagination, sorter, sorters, filters, ...rest } = params;\n\n  const queryString = qs.stringify(\n    {\n      ...rest,\n      ...(pagination ? pagination : {}),\n      sorters: pickNotDeprecated(sorters, sorter),\n      filters,\n    },\n    options,\n  );\n\n  return queryString;\n};\n\nexport const compareFilters = (\n  left: CrudFilter,\n  right: CrudFilter,\n): boolean => {\n  if (\n    left.operator !== \"and\" &&\n    left.operator !== \"or\" &&\n    right.operator !== \"and\" &&\n    right.operator !== \"or\"\n  ) {\n    return (\n      (\"field\" in left ? left.field : undefined) ===\n        (\"field\" in right ? right.field : undefined) &&\n      left.operator === right.operator\n    );\n  }\n\n  return (\n    (\"key\" in left ? left.key : undefined) ===\n      (\"key\" in right ? right.key : undefined) &&\n    left.operator === right.operator\n  );\n};\n\nexport const compareSorters = (left: CrudSort, right: CrudSort): boolean =>\n  left.field === right.field;\n// Keep only one CrudFilter per type according to compareFilters\n// Items in the array that is passed first to unionWith have higher priority\n// CrudFilter items with undefined values are necessary to signify no filter\n// After union, don't keep CrudFilter items with undefined value in the result\n// Items in the arrays with higher priority are put at the end.\nexport const unionFilters = (\n  permanentFilter: CrudFilter[],\n  newFilters: CrudFilter[],\n  prevFilters: CrudFilter[] = [],\n): CrudFilter[] => {\n  const isKeyRequired = newFilters.filter(\n    (f) => (f.operator === \"or\" || f.operator === \"and\") && !f.key,\n  );\n\n  if (isKeyRequired.length > 1) {\n    warnOnce(\n      true,\n      \"[conditionalFilters]: You have created multiple Conditional Filters at the top level, this requires the key parameter. \\nFor more information, see https://refine.dev/docs/advanced-tutorials/data-provider/handling-filters/#top-level-multiple-conditional-filters-usage\",\n    );\n  }\n\n  return unionWith(\n    permanentFilter,\n    newFilters,\n    prevFilters,\n    compareFilters,\n  ).filter(\n    (crudFilter) =>\n      crudFilter.value !== undefined &&\n      crudFilter.value !== null &&\n      (crudFilter.operator !== \"or\" ||\n        (crudFilter.operator === \"or\" && crudFilter.value.length !== 0)) &&\n      (crudFilter.operator !== \"and\" ||\n        (crudFilter.operator === \"and\" && crudFilter.value.length !== 0)),\n  );\n};\n\nexport const unionSorters = (\n  permanentSorter: CrudSort[],\n  newSorters: CrudSort[],\n): CrudSort[] =>\n  unionWith(permanentSorter, newSorters, compareSorters).filter(\n    (crudSorter) => crudSorter.order !== undefined && crudSorter.order !== null,\n  );\n// Prioritize filters in the permanentFilter and put it at the end of result array\nexport const setInitialFilters = (\n  permanentFilter: CrudFilter[],\n  defaultFilter: CrudFilter[],\n): CrudFilter[] => [\n  ...differenceWith(defaultFilter, permanentFilter, compareFilters),\n  ...permanentFilter,\n];\n\nexport const setInitialSorters = (\n  permanentSorter: CrudSort[],\n  defaultSorter: CrudSort[],\n): CrudSort[] => [\n  ...differenceWith(defaultSorter, permanentSorter, compareSorters),\n  ...permanentSorter,\n];\n\nexport const getDefaultSortOrder = (\n  columnName: string,\n  sorter?: CrudSort[],\n): SortOrder | undefined => {\n  if (!sorter) {\n    return undefined;\n  }\n\n  const sortItem = sorter.find((item) => item.field === columnName);\n\n  if (sortItem) {\n    return sortItem.order as SortOrder;\n  }\n\n  return undefined;\n};\n\nexport const getDefaultFilter = (\n  columnName: string,\n  filters?: CrudFilter[],\n  operatorType: CrudOperators = \"eq\",\n): CrudFilter[\"value\"] | undefined => {\n  const filter = filters?.find((filter) => {\n    if (\n      filter.operator !== \"or\" &&\n      filter.operator !== \"and\" &&\n      \"field\" in filter\n    ) {\n      const { operator, field } = filter;\n      return field === columnName && operator === operatorType;\n    }\n    return undefined;\n  });\n\n  if (filter) {\n    return filter.value || [];\n  }\n\n  return undefined;\n};\n","export const userFriendlySecond = (miliseconds: number): number => {\n  return miliseconds / 1000; //convert to seconds\n};\n","import fromPairs from \"lodash/fromPairs\";\nimport zip from \"lodash/zip\";\n\nimport type { MapDataFn } from \"../../../hooks/export/types\";\n\nexport const importCSVMapper = <TItem = any, TVariables = any>(\n  data: any[][],\n  mapData: MapDataFn<TItem, TVariables> = (item) => item as any,\n): TVariables[] => {\n  const [headers, ...body] = data;\n  return body\n    .map((entry) => fromPairs(zip(headers, entry)))\n    .map((item: any, index, array: any) =>\n      mapData.call(undefined, item, index, array),\n    );\n};\n","import pluralize from \"pluralize\";\nimport { humanizeString } from \"@definitions\";\n\n/**\n * A method that the internal uses\n * @internal\n * @deprecated use `useUserFriendlyName` instead.\n */\nexport const userFriendlyResourceName = (\n  resource = \"\",\n  type: \"singular\" | \"plural\",\n): string => {\n  const humanizeResource = humanizeString(resource);\n  if (type === \"singular\") {\n    return pluralize.singular(humanizeResource);\n  }\n  return pluralize.plural(humanizeResource);\n};\n","export const handleUseParams = (params: any = {}): any => {\n  if (params?.id) {\n    return {\n      ...params,\n      id: decodeURIComponent(params.id),\n    };\n  }\n  return params;\n};\n","import type { BaseKey } from \"../../../contexts/data/types\";\n\ntype ParametrizedDataActions = \"list\" | \"infinite\";\ntype IdRequiredDataActions = \"one\";\ntype IdsRequiredDataActions = \"many\";\ntype DataMutationActions =\n  | \"custom\"\n  | \"customMutation\"\n  | \"create\"\n  | \"createMany\"\n  | \"update\"\n  | \"updateMany\"\n  | \"delete\"\n  | \"deleteMany\";\n\ntype AuthActionType =\n  | \"login\"\n  | \"logout\"\n  | \"identity\"\n  | \"register\"\n  | \"forgotPassword\"\n  | \"check\"\n  | \"onError\"\n  | \"permissions\"\n  | \"updatePassword\";\n\ntype AuditActionType = \"list\" | \"log\" | \"rename\";\n\ntype IdType = BaseKey;\ntype IdsType = IdType[];\n\ntype ParamsType = any;\n\ntype KeySegment = string | IdType | IdsType | ParamsType;\n\nexport function arrayFindIndex<T>(array: T[], slice: T[]): number {\n  return array.findIndex(\n    (item, index) =>\n      index <= array.length - slice.length &&\n      slice.every(\n        (sliceItem, sliceIndex) => array[index + sliceIndex] === sliceItem,\n      ),\n  );\n}\n\nexport function arrayReplace<T>(\n  array: T[],\n  partToBeReplaced: T[],\n  newPart: T[],\n): T[] {\n  const newArray: T[] = [...array];\n  const startIndex = arrayFindIndex(array, partToBeReplaced);\n\n  if (startIndex !== -1) {\n    newArray.splice(startIndex, partToBeReplaced.length, ...newPart);\n  }\n\n  return newArray;\n}\n\nexport function stripUndefined(segments: KeySegment[]) {\n  return segments.filter((segment) => segment !== undefined);\n}\n\nfunction convertToLegacy(segments: KeySegment[]) {\n  // for `list`, `many` and `one`\n  if (segments[0] === \"data\") {\n    // [data, dpName, resource, action, ...];\n    const newSegments = segments.slice(1);\n\n    if (newSegments[2] === \"many\") {\n      newSegments[2] = \"getMany\";\n    } else if (newSegments[2] === \"infinite\") {\n      newSegments[2] = \"list\";\n    } else if (newSegments[2] === \"one\") {\n      newSegments[2] = \"detail\";\n    } else if (newSegments[1] === \"custom\") {\n      const newParams = {\n        ...newSegments[2],\n      };\n      delete newParams.method;\n      delete newParams.url;\n\n      return [\n        newSegments[0],\n        newSegments[1],\n        newSegments[2].method,\n        newSegments[2].url,\n        newParams,\n      ];\n    }\n\n    return newSegments;\n  }\n  // for `audit` -> `logList`\n  if (segments[0] === \"audit\") {\n    // [audit, resource, action, params] (for log and list)\n    // or\n    // [audit, action, params] (for rename)\n    if (segments[2] === \"list\") {\n      return [\"logList\", segments[1], segments[3]];\n    }\n  }\n  // for `access` -> `useCan`\n  if (segments[0] === \"access\") {\n    // [access, resource, action, params]\n    if (segments.length === 4) {\n      return [\n        \"useCan\",\n        {\n          resource: segments[1],\n          action: segments[2],\n          ...segments[3], // params: { params, enabled }\n        },\n      ];\n    }\n  }\n  // for `auth`\n  if (segments[0] === \"auth\") {\n    if (arrayFindIndex(segments, [\"auth\", \"login\"]) !== -1) {\n      return [\"useLogin\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"logout\"]) !== -1) {\n      return [\"useLogout\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"identity\"]) !== -1) {\n      return [\"getUserIdentity\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"register\"]) !== -1) {\n      return [\"useRegister\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"forgotPassword\"]) !== -1) {\n      return [\"useForgotPassword\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"check\"]) !== -1) {\n      return [\"useAuthenticated\", segments[2]]; // [auth, check, params]\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"onError\"]) !== -1) {\n      return [\"useCheckError\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"permissions\"]) !== -1) {\n      return [\"usePermissions\"];\n    }\n    if (arrayFindIndex(segments, [\"auth\", \"updatePassword\"]) !== -1) {\n      return [\"useUpdatePassword\"];\n    }\n  }\n  return segments;\n}\n\nclass BaseKeyBuilder {\n  segments: KeySegment[] = [];\n\n  constructor(segments: KeySegment[] = []) {\n    this.segments = segments;\n  }\n\n  key() {\n    return this.segments;\n  }\n\n  legacy() {\n    return convertToLegacy(this.segments);\n  }\n\n  get(legacy?: boolean) {\n    return legacy ? this.legacy() : this.segments;\n  }\n}\n\nclass ParamsKeyBuilder extends BaseKeyBuilder {\n  params(paramsValue?: ParamsType) {\n    return new BaseKeyBuilder([...this.segments, paramsValue]);\n  }\n}\n\nclass DataIdRequiringKeyBuilder extends BaseKeyBuilder {\n  id(idValue?: IdType) {\n    return new ParamsKeyBuilder([\n      ...this.segments,\n      idValue ? String(idValue) : undefined,\n    ]);\n  }\n}\n\nclass DataIdsRequiringKeyBuilder extends BaseKeyBuilder {\n  ids(...idsValue: IdsType) {\n    return new ParamsKeyBuilder([\n      ...this.segments,\n      ...(idsValue.length ? [idsValue.map((el) => String(el))] : []),\n    ]);\n  }\n}\n\nclass DataResourceKeyBuilder extends BaseKeyBuilder {\n  action(actionType: ParametrizedDataActions): ParamsKeyBuilder;\n  action(actionType: IdRequiredDataActions): DataIdRequiringKeyBuilder;\n  action(actionType: IdsRequiredDataActions): DataIdsRequiringKeyBuilder;\n  action(\n    actionType:\n      | ParametrizedDataActions\n      | IdRequiredDataActions\n      | IdsRequiredDataActions,\n  ): ParamsKeyBuilder | DataIdRequiringKeyBuilder | DataIdsRequiringKeyBuilder {\n    if (actionType === \"one\") {\n      return new DataIdRequiringKeyBuilder([...this.segments, actionType]);\n    }\n    if (actionType === \"many\") {\n      return new DataIdsRequiringKeyBuilder([...this.segments, actionType]);\n    }\n    if ([\"list\", \"infinite\"].includes(actionType)) {\n      return new ParamsKeyBuilder([...this.segments, actionType]);\n    }\n    throw new Error(\"Invalid action type\");\n  }\n}\n\nclass DataKeyBuilder extends BaseKeyBuilder {\n  resource(resourceName?: string) {\n    return new DataResourceKeyBuilder([...this.segments, resourceName]);\n  }\n\n  mutation(mutationName: DataMutationActions) {\n    return new ParamsKeyBuilder([\n      ...(mutationName === \"custom\" ? this.segments : [this.segments[0]]),\n      mutationName,\n    ]);\n  }\n}\n\nclass AuthKeyBuilder extends BaseKeyBuilder {\n  action(actionType: AuthActionType) {\n    return new ParamsKeyBuilder([...this.segments, actionType]);\n  }\n}\n\nclass AccessResourceKeyBuilder extends BaseKeyBuilder {\n  action(resourceName: string) {\n    return new ParamsKeyBuilder([...this.segments, resourceName]);\n  }\n}\n\nclass AccessKeyBuilder extends BaseKeyBuilder {\n  resource(resourceName?: string) {\n    return new AccessResourceKeyBuilder([...this.segments, resourceName]);\n  }\n}\n\nclass AuditActionKeyBuilder extends BaseKeyBuilder {\n  action(actionType: Extract<AuditActionType, \"list\">) {\n    return new ParamsKeyBuilder([...this.segments, actionType]);\n  }\n}\n\nclass AuditKeyBuilder extends BaseKeyBuilder {\n  resource(resourceName?: string) {\n    return new AuditActionKeyBuilder([...this.segments, resourceName]);\n  }\n\n  action(actionType: Extract<AuditActionType, \"rename\" | \"log\">) {\n    return new ParamsKeyBuilder([...this.segments, actionType]);\n  }\n}\n\nexport class KeyBuilder extends BaseKeyBuilder {\n  data(name?: string) {\n    return new DataKeyBuilder([\"data\", name || \"default\"]);\n  }\n\n  auth() {\n    return new AuthKeyBuilder([\"auth\"]);\n  }\n\n  access() {\n    return new AccessKeyBuilder([\"access\"]);\n  }\n\n  audit() {\n    return new AuditKeyBuilder([\"audit\"]);\n  }\n}\n\nexport const keys = () => new KeyBuilder([]);\n","/*\n * Returns first value that is not undefined.\n * @internal This is an internal helper function. Please do not use externally.\n */\nexport const pickNotDeprecated = <T extends unknown[]>(\n  ...args: T\n): T[never] => {\n  return args.find((arg) => typeof arg !== \"undefined\");\n};\n","import type { QueryKey } from \"@tanstack/react-query\";\n\nimport type { IQueryKeys, MetaQuery } from \"../../../contexts/data/types\";\nimport { keys as newKeys } from \"../keys\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\n/**\n * @deprecated `queryKeys` is deprecated. Please use `keys` instead.\n */\nexport const queryKeys = (\n  resource?: string,\n  dataProviderName?: string,\n  meta?: MetaQuery,\n  /**\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery | undefined,\n): IQueryKeys => {\n  const providerName = dataProviderName || \"default\";\n  const keys: IQueryKeys = {\n    all: [providerName],\n    resourceAll: [providerName, resource || \"\"],\n    list: (config) => [\n      ...keys.resourceAll,\n      \"list\",\n      {\n        ...config,\n        ...(pickNotDeprecated(meta, metaData) || {}),\n      } as QueryKey,\n    ],\n    many: (ids) =>\n      [\n        ...keys.resourceAll,\n        \"getMany\",\n        ids?.map(String) as QueryKey,\n        { ...(pickNotDeprecated(meta, metaData) || {}) } as QueryKey,\n      ].filter((item) => item !== undefined),\n    detail: (id) => [\n      ...keys.resourceAll,\n      \"detail\",\n      id?.toString(),\n      { ...(pickNotDeprecated(meta, metaData) || {}) } as QueryKey,\n    ],\n    logList: (meta) =>\n      [\"logList\", resource, meta as any, metaData as QueryKey].filter(\n        (item) => item !== undefined,\n      ),\n  };\n  return keys;\n};\n\nexport const queryKeysReplacement = (preferLegacyKeys?: boolean) => {\n  return (\n    resource?: string,\n    dataProviderName?: string,\n    meta?: MetaQuery,\n    /**\n     * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n     */\n    metaData?: MetaQuery | undefined,\n  ): IQueryKeys => {\n    const providerName = dataProviderName || \"default\";\n\n    const keys: IQueryKeys = {\n      all: newKeys().data(providerName).get(preferLegacyKeys),\n      resourceAll: newKeys()\n        .data(dataProviderName)\n        .resource(resource ?? \"\")\n        .get(preferLegacyKeys),\n      list: (config) =>\n        newKeys()\n          .data(dataProviderName)\n          .resource(resource ?? \"\")\n          .action(\"list\")\n          .params({\n            ...config,\n            ...(pickNotDeprecated(meta, metaData) || {}),\n          })\n          .get(preferLegacyKeys),\n      many: (ids) =>\n        newKeys()\n          .data(dataProviderName)\n          .resource(resource ?? \"\")\n          .action(\"many\")\n          .ids(...(ids ?? []))\n          .params({\n            ...(pickNotDeprecated(meta, metaData) || {}),\n          })\n          .get(preferLegacyKeys),\n      detail: (id) =>\n        newKeys()\n          .data(dataProviderName)\n          .resource(resource ?? \"\")\n          .action(\"one\")\n          .id(id ?? \"\")\n          .params({\n            ...(pickNotDeprecated(meta, metaData) || {}),\n          })\n          .get(preferLegacyKeys),\n      logList: (meta) =>\n        [\n          ...newKeys()\n            .audit()\n            .resource(resource)\n            .action(\"list\")\n            .params(meta)\n            .get(preferLegacyKeys),\n          metaData as QueryKey,\n        ].filter((item) => item !== undefined),\n    };\n\n    return keys;\n  };\n};\n","export const hasPermission = (\n  permissions: string[] | undefined,\n  action: string | undefined,\n): boolean => {\n  if (!permissions || !action) {\n    return false;\n  }\n  return !!permissions.find((i) => i === action);\n};\n","/**\n * Check if a segment is a parameter. (e.g. :id)\n */\nexport const isParameter = (segment: string) => {\n  return segment.startsWith(\":\");\n};\n","/**\n * Split a path to segments.\n */\nexport const splitToSegments = (path: string) => {\n  const segments = path.split(\"/\").filter((segment) => segment !== \"\");\n  return segments;\n};\n","import { splitToSegments } from \"./split-to-segments\";\n\n/**\n * Checks if the both routes have the same number of segments.\n */\nexport const isSegmentCountsSame = (route: string, resourceRoute: string) => {\n  const routeSegments = splitToSegments(route);\n  const resourceRouteSegments = splitToSegments(resourceRoute);\n\n  return routeSegments.length === resourceRouteSegments.length;\n};\n","/**\n * Remove leading and trailing slashes from a route.\n */\nexport const removeLeadingTrailingSlashes = (route: string) => {\n  return route.replace(/^\\/|\\/$/g, \"\");\n};\n","import { isParameter } from \"./is-parameter\";\nimport { isSegmentCountsSame } from \"./is-segment-counts-same\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { splitToSegments } from \"./split-to-segments\";\n\n/**\n * This function if the route and resourceRoute match by segments.\n * - First, trailing and leading slashes are removed\n * - Then, the route and resourceRoute are split to segments and checked if they have the same number of segments\n * - Then, each segment is checked if it is a parameter or if it matches the resourceRoute segment\n * - If all segments match, the function returns true, otherwise false\n */\nexport const checkBySegments = (route: string, resourceRoute: string) => {\n  const stdRoute = removeLeadingTrailingSlashes(route);\n  const stdResourceRoute = removeLeadingTrailingSlashes(resourceRoute);\n  // we need to check if the route and resourceRoute have the same number of segments\n  // if not, we can't match them\n  if (!isSegmentCountsSame(stdRoute, stdResourceRoute)) {\n    return false;\n  }\n\n  const routeSegments = splitToSegments(stdRoute);\n  const resourceRouteSegments = splitToSegments(stdResourceRoute);\n\n  return resourceRouteSegments.every((segment, index) => {\n    return isParameter(segment) || segment === routeSegments[index];\n  });\n};\n","import type { Action } from \"../../../contexts/router/types\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\n\n/**\n * This helper function returns the default path for a given action and resource.\n * It also applies the parentPrefix if provided.\n * This is used by the legacy router and the new router if the resource doesn't provide a custom path.\n */\nexport const getDefaultActionPath = (\n  resourceName: string,\n  action: Action,\n  parentPrefix?: string,\n): string => {\n  const cleanParentPrefix = removeLeadingTrailingSlashes(parentPrefix || \"\");\n\n  let path = `${cleanParentPrefix}${\n    cleanParentPrefix ? \"/\" : \"\"\n  }${resourceName}`;\n\n  if (action === \"list\") {\n    path = `${path}`;\n  } else if (action === \"create\") {\n    path = `${path}/create`;\n  } else if (action === \"edit\") {\n    path = `${path}/edit/:id`;\n  } else if (action === \"show\") {\n    path = `${path}/show/:id`;\n  } else if (action === \"clone\") {\n    path = `${path}/clone/:id`;\n  }\n\n  return `/${path.replace(/^\\//, \"\")}`;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\n/**\n * Returns the parent resource of the given resource.\n * Works both with the deprecated `parentName` and the new `parent` property.\n */\nexport const getParentResource = (\n  resource: IResourceItem,\n  resources: IResourceItem[],\n): IResourceItem | undefined => {\n  const parentName = pickNotDeprecated(\n    resource.meta?.parent,\n    resource.options?.parent,\n    resource.parentName,\n  );\n\n  if (!parentName) {\n    return undefined;\n  }\n\n  const parentResource = resources.find(\n    (resource) => (resource.identifier ?? resource.name) === parentName,\n  );\n\n  /**\n   * If the parent resource is not found, we return a resource object with the name of the parent resource.\n   * Because we still want to have nesting and prefixing for the resource even if the parent is not explicitly defined.\n   */\n  return parentResource ?? { name: parentName };\n};\n","import type { ResourceProps } from \"../../../contexts/resource/types\";\nimport { getParentResource } from \"./get-parent-resource\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\n\n/**\n * Returns the parent prefix for a resource\n * - If `legacy` is provided, the computation is based on the `route` option of the resource\n */\nexport const getParentPrefixForResource = (\n  resource: ResourceProps,\n  resources: ResourceProps[],\n  /**\n   * Uses legacy route if true (`options.route`)\n   */\n  legacy?: boolean,\n): string | undefined => {\n  const parents: ResourceProps[] = [];\n\n  let parent = getParentResource(resource, resources);\n\n  while (parent) {\n    parents.push(parent);\n    parent = getParentResource(parent, resources);\n  }\n\n  if (parents.length === 0) {\n    return undefined;\n  }\n\n  return `/${parents\n    .reverse()\n    .map((parent) => {\n      const v = legacy ? parent.options?.route ?? parent.name : parent.name;\n      return removeLeadingTrailingSlashes(v);\n    })\n    .join(\"/\")}`;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { getDefaultActionPath } from \"./get-default-action-path\";\nimport { getParentPrefixForResource } from \"./get-parent-prefix-for-resource\";\n\nexport type ResourceActionRoute = {\n  action: Action;\n  resource: IResourceItem;\n  route: string;\n};\n\n/**\n * This function returns all the routes for available actions for a resource.\n * - If the action is a function, it means we're fallbacking to default path for the action\n * - If the action is a string, it means we don't have the component, but we have the route\n * - If the action is an object, it means we have the component and the route\n * - It will return an array of objects with the action, the resource and the route\n */\nexport const getActionRoutesFromResource = (\n  resource: IResourceItem,\n  resources: IResourceItem[],\n  /**\n   * Uses legacy route if true (`options.route`)\n   */\n  legacy?: boolean,\n) => {\n  const actions: ResourceActionRoute[] = [];\n\n  const actionList: Action[] = [\"list\", \"show\", \"edit\", \"create\", \"clone\"];\n\n  const parentPrefix = getParentPrefixForResource(resource, resources, legacy);\n\n  actionList.forEach((action) => {\n    const item =\n      legacy && action === \"clone\" ? resource.create : resource[action];\n\n    let route: string | undefined = undefined;\n\n    if (typeof item === \"function\" || legacy) {\n      // means we're fallbacking to default path for the action\n      route = getDefaultActionPath(\n        legacy\n          ? resource.meta?.route ?? resource.options?.route ?? resource.name\n          : resource.name,\n        action,\n        legacy ? parentPrefix : undefined,\n      );\n    } else if (typeof item === \"string\") {\n      // means we don't have the component, but we have the route\n      route = item;\n    } else if (typeof item === \"object\") {\n      // means we have the component and the route\n      route = item.path;\n    }\n\n    if (route) {\n      actions.push({\n        action,\n        resource,\n        route: `/${route.replace(/^\\//, \"\")}`,\n      });\n    }\n  });\n\n  return actions;\n};\n","import type { ResourceActionRoute } from \"./get-action-routes-from-resource\";\nimport { isParameter } from \"./is-parameter\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { splitToSegments } from \"./split-to-segments\";\n\n/**\n * Picks the most eligible route from the given matched routes.\n * - If there's only one route, it returns it.\n * - If there's more than one route, it picks the best non-greedy match.\n */\nexport const pickMatchedRoute = (\n  routes: ResourceActionRoute[],\n): ResourceActionRoute | undefined => {\n  // these routes are all matched, we should pick the least parametrized one\n\n  // no routes, no match\n  if (routes.length === 0) {\n    return undefined;\n  }\n\n  // no need to calculate the route segments if there's only one route\n  if (routes.length === 1) {\n    return routes[0];\n  }\n\n  // remove trailing and leading slashes\n  // split them to segments\n  const sanitizedRoutes = routes.map((route) => ({\n    ...route,\n    splitted: splitToSegments(removeLeadingTrailingSlashes(route.route)),\n  }));\n\n  // at this point, before calling this function, we already checked for segment lenghts and expect all of them to be the same\n  const segmentsCount = sanitizedRoutes[0]?.splitted.length ?? 0;\n\n  let eligibleRoutes: Array<(typeof sanitizedRoutes)[number]> = [\n    ...sanitizedRoutes,\n  ];\n\n  // loop through the segments\n  for (let i = 0; i < segmentsCount; i++) {\n    const nonParametrizedRoutes = eligibleRoutes.filter(\n      (route) => !isParameter(route.splitted[i]),\n    );\n\n    if (nonParametrizedRoutes.length === 0) {\n      // keep the eligible routes as they are\n      continue;\n    }\n    if (nonParametrizedRoutes.length === 1) {\n      // no need to continue, we found the route\n      eligibleRoutes = nonParametrizedRoutes;\n      break;\n    }\n\n    // we have more than one non-parametrized route, we need to check the next segment\n    eligibleRoutes = nonParametrizedRoutes;\n  }\n\n  return eligibleRoutes[0];\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { checkBySegments } from \"./check-by-segments\";\nimport { getActionRoutesFromResource } from \"./get-action-routes-from-resource\";\nimport { pickMatchedRoute } from \"./pick-matched-route\";\n\n/**\n * Match the resource from the route\n * - It will calculate all possible routes for resources and their actions\n * - It will check if the route matches any of the possible routes\n * - It will return the most eligible resource and action\n */\nexport const matchResourceFromRoute = (\n  route: string,\n  resources: IResourceItem[],\n): {\n  found: boolean;\n  resource?: IResourceItem;\n  action?: Action;\n  matchedRoute?: string;\n} => {\n  const allActionRoutes = resources.flatMap((resource) => {\n    return getActionRoutesFromResource(resource, resources);\n  });\n\n  const allFound = allActionRoutes.filter((actionRoute) => {\n    return checkBySegments(route, actionRoute.route);\n  });\n\n  const mostEligible = pickMatchedRoute(allFound);\n\n  return {\n    found: !!mostEligible,\n    resource: mostEligible?.resource,\n    action: mostEligible?.action,\n    matchedRoute: mostEligible?.route,\n  };\n};\n","import type { ResourceProps } from \"../../../contexts/resource/types\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\nimport { getParentPrefixForResource } from \"../router\";\n\n/**\n * generates route for the resource based on parents and custom routes\n * @deprecated this is a **legacy** function and works only with the old resource definition\n */\nexport const routeGenerator = (\n  item: ResourceProps,\n  resourcesFromProps: ResourceProps[],\n): string | undefined => {\n  let route;\n\n  const parentPrefix = getParentPrefixForResource(\n    item,\n    resourcesFromProps,\n    true,\n  );\n\n  if (parentPrefix) {\n    const meta = pickNotDeprecated(item.meta, item.options);\n    route = `${parentPrefix}/${meta?.route ?? item.name}`;\n  } else {\n    route = item.options?.route ?? item.name;\n  }\n\n  return `/${route.replace(/^\\//, \"\")}`;\n};\n","import { pickNotDeprecated } from \"@definitions/helpers/pickNotDeprecated\";\n\nimport type {\n  IMenuItem,\n  IResourceItem,\n  ITreeMenu,\n} from \"../../../../contexts/resource/types\";\n\n/**\n * @deprecated This helper is deprecated. Please use `createTree` instead.\n */\nexport const createTreeView = (\n  resources: IResourceItem[] | IMenuItem[],\n): ITreeMenu[] | ITreeMenu[] => {\n  const tree = [];\n  const resourcesRouteObject: { [key: string]: any } = {};\n  const resourcesNameObject: { [key: string]: any } = {};\n  let parent: IResourceItem | IMenuItem;\n  let child: ITreeMenu;\n\n  for (let i = 0; i < resources.length; i++) {\n    parent = resources[i];\n\n    const route =\n      parent.route ??\n      pickNotDeprecated(parent?.meta, parent.options)?.route ??\n      \"\";\n\n    resourcesRouteObject[route] = parent;\n    resourcesRouteObject[route][\"children\"] = [];\n\n    resourcesNameObject[parent.name] = parent;\n    resourcesNameObject[parent.name][\"children\"] = [];\n  }\n\n  for (const name in resourcesRouteObject) {\n    if (Object.hasOwn(resourcesRouteObject, name)) {\n      child = resourcesRouteObject[name];\n\n      if (child.parentName && resourcesNameObject[child.parentName]) {\n        resourcesNameObject[child.parentName][\"children\"].push(child);\n      } else {\n        tree.push(child);\n      }\n    }\n  }\n\n  return tree;\n};\n","export const humanizeString = (text: string): string => {\n  text = text.replace(/([a-z]{1})([A-Z]{1})/g, \"$1-$2\");\n  text = text.replace(/([A-Z]{1})([A-Z]{1})([a-z]{1})/g, \"$1-$2$3\");\n\n  text = text\n    .toLowerCase()\n    .replace(/[_-]+/g, \" \")\n    .replace(/\\s{2,}/g, \" \")\n    .trim();\n  text = text.charAt(0).toUpperCase() + text.slice(1);\n\n  return text;\n};\n// https://www.npmjs.com/package/humanize-string\n","import React from \"react\";\n\nimport pluralize from \"pluralize\";\n\nimport { DefaultLayout } from \"@components/layoutWrapper/defaultLayout\";\n\nimport { humanizeString } from \"../../definitions/helpers/humanizeString\";\nimport type {\n  IRefineContext,\n  IRefineContextOptions,\n  IRefineContextProvider,\n} from \"./types\";\n\nimport { LoginPage as DefaultLoginPage } from \"@components/pages\";\n\nconst defaultTitle: IRefineContextOptions[\"title\"] = {\n  icon: (\n    <svg\n      width={24}\n      height={24}\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      data-testid=\"refine-logo\"\n      id=\"refine-default-logo\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M13.7889 0.422291C12.6627 -0.140764 11.3373 -0.140764 10.2111 0.422291L2.21115 4.42229C0.85601 5.09986 0 6.48491 0 8V16C0 17.5151 0.85601 18.9001 2.21115 19.5777L10.2111 23.5777C11.3373 24.1408 12.6627 24.1408 13.7889 23.5777L21.7889 19.5777C23.144 18.9001 24 17.5151 24 16V8C24 6.48491 23.144 5.09986 21.7889 4.42229L13.7889 0.422291ZM8 8C8 5.79086 9.79086 4 12 4C14.2091 4 16 5.79086 16 8V16C16 18.2091 14.2091 20 12 20C9.79086 20 8 18.2091 8 16V8Z\"\n        fill=\"currentColor\"\n      />\n      <path\n        d=\"M14 8C14 9.10457 13.1046 10 12 10C10.8954 10 10 9.10457 10 8C10 6.89543 10.8954 6 12 6C13.1046 6 14 6.89543 14 8Z\"\n        fill=\"currentColor\"\n      />\n    </svg>\n  ),\n  text: \"Refine Project\",\n};\n\nexport const defaultRefineOptions: IRefineContextOptions = {\n  mutationMode: \"pessimistic\",\n  syncWithLocation: false,\n  undoableTimeout: 5000,\n  warnWhenUnsavedChanges: false,\n  liveMode: \"off\",\n  redirect: {\n    afterCreate: \"list\",\n    afterClone: \"list\",\n    afterEdit: \"list\",\n  },\n  overtime: {\n    enabled: true,\n    interval: 1000,\n  },\n  textTransformers: {\n    humanize: humanizeString,\n    plural: pluralize.plural,\n    singular: pluralize.singular,\n  },\n  disableServerSideValidation: false,\n  title: defaultTitle,\n};\n\nexport const RefineContext = React.createContext<IRefineContext>({\n  hasDashboard: false,\n  mutationMode: \"pessimistic\",\n  warnWhenUnsavedChanges: false,\n  syncWithLocation: false,\n  undoableTimeout: 5000,\n  Title: undefined,\n  Sider: undefined,\n  Header: undefined,\n  Footer: undefined,\n  Layout: DefaultLayout,\n  OffLayoutArea: undefined,\n  liveMode: \"off\",\n  onLiveEvent: undefined,\n  options: defaultRefineOptions,\n});\n\nexport const RefineContextProvider: React.FC<IRefineContextProvider> = ({\n  hasDashboard,\n  mutationMode,\n  warnWhenUnsavedChanges,\n  syncWithLocation,\n  undoableTimeout,\n  children,\n  DashboardPage,\n  Title,\n  Layout = DefaultLayout,\n  Header,\n  Sider,\n  Footer,\n  OffLayoutArea,\n  LoginPage = DefaultLoginPage,\n  catchAll,\n  liveMode = \"off\",\n  onLiveEvent,\n  options,\n}) => {\n  return (\n    <RefineContext.Provider\n      value={{\n        __initialized: true,\n        hasDashboard,\n        mutationMode,\n        warnWhenUnsavedChanges,\n        syncWithLocation,\n        Title,\n        undoableTimeout,\n        Layout,\n        Header,\n        Sider,\n        Footer,\n        OffLayoutArea,\n        DashboardPage,\n        LoginPage,\n        catchAll,\n        liveMode,\n        onLiveEvent,\n        options,\n      }}\n    >\n      {children}\n    </RefineContext.Provider>\n  );\n};\n","import React from \"react\";\n\nimport type { LayoutProps } from \"../../../contexts/refine/types\";\n\nexport const DefaultLayout: React.FC<LayoutProps> = ({ children }) => {\n  return <div>{children}</div>;\n};\n","import type { QueryClient, QueryClientConfig } from \"@tanstack/react-query\";\n\nimport { defaultRefineOptions } from \"@contexts/refine\";\n\nimport type { MutationMode } from \"../../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../../contexts/live/types\";\nimport type {\n  IRefineContextOptions,\n  IRefineOptions,\n} from \"../../../contexts/refine/types\";\n\ntype HandleRefineOptionsProps = {\n  options?: IRefineOptions;\n  mutationMode?: MutationMode;\n  syncWithLocation?: boolean;\n  warnWhenUnsavedChanges?: boolean;\n  undoableTimeout?: number;\n  liveMode?: LiveModeProps[\"liveMode\"];\n  disableTelemetry?: boolean;\n  reactQueryClientConfig?: QueryClientConfig;\n  reactQueryDevtoolConfig?: any | false;\n};\n\ntype HandleRefineOptionsReturnValues = {\n  optionsWithDefaults: IRefineContextOptions;\n  disableTelemetryWithDefault: boolean;\n  reactQueryWithDefaults: {\n    clientConfig: QueryClientConfig | InstanceType<typeof QueryClient>;\n    devtoolConfig: false | any;\n  };\n};\n\nexport const handleRefineOptions = ({\n  options,\n  disableTelemetry,\n  liveMode,\n  mutationMode,\n  reactQueryClientConfig,\n  reactQueryDevtoolConfig,\n  syncWithLocation,\n  undoableTimeout,\n  warnWhenUnsavedChanges,\n}: HandleRefineOptionsProps = {}): HandleRefineOptionsReturnValues => {\n  const optionsWithDefaults: IRefineContextOptions = {\n    breadcrumb: options?.breadcrumb,\n    mutationMode:\n      options?.mutationMode ??\n      mutationMode ??\n      defaultRefineOptions.mutationMode,\n    undoableTimeout:\n      options?.undoableTimeout ??\n      undoableTimeout ??\n      defaultRefineOptions.undoableTimeout,\n    syncWithLocation:\n      options?.syncWithLocation ??\n      syncWithLocation ??\n      defaultRefineOptions.syncWithLocation,\n    warnWhenUnsavedChanges:\n      options?.warnWhenUnsavedChanges ??\n      warnWhenUnsavedChanges ??\n      defaultRefineOptions.warnWhenUnsavedChanges,\n    liveMode: options?.liveMode ?? liveMode ?? defaultRefineOptions.liveMode,\n    redirect: {\n      afterCreate:\n        options?.redirect?.afterCreate ??\n        defaultRefineOptions.redirect.afterCreate,\n      afterClone:\n        options?.redirect?.afterClone ??\n        defaultRefineOptions.redirect.afterClone,\n      afterEdit:\n        options?.redirect?.afterEdit ?? defaultRefineOptions.redirect.afterEdit,\n    },\n    overtime: options?.overtime ?? defaultRefineOptions.overtime,\n    textTransformers: {\n      humanize:\n        options?.textTransformers?.humanize ??\n        defaultRefineOptions.textTransformers.humanize,\n      plural:\n        options?.textTransformers?.plural ??\n        defaultRefineOptions.textTransformers.plural,\n      singular:\n        options?.textTransformers?.singular ??\n        defaultRefineOptions.textTransformers.singular,\n    },\n    disableServerSideValidation:\n      options?.disableServerSideValidation ??\n      defaultRefineOptions.disableServerSideValidation,\n    projectId: options?.projectId,\n    useNewQueryKeys: options?.useNewQueryKeys,\n    title: {\n      icon:\n        typeof options?.title?.icon === \"undefined\"\n          ? defaultRefineOptions.title.icon\n          : options?.title?.icon,\n      text:\n        typeof options?.title?.text === \"undefined\"\n          ? defaultRefineOptions.title.text\n          : options?.title?.text,\n    },\n  };\n\n  const disableTelemetryWithDefault =\n    options?.disableTelemetry ?? disableTelemetry ?? false;\n\n  const reactQueryWithDefaults = {\n    clientConfig:\n      options?.reactQuery?.clientConfig ?? reactQueryClientConfig ?? {},\n    devtoolConfig:\n      options?.reactQuery?.devtoolConfig ?? reactQueryDevtoolConfig ?? {},\n  };\n\n  return {\n    optionsWithDefaults,\n    disableTelemetryWithDefault,\n    reactQueryWithDefaults,\n  };\n};\n","import type { IRefineContextOptions } from \"../../../contexts/refine/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport type { RedirectAction } from \"../../../hooks/form/types\";\n\ntype RedirectPageProps = {\n  redirectFromProps?: RedirectAction;\n  action: Action;\n  redirectOptions: IRefineContextOptions[\"redirect\"];\n};\n\nexport const redirectPage = ({\n  redirectFromProps,\n  action,\n  redirectOptions,\n}: RedirectPageProps): RedirectAction => {\n  if (redirectFromProps || redirectFromProps === false) {\n    return redirectFromProps;\n  }\n\n  switch (action) {\n    case \"clone\":\n      return redirectOptions.afterClone;\n    case \"create\":\n      return redirectOptions.afterCreate;\n    case \"edit\":\n      return redirectOptions.afterEdit;\n    default:\n      return false;\n  }\n};\n","type EachResolve<TResolve, Response> = (\n  result: TResolve,\n  index: number,\n) => Response;\ntype EachReject<TReject, Response> = (\n  error: TReject,\n  index: number,\n) => Response;\n\nexport const sequentialPromises = async <\n  TResolve = unknown,\n  TReject = unknown,\n  TResolveResponse = unknown,\n  TRejectResponse = unknown,\n>(\n  promises: (() => Promise<TResolve>)[],\n  onEachResolve: EachResolve<TResolve, TResolveResponse>,\n  onEachReject: EachReject<TReject, TRejectResponse>,\n): Promise<(TResolveResponse | TRejectResponse)[]> => {\n  const results = [];\n  // @ts-expect-error Remove this when we enable `downLevelIterations`\n  for (const [index, promise] of promises.entries()) {\n    try {\n      const result = await promise();\n\n      results.push(onEachResolve(result, index));\n    } catch (error) {\n      results.push(onEachReject(error as TReject, index));\n    }\n  }\n  return results;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { removeLeadingTrailingSlashes } from \"../router/remove-leading-trailing-slashes\";\n\n/**\n * Picks the resource based on the provided identifier.\n * Identifier fallbacks to `name` if `identifier` is not explicitly provided to the resource.\n * If legacy is true, then resource is matched by `route` first and then by `name`.\n */\nexport const pickResource = (\n  identifier?: string,\n  resources: IResourceItem[] = [],\n  /**\n   * If true, the identifier will be checked for `route` and `name` properties\n   */\n  legacy = false,\n): IResourceItem | undefined => {\n  if (!identifier) {\n    return undefined;\n  }\n\n  if (legacy) {\n    const resourceByRoute = resources.find(\n      (r) =>\n        removeLeadingTrailingSlashes(r.route ?? \"\") ===\n        removeLeadingTrailingSlashes(identifier),\n    );\n\n    const resource = resourceByRoute\n      ? resourceByRoute\n      : resources.find((r) => r.name === identifier);\n\n    return resource;\n  }\n\n  let resource = resources.find((r) => r.identifier === identifier);\n  if (!resource) {\n    resource = resources.find((r) => r.name === identifier);\n  }\n\n  return resource;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { pickResource } from \"../pick-resource\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\n/**\n * Picks the data provider name based on the provided name or fallbacks to resource definition, or `default`.\n */\nexport const pickDataProvider = (\n  resourceName?: string,\n  dataProviderName?: string,\n  resources?: IResourceItem[],\n) => {\n  if (dataProviderName) {\n    return dataProviderName;\n  }\n\n  /**\n   * In this helper, we don't do `route` based matching therefore there's no need to check for `legacy` behaviors.\n   */\n  const resource = pickResource(resourceName, resources);\n\n  const meta = pickNotDeprecated(resource?.meta, resource?.options);\n\n  if (meta?.dataProviderName) {\n    return meta.dataProviderName;\n  }\n\n  return \"default\";\n};\n","export const handleMultiple = async <TData = unknown>(\n  promises: Promise<{ data: TData }>[],\n): Promise<{ data: TData[] }> => {\n  return {\n    data: (await Promise.all(promises)).map((res) => res.data),\n  };\n};\n","import type { GetListResponse } from \"../../../contexts/data/types\";\n\nexport const getNextPageParam = (lastPage: GetListResponse) => {\n  const { pagination, cursor } = lastPage;\n\n  // cursor pagination\n  if (cursor?.next) {\n    return cursor.next;\n  }\n\n  const current = pagination?.current || 1;\n\n  const pageSize = pagination?.pageSize || 10;\n  const totalPages = Math.ceil((lastPage.total || 0) / pageSize);\n\n  return current < totalPages ? Number(current) + 1 : undefined;\n};\n\nexport const getPreviousPageParam = (lastPage: GetListResponse) => {\n  const { pagination, cursor } = lastPage;\n\n  // cursor pagination\n  if (cursor?.prev) {\n    return cursor.prev;\n  }\n\n  const current = pagination?.current || 1;\n\n  return current === 1 ? undefined : current - 1;\n};\n","import type {\n  IResourceItem,\n  ResourceProps,\n} from \"../../../contexts/resource/types\";\nimport { routeGenerator } from \"../routeGenerator\";\n\n/**\n * For the legacy definition of resources, we did a basic transformation for provided resources\n * - This is meant to provide an easier way to access properties.\n * - In the new definition, we don't need to do transformations and properties can be accessed via helpers or manually.\n * This is kept for backward compability\n */\nexport const legacyResourceTransform = (resources: ResourceProps[]) => {\n  const _resources: IResourceItem[] = [];\n\n  resources.forEach((resource) => {\n    _resources.push({\n      ...resource,\n      label: resource.meta?.label ?? resource.options?.label,\n      route: routeGenerator(resource, resources),\n      canCreate: !!resource.create,\n      canEdit: !!resource.edit,\n      canShow: !!resource.show,\n      canDelete: resource.canDelete,\n    });\n  });\n\n  return _resources;\n};\n","import { splitToSegments } from \"./split-to-segments\";\nimport { removeLeadingTrailingSlashes } from \"./remove-leading-trailing-slashes\";\nimport { isParameter } from \"./is-parameter\";\n\n/**\n * Picks the route parameters from the given route.\n * (e.g. /users/:id/posts/:postId => ['id', 'postId'])\n */\nexport const pickRouteParams = (route: string) => {\n  const segments = splitToSegments(removeLeadingTrailingSlashes(route));\n\n  return segments.flatMap((s) => {\n    if (isParameter(s)) {\n      return [s.slice(1)];\n    }\n\n    return [];\n  });\n};\n","/**\n * Prepares the route params by checking the existing params and meta data.\n * Meta data is prioritized over params.\n * Params are prioritized over predetermined id, action and resource.\n * This means, we can use `meta` for user supplied params (both manually or from the query string)\n */\nexport const prepareRouteParams = <\n  TRouteParams extends Record<string, unknown> = Record<string, unknown>,\n>(\n  routeParams: (keyof TRouteParams)[],\n  meta: Record<string, unknown> = {},\n): Partial<TRouteParams> => {\n  return routeParams.reduce(\n    (acc, key) => {\n      const value = meta[key as string];\n      if (typeof value !== \"undefined\") {\n        acc[key] = value as TRouteParams[keyof TRouteParams];\n      }\n      return acc;\n    },\n    {} as Partial<TRouteParams>,\n  );\n};\n","import type { MetaQuery } from \"../../../contexts/data/types\";\nimport type { ParseResponse } from \"../../../contexts/router/types\";\nimport { pickRouteParams } from \"./pick-route-params\";\nimport { prepareRouteParams } from \"./prepare-route-params\";\n\n/**\n * This function will compose a route with the given params and meta.\n * - A route can have parameters like (eg: /users/:id)\n * - First we pick the route params from the route (eg: [id])\n * - Then we prepare the route params with the given params and meta (eg: { id: 1 })\n * - Then we replace the route params with the prepared route params (eg: /users/1)\n */\nexport const composeRoute = (\n  designatedRoute: string,\n  resourceMeta: MetaQuery = {},\n  parsed: ParseResponse = {},\n  meta: Record<string, unknown> = {},\n): string => {\n  // pickRouteParams (from the route)\n  const routeParams = pickRouteParams(designatedRoute);\n  // prepareRouteParams (from route params, params and meta)\n  const preparedRouteParams = prepareRouteParams(routeParams, {\n    ...resourceMeta,\n    ...(typeof parsed?.id !== \"undefined\" ? { id: parsed.id } : {}),\n    ...(typeof parsed?.action !== \"undefined\" ? { action: parsed.action } : {}),\n    ...(typeof parsed?.resource !== \"undefined\"\n      ? { resource: parsed.resource }\n      : {}),\n    ...parsed?.params,\n    ...meta,\n  });\n  // replace route params with prepared route params\n  return designatedRoute.replace(/:([^\\/]+)/g, (match, key) => {\n    const fromParams = preparedRouteParams[key];\n    if (typeof fromParams !== \"undefined\") {\n      return `${fromParams}`;\n    }\n    return match;\n  });\n};\n","import { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\n\n/**\n * @returns authProvider or legacyAuthProvider if provided, otherwise null\n * @internal\n * NOTE: Will be removed in v5\n */\nexport const useActiveAuthProvider = () => {\n  const legacyAuthProvider = useLegacyAuthContext();\n  const authProvider = useAuthBindingsContext();\n\n  if (authProvider.isProvided) {\n    return { isLegacy: false, ...authProvider };\n  }\n\n  if (legacyAuthProvider.isProvided) {\n    // legacyAuthProvider interface is different from authProvider interface\n    // we need to convert it to authProvider interface for simple usage\n    // in the future, we will remove legacyAuthProvider\n    return {\n      isLegacy: true,\n      ...legacyAuthProvider,\n      check: legacyAuthProvider.checkAuth,\n      onError: legacyAuthProvider.checkError,\n      getIdentity: legacyAuthProvider.getUserIdentity,\n    };\n  }\n\n  return null;\n};\n","import type { Pagination } from \"../../../contexts/data/types\";\nimport { pickNotDeprecated } from \"../pickNotDeprecated\";\n\ntype HandlePaginationParamsProps = {\n  hasPagination?: boolean;\n  pagination?: Pagination;\n  configPagination?: Pagination;\n};\n\nexport const handlePaginationParams = ({\n  hasPagination,\n  pagination,\n  configPagination,\n}: HandlePaginationParamsProps = {}): Required<Pagination> => {\n  const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n  const mode = pagination?.mode ?? hasPaginationString;\n\n  const current =\n    pickNotDeprecated(pagination?.current, configPagination?.current) ?? 1;\n\n  const pageSize =\n    pickNotDeprecated(pagination?.pageSize, configPagination?.pageSize) ?? 10;\n\n  return {\n    current,\n    pageSize,\n    mode,\n  };\n};\n","import { useState, useEffect } from \"react\";\n\nexport const useMediaQuery = (query: string) => {\n  const [matches, setMatches] = useState(false);\n\n  useEffect(() => {\n    const media = window.matchMedia(query);\n    if (media.matches !== matches) {\n      setMatches(media.matches);\n    }\n    const listener = () => setMatches(media.matches);\n    window.addEventListener(\"resize\", listener);\n    return () => window.removeEventListener(\"resize\", listener);\n  }, [matches, query]);\n\n  return matches;\n};\n","import type { useTranslate } from \"../../../hooks/i18n\";\n\nexport const safeTranslate = (\n  translate: ReturnType<typeof useTranslate>,\n  key: string,\n  defaultMessage?: string,\n  options?: any,\n) => {\n  const translated = options\n    ? translate(key, options, defaultMessage)\n    : translate(key, defaultMessage);\n\n  const fallback = defaultMessage ?? key;\n\n  if (translated === key || typeof translated === \"undefined\") {\n    return fallback;\n  }\n\n  return translated;\n};\n","import type { useTranslate } from \"../../../hooks/i18n\";\n\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { safeTranslate } from \"../safe-translate\";\nimport { userFriendlyResourceName } from \"../userFriendlyResourceName\";\n\n/**\n * Generates document title for the given resource and action.\n */\nexport function generateDefaultDocumentTitle(\n  translate: ReturnType<typeof useTranslate>,\n  resource?: IResourceItem,\n  action?: string,\n  id?: string,\n  resourceName?: string,\n) {\n  const actionPrefixMatcher = {\n    create: \"Create new \",\n    clone: `#${id ?? \"\"} Clone `,\n    edit: `#${id ?? \"\"} Edit `,\n    show: `#${id ?? \"\"} Show `,\n    list: \"\",\n  };\n\n  const identifier = resource?.identifier ?? resource?.name;\n\n  const resourceNameFallback =\n    resource?.label ??\n    resource?.meta?.label ??\n    userFriendlyResourceName(\n      identifier,\n      action === \"list\" ? \"plural\" : \"singular\",\n    );\n\n  const resourceNameWithFallback = resourceName ?? resourceNameFallback;\n\n  const defaultTitle = safeTranslate(\n    translate,\n    \"documentTitle.default\",\n    \"Refine\",\n  );\n  const suffix = safeTranslate(translate, \"documentTitle.suffix\", \" | Refine\");\n  let autoGeneratedTitle = defaultTitle;\n\n  if (action && identifier) {\n    autoGeneratedTitle = safeTranslate(\n      translate,\n      `documentTitle.${identifier}.${action}`,\n      `${\n        actionPrefixMatcher[action as keyof typeof actionPrefixMatcher] ?? \"\"\n      }${resourceNameWithFallback}${suffix}`,\n      { id },\n    );\n  }\n\n  return autoGeneratedTitle;\n}\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport type { IRefineContextOptions } from \"../../contexts/refine/types\";\nimport type { MutationMode } from \"../../contexts/data/types\";\n\ntype UseMutationModeType = (\n  preferredMutationMode?: MutationMode,\n  preferredUndoableTimeout?: number,\n) => {\n  mutationMode: IRefineContextOptions[\"mutationMode\"];\n  undoableTimeout: IRefineContextOptions[\"undoableTimeout\"];\n};\n\n/**\n * Mutation mode determines which mode the mutation runs with.\n * Mutations can run under three different modes: `pessimistic`, `optimistic` and `undoable`.\n * Each mode corresponds to a different type of user experience.\n *\n * @see {@link https://refine.dev/docs/guides-and-concepts/mutation-mode} for more details.\n */\nexport const useMutationMode: UseMutationModeType = (\n  preferredMutationMode?: MutationMode,\n  preferredUndoableTimeout?: number,\n) => {\n  const { mutationMode, undoableTimeout } = useContext(RefineContext);\n\n  return {\n    mutationMode: preferredMutationMode ?? mutationMode,\n    undoableTimeout: preferredUndoableTimeout ?? undoableTimeout,\n  };\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport { UnsavedWarnContext } from \"@contexts/unsavedWarn\";\nimport type { IRefineContextOptions } from \"../../../contexts/refine/types\";\nimport type { IUnsavedWarnContext } from \"../../../contexts/unsavedWarn/types\";\n\ntype UseWarnAboutChangeType = () => {\n  warnWhenUnsavedChanges: IRefineContextOptions[\"warnWhenUnsavedChanges\"];\n  warnWhen: NonNullable<IUnsavedWarnContext[\"warnWhen\"]>;\n  setWarnWhen: NonNullable<IUnsavedWarnContext[\"setWarnWhen\"]>;\n};\n\n/**\n * When you have unsaved changes and try to leave the current page, **refine** shows a confirmation modal box.\n * To activate this feature, set the `warnWhenUnsavedChanges` to `true`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config#warnwhenunsavedchanges} for more details.\n */\nexport const useWarnAboutChange: UseWarnAboutChangeType = () => {\n  const { warnWhenUnsavedChanges } = useContext(RefineContext);\n\n  const { warnWhen, setWarnWhen } = useContext(UnsavedWarnContext);\n\n  return {\n    warnWhenUnsavedChanges,\n    warnWhen: Boolean(warnWhen),\n    setWarnWhen: setWarnWhen ?? (() => undefined),\n  };\n};\n","import React, { useState, type PropsWithChildren } from \"react\";\n\nimport type { IUnsavedWarnContext } from \"./types\";\n\nexport const UnsavedWarnContext = React.createContext<IUnsavedWarnContext>({});\n\nexport const UnsavedWarnContextProvider: React.FC<PropsWithChildren> = ({\n  children,\n}) => {\n  const [warnWhen, setWarnWhen] = useState(false);\n\n  return (\n    <UnsavedWarnContext.Provider value={{ warnWhen, setWarnWhen }}>\n      {children}\n    </UnsavedWarnContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\nimport type { IRefineContextOptions } from \"../../contexts/refine/types\";\n\ntype UseSyncWithLocationType = () => {\n  syncWithLocation: IRefineContextOptions[\"syncWithLocation\"];\n};\n\n/**\n * List query parameter values can be edited manually by typing directly in the URL.\n * To activate this feature `syncWithLocation` needs to be set to `true`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#syncwithlocation} for more details.\n */\nexport const useSyncWithLocation: UseSyncWithLocationType = () => {\n  const { syncWithLocation } = useContext(RefineContext);\n\n  return { syncWithLocation };\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\n\nimport type { TitleProps } from \"../../contexts/refine/types\";\n\n/**\n * `useTitle` returns a component that calls the `<Title>` passed to the `<Refine>`.\n * In this way, it becomes easier for us to access this component in various parts of the application.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/refine/useTitle} for more details.\n */\nexport const useTitle: () => React.FC<TitleProps> | undefined = () => {\n  const { Title } = useContext(RefineContext);\n\n  return Title;\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\n\nexport const useRefineContext = () => {\n  const {\n    Footer,\n    Header,\n    Layout,\n    OffLayoutArea,\n    Sider,\n    Title,\n    hasDashboard,\n    mutationMode,\n    syncWithLocation,\n    undoableTimeout,\n    warnWhenUnsavedChanges,\n    DashboardPage,\n    LoginPage,\n    catchAll,\n    options,\n    __initialized,\n  } = useContext(RefineContext);\n\n  return {\n    __initialized,\n    Footer,\n    Header,\n    Layout,\n    OffLayoutArea,\n    Sider,\n    Title,\n    hasDashboard,\n    mutationMode,\n    syncWithLocation,\n    undoableTimeout,\n    warnWhenUnsavedChanges,\n    DashboardPage,\n    LoginPage,\n    catchAll,\n    options,\n  };\n};\n","import { useRefineContext } from \"@hooks/refine\";\n\n/**\n * A method that the internal uses\n * @internal\n */\nexport const useUserFriendlyName = () => {\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n\n  const getFriendlyName = (name = \"\", type: \"singular\" | \"plural\"): string => {\n    const humanizeName = textTransformers.humanize(name);\n    if (type === \"singular\") {\n      return textTransformers.singular(humanizeName);\n    }\n    return textTransformers.plural(humanizeName);\n  };\n\n  return getFriendlyName;\n};\n","const isNested = (obj: any) => typeof obj === \"object\" && obj !== null;\nconst isArray = (obj: any) => Array.isArray(obj);\n\nexport const flattenObjectKeys = (obj: any, prefix = \"\") => {\n  if (!isNested(obj)) {\n    return {\n      [prefix]: obj,\n    };\n  }\n\n  return Object.keys(obj).reduce(\n    (acc, key) => {\n      const currentPrefix = prefix.length ? `${prefix}.` : \"\";\n\n      if (isNested(obj[key]) && Object.keys(obj[key]).length) {\n        if (isArray(obj[key]) && obj[key].length) {\n          obj[key].forEach((item: unknown[], index: number) => {\n            Object.assign(\n              acc,\n              flattenObjectKeys(item, `${currentPrefix + key}.${index}`),\n            );\n          });\n        } else {\n          Object.assign(acc, flattenObjectKeys(obj[key], currentPrefix + key));\n        }\n        // Even if it's a nested object, it should be treated as a key as well\n        acc[currentPrefix + key] = obj[key];\n      } else {\n        acc[currentPrefix + key] = obj[key];\n      }\n      return acc;\n    },\n    {} as Record<string, unknown>,\n  );\n};\n","export const propertyPathToArray = (propertyPath: string) => {\n  return propertyPath\n    .split(\".\")\n    .map((item) => (!Number.isNaN(Number(item)) ? Number(item) : item));\n};\n","export const downloadInBrowser = (\n  filename: string,\n  content: string,\n  type?: string,\n) => {\n  if (typeof window === \"undefined\") {\n    return;\n  }\n\n  const blob = new Blob([content], { type });\n\n  const link = document.createElement(\"a\");\n  link.setAttribute(\"visibility\", \"hidden\");\n  link.download = filename;\n  const blobUrl = URL.createObjectURL(blob);\n  link.href = blobUrl;\n  document.body.appendChild(link);\n  link.click();\n  document.body.removeChild(link);\n  // As per documentation, call URL.revokeObjectURL to remove the blob from memory.\n  setTimeout(() => {\n    URL.revokeObjectURL(blobUrl);\n  });\n};\n","/**\n * Delays the execution of a callback function asynchronously.\n * This utility function is used to defer the execution of the provided\n * callback, allowing the current call stack to clear before the callback\n * is invoked. It is particularly useful for ensuring non-blocking behavior\n * and providing a clear intent when a 0 ms timeout is used.\n */\nexport const deferExecution = (fn: Function) => {\n  setTimeout(fn, 0);\n};\n","import debounce from \"lodash/debounce\";\n\ntype Callbacks<T extends (...args: any) => any> = {\n  resolve?: (value: Awaited<ReturnType<T>>) => void;\n  reject?: (reason?: any) => void;\n};\n\ntype DebouncedFunction<T extends (...args: any) => any> = {\n  (...args: Parameters<T>): Promise<Awaited<ReturnType<T>>>;\n  flush: () => void;\n  cancel: () => void;\n};\n\n/**\n * Debounces sync and async functions with given wait time. The debounced function returns a promise which can be awaited or catched.\n * Only the last call of the debounced function will resolve or reject.\n * Previous calls will be rejected with the given cancelReason.\n *\n * The original debounce function doesn't work well with async functions,\n * It won't return a promise to resolve/reject and therefore it's not possible to await the result.\n * This will always return a promise to handle and await the result.\n * Previous calls will be rejected immediately after a new call made.\n */\nexport const asyncDebounce = <T extends (...args: any[]) => any>(\n  func: T,\n  wait = 1000,\n  cancelReason?: string,\n): DebouncedFunction<T> => {\n  let callbacks: Array<Callbacks<T>> = [];\n\n  const cancelPrevious = () => {\n    callbacks.forEach((cb) => cb.reject?.(cancelReason));\n    callbacks = [];\n  };\n\n  const debouncedFunc = debounce((...args: Parameters<T>) => {\n    const { resolve, reject } = callbacks.pop() || {};\n    Promise.resolve(func(...args))\n      .then(resolve)\n      .catch(reject);\n  }, wait);\n\n  const runner = (...args: Parameters<T>) => {\n    return new Promise<Awaited<ReturnType<T>>>((resolve, reject) => {\n      cancelPrevious();\n\n      callbacks.push({\n        resolve,\n        reject,\n      });\n\n      debouncedFunc(...args);\n    });\n  };\n\n  runner.flush = () => debouncedFunc.flush();\n  runner.cancel = () => {\n    debouncedFunc.cancel();\n    cancelPrevious();\n  };\n\n  return runner;\n};\n","import type { QueryFunctionContext, QueryKey } from \"@tanstack/react-query\";\n\nexport const prepareQueryContext = (\n  context: QueryFunctionContext<QueryKey, any>,\n): Omit<QueryFunctionContext<QueryKey, any>, \"meta\"> => {\n  const queryContext = {\n    queryKey: context.queryKey,\n    pageParam: context.pageParam,\n  };\n\n  Object.defineProperty(queryContext, \"signal\", {\n    enumerable: true,\n    get: () => {\n      return context.signal;\n    },\n  });\n\n  return queryContext;\n};\n","export const file2Base64 = (file: any): Promise<string> => {\n  return new Promise((resolve, reject) => {\n    const reader = new FileReader();\n\n    const resultHandler = () => {\n      if (reader.result) {\n        reader.removeEventListener(\"load\", resultHandler, false);\n\n        resolve(reader.result as string);\n      }\n    };\n\n    reader.addEventListener(\"load\", resultHandler, false);\n\n    reader.readAsDataURL(file.originFileObj as Blob);\n    reader.onerror = (error) => {\n      reader.removeEventListener(\"load\", resultHandler, false);\n      return reject(error);\n    };\n  });\n};\n","import { useRefineContext } from \"..\";\nimport { keys } from \"@definitions/index\";\n\nexport const useKeys = () => {\n  const {\n    options: { useNewQueryKeys },\n  } = useRefineContext();\n\n  return {\n    keys,\n    preferLegacyKeys: !useNewQueryKeys,\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { IdentityResponse } from \"../../../contexts/auth/types\";\n\nexport type UseGetIdentityLegacyProps<TData> = {\n  v3LegacyAuthProviderCompatible: true;\n  queryOptions?: UseQueryOptions<TData>;\n};\n\nexport type UseGetIdentityProps<TData = IdentityResponse> = {\n  v3LegacyAuthProviderCompatible?: false;\n  queryOptions?: UseQueryOptions<TData>;\n};\n\nexport type UseGetIdentityCombinedProps<TData = any> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  queryOptions?: UseQueryOptions<TData> | UseQueryOptions<IdentityResponse>;\n};\n\nexport type UseGetIdentityLegacyReturnType<TData> = UseQueryResult<\n  TData,\n  unknown\n>;\n\nexport type UseGetIdentityReturnType<TData = IdentityResponse> = UseQueryResult<\n  TData,\n  unknown\n>;\n\nexport type UsePermissionsCombinedReturnType<TData = any> =\n  | UseQueryResult<TData, unknown>\n  | UseQueryResult<IdentityResponse, unknown>;\n\nexport function useGetIdentity<TData = any>(\n  props: UseGetIdentityLegacyProps<TData>,\n): UseGetIdentityLegacyReturnType<TData>;\n\nexport function useGetIdentity<TData = IdentityResponse>(\n  props?: UseGetIdentityProps<TData>,\n): UseGetIdentityReturnType<TData>;\n\nexport function useGetIdentity<TData = any>(\n  props?: UseGetIdentityCombinedProps<TData>,\n): UsePermissionsCombinedReturnType<TData>;\n\n/**\n * `useGetIdentity` calls the `getUserIdentity` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useGetIdentity} for more details.\n *\n * @typeParam TData - Result data of the query\n *\n */\nexport function useGetIdentity<TData = any>({\n  v3LegacyAuthProviderCompatible = false,\n  queryOptions,\n}: UseGetIdentityProps<TData> | UseGetIdentityLegacyProps<TData> = {}):\n  | UseGetIdentityReturnType<TData>\n  | UseGetIdentityLegacyReturnType<TData> {\n  const { getUserIdentity: legacyGetUserIdentity } = useLegacyAuthContext();\n  const { getIdentity } = useAuthBindingsContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const queryResponse = useQuery<TData>({\n    queryKey: keys().auth().action(\"identity\").get(preferLegacyKeys),\n    // Enabled check for `getIdentity` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n    queryFn:\n      (getIdentity as (params?: unknown) => Promise<TData>) ??\n      (() => Promise.resolve({})),\n    enabled: !v3LegacyAuthProviderCompatible && !!getIdentity,\n    retry: false,\n    ...(v3LegacyAuthProviderCompatible === true ? {} : queryOptions),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible === true ? {} : queryOptions?.meta),\n      ...getXRay(\"useGetIdentity\", preferLegacyKeys),\n    },\n  });\n\n  const legacyQueryResponse = useQuery<TData>({\n    queryKey: [\n      ...keys().auth().action(\"identity\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    // Enabled check for `getUserIdentity` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n    queryFn: legacyGetUserIdentity ?? (() => Promise.resolve({})),\n    enabled: v3LegacyAuthProviderCompatible && !!legacyGetUserIdentity,\n    retry: false,\n    ...(v3LegacyAuthProviderCompatible ? queryOptions : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? queryOptions?.meta : {}),\n      ...getXRay(\"useGetIdentity\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible ? legacyQueryResponse : queryResponse;\n}\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport {\n  useGo,\n  useKeys,\n  useNavigation,\n  useNotification,\n  useRouterType,\n} from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n  TLogoutData,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\n\ntype Variables = {\n  redirectPath?: string | false;\n};\n\nexport type UseLogoutLegacyProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: true;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      TLogoutData,\n      Error | RefineError,\n      (TVariables & Variables) | void,\n      unknown\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\"\n  >;\n};\n\nexport type UseLogoutProps<TVariables> = {\n  v3LegacyAuthProviderCompatible?: false;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      (TVariables & Variables) | void,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseLogoutCombinedProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse | TLogoutData,\n      Error | RefineError,\n      (TVariables & Variables) | void,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseLogoutLegacyReturnType<TVariables> = UseMutationResult<\n  TLogoutData,\n  Error | RefineError,\n  (TVariables & Variables) | void,\n  unknown\n>;\n\nexport type UseLogoutReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  (TVariables & Variables) | void,\n  unknown\n>;\n\nexport type UseLogoutCombinedReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse | TLogoutData,\n  Error | RefineError,\n  (TVariables & Variables) | void,\n  unknown\n>;\n\nexport function useLogout<TVariables = {}>(\n  props: UseLogoutLegacyProps<TVariables>,\n): UseLogoutLegacyReturnType<TVariables>;\n\nexport function useLogout<TVariables = {}>(\n  props?: UseLogoutProps<TVariables>,\n): UseLogoutReturnType<TVariables>;\n\nexport function useLogout<TVariables = {}>(\n  props?: UseLogoutCombinedProps<TVariables>,\n): UseLogoutCombinedReturnType<TVariables>;\n\n/**\n * `useLogout` calls the `logout` method from the {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useLogout} for more details.\n *\n */\nexport function useLogout<TVariables = {}>({\n  v3LegacyAuthProviderCompatible,\n  mutationOptions,\n}: UseLogoutProps<TVariables> | UseLogoutLegacyProps<TVariables> = {}):\n  | UseLogoutLegacyReturnType<TVariables>\n  | UseLogoutReturnType<TVariables> {\n  const invalidateAuthStore = useInvalidateAuthStore();\n  const routerType = useRouterType();\n  const go = useGo();\n  const { push } = useNavigation();\n  const { open, close } = useNotification();\n  const { logout: legacyLogoutFromContext } = useLegacyAuthContext();\n  const { logout: logoutFromContext } = useAuthBindingsContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    (TVariables & Variables) | void,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"logout\").get(preferLegacyKeys),\n    mutationFn: logoutFromContext,\n    onSuccess: async (data, variables) => {\n      const { success, error, redirectTo, successNotification } = data;\n      const { redirectPath } = variables ?? {};\n\n      const redirect = redirectPath ?? redirectTo;\n\n      if (success) {\n        close?.(\"useLogout-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirect !== false) {\n        if (routerType === \"legacy\") {\n          push(redirect ?? \"/login\");\n        } else {\n          if (redirect) {\n            go({ to: redirect });\n          }\n        }\n      }\n\n      await invalidateAuthStore();\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n      ...getXRay(\"useLogout\", preferLegacyKeys),\n    },\n  });\n\n  const v3LegacyAuthProviderCompatibleMutation = useMutation<\n    TLogoutData,\n    Error | RefineError,\n    (TVariables & Variables) | void,\n    unknown\n  >({\n    mutationKey: [\n      ...keys().auth().action(\"logout\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    mutationFn: legacyLogoutFromContext,\n    onSuccess: async (data, variables) => {\n      const redirectPath = variables?.redirectPath ?? data;\n\n      if (redirectPath === false) {\n        return;\n      }\n\n      if (redirectPath) {\n        if (routerType === \"legacy\") {\n          push(redirectPath);\n        } else {\n          go({ to: redirectPath });\n        }\n        return;\n      }\n\n      if (routerType === \"legacy\") {\n        push(\"/login\");\n      } else {\n        go({ to: \"/login\" });\n      }\n\n      await invalidateAuthStore();\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n      ...getXRay(\"useLogout\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible\n    ? v3LegacyAuthProviderCompatibleMutation\n    : mutation;\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    key: \"useLogout-error\",\n    type: \"error\",\n    message: error?.name || \"Logout Error\",\n    description: error?.message || \"Something went wrong during logout\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"logout-success\",\n    type: \"success\",\n  };\n};\n","import { useKeys } from \"@hooks/useKeys\";\nimport { useQueryClient } from \"@tanstack/react-query\";\n\nexport const useInvalidateAuthStore = () => {\n  const queryClient = useQueryClient();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const invalidate = async () => {\n    await Promise.all(\n      ([\"check\", \"identity\", \"permissions\"] as const).map((action) =>\n        queryClient.invalidateQueries(\n          keys().auth().action(action).get(preferLegacyKeys),\n        ),\n      ),\n    );\n  };\n\n  return invalidate;\n};\n","import React from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\nimport qs from \"qs\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport {\n  useGo,\n  useKeys,\n  useNavigation,\n  useNotification,\n  useParsed,\n  useRouterContext,\n  useRouterType,\n} from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n  TLoginData,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\n\nexport type UseLoginLegacyProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: true;\n  mutationOptions?: Omit<\n    UseMutationOptions<TLoginData, Error | RefineError, TVariables, unknown>,\n    \"mutationFn\" | \"onError\" | \"onSuccess\"\n  >;\n};\n\nexport type UseLoginProps<TVariables> = {\n  v3LegacyAuthProviderCompatible?: false;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseLoginCombinedProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse | TLoginData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseLoginLegacyReturnType<TVariables> = UseMutationResult<\n  TLoginData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseLoginReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseLoginCombinedReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse | TLoginData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport function useLogin<TVariables = {}>(\n  props: UseLoginLegacyProps<TVariables>,\n): UseLoginLegacyReturnType<TVariables>;\n\nexport function useLogin<TVariables = {}>(\n  props?: UseLoginProps<TVariables>,\n): UseLoginReturnType<TVariables>;\n\nexport function useLogin<TVariables = {}>(\n  props?: UseLoginCombinedProps<TVariables>,\n): UseLoginCombinedReturnType<TVariables>;\n\n/**\n * `useLogin` calls `login` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useLogin} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useLogin<TVariables = {}>({\n  v3LegacyAuthProviderCompatible,\n  mutationOptions,\n}: UseLoginProps<TVariables> | UseLoginLegacyProps<TVariables> = {}):\n  | UseLoginLegacyReturnType<TVariables>\n  | UseLoginReturnType<TVariables> {\n  const invalidateAuthStore = useInvalidateAuthStore();\n  const routerType = useRouterType();\n\n  const go = useGo();\n  const { replace } = useNavigation();\n\n  const parsed = useParsed();\n\n  const { useLocation } = useRouterContext();\n  const { search } = useLocation();\n\n  const { close, open } = useNotification();\n  const { login: legacyLoginFromContext } = useLegacyAuthContext();\n  const { login: loginFromContext } = useAuthBindingsContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const to = React.useMemo(() => {\n    if (routerType === \"legacy\") {\n      const legacySearch = qs.parse(search, {\n        ignoreQueryPrefix: true,\n      });\n      return legacySearch.to;\n    }\n    return parsed.params?.to;\n  }, [routerType, parsed.params, search]);\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"login\").get(preferLegacyKeys),\n    mutationFn: loginFromContext,\n    onSuccess: async ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"login-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (to && success) {\n        if (routerType === \"legacy\") {\n          replace(to as string);\n        } else {\n          go({ to: to as string, type: \"replace\" });\n        }\n      } else if (redirectTo) {\n        if (routerType === \"legacy\") {\n          replace(redirectTo);\n        } else {\n          go({ to: redirectTo, type: \"replace\" });\n        }\n      } else {\n        if (routerType === \"legacy\") {\n          replace(\"/\");\n        }\n      }\n\n      setTimeout(() => {\n        invalidateAuthStore();\n      }, 32);\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n      ...getXRay(\"useLogin\", preferLegacyKeys),\n    },\n  });\n\n  const v3LegacyAuthProviderCompatibleMutation = useMutation<\n    TLoginData,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: [\n      ...keys().auth().action(\"login\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    mutationFn: legacyLoginFromContext,\n    onSuccess: async (redirectPathFromAuth) => {\n      if (to) {\n        replace(to as string);\n      }\n\n      if (redirectPathFromAuth !== false && !to) {\n        if (typeof redirectPathFromAuth === \"string\") {\n          if (routerType === \"legacy\") {\n            replace(redirectPathFromAuth);\n          } else {\n            go({ to: redirectPathFromAuth, type: \"replace\" });\n          }\n        } else {\n          if (routerType === \"legacy\") {\n            replace(\"/\");\n          } else {\n            go({ to: \"/\", type: \"replace\" });\n          }\n        }\n      }\n\n      setTimeout(() => {\n        invalidateAuthStore();\n      }, 32);\n\n      close?.(\"login-error\");\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n      ...getXRay(\"useLogin\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible\n    ? v3LegacyAuthProviderCompatibleMutation\n    : mutation;\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Login Error\",\n    description: error?.message || \"Invalid credentials\",\n    key: \"login-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"login-success\",\n    type: \"success\",\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport {\n  useGo,\n  useKeys,\n  useNavigation,\n  useNotification,\n  useRouterType,\n} from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n  TLoginData,\n  TRegisterData,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\nimport { useInvalidateAuthStore } from \"../useInvalidateAuthStore\";\n\nexport type UseRegisterLegacyProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: true;\n  mutationOptions?: Omit<\n    UseMutationOptions<TRegisterData, Error | RefineError, TVariables, unknown>,\n    \"mutationFn\" | \"onError\" | \"onSuccess\"\n  >;\n};\n\nexport type UseRegisterProps<TVariables> = {\n  v3LegacyAuthProviderCompatible?: false;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseRegisterCombinedProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse | TRegisterData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseRegisterLegacyReturnType<TVariables> = UseMutationResult<\n  TRegisterData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseRegisterReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseRegisterCombinedReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse | TLoginData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport function useRegister<TVariables = {}>(\n  props: UseRegisterLegacyProps<TVariables>,\n): UseRegisterLegacyReturnType<TVariables>;\n\nexport function useRegister<TVariables = {}>(\n  props?: UseRegisterProps<TVariables>,\n): UseRegisterReturnType<TVariables>;\n\nexport function useRegister<TVariables = {}>(\n  props?: UseRegisterCombinedProps<TVariables>,\n): UseRegisterCombinedReturnType<TVariables>;\n\n/**\n * `useRegister` calls `register` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useRegister} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useRegister<TVariables = {}>({\n  v3LegacyAuthProviderCompatible,\n  mutationOptions,\n}: UseRegisterProps<TVariables> | UseRegisterLegacyProps<TVariables> = {}):\n  | UseRegisterReturnType<TVariables>\n  | UseRegisterLegacyReturnType<TVariables> {\n  const invalidateAuthStore = useInvalidateAuthStore();\n  const routerType = useRouterType();\n  const go = useGo();\n  const { replace } = useNavigation();\n  const { register: legacyRegisterFromContext } = useLegacyAuthContext();\n  const { register: registerFromContext } = useAuthBindingsContext();\n  const { close, open } = useNotification();\n\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"register\").get(preferLegacyKeys),\n    mutationFn: registerFromContext,\n    onSuccess: async ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"register-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n\n        await invalidateAuthStore();\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirectTo) {\n        if (routerType === \"legacy\") {\n          replace(redirectTo);\n        } else {\n          go({ to: redirectTo, type: \"replace\" });\n        }\n      } else {\n        if (routerType === \"legacy\") {\n          replace(\"/\");\n        }\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n      ...getXRay(\"useRegister\", preferLegacyKeys),\n    },\n  });\n\n  const v3LegacyAuthProviderCompatibleMutation = useMutation<\n    TRegisterData,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: [\n      ...keys().auth().action(\"register\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    mutationFn: legacyRegisterFromContext,\n    onSuccess: async (redirectPathFromAuth) => {\n      if (redirectPathFromAuth !== false) {\n        if (redirectPathFromAuth) {\n          if (routerType === \"legacy\") {\n            replace(redirectPathFromAuth);\n          } else {\n            go({ to: redirectPathFromAuth, type: \"replace\" });\n          }\n        } else {\n          if (routerType === \"legacy\") {\n            replace(\"/\");\n          } else {\n            go({ to: \"/\", type: \"replace\" });\n          }\n        }\n\n        await invalidateAuthStore();\n\n        close?.(\"register-error\");\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n      ...getXRay(\"useRegister\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible\n    ? v3LegacyAuthProviderCompatibleMutation\n    : mutation;\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Register Error\",\n    description: error?.message || \"Error while registering\",\n    key: \"register-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"register-success\",\n    type: \"success\",\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport {\n  useGo,\n  useKeys,\n  useNavigation,\n  useNotification,\n  useRouterType,\n} from \"@hooks\";\n\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n  TForgotPasswordData,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\n\nexport type UseForgotPasswordLegacyProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: true;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      TForgotPasswordData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\"\n  >;\n};\n\nexport type UseForgotPasswordProps<TVariables> = {\n  v3LegacyAuthProviderCompatible?: false;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseForgotPasswordCombinedProps<TVariables> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse | TForgotPasswordData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseForgotPasswordLegacyReturnType<TVariables> = UseMutationResult<\n  TForgotPasswordData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseForgotPasswordReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseForgotPasswordCombinedReturnType<TVariables> = UseMutationResult<\n  AuthActionResponse | TForgotPasswordData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport function useForgotPassword<TVariables = {}>(\n  props: UseForgotPasswordLegacyProps<TVariables>,\n): UseForgotPasswordLegacyReturnType<TVariables>;\n\nexport function useForgotPassword<TVariables = {}>(\n  props?: UseForgotPasswordProps<TVariables>,\n): UseForgotPasswordReturnType<TVariables>;\n\nexport function useForgotPassword<TVariables = {}>(\n  props?: UseForgotPasswordCombinedProps<TVariables>,\n): UseForgotPasswordCombinedReturnType<TVariables>;\n\n/**\n * `useForgotPassword` calls `forgotPassword` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useForgotPassword} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useForgotPassword<TVariables = {}>({\n  v3LegacyAuthProviderCompatible,\n  mutationOptions,\n}:\n  | UseForgotPasswordProps<TVariables>\n  | UseForgotPasswordLegacyProps<TVariables> = {}):\n  | UseForgotPasswordReturnType<TVariables>\n  | UseForgotPasswordLegacyReturnType<TVariables> {\n  const routerType = useRouterType();\n  const go = useGo();\n  const { replace } = useNavigation();\n  const {\n    forgotPassword: v3LegacyAuthProviderCompatibleForgotPasswordFromContext,\n  } = useLegacyAuthContext();\n  const { forgotPassword: forgotPasswordFromContext } =\n    useAuthBindingsContext();\n  const { close, open } = useNotification();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutation = useMutation<\n    AuthActionResponse,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: keys().auth().action(\"forgotPassword\").get(preferLegacyKeys),\n    mutationFn: forgotPasswordFromContext,\n    onSuccess: ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"forgot-password-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirectTo) {\n        if (routerType === \"legacy\") {\n          replace(redirectTo);\n        } else {\n          go({ to: redirectTo, type: \"replace\" });\n        }\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n      ...getXRay(\"useForgotPassword\", preferLegacyKeys),\n    },\n  });\n\n  const v3LegacyAuthProviderCompatibleMutation = useMutation<\n    TForgotPasswordData,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: [\n      ...keys().auth().action(\"forgotPassword\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    mutationFn: v3LegacyAuthProviderCompatibleForgotPasswordFromContext,\n    onSuccess: (redirectPathFromAuth) => {\n      if (redirectPathFromAuth !== false) {\n        if (redirectPathFromAuth) {\n          if (routerType === \"legacy\") {\n            replace(redirectPathFromAuth);\n          } else {\n            go({ to: redirectPathFromAuth, type: \"replace\" });\n          }\n        }\n      }\n      close?.(\"forgot-password-error\");\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n      ...getXRay(\"useForgotPassword\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible\n    ? v3LegacyAuthProviderCompatibleMutation\n    : mutation;\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Forgot Password Error\",\n    description: error?.message || \"Error while resetting password\",\n    key: \"forgot-password-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"forgot-password-success\",\n    type: \"success\",\n  };\n};\n","import React from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\nimport qs from \"qs\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport {\n  useGo,\n  useKeys,\n  useNavigation,\n  useNotification,\n  useParsed,\n  useRouterContext,\n  useRouterType,\n} from \"@hooks\";\n\nimport type { UpdatePasswordFormTypes } from \"../../../components/pages/auth/types\";\nimport type {\n  AuthActionResponse,\n  SuccessNotificationResponse,\n  TUpdatePasswordData,\n} from \"../../../contexts/auth/types\";\nimport type { RefineError } from \"../../../contexts/data/types\";\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\n\nexport type UseUpdatePasswordLegacyProps<\n  TVariables extends UpdatePasswordFormTypes,\n> = {\n  v3LegacyAuthProviderCompatible: true;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      TUpdatePasswordData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\"\n  >;\n};\n\nexport type UseUpdatePasswordProps<TVariables extends UpdatePasswordFormTypes> =\n  {\n    v3LegacyAuthProviderCompatible?: false;\n    mutationOptions?: Omit<\n      UseMutationOptions<\n        AuthActionResponse,\n        Error | RefineError,\n        TVariables,\n        unknown\n      >,\n      \"mutationFn\"\n    >;\n  };\n\nexport type UseUpdatePasswordCombinedProps<\n  TVariables extends UpdatePasswordFormTypes,\n> = {\n  v3LegacyAuthProviderCompatible: boolean;\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      AuthActionResponse | TUpdatePasswordData,\n      Error | RefineError,\n      TVariables,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n};\n\nexport type UseUpdatePasswordLegacyReturnType<\n  TVariables extends UpdatePasswordFormTypes,\n> = UseMutationResult<\n  TUpdatePasswordData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseUpdatePasswordReturnType<\n  TVariables extends UpdatePasswordFormTypes,\n> = UseMutationResult<\n  AuthActionResponse,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport type UseUpdatePasswordCombinedReturnType<\n  TVariables extends UpdatePasswordFormTypes,\n> = UseMutationResult<\n  AuthActionResponse | TUpdatePasswordData,\n  Error | RefineError,\n  TVariables,\n  unknown\n>;\n\nexport function useUpdatePassword<TVariables extends UpdatePasswordFormTypes>(\n  props: UseUpdatePasswordLegacyProps<TVariables>,\n): UseUpdatePasswordLegacyReturnType<TVariables>;\n\nexport function useUpdatePassword<TVariables extends UpdatePasswordFormTypes>(\n  props?: UseUpdatePasswordProps<TVariables>,\n): UseUpdatePasswordReturnType<TVariables>;\n\nexport function useUpdatePassword<TVariables extends UpdatePasswordFormTypes>(\n  props?: UseUpdatePasswordCombinedProps<TVariables>,\n): UseUpdatePasswordCombinedReturnType<TVariables>;\n\n/**\n * `useUpdatePassword` calls `updatePassword` method from {@link https://refine.dev/docs/api-reference/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useUpdatePassword} for more details.\n *\n * @typeParam TData - Result data of the query\n * @typeParam TVariables - Values for mutation function. default `{}`\n *\n */\nexport function useUpdatePassword<\n  TVariables extends UpdatePasswordFormTypes = {},\n>({\n  v3LegacyAuthProviderCompatible,\n  mutationOptions,\n}:\n  | UseUpdatePasswordProps<TVariables>\n  | UseUpdatePasswordLegacyProps<TVariables> = {}):\n  | UseUpdatePasswordReturnType<TVariables>\n  | UseUpdatePasswordLegacyReturnType<TVariables> {\n  const routerType = useRouterType();\n\n  const go = useGo();\n  const { replace } = useNavigation();\n  const { updatePassword: legacyUpdatePasswordFromContext } =\n    useLegacyAuthContext();\n  const { updatePassword: updatePasswordFromContext } =\n    useAuthBindingsContext();\n  const { close, open } = useNotification();\n\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const parsed = useParsed();\n  const { useLocation } = useRouterContext();\n  const { search } = useLocation();\n\n  const params = React.useMemo(() => {\n    if (routerType === \"legacy\") {\n      const queryStrings = qs.parse(search, {\n        ignoreQueryPrefix: true,\n      });\n      return queryStrings ?? {};\n    }\n    return parsed.params ?? {};\n  }, [search, parsed, routerType]);\n\n  const mutation = useMutation<AuthActionResponse, Error, TVariables, unknown>({\n    mutationKey: keys().auth().action(\"updatePassword\").get(preferLegacyKeys),\n    mutationFn: async (variables) => {\n      return updatePasswordFromContext?.({\n        ...params,\n        ...variables,\n      }) as Promise<AuthActionResponse>;\n    },\n    onSuccess: ({ success, redirectTo, error, successNotification }) => {\n      if (success) {\n        close?.(\"update-password-error\");\n\n        if (successNotification) {\n          open?.(buildSuccessNotification(successNotification));\n        }\n      }\n\n      if (error || !success) {\n        open?.(buildNotification(error));\n      }\n\n      if (redirectTo) {\n        if (routerType === \"legacy\") {\n          replace(redirectTo);\n        } else {\n          go({ to: redirectTo, type: \"replace\" });\n        }\n      }\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible === true ? {} : mutationOptions?.meta),\n      ...getXRay(\"useUpdatePassword\", preferLegacyKeys),\n    },\n  });\n\n  const v3LegacyAuthProviderCompatibleMutation = useMutation<\n    TUpdatePasswordData,\n    Error | RefineError,\n    TVariables,\n    unknown\n  >({\n    mutationKey: [\n      ...keys().auth().action(\"updatePassword\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    mutationFn: async (variables) => {\n      return legacyUpdatePasswordFromContext?.({\n        ...params,\n        ...variables,\n      });\n    },\n    onSuccess: (redirectPathFromAuth) => {\n      if (redirectPathFromAuth !== false) {\n        if (redirectPathFromAuth) {\n          if (routerType === \"legacy\") {\n            replace(redirectPathFromAuth);\n          } else {\n            go({ to: redirectPathFromAuth, type: \"replace\" });\n          }\n        }\n      }\n      close?.(\"update-password-error\");\n    },\n    onError: (error: any) => {\n      open?.(buildNotification(error));\n    },\n    ...(v3LegacyAuthProviderCompatible ? mutationOptions : {}),\n    meta: {\n      ...(v3LegacyAuthProviderCompatible ? mutationOptions?.meta : {}),\n      ...getXRay(\"useUpdatePassword\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible\n    ? v3LegacyAuthProviderCompatibleMutation\n    : mutation;\n}\n\nconst buildNotification = (\n  error?: Error | RefineError,\n): OpenNotificationParams => {\n  return {\n    message: error?.name || \"Update Password Error\",\n    description: error?.message || \"Error while updating password\",\n    key: \"update-password-error\",\n    type: \"error\",\n  };\n};\n\nconst buildSuccessNotification = (\n  successNotification: SuccessNotificationResponse,\n): OpenNotificationParams => {\n  return {\n    message: successNotification.message,\n    description: successNotification.description,\n    key: \"update-password-success\",\n    type: \"success\",\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport { type UseQueryResult, useQuery } from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { CheckResponse } from \"../../../contexts/auth/types\";\n\nexport type UseIsAuthenticatedLegacyProps = {\n  v3LegacyAuthProviderCompatible: true;\n  params?: any;\n};\n\nexport type UseIsAuthenticatedProps = {\n  v3LegacyAuthProviderCompatible?: false;\n  params?: any;\n};\n\nexport type UseIsAuthenticatedCombinedProps = {\n  v3LegacyAuthProviderCompatible: boolean;\n  params?: any;\n};\n\nexport type UseIsAuthenticatedLegacyReturnType = UseQueryResult<any, any>;\n\nexport type UseIsAuthenticatedReturnType = UseQueryResult<CheckResponse, any>;\n\nexport type UseIsAuthenticatedCombinedReturnType = UseQueryResult<\n  CheckResponse | any,\n  any\n>;\n\nexport function useIsAuthenticated(\n  props: UseIsAuthenticatedLegacyProps,\n): UseIsAuthenticatedLegacyReturnType;\n\nexport function useIsAuthenticated(\n  props?: UseIsAuthenticatedProps,\n): UseIsAuthenticatedReturnType;\n\nexport function useIsAuthenticated(\n  props?: UseIsAuthenticatedCombinedProps,\n): UseIsAuthenticatedCombinedReturnType;\n\n/**\n *  `useIsAuthenticated` calls the `checkAuth` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated} for more details.\n */\nexport function useIsAuthenticated({\n  v3LegacyAuthProviderCompatible = false,\n  params,\n}: UseIsAuthenticatedProps | UseIsAuthenticatedLegacyProps = {}):\n  | UseIsAuthenticatedReturnType\n  | UseIsAuthenticatedLegacyReturnType {\n  const { checkAuth } = useLegacyAuthContext();\n  const { check } = useAuthBindingsContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const queryResponse = useQuery({\n    queryKey: keys()\n      .auth()\n      .action(\"check\")\n      .params(params)\n      .get(preferLegacyKeys),\n    queryFn: async () => (await check?.(params)) ?? {},\n    retry: false,\n    enabled: !v3LegacyAuthProviderCompatible,\n    meta: {\n      ...getXRay(\"useIsAuthenticated\", preferLegacyKeys),\n    },\n  });\n\n  const legacyQueryResponse = useQuery({\n    queryKey: [\n      ...keys().auth().action(\"check\").params(params).get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    queryFn: async () => (await checkAuth?.(params)) ?? {},\n    retry: false,\n    enabled: v3LegacyAuthProviderCompatible,\n    meta: {\n      ...getXRay(\"useIsAuthenticated\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible ? legacyQueryResponse : queryResponse;\n}\n\n/**\n * @deprecated `useAuthenticated` is deprecated with refine@4, use `useIsAuthenticated` instead, however, we still support `useAuthenticated` for backward compatibility.\n */\nexport const useAuthenticated = useIsAuthenticated;\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport { type UseMutationResult, useMutation } from \"@tanstack/react-query\";\n\nimport { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\nimport { useGo, useLogout, useNavigation, useRouterType } from \"@hooks\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { OnErrorResponse } from \"../../../contexts/auth/types\";\n\nexport type UseOnErrorLegacyProps = {\n  v3LegacyAuthProviderCompatible: true;\n};\n\nexport type UseOnErrorProps = {\n  v3LegacyAuthProviderCompatible?: false;\n};\n\nexport type UseOnErrorCombinedProps = {\n  v3LegacyAuthProviderCompatible: boolean;\n};\n\nexport type UseOnErrorLegacyReturnType = UseMutationResult<\n  void,\n  string | undefined,\n  any,\n  unknown\n>;\n\nexport type UseOnErrorReturnType = UseMutationResult<\n  OnErrorResponse,\n  unknown,\n  unknown,\n  unknown\n>;\nexport type UseOnErrorCombinedReturnType = UseMutationResult<\n  OnErrorResponse | void,\n  unknown,\n  unknown,\n  unknown\n>;\n\nexport function useOnError(\n  props: UseOnErrorLegacyProps,\n): UseOnErrorLegacyReturnType;\n\nexport function useOnError(props?: UseOnErrorProps): UseOnErrorReturnType;\n\nexport function useOnError(\n  props?: UseOnErrorCombinedProps,\n): UseOnErrorCombinedReturnType;\n\n/**\n * `useOnError` calls the `checkError` method from the {@link https://refine.dev/docs/core/providers/auth-provider `authProvider`} under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/auth/useCheckError} for more details.\n *\n */\nexport function useOnError({\n  v3LegacyAuthProviderCompatible = false,\n}: UseOnErrorProps | UseOnErrorLegacyProps = {}):\n  | UseOnErrorReturnType\n  | UseOnErrorLegacyReturnType {\n  const routerType = useRouterType();\n  const go = useGo();\n  const { replace } = useNavigation();\n\n  const { checkError: legacyCheckErrorFromContext } = useLegacyAuthContext();\n  const { onError: onErrorFromContext } = useAuthBindingsContext();\n\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const { mutate: legacyLogout } = useLogout({\n    v3LegacyAuthProviderCompatible: Boolean(v3LegacyAuthProviderCompatible),\n  });\n  const { mutate: logout } = useLogout({\n    v3LegacyAuthProviderCompatible: Boolean(v3LegacyAuthProviderCompatible),\n  });\n\n  const mutation = useMutation<OnErrorResponse, unknown, unknown, unknown>({\n    mutationKey: keys().auth().action(\"onError\").get(preferLegacyKeys),\n    ...(onErrorFromContext\n      ? {\n          mutationFn: onErrorFromContext,\n          onSuccess: ({ logout: shouldLogout, redirectTo }) => {\n            if (shouldLogout) {\n              logout({ redirectPath: redirectTo });\n              return;\n            }\n\n            if (redirectTo) {\n              if (routerType === \"legacy\") {\n                replace(redirectTo);\n              } else {\n                go({ to: redirectTo, type: \"replace\" });\n              }\n              return;\n            }\n          },\n        }\n      : {\n          mutationFn: () => ({}) as Promise<OnErrorResponse>,\n        }),\n    meta: {\n      ...getXRay(\"useOnError\", preferLegacyKeys),\n    },\n  });\n\n  const v3LegacyAuthProviderCompatibleMutation = useMutation({\n    mutationKey: [\n      ...keys().auth().action(\"onError\").get(preferLegacyKeys),\n      \"v3LegacyAuthProviderCompatible\",\n    ],\n    mutationFn: legacyCheckErrorFromContext,\n    onError: (redirectPath?: string) => {\n      legacyLogout({ redirectPath });\n    },\n    meta: {\n      ...getXRay(\"useOnError\", preferLegacyKeys),\n    },\n  });\n\n  return v3LegacyAuthProviderCompatible\n    ? v3LegacyAuthProviderCompatibleMutation\n    : mutation;\n}\n\n/**\n * @deprecated `useCheckError` is deprecated with refine@4, use `useOnError` instead, however, we still support `useCheckError` for backward compatibility.\n */\nexport const useCheckError = useOnError;\n","import { useAuthBindingsContext, useLegacyAuthContext } from \"@contexts/auth\";\n\n/**\n * A hook that the UI uses\n * @internal\n */\nexport const useIsExistAuthentication = (): boolean => {\n  const { isProvided: legacyIsProvided } = useLegacyAuthContext();\n  const { isProvided } = useAuthBindingsContext();\n\n  return Boolean(isProvided || legacyIsProvided);\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  handlePaginationParams,\n  pickDataProvider,\n  pickNotDeprecated,\n  prepareQueryContext,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResource,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport interface UseListConfig {\n  pagination?: Pagination;\n  hasPagination?: boolean;\n  sort?: CrudSort[];\n  filters?: CrudFilter[];\n}\n\nexport type BaseListProps = {\n  /**\n   * Configuration for pagination, sorting and filtering\n   * @type [`UseListConfig`](/docs/api-reference/core/hooks/data/useList/#config-parameters)\n   * @deprecated `config` property is deprecated. Use `pagination`, `hasPagination`, `sorters` and `filters` instead.\n   */\n  config?: UseListConfig;\n  /**\n   * Pagination properties\n   */\n  pagination?: Pagination;\n  /**\n   * Whether to use server-side pagination or not\n   * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.\n   */\n  hasPagination?: boolean;\n  /**\n   * Sorter parameters\n   */\n  sorters?: CrudSort[];\n  /**\n   * Filter parameters\n   */\n  filters?: CrudFilter[];\n  /**\n   * Meta data query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * Meta data query for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use\n   */\n  dataProviderName?: string;\n};\n\nexport type UseListProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n\n  /**\n   * Tanstack Query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n   */\n  queryOptions?: UseQueryOptions<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >;\n} & BaseListProps &\n  SuccessErrorNotification<\n    GetListResponse<TData>,\n    TError,\n    Prettify<BaseListProps>\n  > &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\n/**\n * `useList` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for retrieving items from a `resource` with pagination, sort, and filter configurations.\n *\n * It uses the `getList` method as the query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useList = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  config,\n  filters,\n  hasPagination,\n  pagination,\n  sorters,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  metaData,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseListProps<TQueryFnData, TError, TData> = {}): QueryObserverResult<\n  GetListResponse<TData>,\n  TError\n> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResource(resourceFromProp);\n\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n  const preferredMeta = pickNotDeprecated(meta, metaData);\n  const prefferedFilters = pickNotDeprecated(filters, config?.filters);\n  const prefferedSorters = pickNotDeprecated(sorters, config?.sort);\n  const prefferedHasPagination = pickNotDeprecated(\n    hasPagination,\n    config?.hasPagination,\n  );\n  const prefferedPagination = handlePaginationParams({\n    pagination,\n    configPagination: config?.pagination,\n    hasPagination: prefferedHasPagination,\n  });\n  const isServerPagination = prefferedPagination.mode === \"server\";\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const notificationValues = {\n    meta: combinedMeta,\n    metaData: combinedMeta,\n    filters: prefferedFilters,\n    hasPagination: isServerPagination,\n    pagination: prefferedPagination,\n    sorters: prefferedSorters,\n    config: {\n      ...config,\n      sort: prefferedSorters,\n    },\n  };\n\n  const isEnabled =\n    queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n  const { getList } = dataProvider(pickedDataProvider);\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    params: {\n      meta: combinedMeta,\n      metaData: combinedMeta,\n      pagination: prefferedPagination,\n      hasPagination: isServerPagination,\n      sort: prefferedSorters,\n      sorters: prefferedSorters,\n      filters: prefferedFilters,\n      subscriptionType: \"useList\",\n      ...liveParams,\n    },\n    channel: `resources/${resource?.name}`,\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    dataProviderName: pickedDataProvider,\n    meta: {\n      ...meta,\n      dataProviderName,\n    },\n  });\n\n  const queryResponse = useQuery<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier ?? \"\")\n      .action(\"list\")\n      .params({\n        ...(preferredMeta || {}),\n        filters: prefferedFilters,\n        hasPagination: isServerPagination,\n        ...(isServerPagination && {\n          pagination: prefferedPagination,\n        }),\n        ...(sorters && {\n          sorters,\n        }),\n        ...(config?.sort && {\n          sort: config?.sort,\n        }),\n      })\n      .get(preferLegacyKeys),\n    queryFn: (context) => {\n      const meta = {\n        ...combinedMeta,\n        queryContext: prepareQueryContext(context),\n      };\n      return getList<TQueryFnData>({\n        resource: resource?.name ?? \"\",\n        pagination: prefferedPagination,\n        hasPagination: isServerPagination,\n        filters: prefferedFilters,\n        sort: prefferedSorters,\n        sorters: prefferedSorters,\n        meta,\n        metaData: meta,\n      });\n    },\n    ...queryOptions,\n    enabled:\n      typeof queryOptions?.enabled !== \"undefined\"\n        ? queryOptions?.enabled\n        : !!resource?.name,\n    select: (rawData) => {\n      let data = rawData;\n\n      const { current, mode, pageSize } = prefferedPagination;\n\n      if (mode === \"client\") {\n        data = {\n          ...data,\n          data: data.data.slice((current - 1) * pageSize, current * pageSize),\n          total: data.total,\n        };\n      }\n\n      if (queryOptions?.select) {\n        return queryOptions?.select?.(data);\n      }\n\n      return data as unknown as GetListResponse<TData>;\n    },\n    onSuccess: (data) => {\n      queryOptions?.onSuccess?.(data);\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, notificationValues, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    },\n    onError: (err: TError) => {\n      checkError(err);\n      queryOptions?.onError?.(err);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(err, notificationValues, identifier)\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${identifier}-useList-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: err.statusCode },\n          `Error (status code: ${err.statusCode})`,\n        ),\n        description: err.message,\n        type: \"error\",\n      });\n    },\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useList\", preferLegacyKeys, resource?.name),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import { useEffect, useState } from \"react\";\nimport { useRefineContext } from \"..\";\n\nexport type UseLoadingOvertimeRefineContext = Omit<\n  UseLoadingOvertimeCoreProps,\n  \"isLoading\" | \"interval\"\n> &\n  Required<Pick<UseLoadingOvertimeCoreProps, \"interval\">>;\n\nexport type UseLoadingOvertimeOptionsProps = {\n  overtimeOptions?: UseLoadingOvertimeCoreOptions;\n};\n\nexport type UseLoadingOvertimeReturnType = {\n  overtime: {\n    elapsedTime?: number;\n  };\n};\n\ntype UseLoadingOvertimeCoreOptions = Omit<\n  UseLoadingOvertimeCoreProps,\n  \"isLoading\"\n>;\n\ntype UseLoadingOvertimeCoreReturnType = {\n  elapsedTime?: number;\n};\n\nexport type UseLoadingOvertimeCoreProps = {\n  /**\n   * If true, the elapsed time will be calculated. If set to false; the elapsed time will be `undefined`.\n   *\n   * @default: true\n   */\n  enabled?: boolean;\n\n  /**\n   * The loading state. If true, the elapsed time will be calculated.\n   */\n  isLoading: boolean;\n\n  /**\n   * The interval in milliseconds. If the loading time exceeds this time, the `onInterval` callback will be called.\n   * If not specified, the `interval` value from the `overtime` option of the `RefineProvider` will be used.\n   *\n   * @default: 1000 (1 second)\n   */\n  interval?: number;\n\n  /**\n   * The callback function that will be called when the loading time exceeds the specified time.\n   * If not specified, the `onInterval` value from the `overtime` option of the `RefineProvider` will be used.\n   *\n   * @param elapsedInterval The elapsed time in milliseconds.\n   */\n  onInterval?: (elapsedInterval: number) => void;\n};\n\n/**\n * if you need to do something when the loading time exceeds the specified time, refine provides the `useLoadingOvertime` hook.\n * It returns the elapsed time in milliseconds.\n *\n * @example\n * const { elapsedTime } = useLoadingOvertime({\n *    isLoading,\n *    interval: 1000,\n *    onInterval(elapsedInterval) {\n *        console.log(\"loading overtime\", elapsedInterval);\n *    },\n * });\n */\nexport const useLoadingOvertime = ({\n  enabled: enabledProp,\n  isLoading,\n  interval: intervalProp,\n  onInterval: onIntervalProp,\n}: UseLoadingOvertimeCoreProps): UseLoadingOvertimeCoreReturnType => {\n  const [elapsedTime, setElapsedTime] = useState<number | undefined>(undefined);\n  // get overtime options from refine context\n  const { options } = useRefineContext();\n  const { overtime } = options;\n\n  // pick props or refine context options\n  const interval = intervalProp ?? overtime.interval;\n  const onInterval = onIntervalProp ?? overtime?.onInterval;\n  const enabled =\n    typeof enabledProp !== \"undefined\"\n      ? enabledProp\n      : typeof overtime.enabled !== \"undefined\"\n        ? overtime.enabled\n        : true;\n\n  useEffect(() => {\n    let intervalFn: ReturnType<typeof setInterval>;\n\n    if (enabled && isLoading) {\n      intervalFn = setInterval(() => {\n        // increase elapsed time\n        setElapsedTime((prevElapsedTime) => {\n          if (prevElapsedTime === undefined) {\n            return interval;\n          }\n\n          return prevElapsedTime + interval;\n        });\n      }, interval);\n    }\n\n    return () => {\n      if (typeof intervalFn !== \"undefined\") {\n        clearInterval(intervalFn);\n      }\n      // reset elapsed time\n      setElapsedTime(undefined);\n    };\n  }, [isLoading, interval, enabled]);\n\n  useEffect(() => {\n    // call onInterval callback\n    if (onInterval && elapsedTime) {\n      onInterval(elapsedTime);\n    }\n  }, [elapsedTime]);\n\n  return {\n    elapsedTime,\n  };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  pickDataProvider,\n  pickNotDeprecated,\n  prepareQueryContext,\n  useActiveAuthProvider,\n} from \"@definitions\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResource,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetOneResponse,\n  HttpError,\n  MetaQuery,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type UseOneProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * id of the item in the resource\n   * @type [`BaseKey`](/docs/api-reference/core/interfaceReferences/#basekey)\n   */\n  id?: BaseKey;\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n   */\n  queryOptions?: UseQueryOptions<\n    GetOneResponse<TQueryFnData>,\n    TError,\n    GetOneResponse<TData>\n  >;\n  /**\n   * Metadata query for `dataProvider`,\n   */\n  meta?: MetaQuery;\n  /**\n   * Meta data query for `dataProvider`,\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default `\"default\"``\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  GetOneResponse<TData>,\n  TError,\n  Prettify<{ id?: BaseKey } & MetaQuery>\n> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\n/**\n * `useOne` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for retrieving single items from a `resource`.\n *\n * It uses `getOne` method as query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useOne} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useOne = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  id,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  metaData,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseOneProps<TQueryFnData, TError, TData>): QueryObserverResult<\n  GetOneResponse<TData>,\n  TError\n> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResource(resourceFromProp);\n\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const preferredMeta = pickNotDeprecated(meta, metaData);\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n\n  const { getOne } = dataProvider(pickedDataProvider);\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    channel: `resources/${resource?.name}`,\n    params: {\n      ids: id ? [id] : [],\n      id: id,\n      meta: combinedMeta,\n      metaData: combinedMeta,\n      subscriptionType: \"useOne\",\n      ...liveParams,\n    },\n    enabled:\n      typeof queryOptions?.enabled !== \"undefined\"\n        ? queryOptions?.enabled\n        : typeof resource?.name !== \"undefined\" && typeof id !== \"undefined\",\n    liveMode,\n    onLiveEvent,\n    dataProviderName: pickedDataProvider,\n    meta: {\n      ...meta,\n      dataProviderName,\n    },\n  });\n\n  const queryResponse = useQuery<\n    GetOneResponse<TQueryFnData>,\n    TError,\n    GetOneResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier ?? \"\")\n      .action(\"one\")\n      .id(id ?? \"\")\n      .params({\n        ...(preferredMeta || {}),\n      })\n      .get(preferLegacyKeys),\n    queryFn: (context) =>\n      getOne<TQueryFnData>({\n        resource: resource?.name ?? \"\",\n        id: id!,\n        meta: {\n          ...combinedMeta,\n          queryContext: prepareQueryContext(context),\n        },\n        metaData: {\n          ...combinedMeta,\n          queryContext: prepareQueryContext(context),\n        },\n      }),\n    ...queryOptions,\n    enabled:\n      typeof queryOptions?.enabled !== \"undefined\"\n        ? queryOptions?.enabled\n        : typeof id !== \"undefined\",\n    onSuccess: (data) => {\n      queryOptions?.onSuccess?.(data);\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(\n              data,\n              {\n                id,\n                ...combinedMeta,\n              },\n              identifier,\n            )\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    },\n    onError: (err: TError) => {\n      checkError(err);\n      queryOptions?.onError?.(err);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(\n              err,\n              {\n                id,\n                ...combinedMeta,\n              },\n              identifier,\n            )\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${id}-${identifier}-getOne-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: err.statusCode },\n          `Error (status code: ${err.statusCode})`,\n        ),\n        description: err.message,\n        type: \"error\",\n      });\n    },\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useOne\", preferLegacyKeys, resource?.name),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  handleMultiple,\n  pickDataProvider,\n  pickNotDeprecated,\n  prepareQueryContext,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResource,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetManyResponse,\n  HttpError,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\nimport warnOnce from \"warn-once\";\n\nexport type UseManyProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * ids of the item in the resource\n   * @type [`BaseKey[]`](/docs/api-reference/core/interfaceReferences/#basekey)\n   */\n  ids: BaseKey[];\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n   */\n  queryOptions?: UseQueryOptions<\n    GetManyResponse<TQueryFnData>,\n    TError,\n    GetManyResponse<TData>\n  >;\n  /**\n   * Metadata query for `dataProvider`,\n   */\n  meta?: MetaQuery;\n  /**\n   * Metadata query for `dataProvider`,\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<GetManyResponse<TData>, TError, BaseKey[]> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\n/**\n * `useMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for retrieving multiple items from a `resource`.\n *\n * It uses `getMany` method as query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useMany} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useMany = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  ids,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  metaData,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseManyProps<TQueryFnData, TError, TData>): QueryObserverResult<\n  GetManyResponse<TData>,\n  TError\n> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResource(resourceFromProp);\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const preferredMeta = pickNotDeprecated(meta, metaData);\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n  const isEnabled =\n    queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n  const { getMany, getOne } = dataProvider(pickedDataProvider);\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const hasIds = Array.isArray(ids);\n  const hasResource = Boolean(resource?.name);\n  const manuallyEnabled = queryOptions?.enabled === true;\n\n  warnOnce(!hasIds && !manuallyEnabled, idsWarningMessage(ids, resource?.name));\n  warnOnce(!hasResource && !manuallyEnabled, resourceWarningMessage());\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    params: {\n      ids: ids ?? [],\n      meta: combinedMeta,\n      metaData: combinedMeta,\n      subscriptionType: \"useMany\",\n      ...liveParams,\n    },\n    channel: `resources/${resource?.name ?? \"\"}`,\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    dataProviderName: pickedDataProvider,\n    meta: {\n      ...meta,\n      dataProviderName,\n    },\n  });\n\n  const queryResponse = useQuery<\n    GetManyResponse<TQueryFnData>,\n    TError,\n    GetManyResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier)\n      .action(\"many\")\n      .ids(...(ids ?? []))\n      .params({\n        ...(preferredMeta || {}),\n      })\n      .get(preferLegacyKeys),\n    queryFn: (context) => {\n      const meta = {\n        ...combinedMeta,\n        queryContext: prepareQueryContext(context),\n      };\n\n      if (getMany) {\n        return getMany({\n          resource: resource?.name,\n          ids,\n          meta,\n          metaData: meta,\n        });\n      }\n      return handleMultiple(\n        ids.map((id) =>\n          getOne<TQueryFnData>({\n            resource: resource?.name,\n            id,\n            meta,\n            metaData: meta,\n          }),\n        ),\n      );\n    },\n    enabled: hasIds && hasResource,\n    ...queryOptions,\n    onSuccess: (data) => {\n      queryOptions?.onSuccess?.(data);\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, ids, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    },\n    onError: (err: TError) => {\n      checkError(err);\n      queryOptions?.onError?.(err);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(err, ids, identifier)\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${ids[0]}-${identifier}-getMany-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: err.statusCode },\n          `Error (status code: ${err.statusCode})`,\n        ),\n        description: err.message,\n        type: \"error\",\n      });\n    },\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useMany\", preferLegacyKeys, resource?.name),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return { ...queryResponse, overtime: { elapsedTime } };\n};\n\nconst idsWarningMessage = (\n  ids: BaseKey[],\n  resource: string,\n) => `[useMany]: Missing \"ids\" prop. Expected an array of ids, but got \"${typeof ids}\". Resource: \"${resource}\"\n\nSee https://refine.dev/docs/data/hooks/use-many/#ids-`;\n\nconst resourceWarningMessage = () => `[useMany]: Missing \"resource\" prop. Expected a string, but got undefined.\n\nSee https://refine.dev/docs/data/hooks/use-many/#resource-`;\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport {\n  pickDataProvider,\n  pickNotDeprecated,\n  queryKeysReplacement,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResource,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetListResponse,\n  GetManyResponse,\n  GetOneResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as UpdateContext,\n  PreviousQuery,\n  UpdateResponse,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type OptimisticUpdateMapType<TData, TVariables> = {\n  list?:\n    | ((\n        previous: GetListResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetListResponse<TData> | null)\n    | boolean;\n  many?:\n    | ((\n        previous: GetManyResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetManyResponse<TData> | null)\n    | boolean;\n  detail?:\n    | ((\n        previous: GetOneResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetOneResponse<TData> | null)\n    | boolean;\n};\n\nexport type UpdateParams<TData, TError, TVariables> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * id for mutation function\n   */\n  id?: BaseKey;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n   * Metadata query for dataProvider\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * You can use it to customize the optimistic update logic.\n   * @default {\n   *   list: true,\n   *   many: true,\n   *   detail: true,\n   * }\n   */\n  optimisticUpdateMap?: OptimisticUpdateMapType<TData, TVariables>;\n} & SuccessErrorNotification<\n  UpdateResponse<TData>,\n  TError,\n  { id: BaseKey; values: TVariables }\n>;\n\nexport type UseUpdateReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  UpdateResponse<TData>,\n  TError,\n  UpdateParams<TData, TError, TVariables>,\n  UpdateContext<TData>\n> &\n  UseLoadingOvertimeReturnType;\n\nexport type UseUpdateProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      UpdateResponse<TData>,\n      TError,\n      UpdateParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n    \"mutationFn\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UpdateParams<TData, TError, TVariables>;\n\n/**\n * `useUpdate` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for update mutations.\n *\n * It uses `update` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useUpdate} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useUpdate = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  id: idFromProps,\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  meta: metaFromProps,\n  metaData: metaDataFromProps,\n  mutationMode: mutationModeFromProps,\n  undoableTimeout: undoableTimeoutFromProps,\n  onCancel: onCancelFromProps,\n  optimisticUpdateMap: optimisticUpdateMapFromProps,\n  invalidates: invalidatesFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseUpdateProps<TData, TError, TVariables> = {}): UseUpdateReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const { resources, select } = useResource();\n  const queryClient = useQueryClient();\n  const dataProvider = useDataProvider();\n\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n  const translate = useTranslate();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const publish = usePublish();\n  const { log } = useLog();\n  const { notificationDispatch } = useCancelNotification();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutationResult = useMutation<\n    UpdateResponse<TData>,\n    TError,\n    UpdateParams<TData, TError, TVariables>,\n    UpdateContext<TData>\n  >({\n    mutationFn: ({\n      id = idFromProps,\n      values = valuesFromProps,\n      resource: resourceName = resourceFromProps,\n      mutationMode = mutationModeFromProps,\n      undoableTimeout = undoableTimeoutFromProps,\n      onCancel = onCancelFromProps,\n      meta = metaFromProps,\n      metaData = metaDataFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }) => {\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return dataProvider(\n          pickDataProvider(identifier, dataProviderName, resources),\n        ).update<TData, TVariables>({\n          resource: resource.name,\n          id,\n          variables: values,\n          meta: combinedMeta,\n          metaData: combinedMeta,\n        });\n      }\n      const updatePromise = new Promise<UpdateResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            dataProvider(\n              pickDataProvider(identifier, dataProviderName, resources),\n            )\n              .update<TData, TVariables>({\n                resource: resource.name,\n                id,\n                variables: values,\n                meta: combinedMeta,\n                metaData: combinedMeta,\n              })\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id: id,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return updatePromise;\n    },\n    onMutate: async ({\n      resource: resourceName = resourceFromProps,\n      id = idFromProps,\n      mutationMode = mutationModeFromProps,\n      values = valuesFromProps,\n      dataProviderName = dataProviderNameFromProps,\n      meta = metaFromProps,\n      metaData = metaDataFromProps,\n      optimisticUpdateMap = optimisticUpdateMapFromProps ?? {\n        list: true,\n        many: true,\n        detail: true,\n      },\n    }) => {\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      const {\n        gqlMutation: _,\n        gqlQuery: __,\n        ...preferredMeta\n      } = pickNotDeprecated(meta, metaData) ?? {};\n\n      const queryKey = queryKeysReplacement(preferLegacyKeys)(\n        identifier,\n        pickDataProvider(identifier, dataProviderName, resources),\n        preferredMeta,\n      );\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const previousQueries: PreviousQuery<TData>[] =\n        queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries(\n        resourceKeys.get(preferLegacyKeys),\n        undefined,\n        {\n          silent: true,\n        },\n      );\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        if (optimisticUpdateMap.list) {\n          // Set the previous queries to the new ones:\n          queryClient.setQueriesData(\n            resourceKeys\n              .action(\"list\")\n              .params(preferredMeta ?? {})\n              .get(preferLegacyKeys),\n            (previous?: GetListResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.list === \"function\") {\n                return optimisticUpdateMap.list(previous, values, id);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (record.id?.toString() === id?.toString()) {\n                  return {\n                    id,\n                    ...record,\n                    ...values,\n                  } as unknown as TData;\n                }\n                return record;\n              });\n\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.many) {\n          queryClient.setQueriesData(\n            resourceKeys.action(\"many\").get(preferLegacyKeys),\n            (previous?: GetManyResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.many === \"function\") {\n                return optimisticUpdateMap.many(previous, values, id);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (record.id?.toString() === id?.toString()) {\n                  record = {\n                    id,\n                    ...record,\n                    ...values,\n                  } as unknown as TData;\n                }\n                return record;\n              });\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.detail) {\n          queryClient.setQueriesData(\n            resourceKeys\n              .action(\"one\")\n              .id(id)\n              .params(preferredMeta ?? {})\n              .get(preferLegacyKeys),\n            (previous?: GetOneResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.detail === \"function\") {\n                return optimisticUpdateMap.detail(previous, values, id);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              return {\n                ...previous,\n                data: {\n                  ...previous.data,\n                  ...values,\n                },\n              };\n            },\n          );\n        }\n      }\n\n      return {\n        previousQueries,\n        queryKey,\n      };\n    },\n    onSettled: (data, error, variables, context) => {\n      const {\n        id = idFromProps,\n        resource: resourceName = resourceFromProps,\n        dataProviderName = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps ?? [\"list\", \"many\", \"detail\"],\n      } = variables;\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      invalidateStore({\n        resource: identifier,\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n        invalidates,\n        id,\n      });\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id, resource: identifier },\n      });\n\n      mutationOptions?.onSettled?.(data, error, variables, context);\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        id = idFromProps,\n        resource: resourceName = resourceFromProps,\n        successNotification = successNotificationFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        values = valuesFromProps,\n        meta = metaFromProps,\n        metaData = metaDataFromProps,\n      } = variables;\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, { id, values }, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${id}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Successful\"),\n        message: translate(\n          \"notifications.editSuccess\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n          },\n          `Successfully updated ${resourceSingular}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"updated\",\n        payload: {\n          ids: data.data?.id ? [data.data.id] : undefined,\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      let previousData: any;\n      if (context) {\n        const queryData = queryClient.getQueryData<UpdateResponse<TData>>(\n          context.queryKey.detail(id),\n        );\n\n        previousData = Object.keys(values || {}).reduce<any>((acc, item) => {\n          acc[item] = queryData?.data?.[item];\n          return acc;\n        }, {});\n      }\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"update\",\n        resource: resource.name,\n        data: values,\n        previousData,\n        meta: {\n          id,\n          dataProviderName,\n          ...rest,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        id = idFromProps,\n        resource: resourceName = resourceFromProps,\n        errorNotification = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (typeof id === \"undefined\") throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError?.(err);\n\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, { id, values }, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${id}-${identifier}-notification`,\n          message: translate(\n            \"notifications.editError\",\n            {\n              resource: translate(\n                `${identifier}.${identifier}`,\n                resourceSingular,\n              ),\n              statusCode: err.statusCode,\n            },\n            `Error when updating ${resourceSingular} (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"update\").get(preferLegacyKeys),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useUpdate\", preferLegacyKeys),\n    },\n  });\n  const { mutate, mutateAsync, ...mutation } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UpdateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateResponse<TData>,\n      TError,\n      UpdateParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UpdateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateResponse<TData>,\n      TError,\n      UpdateParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    ...mutation,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useUpdate]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingIdError = new Error(\n  \"[useUpdate]: `id` is not defined but is required in edit and clone actions\",\n);\n\nconst missingValuesError = new Error(\n  \"[useUpdate]: `values` is not provided but is required\",\n);\n","import type { BaseKey } from \"../data/types\";\n\nexport enum ActionTypes {\n  ADD = \"ADD\",\n  REMOVE = \"REMOVE\",\n  DECREASE_NOTIFICATION_SECOND = \"DECREASE_NOTIFICATION_SECOND\",\n}\n\nexport interface IUndoableQueue {\n  id: BaseKey;\n  resource: string;\n  cancelMutation: () => void;\n  doMutation: () => void;\n  seconds: number;\n  isRunning: boolean;\n  isSilent: boolean;\n}\n\nexport interface IUndoableQueueContext {\n  notifications: IUndoableQueue[];\n  notificationDispatch: React.Dispatch<any>;\n}\n","import {\n  pickDataProvider,\n  pickNotDeprecated,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResource,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CreateResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type UseCreateParams<TData, TError, TVariables> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n  /**\n   * Meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * Meta data for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n  /**\n   * You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n} & SuccessErrorNotification<CreateResponse<TData>, TError, TVariables>;\n\nexport type UseCreateReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  CreateResponse<TData>,\n  TError,\n  UseCreateParams<TData, TError, TVariables>,\n  unknown\n>;\n\nexport type UseCreateProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      CreateResponse<TData>,\n      TError,\n      UseCreateParams<TData, TError, TVariables>,\n      unknown\n    >,\n    \"mutationFn\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UseCreateParams<TData, TError, TVariables>;\n\n/**\n * `useCreate` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for create mutations.\n *\n * It uses `create` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCreate} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\n\nexport const useCreate = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  invalidates: invalidatesFromProps,\n  meta: metaFromProps,\n  metaData: metaDataFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseCreateProps<TData, TError, TVariables> = {}): UseCreateReturnType<\n  TData,\n  TError,\n  TVariables\n> &\n  UseLoadingOvertimeReturnType => {\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const dataProvider = useDataProvider();\n  const invalidateStore = useInvalidate();\n  const { resources, select } = useResource();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const { log } = useLog();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutationResult = useMutation<\n    CreateResponse<TData>,\n    TError,\n    UseCreateParams<TData, TError, TVariables>,\n    unknown\n  >({\n    mutationFn: ({\n      resource: resourceName = resourceFromProps,\n      values = valuesFromProps,\n      meta = metaFromProps,\n      metaData = metaDataFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }: UseCreateParams<TData, TError, TVariables>) => {\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      return dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      ).create<TData, TVariables>({\n        resource: resource.name,\n        variables: values,\n        meta: combinedMeta,\n        metaData: combinedMeta,\n      });\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        successNotification:\n          successNotificationFromProp = successNotificationFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps ?? [\"list\", \"many\"],\n        values = valuesFromProps,\n        meta = metaFromProps,\n        metaData = metaDataFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const notificationConfig =\n        typeof successNotificationFromProp === \"function\"\n          ? successNotificationFromProp(data, values, identifier)\n          : successNotificationFromProp;\n\n      handleNotification(notificationConfig, {\n        key: `create-${identifier}-notification`,\n        message: translate(\n          \"notifications.createSuccess\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n          },\n          `Successfully created ${resourceSingular}`,\n        ),\n        description: translate(\"notifications.success\", \"Success\"),\n        type: \"success\",\n      });\n\n      invalidateStore({\n        resource: identifier,\n        dataProviderName,\n        invalidates,\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"created\",\n        payload: {\n          ids: data?.data?.id ? [data.data.id] : undefined,\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"create\",\n        resource: resource.name,\n        data: values,\n        meta: {\n          dataProviderName,\n          id: data?.data?.id ?? undefined,\n          ...rest,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        errorNotification:\n          errorNotificationFromProp = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      checkError(err);\n\n      const { identifier } = select(resourceName);\n\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const notificationConfig =\n        typeof errorNotificationFromProp === \"function\"\n          ? errorNotificationFromProp(err, values, identifier)\n          : errorNotificationFromProp;\n\n      handleNotification(notificationConfig, {\n        key: `create-${identifier}-notification`,\n        description: err.message,\n        message: translate(\n          \"notifications.createError\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n            statusCode: err.statusCode,\n          },\n          `There was an error creating ${resourceSingular} (status code: ${err.statusCode})`,\n        ),\n        type: \"error\",\n      });\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"create\").get(preferLegacyKeys),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useCreate\", preferLegacyKeys),\n    },\n  });\n  const { mutate, mutateAsync, ...mutation } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UseCreateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateResponse<TData>,\n      TError,\n      UseCreateParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UseCreateParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateResponse<TData>,\n      TError,\n      UseCreateParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    ...mutation,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useCreate]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingValuesError = new Error(\n  \"[useCreate]: `values` is not provided but is required\",\n);\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport {\n  pickDataProvider,\n  pickNotDeprecated,\n  queryKeysReplacement,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResource,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  DeleteOneResponse,\n  GetListResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as DeleteContext,\n  PreviousQuery,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type DeleteParams<TData, TError, TVariables> = {\n  /**\n   * id for mutation function\n   */\n  id: BaseKey;\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n} & SuccessErrorNotification<DeleteOneResponse<TData>, TError, BaseKey>;\n\nexport type UseDeleteReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  DeleteOneResponse<TData>,\n  TError,\n  DeleteParams<TData, TError, TVariables>,\n  DeleteContext<TData>\n> &\n  UseLoadingOvertimeReturnType;\n\nexport type UseDeleteProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      DeleteOneResponse<TData>,\n      TError,\n      DeleteParams<TData, TError, TVariables>,\n      DeleteContext<TData>\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useDelete` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for delete mutations.\n *\n * It uses `deleteOne` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useDelete} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n */\nexport const useDelete = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  mutationOptions,\n  overtimeOptions,\n}: UseDeleteProps<TData, TError, TVariables> = {}): UseDeleteReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const dataProvider = useDataProvider();\n\n  const { resources, select } = useResource();\n  const queryClient = useQueryClient();\n\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n\n  const { notificationDispatch } = useCancelNotification();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const { log } = useLog();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutation = useMutation<\n    DeleteOneResponse<TData>,\n    TError,\n    DeleteParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >({\n    mutationFn: ({\n      id,\n      mutationMode,\n      undoableTimeout,\n      resource: resourceName,\n      onCancel,\n      meta,\n      metaData,\n      dataProviderName,\n      values,\n    }) => {\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return dataProvider(\n          pickDataProvider(identifier, dataProviderName, resources),\n        ).deleteOne<TData, TVariables>({\n          resource: resource.name,\n          id,\n          meta: combinedMeta,\n          metaData: combinedMeta,\n          variables: values,\n        });\n      }\n\n      const deletePromise = new Promise<DeleteOneResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            dataProvider(\n              pickDataProvider(identifier, dataProviderName, resources),\n            )\n              .deleteOne<TData, TVariables>({\n                resource: resource.name,\n                id,\n                meta: combinedMeta,\n                metaData: combinedMeta,\n                variables: values,\n              })\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return deletePromise;\n    },\n    onMutate: async ({\n      id,\n      resource: resourceName,\n      mutationMode,\n      dataProviderName,\n      meta,\n      metaData,\n    }) => {\n      const { identifier } = select(resourceName);\n\n      const {\n        gqlMutation: _,\n        gqlQuery: __,\n        ...preferredMeta\n      } = pickNotDeprecated(meta, metaData) ?? {};\n\n      const queryKey = queryKeysReplacement(preferLegacyKeys)(\n        identifier,\n        pickDataProvider(identifier, dataProviderName, resources),\n        preferredMeta,\n      );\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries(\n        resourceKeys.get(preferLegacyKeys),\n        undefined,\n        {\n          silent: true,\n        },\n      );\n\n      const previousQueries: PreviousQuery<TData>[] =\n        queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        // Set the previous queries to the new ones:\n        queryClient.setQueriesData(\n          resourceKeys\n            .action(\"list\")\n            .params(preferredMeta ?? {})\n            .get(preferLegacyKeys),\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n            const data = previous.data.filter(\n              (record: TData) => record.id?.toString() !== id.toString(),\n            );\n\n            return {\n              data,\n              total: previous.total - 1,\n            };\n          },\n        );\n\n        queryClient.setQueriesData(\n          resourceKeys.action(\"many\").get(preferLegacyKeys),\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n            const data = previous.data.filter((record: TData) => {\n              return record.id?.toString() !== id?.toString();\n            });\n\n            return {\n              ...previous,\n              data,\n            };\n          },\n        );\n      }\n\n      return {\n        previousQueries,\n        queryKey,\n      };\n    },\n    onSettled: (\n      _data,\n      _error,\n      {\n        id,\n        resource: resourceName,\n        dataProviderName,\n        invalidates = [\"list\", \"many\"],\n      },\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // invalidate the cache for the list and many queries:\n      invalidateStore({\n        resource: identifier,\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n        invalidates,\n      });\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id, resource: identifier },\n      });\n    },\n    onSuccess: (\n      _data,\n      {\n        id,\n        resource: resourceName,\n        successNotification,\n        dataProviderName: dataProviderNameFromProp,\n        meta,\n        metaData,\n      },\n      context,\n    ) => {\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      // Remove the queries from the cache:\n      queryClient.removeQueries(context?.queryKey.detail(id));\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(_data, id, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${id}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Success\"),\n        message: translate(\n          \"notifications.deleteSuccess\",\n          {\n            resource: translate(\n              `${identifier}.${identifier}`,\n              resourceSingular,\n            ),\n          },\n          `Successfully deleted a ${resourceSingular}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"deleted\",\n        payload: {\n          ids: [id],\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"delete\",\n        resource: resource.name,\n        meta: {\n          id,\n          dataProviderName,\n          ...rest,\n        },\n      });\n\n      // Remove the queries from the cache:\n      queryClient.removeQueries(context?.queryKey.detail(id));\n    },\n    onError: (\n      err: TError,\n      { id, resource: resourceName, errorNotification },\n      context,\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError(err);\n\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, id, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${id}-${identifier}-notification`,\n          message: translate(\n            \"notifications.deleteError\",\n            {\n              resource: resourceSingular,\n              statusCode: err.statusCode,\n            },\n            `Error (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n    },\n    mutationKey: keys().data().mutation(\"delete\").get(preferLegacyKeys),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useDelete\", preferLegacyKeys),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  return { ...mutation, overtime: { elapsedTime } };\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport {\n  handleMultiple,\n  pickDataProvider,\n  pickNotDeprecated,\n} from \"@definitions\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  usePublish,\n  useRefineContext,\n  useResource,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CreateManyResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type UseCreateManyParams<TData, TError, TVariables> = {\n  resource?: string;\n  values?: TVariables[];\n  meta?: MetaQuery;\n  metaData?: MetaQuery;\n  dataProviderName?: string;\n  invalidates?: Array<keyof IQueryKeys>;\n} & SuccessErrorNotification<CreateManyResponse<TData>, TError, TVariables[]>;\n\nexport type UseCreateManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  CreateManyResponse<TData>,\n  TError,\n  UseCreateManyParams<TData, TError, TVariables>,\n  unknown\n>;\n\nexport type UseCreateManyProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      CreateManyResponse<TData>,\n      TError,\n      UseCreateManyParams<TData, TError, TVariables>\n    >,\n    \"mutationFn\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UseCreateManyParams<TData, TError, TVariables>;\n\n/**\n * `useCreateMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for multiple create mutations.\n *\n * It uses `createMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCreateMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useCreateMany = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  meta: metaFromProps,\n  metaData: metaDataFromProps,\n  invalidates: invalidatesFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseCreateManyProps<TData, TError, TVariables> = {}): UseCreateManyReturnType<\n  TData,\n  TError,\n  TVariables\n> &\n  UseLoadingOvertimeReturnType => {\n  const dataProvider = useDataProvider();\n  const { resources, select } = useResource();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const { log } = useLog();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutationResult = useMutation<\n    CreateManyResponse<TData>,\n    TError,\n    UseCreateManyParams<TData, TError, TVariables>\n  >({\n    mutationFn: ({\n      resource: resourceName = resourceFromProps,\n      values = valuesFromProps,\n      meta = metaFromProps,\n      metaData = metaDataFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }: UseCreateManyParams<TData, TError, TVariables>) => {\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const selectedDataProvider = dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      );\n\n      if (selectedDataProvider.createMany) {\n        return selectedDataProvider.createMany<TData, TVariables>({\n          resource: resource.name,\n          variables: values,\n          meta: combinedMeta,\n          metaData: combinedMeta,\n        });\n      }\n      return handleMultiple(\n        values.map((val) =>\n          selectedDataProvider.create<TData, TVariables>({\n            resource: resource.name,\n            variables: val,\n            meta: combinedMeta,\n            metaData: combinedMeta,\n          }),\n        ),\n      );\n    },\n    onSuccess: (response, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        successNotification = successNotificationFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps ?? [\"list\", \"many\"],\n        values = valuesFromProps,\n        meta = metaFromProps,\n        metaData = metaDataFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourcePlural = textTransformers.plural(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(response, values, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `createMany-${identifier}-notification`,\n        message: translate(\n          \"notifications.createSuccess\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n          },\n          `Successfully created ${resourcePlural}`,\n        ),\n        description: translate(\"notifications.success\", \"Success\"),\n        type: \"success\",\n      });\n\n      invalidateStore({\n        resource: identifier,\n        dataProviderName,\n        invalidates,\n      });\n\n      const ids = response?.data\n        .filter((item) => item?.id !== undefined)\n        .map((item) => item.id!);\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"created\",\n        payload: {\n          ids,\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"createMany\",\n        resource: resource.name,\n        data: values,\n        meta: {\n          dataProviderName,\n          ids,\n          ...rest,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(response, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        resource: resourceName = resourceFromProps,\n        errorNotification = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(err, values, identifier)\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `createMany-${identifier}-notification`,\n        description: err.message,\n        message: translate(\n          \"notifications.createError\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n            statusCode: err.statusCode,\n          },\n          `There was an error creating ${identifier} (status code: ${err.statusCode}`,\n        ),\n        type: \"error\",\n      });\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"createMany\").get(preferLegacyKeys),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useCreateMany\", preferLegacyKeys),\n    },\n  });\n  const { mutate, mutateAsync, ...mutation } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UseCreateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateManyResponse<TData>,\n      TError,\n      UseCreateManyParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UseCreateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      CreateManyResponse<TData>,\n      TError,\n      UseCreateManyParams<TData, TError, TVariables>,\n      unknown\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    ...mutation,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useCreateMany]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingValuesError = new Error(\n  \"[useCreateMany]: `values` is not provided but is required\",\n);\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type MutateOptions,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport {\n  handleMultiple,\n  pickDataProvider,\n  pickNotDeprecated,\n  queryKeysReplacement,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResource,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  GetListResponse,\n  GetManyResponse,\n  GetOneResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as UpdateContext,\n  QueryResponse,\n  UpdateManyResponse,\n} from \"../../contexts/data/types\";\nimport type { UseMutationResult } from \"../../definitions/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\n\nexport type OptimisticUpdateManyMapType<TData, TVariables> = {\n  list?:\n    | ((\n        previous: GetListResponse<TData> | null | undefined,\n        values: TVariables,\n        ids: BaseKey[],\n      ) => GetListResponse<TData> | null)\n    | boolean;\n  many?:\n    | ((\n        previous: GetManyResponse<TData> | null | undefined,\n        values: TVariables,\n        ids: BaseKey[],\n      ) => GetManyResponse<TData> | null)\n    | boolean;\n  detail?:\n    | ((\n        previous: GetOneResponse<TData> | null | undefined,\n        values: TVariables,\n        id: BaseKey,\n      ) => GetOneResponse<TData> | null)\n    | boolean;\n};\n\nexport type UpdateManyParams<TData, TError, TVariables> = {\n  /**\n   * ids for mutation function\n   */\n  ids?: BaseKey[];\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n  /**\n   * meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * meta data for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * You can use it to manage the invalidations that will occur at the end of the mutation.\n   * @default {\n   *   list: true,\n   *   many: true,\n   *   detail: true,\n   * }\n   */\n  optimisticUpdateMap?: OptimisticUpdateManyMapType<TData, TVariables>;\n} & SuccessErrorNotification<\n  UpdateManyResponse<TData>,\n  TError,\n  { ids: BaseKey[]; values: TVariables }\n>;\n\nexport type UseUpdateManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  UpdateManyResponse<TData>,\n  TError,\n  UpdateManyParams<TData, TError, TVariables>,\n  UpdateContext<TData>\n> &\n  UseLoadingOvertimeReturnType;\n\nexport type UseUpdateManyProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      UpdateManyResponse<TData>,\n      TError,\n      UpdateManyParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n    \"mutationFn\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps &\n  UpdateManyParams<TData, TError, TVariables>;\n\n/**\n * `useUpdateMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for multiple update mutations.\n *\n * It uses `updateMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useUpdateMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useUpdateMany = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  ids: idsFromProps,\n  resource: resourceFromProps,\n  values: valuesFromProps,\n  dataProviderName: dataProviderNameFromProps,\n  successNotification: successNotificationFromProps,\n  errorNotification: errorNotificationFromProps,\n  meta: metaFromProps,\n  metaData: metaDataFromProps,\n  mutationMode: mutationModeFromProps,\n  undoableTimeout: undoableTimeoutFromProps,\n  onCancel: onCancelFromProps,\n  optimisticUpdateMap: optimisticUpdateMapFromProps,\n  invalidates: invalidatesFromProps,\n  mutationOptions,\n  overtimeOptions,\n}: UseUpdateManyProps<TData, TError, TVariables> = {}): UseUpdateManyReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const { resources, select } = useResource();\n  const queryClient = useQueryClient();\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const { notificationDispatch } = useCancelNotification();\n  const publish = usePublish();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const { log } = useLog();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutationResult = useMutation<\n    UpdateManyResponse<TData>,\n    TError,\n    UpdateManyParams<TData, TError, TVariables>,\n    UpdateContext<TData>\n  >({\n    mutationFn: ({\n      ids = idsFromProps,\n      values = valuesFromProps,\n      resource: resourceName = resourceFromProps,\n      onCancel = onCancelFromProps,\n      mutationMode = mutationModeFromProps,\n      undoableTimeout = undoableTimeoutFromProps,\n      meta = metaFromProps,\n      metaData = metaDataFromProps,\n      dataProviderName = dataProviderNameFromProps,\n    }: UpdateManyParams<TData, TError, TVariables>) => {\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      const selectedDataProvider = dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      );\n\n      const mutationFn = () => {\n        if (selectedDataProvider.updateMany) {\n          return selectedDataProvider.updateMany<TData, TVariables>({\n            resource: resource.name,\n            ids,\n            variables: values,\n            meta: combinedMeta,\n            metaData: combinedMeta,\n          });\n        }\n        return handleMultiple(\n          ids.map((id) =>\n            selectedDataProvider.update<TData, TVariables>({\n              resource: resource.name,\n              id,\n              variables: values,\n              meta: combinedMeta,\n              metaData: combinedMeta,\n            }),\n          ),\n        );\n      };\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return mutationFn();\n      }\n\n      const updatePromise = new Promise<UpdateManyResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            mutationFn()\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id: ids,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return updatePromise;\n    },\n    onMutate: async ({\n      resource: resourceName = resourceFromProps,\n      ids = idsFromProps,\n      values = valuesFromProps,\n      mutationMode = mutationModeFromProps,\n      dataProviderName = dataProviderNameFromProps,\n      meta = metaFromProps,\n      metaData = metaDataFromProps,\n      optimisticUpdateMap = optimisticUpdateMapFromProps ?? {\n        list: true,\n        many: true,\n        detail: true,\n      },\n    }) => {\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n      const {\n        gqlMutation: _,\n        gqlQuery: __,\n        ...preferredMeta\n      } = pickNotDeprecated(meta, metaData) ?? {};\n\n      const queryKey = queryKeysReplacement(preferLegacyKeys)(\n        identifier,\n        pickDataProvider(identifier, dataProviderName, resources),\n        preferredMeta,\n      );\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries(\n        resourceKeys.get(preferLegacyKeys),\n        undefined,\n        {\n          silent: true,\n        },\n      );\n\n      const previousQueries = queryClient.getQueriesData<QueryResponse<TData>>(\n        resourceKeys.get(preferLegacyKeys),\n      );\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        if (optimisticUpdateMap.list) {\n          // Set the previous queries to the new ones:\n          queryClient.setQueriesData(\n            resourceKeys\n              .action(\"list\")\n              .params(preferredMeta ?? {})\n              .get(preferLegacyKeys),\n            (previous?: GetListResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.list === \"function\") {\n                return optimisticUpdateMap.list(previous, values, ids);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (\n                  record.id !== undefined &&\n                  ids\n                    .filter((id) => id !== undefined)\n                    .map(String)\n                    .includes(record.id.toString())\n                ) {\n                  return {\n                    ...record,\n                    ...values,\n                  };\n                }\n\n                return record;\n              });\n\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.many) {\n          queryClient.setQueriesData(\n            resourceKeys.action(\"many\").get(preferLegacyKeys),\n            (previous?: GetManyResponse<TData> | null) => {\n              if (typeof optimisticUpdateMap.many === \"function\") {\n                return optimisticUpdateMap.many(previous, values, ids);\n              }\n\n              if (!previous) {\n                return null;\n              }\n\n              const data = previous.data.map((record: TData) => {\n                if (\n                  record.id !== undefined &&\n                  ids\n                    .filter((id) => id !== undefined)\n                    .map(String)\n                    .includes(record.id.toString())\n                ) {\n                  return {\n                    ...record,\n                    ...values,\n                  };\n                }\n                return record;\n              });\n              return {\n                ...previous,\n                data,\n              };\n            },\n          );\n        }\n\n        if (optimisticUpdateMap.detail) {\n          for (const id of ids) {\n            queryClient.setQueriesData(\n              resourceKeys\n                .action(\"one\")\n                .id(id)\n                .params(preferredMeta ?? {})\n                .get(preferLegacyKeys),\n              (previous?: GetOneResponse<TData> | null) => {\n                if (typeof optimisticUpdateMap.detail === \"function\") {\n                  return optimisticUpdateMap.detail(previous, values, id);\n                }\n\n                if (!previous) {\n                  return null;\n                }\n\n                const data = {\n                  ...previous.data,\n                  ...values,\n                };\n                return {\n                  ...previous,\n                  data,\n                };\n              },\n            );\n          }\n        }\n      }\n\n      return {\n        previousQueries,\n        queryKey,\n      };\n    },\n    onSettled: (data, error, variables, context) => {\n      const {\n        ids = idsFromProps,\n        resource: resourceName = resourceFromProps,\n        dataProviderName = dataProviderNameFromProps,\n        invalidates = invalidatesFromProps,\n      } = variables;\n      if (!ids) throw missingIdError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      // invalidate the cache for the list and many queries:\n      invalidateStore({\n        resource: identifier,\n        invalidates: invalidates ?? [\"list\", \"many\"],\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n      });\n\n      ids.forEach((id) =>\n        invalidateStore({\n          resource: identifier,\n          invalidates: invalidates ?? [\"detail\"],\n          dataProviderName: pickDataProvider(\n            identifier,\n            dataProviderName,\n            resources,\n          ),\n          id,\n        }),\n      );\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id: ids, resource: identifier },\n      });\n\n      mutationOptions?.onSettled?.(data, error, variables, context);\n    },\n    onSuccess: (data, variables, context) => {\n      const {\n        ids = idsFromProps,\n        resource: resourceName = resourceFromProps,\n        values = valuesFromProps,\n        meta = metaFromProps,\n        metaData = metaDataFromProps,\n        dataProviderName: dataProviderNameFromProp = dataProviderNameFromProps,\n        successNotification = successNotificationFromProps,\n      } = variables;\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { resource, identifier } = select(resourceName);\n      const resourceSingular = textTransformers.singular(identifier);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, { ids, values }, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${ids}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Successful\"),\n        message: translate(\n          \"notifications.editSuccess\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n          },\n          `Successfully updated ${resourceSingular}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"updated\",\n        payload: {\n          ids: ids.map(String),\n        },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const previousData: any[] = [];\n      if (context) {\n        ids.forEach((id) => {\n          const queryData = queryClient.getQueryData<UpdateManyResponse<TData>>(\n            context.queryKey.detail(id),\n          );\n\n          previousData.push(\n            Object.keys(values || {}).reduce<any>((acc, item: any) => {\n              acc[item] = queryData?.data?.[item];\n              return acc;\n            }, {}),\n          );\n        });\n      }\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"updateMany\",\n        resource: resource.name,\n        data: values,\n        previousData,\n        meta: {\n          ids,\n          dataProviderName,\n          ...rest,\n        },\n      });\n\n      mutationOptions?.onSuccess?.(data, variables, context);\n    },\n    onError: (err: TError, variables, context) => {\n      const {\n        ids = idsFromProps,\n        resource: resourceName = resourceFromProps,\n        errorNotification = errorNotificationFromProps,\n        values = valuesFromProps,\n      } = variables;\n      if (!ids) throw missingIdError;\n      if (!values) throw missingValuesError;\n      if (!resourceName) throw missingResourceError;\n\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError?.(err);\n\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, { ids, values }, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${ids}-${identifier}-updateMany-error-notification`,\n          message: translate(\n            \"notifications.editError\",\n            {\n              resource: resourceSingular,\n              statusCode: err.statusCode,\n            },\n            `Error when updating ${resourceSingular} (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n\n      mutationOptions?.onError?.(err, variables, context);\n    },\n    mutationKey: keys().data().mutation(\"updateMany\").get(preferLegacyKeys),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useUpdateMany\", preferLegacyKeys),\n    },\n  });\n  const { mutate, mutateAsync, ...mutation } = mutationResult;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutation = (\n    variables?: UpdateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateManyResponse<TData>,\n      TError,\n      UpdateManyParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutate(variables || {}, options);\n  };\n\n  // this function is used to make the `variables` parameter optional\n  const handleMutateAsync = (\n    variables?: UpdateManyParams<TData, TError, TVariables>,\n    options?: MutateOptions<\n      UpdateManyResponse<TData>,\n      TError,\n      UpdateManyParams<TData, TError, TVariables>,\n      UpdateContext<TData>\n    >,\n  ) => {\n    return mutateAsync(variables || {}, options);\n  };\n\n  return {\n    ...mutation,\n    mutate: handleMutation,\n    mutateAsync: handleMutateAsync,\n    overtime: { elapsedTime },\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useUpdateMany]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingIdError = new Error(\n  \"[useUpdateMany]: `id` is not defined but is required in edit and clone actions\",\n);\n\nconst missingValuesError = new Error(\n  \"[useUpdateMany]: `values` is not provided but is required\",\n);\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport {\n  handleMultiple,\n  pickDataProvider,\n  pickNotDeprecated,\n  queryKeysReplacement,\n  useActiveAuthProvider,\n} from \"@definitions\";\nimport {\n  useCancelNotification,\n  useDataProvider,\n  useHandleNotification,\n  useInvalidate,\n  useKeys,\n  useLog,\n  useMeta,\n  useMutationMode,\n  useOnError,\n  usePublish,\n  useRefineContext,\n  useResource,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseRecord,\n  DeleteManyResponse,\n  GetListResponse,\n  HttpError,\n  IQueryKeys,\n  MetaQuery,\n  MutationMode,\n  PrevContext as DeleteContext,\n  PreviousQuery,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport { ActionTypes } from \"../../contexts/undoableQueue/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type DeleteManyParams<TData, TError, TVariables> = {\n  /**\n   * ids for mutation function\n   */\n  ids: BaseKey[];\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * [Determines when mutations are executed](/docs/advanced-tutorials/mutation-mode/)\n   */\n  mutationMode?: MutationMode;\n  /**\n   * Duration in ms to wait before executing the mutation when `mutationMode = \"undoable\"`\n   */\n  undoableTimeout?: number;\n  /**\n   * Provides a function to cancel the mutation when `mutationMode = \"undoable\"`\n   */\n  onCancel?: (cancelMutation: () => void) => void;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default \"default\"\n   */\n  dataProviderName?: string;\n  /**\n   *  You can use it to manage the invalidations that will occur at the end of the mutation.\n   */\n  invalidates?: Array<keyof IQueryKeys>;\n  /**\n   * Values for mutation function\n   */\n  values?: TVariables;\n} & SuccessErrorNotification<DeleteManyResponse<TData>, TError, BaseKey[]>;\n\nexport type UseDeleteManyReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  DeleteManyResponse<TData>,\n  TError,\n  DeleteManyParams<TData, TError, TVariables>,\n  unknown\n> &\n  UseLoadingOvertimeReturnType;\n\nexport type UseDeleteManyProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      DeleteManyResponse<TData>,\n      TError,\n      DeleteManyParams<TData, TError, TVariables>,\n      DeleteContext<TData>\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\" | \"onSettled\" | \"onMutate\"\n  >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useDeleteMany` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for multiple delete mutations.\n *\n * It uses `deleteMany` method as mutation function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useDeleteMany} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n *\n */\nexport const useDeleteMany = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  mutationOptions,\n  overtimeOptions,\n}: UseDeleteManyProps<TData, TError, TVariables> = {}): UseDeleteManyReturnType<\n  TData,\n  TError,\n  TVariables\n> => {\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n\n  const {\n    mutationMode: mutationModeContext,\n    undoableTimeout: undoableTimeoutContext,\n  } = useMutationMode();\n  const dataProvider = useDataProvider();\n  const { notificationDispatch } = useCancelNotification();\n  const translate = useTranslate();\n  const publish = usePublish();\n  const handleNotification = useHandleNotification();\n  const invalidateStore = useInvalidate();\n  const { log } = useLog();\n  const { resources, select } = useResource();\n  const queryClient = useQueryClient();\n  const getMeta = useMeta();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutation = useMutation<\n    DeleteManyResponse<TData>,\n    TError,\n    DeleteManyParams<TData, TError, TVariables>,\n    DeleteContext<TData>\n  >({\n    mutationFn: ({\n      resource: resourceName,\n      ids,\n      mutationMode,\n      undoableTimeout,\n      onCancel,\n      meta,\n      metaData,\n      dataProviderName,\n      values,\n    }: DeleteManyParams<TData, TError, TVariables>) => {\n      const { resource, identifier } = select(resourceName);\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      const undoableTimeoutPropOrContext =\n        undoableTimeout ?? undoableTimeoutContext;\n\n      const selectedDataProvider = dataProvider(\n        pickDataProvider(identifier, dataProviderName, resources),\n      );\n\n      const mutationFn = () => {\n        if (selectedDataProvider.deleteMany) {\n          return selectedDataProvider.deleteMany<TData, TVariables>({\n            resource: resource.name,\n            ids,\n            meta: combinedMeta,\n            metaData: combinedMeta,\n            variables: values,\n          });\n        }\n        return handleMultiple(\n          ids.map((id) =>\n            selectedDataProvider.deleteOne<TData, TVariables>({\n              resource: resource.name,\n              id,\n              meta: combinedMeta,\n              metaData: combinedMeta,\n              variables: values,\n            }),\n          ),\n        );\n      };\n\n      if (!(mutationModePropOrContext === \"undoable\")) {\n        return mutationFn();\n      }\n\n      const updatePromise = new Promise<DeleteManyResponse<TData>>(\n        (resolve, reject) => {\n          const doMutation = () => {\n            mutationFn()\n              .then((result) => resolve(result))\n              .catch((err) => reject(err));\n          };\n\n          const cancelMutation = () => {\n            reject({ message: \"mutationCancelled\" });\n          };\n\n          if (onCancel) {\n            onCancel(cancelMutation);\n          }\n\n          notificationDispatch({\n            type: ActionTypes.ADD,\n            payload: {\n              id: ids,\n              resource: identifier,\n              cancelMutation: cancelMutation,\n              doMutation: doMutation,\n              seconds: undoableTimeoutPropOrContext,\n              isSilent: !!onCancel,\n            },\n          });\n        },\n      );\n      return updatePromise;\n    },\n    onMutate: async ({\n      ids,\n      resource: resourceName,\n      mutationMode,\n      dataProviderName,\n      meta,\n      metaData,\n    }) => {\n      const { identifier } = select(resourceName);\n\n      const {\n        gqlMutation: _,\n        gqlQuery: __,\n        ...preferredMeta\n      } = pickNotDeprecated(meta, metaData) ?? {};\n\n      const queryKey = queryKeysReplacement(preferLegacyKeys)(\n        identifier,\n        pickDataProvider(identifier, dataProviderName, resources),\n        preferredMeta,\n      );\n\n      const resourceKeys = keys()\n        .data(pickDataProvider(identifier, dataProviderName, resources))\n        .resource(identifier);\n\n      const mutationModePropOrContext = mutationMode ?? mutationModeContext;\n\n      await queryClient.cancelQueries(\n        resourceKeys.get(preferLegacyKeys),\n        undefined,\n        {\n          silent: true,\n        },\n      );\n\n      const previousQueries: PreviousQuery<TData>[] =\n        queryClient.getQueriesData(resourceKeys.get(preferLegacyKeys));\n\n      if (mutationModePropOrContext !== \"pessimistic\") {\n        // Set the previous queries to the new ones:\n        queryClient.setQueriesData(\n          resourceKeys\n            .action(\"list\")\n            .params(preferredMeta ?? {})\n            .get(preferLegacyKeys),\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n\n            const data = previous.data.filter(\n              (item) =>\n                item.id && !ids.map(String).includes(item.id.toString()),\n            );\n\n            return {\n              data,\n              total: previous.total - 1,\n            };\n          },\n        );\n\n        queryClient.setQueriesData(\n          resourceKeys.action(\"many\").get(preferLegacyKeys),\n          (previous?: GetListResponse<TData> | null) => {\n            if (!previous) {\n              return null;\n            }\n\n            const data = previous.data.filter((record: TData) => {\n              if (record.id) {\n                return !ids.map(String).includes(record.id.toString());\n              }\n              return false;\n            });\n\n            return {\n              ...previous,\n              data,\n            };\n          },\n        );\n\n        for (const id of ids) {\n          queryClient.setQueriesData(\n            resourceKeys\n              .action(\"one\")\n              .id(id)\n              .params(preferredMeta)\n              .get(preferLegacyKeys),\n            (previous?: any | null) => {\n              if (!previous || previous.data.id === id) {\n                return null;\n              }\n              return {\n                ...previous,\n              };\n            },\n          );\n        }\n      }\n\n      return {\n        previousQueries,\n        queryKey,\n      };\n    },\n    // Always refetch after error or success:\n    onSettled: (\n      _data,\n      _error,\n      {\n        resource: resourceName,\n        ids,\n        dataProviderName,\n        invalidates = [\"list\", \"many\"],\n      },\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // invalidate the cache for the list and many queries:\n      invalidateStore({\n        resource: identifier,\n        dataProviderName: pickDataProvider(\n          identifier,\n          dataProviderName,\n          resources,\n        ),\n        invalidates,\n      });\n\n      notificationDispatch({\n        type: ActionTypes.REMOVE,\n        payload: { id: ids, resource: identifier },\n      });\n    },\n    onSuccess: (\n      _data,\n      {\n        ids,\n        resource: resourceName,\n        meta,\n        metaData,\n        dataProviderName: dataProviderNameFromProp,\n        successNotification,\n      },\n      context,\n    ) => {\n      const { resource, identifier } = select(resourceName);\n\n      const dataProviderName = pickDataProvider(\n        identifier,\n        dataProviderNameFromProp,\n        resources,\n      );\n\n      const combinedMeta = getMeta({\n        resource,\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      // Remove the queries from the cache:\n      ids.forEach((id) =>\n        queryClient.removeQueries(context?.queryKey.detail(id)),\n      );\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(_data, ids, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${ids}-${identifier}-notification`,\n        description: translate(\"notifications.success\", \"Success\"),\n        message: translate(\n          \"notifications.deleteSuccess\",\n          {\n            resource: translate(`${identifier}.${identifier}`, identifier),\n          },\n          `Successfully deleted ${identifier}`,\n        ),\n        type: \"success\",\n      });\n\n      publish?.({\n        channel: `resources/${resource.name}`,\n        type: \"deleted\",\n        payload: { ids },\n        date: new Date(),\n        meta: {\n          ...combinedMeta,\n          dataProviderName,\n        },\n      });\n\n      const {\n        fields: _fields,\n        operation: _operation,\n        variables: _variables,\n        ...rest\n      } = combinedMeta || {};\n      log?.mutate({\n        action: \"deleteMany\",\n        resource: resource.name,\n        meta: {\n          ids,\n          dataProviderName,\n          ...rest,\n        },\n      });\n\n      // Remove the queries from the cache:\n      ids.forEach((id) =>\n        queryClient.removeQueries(context?.queryKey.detail(id)),\n      );\n    },\n    onError: (\n      err,\n      { ids, resource: resourceName, errorNotification },\n      context,\n    ) => {\n      const { identifier } = select(resourceName);\n\n      // set back the queries to the context:\n      if (context) {\n        for (const query of context.previousQueries) {\n          queryClient.setQueryData(query[0], query[1]);\n        }\n      }\n\n      if (err.message !== \"mutationCancelled\") {\n        checkError(err);\n        const resourceSingular = textTransformers.singular(identifier);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, ids, identifier)\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${ids}-${identifier}-notification`,\n          message: translate(\n            \"notifications.deleteError\",\n            {\n              resource: resourceSingular,\n              statusCode: err.statusCode,\n            },\n            `Error (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      }\n    },\n    mutationKey: keys().data().mutation(\"deleteMany\").get(preferLegacyKeys),\n    ...mutationOptions,\n    meta: {\n      ...mutationOptions?.meta,\n      ...getXRay(\"useDeleteMany\", preferLegacyKeys),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  return { ...mutation, overtime: { elapsedTime } };\n};\n","import { pickNotDeprecated } from \"@definitions/index\";\nimport { useDataProvider, useResource } from \"@hooks\";\n\nexport const useApiUrl = (dataProviderName?: string): string => {\n  const dataProvider = useDataProvider();\n  const { resource } = useResource();\n\n  const { getApiUrl } = dataProvider(\n    dataProviderName ??\n      pickNotDeprecated(resource?.meta, resource?.options)?.dataProviderName,\n  );\n\n  return getApiUrl();\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type QueryObserverResult,\n  type UseQueryOptions,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  pickNotDeprecated,\n  useActiveAuthProvider,\n  prepareQueryContext,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  CustomResponse,\n  HttpError,\n  MetaQuery,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\ninterface UseCustomConfig<TQuery, TPayload> {\n  /**\n   * @deprecated `sort` is deprecated, use `sorters` instead.\n   */\n  sort?: CrudSort[];\n  sorters?: CrudSort[];\n  filters?: CrudFilter[];\n  query?: TQuery;\n  payload?: TPayload;\n  headers?: {};\n}\n\nexport type UseCustomProps<TQueryFnData, TError, TQuery, TPayload, TData> = {\n  /**\n   * request's URL\n   */\n  url: string;\n  /**\n   * request's method (`GET`, `POST`, etc.)\n   */\n  method: \"get\" | \"delete\" | \"head\" | \"options\" | \"post\" | \"put\" | \"patch\";\n  /**\n   * The config of your request. You can send headers, payload, query, filters and sorters using this field\n   */\n  config?: UseCustomConfig<TQuery, TPayload>;\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\"\n   */\n  queryOptions?: UseQueryOptions<\n    CustomResponse<TQueryFnData>,\n    TError,\n    CustomResponse<TData>\n  >;\n  /**\n   * meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * meta data for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  CustomResponse<TData>,\n  TError,\n  Prettify<UseCustomConfig<TQuery, TPayload> & MetaQuery>\n> &\n  UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCustom` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`} used for custom requests.\n *\n * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustom} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TQuery - Values for query params\n * @typeParam TPayload - Values for params\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useCustom = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TQuery = unknown,\n  TPayload = unknown,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  url,\n  method,\n  config,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  metaData,\n  dataProviderName,\n  overtimeOptions,\n}: UseCustomProps<\n  TQueryFnData,\n  TError,\n  TQuery,\n  TPayload,\n  TData\n>): QueryObserverResult<CustomResponse<TData>, TError> &\n  UseLoadingOvertimeReturnType => {\n  const dataProvider = useDataProvider();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const translate = useTranslate();\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const preferredMeta = pickNotDeprecated(meta, metaData);\n\n  const { custom } = dataProvider(dataProviderName);\n\n  const combinedMeta = getMeta({ meta: preferredMeta });\n\n  if (custom) {\n    const queryResponse = useQuery<\n      CustomResponse<TQueryFnData>,\n      TError,\n      CustomResponse<TData>\n    >({\n      queryKey: keys()\n        .data(dataProviderName)\n        .mutation(\"custom\")\n        .params({\n          method,\n          url,\n          ...config,\n          ...(preferredMeta || {}),\n        })\n        .get(preferLegacyKeys),\n      queryFn: (context) =>\n        custom<TQueryFnData>({\n          url,\n          method,\n          ...config,\n          meta: {\n            ...combinedMeta,\n            queryContext: prepareQueryContext(context),\n          },\n          metaData: {\n            ...combinedMeta,\n            queryContext: prepareQueryContext(context),\n          },\n        }),\n      ...queryOptions,\n      onSuccess: (data) => {\n        queryOptions?.onSuccess?.(data);\n\n        const notificationConfig =\n          typeof successNotification === \"function\"\n            ? successNotification(data, {\n                ...config,\n                ...combinedMeta,\n              })\n            : successNotification;\n\n        handleNotification(notificationConfig);\n      },\n      onError: (err: TError) => {\n        checkError(err);\n        queryOptions?.onError?.(err);\n\n        const notificationConfig =\n          typeof errorNotification === \"function\"\n            ? errorNotification(err, {\n                ...config,\n                ...combinedMeta,\n              })\n            : errorNotification;\n\n        handleNotification(notificationConfig, {\n          key: `${method}-notification`,\n          message: translate(\n            \"notifications.error\",\n            { statusCode: err.statusCode },\n            `Error (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      },\n      meta: {\n        ...queryOptions?.meta,\n        ...getXRay(\"useCustom\", preferLegacyKeys),\n      },\n    });\n    const { elapsedTime } = useLoadingOvertime({\n      ...overtimeOptions,\n      isLoading: queryResponse.isFetching,\n    });\n\n    return { ...queryResponse, overtime: { elapsedTime } };\n  }\n  throw Error(\"Not implemented custom on data provider.\");\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n} from \"@tanstack/react-query\";\n\nimport { pickNotDeprecated, useActiveAuthProvider } from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CreateResponse,\n  HttpError,\n  MetaQuery,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\ninterface UseCustomMutationConfig {\n  headers?: {};\n}\n\ntype useCustomMutationParams<TData, TError, TVariables> = {\n  url: string;\n  method: \"post\" | \"put\" | \"patch\" | \"delete\";\n  values: TVariables;\n  /**\n   * Meta data for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   * Meta data for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  dataProviderName?: string;\n  config?: UseCustomMutationConfig;\n} & SuccessErrorNotification<\n  CreateResponse<TData>,\n  TError,\n  Prettify<UseCustomMutationConfig & MetaQuery>\n>;\n\nexport type UseCustomMutationReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = UseMutationResult<\n  CreateResponse<TData>,\n  TError,\n  useCustomMutationParams<TData, TError, TVariables>,\n  unknown\n>;\n\nexport type UseCustomMutationProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  mutationOptions?: Omit<\n    UseMutationOptions<\n      CreateResponse<TData>,\n      TError,\n      useCustomMutationParams<TData, TError, TVariables>,\n      unknown\n    >,\n    \"mutationFn\" | \"onError\" | \"onSuccess\"\n  >;\n} & UseLoadingOvertimeOptionsProps;\n\n/**\n * `useCustomMutation` is a modified version of `react-query`'s {@link https://react-query.tanstack.com/reference/useMutation `useMutation`} for create mutations.\n *\n * It uses the `custom` method from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useCustomMutation} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\n\nexport const useCustomMutation = <\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n>({\n  mutationOptions,\n  overtimeOptions,\n}: UseCustomMutationProps<\n  TData,\n  TError,\n  TVariables\n> = {}): UseCustomMutationReturnType<TData, TError, TVariables> &\n  UseLoadingOvertimeReturnType => {\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const handleNotification = useHandleNotification();\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const getMeta = useMeta();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const mutation = useMutation<\n    CreateResponse<TData>,\n    TError,\n    useCustomMutationParams<TData, TError, TVariables>,\n    unknown\n  >(\n    ({\n      url,\n      method,\n      values,\n      meta,\n      metaData,\n      dataProviderName,\n      config,\n    }: useCustomMutationParams<TData, TError, TVariables>) => {\n      const combinedMeta = getMeta({\n        meta: pickNotDeprecated(meta, metaData),\n      });\n\n      const { custom } = dataProvider(dataProviderName);\n\n      if (custom) {\n        return custom<TData>({\n          url,\n          method,\n          payload: values,\n          meta: combinedMeta,\n          metaData: combinedMeta,\n          headers: { ...config?.headers },\n        });\n      }\n\n      throw Error(\"Not implemented custom on data provider.\");\n    },\n    {\n      onSuccess: (\n        data,\n        {\n          successNotification: successNotificationFromProp,\n          config,\n          meta,\n          metaData,\n        },\n      ) => {\n        const notificationConfig =\n          typeof successNotificationFromProp === \"function\"\n            ? successNotificationFromProp(data, {\n                ...config,\n                ...(pickNotDeprecated(meta, metaData) || {}),\n              })\n            : successNotificationFromProp;\n\n        handleNotification(notificationConfig);\n      },\n      onError: (\n        err: TError,\n        {\n          errorNotification: errorNotificationFromProp,\n          method,\n          config,\n          meta,\n          metaData,\n        },\n      ) => {\n        checkError(err);\n\n        const notificationConfig =\n          typeof errorNotificationFromProp === \"function\"\n            ? errorNotificationFromProp(err, {\n                ...config,\n                ...(pickNotDeprecated(meta, metaData) || {}),\n              })\n            : errorNotificationFromProp;\n\n        handleNotification(notificationConfig, {\n          key: `${method}-notification`,\n          message: translate(\n            \"notifications.error\",\n            { statusCode: err.statusCode },\n            `Error (status code: ${err.statusCode})`,\n          ),\n          description: err.message,\n          type: \"error\",\n        });\n      },\n      mutationKey: keys()\n        .data()\n        .mutation(\"customMutation\")\n        .get(preferLegacyKeys),\n      ...mutationOptions,\n      meta: {\n        ...mutationOptions?.meta,\n        ...getXRay(\"useCustomMutation\", preferLegacyKeys),\n      },\n    },\n  );\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: mutation.isLoading,\n  });\n\n  return { ...mutation, overtime: { elapsedTime } };\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { DataContext } from \"@contexts/data\";\nimport { type DataProvider, IDataContext } from \"../../contexts/data/types\";\nexport const useDataProvider = (): ((\n  /**\n   * The name of the `data provider` you want to access\n   */\n  dataProviderName?: string,\n) => DataProvider) => {\n  const context = useContext(DataContext);\n\n  const handleDataProvider = useCallback(\n    (dataProviderName?: string) => {\n      if (dataProviderName) {\n        const dataProvider = context?.[dataProviderName];\n        if (!dataProvider) {\n          throw new Error(`\"${dataProviderName}\" Data provider not found`);\n        }\n\n        if (dataProvider && !context?.default) {\n          throw new Error(\n            \"If you have multiple data providers, you must provide default data provider property\",\n          );\n        }\n\n        return context[dataProviderName];\n      }\n\n      if (context.default) {\n        return context.default;\n      }\n\n      throw new Error(\n        `There is no \"default\" data provider. Please pass dataProviderName.`,\n      );\n    },\n    [context],\n  );\n\n  return handleDataProvider;\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { DataProvider, DataProviders, IDataContext } from \"./types\";\n\nexport const defaultDataProvider: DataProviders = {\n  default: {} as DataProvider,\n};\n\nexport const DataContext =\n  React.createContext<IDataContext>(defaultDataProvider);\n\ntype Props = PropsWithChildren<{\n  dataProvider?: DataProvider | DataProviders;\n}>;\n\nexport const DataContextProvider: React.FC<Props> = ({\n  children,\n  dataProvider,\n}) => {\n  let providerValue = defaultDataProvider;\n\n  if (dataProvider) {\n    if (\n      !(\"default\" in dataProvider) &&\n      (\"getList\" in dataProvider || \"getOne\" in dataProvider)\n    ) {\n      providerValue = {\n        default: dataProvider,\n      };\n    } else {\n      providerValue = dataProvider;\n    }\n  }\n\n  return (\n    <DataContext.Provider value={providerValue}>\n      {children}\n    </DataContext.Provider>\n  );\n};\n","import { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type InfiniteData,\n  type InfiniteQueryObserverResult,\n  type UseInfiniteQueryOptions,\n  useInfiniteQuery,\n} from \"@tanstack/react-query\";\n\nimport {\n  getNextPageParam,\n  getPreviousPageParam,\n  handlePaginationParams,\n  pickDataProvider,\n  pickNotDeprecated,\n  prepareQueryContext,\n  useActiveAuthProvider,\n} from \"@definitions/helpers\";\nimport {\n  useDataProvider,\n  useHandleNotification,\n  useKeys,\n  useMeta,\n  useOnError,\n  useResource,\n  useResourceSubscription,\n  useTranslate,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport interface UseInfiniteListConfig {\n  pagination?: Pagination;\n  hasPagination?: boolean;\n  sort?: CrudSort[];\n  filters?: CrudFilter[];\n}\n\ntype BaseInfiniteListProps = {\n  /**\n   *  Metadata query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   *  Metadata query for `dataProvider`\n   *  @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * Configuration for pagination, sorting and filtering\n   * @type [`useInfiniteListConfig`](/docs/api-reference/core/hooks/data/useInfiniteList/#config-parameters)\n   * @deprecated `config` property is deprecated. Use `pagination`, `hasPagination`, `sorters` and `filters` instead.\n   */\n  config?: UseInfiniteListConfig;\n  /**\n   * Pagination properties\n   */\n  pagination?: Pagination;\n  /**\n   * Whether to use server-side pagination or not\n   * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.\n   */\n  hasPagination?: boolean;\n  /**\n   * Sorter parameters\n   */\n  sorters?: CrudSort[];\n  /**\n   * Filter parameters\n   */\n  filters?: CrudFilter[];\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use\n   */\n  dataProviderName?: string;\n};\n\nexport type UseInfiniteListProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * Tanstack Query's [useInfiniteQuery](https://tanstack.com/query/v4/docs/react/reference/useInfiniteQuery) options\n   */\n  queryOptions?: UseInfiniteQueryOptions<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >;\n} & BaseInfiniteListProps &\n  SuccessErrorNotification<\n    InfiniteData<GetListResponse<TData>>,\n    TError,\n    Prettify<BaseInfiniteListProps>\n  > &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\n/**\n * `useInfiniteList` is a modified version of `react-query`'s {@link https://tanstack.com/query/latest/docs/react/guides/infinite-queries `useInfiniteQuery`} used for retrieving items from a `resource` with pagination, sort, and filter configurations.\n *\n * It uses the `getList` method as the query function from the `dataProvider` which is passed to `<Refine>`.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/data/useInfiniteList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useInfiniteList = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  config,\n  filters,\n  hasPagination,\n  pagination,\n  sorters,\n  queryOptions,\n  successNotification,\n  errorNotification,\n  meta,\n  metaData,\n  liveMode,\n  onLiveEvent,\n  liveParams,\n  dataProviderName,\n  overtimeOptions,\n}: UseInfiniteListProps<\n  TQueryFnData,\n  TError,\n  TData\n>): InfiniteQueryObserverResult<GetListResponse<TData>, TError> &\n  UseLoadingOvertimeReturnType => {\n  const { resources, resource, identifier } = useResource(resourceFromProp);\n\n  const dataProvider = useDataProvider();\n  const translate = useTranslate();\n  const authProvider = useActiveAuthProvider();\n  const { mutate: checkError } = useOnError({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n  const handleNotification = useHandleNotification();\n  const getMeta = useMeta();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const pickedDataProvider = pickDataProvider(\n    identifier,\n    dataProviderName,\n    resources,\n  );\n  const preferredMeta = pickNotDeprecated(meta, metaData);\n  const prefferedFilters = pickNotDeprecated(filters, config?.filters);\n  const prefferedSorters = pickNotDeprecated(sorters, config?.sort);\n  const prefferedHasPagination = pickNotDeprecated(\n    hasPagination,\n    config?.hasPagination,\n  );\n  const prefferedPagination = handlePaginationParams({\n    pagination,\n    configPagination: config?.pagination,\n    hasPagination: prefferedHasPagination,\n  });\n  const isServerPagination = prefferedPagination.mode === \"server\";\n  const notificationValues = {\n    meta: preferredMeta,\n    metaData: preferredMeta,\n    filters: prefferedFilters,\n    hasPagination: isServerPagination,\n    pagination: prefferedPagination,\n    sorters: prefferedSorters,\n    config: {\n      ...config,\n      sort: prefferedSorters,\n    },\n  };\n\n  const isEnabled =\n    queryOptions?.enabled === undefined || queryOptions?.enabled === true;\n\n  const combinedMeta = getMeta({ resource, meta: preferredMeta });\n\n  const { getList } = dataProvider(pickedDataProvider);\n\n  useResourceSubscription({\n    resource: identifier,\n    types: [\"*\"],\n    params: {\n      meta: combinedMeta,\n      metaData: combinedMeta,\n      pagination: prefferedPagination,\n      hasPagination: isServerPagination,\n      sort: prefferedSorters,\n      sorters: prefferedSorters,\n      filters: prefferedFilters,\n      subscriptionType: \"useList\",\n      ...liveParams,\n    },\n    channel: `resources/${resource.name}`,\n    enabled: isEnabled,\n    liveMode,\n    onLiveEvent,\n    dataProviderName: pickedDataProvider,\n    meta: {\n      ...combinedMeta,\n      dataProviderName,\n    },\n  });\n\n  const queryResponse = useInfiniteQuery<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >({\n    queryKey: keys()\n      .data(pickedDataProvider)\n      .resource(identifier)\n      .action(\"infinite\")\n      .params({\n        ...(preferredMeta || {}),\n        filters: prefferedFilters,\n        hasPagination: isServerPagination,\n        ...(isServerPagination && {\n          pagination: prefferedPagination,\n        }),\n        ...(sorters && {\n          sorters,\n        }),\n        ...(config?.sort && {\n          sort: config?.sort,\n        }),\n      })\n      .get(preferLegacyKeys),\n    queryFn: (context) => {\n      const paginationProperties = {\n        ...prefferedPagination,\n        current: context.pageParam,\n      };\n\n      const meta = {\n        ...combinedMeta,\n        queryContext: prepareQueryContext(context),\n      };\n\n      return getList<TQueryFnData>({\n        resource: resource.name,\n        pagination: paginationProperties,\n        hasPagination: isServerPagination,\n        filters: prefferedFilters,\n        sort: prefferedSorters,\n        sorters: prefferedSorters,\n        meta,\n        metaData: meta,\n      }).then(({ data, total, ...rest }) => {\n        return {\n          data,\n          total,\n          pagination: paginationProperties,\n          ...rest,\n        };\n      });\n    },\n    getNextPageParam: (lastPage) => getNextPageParam(lastPage),\n    getPreviousPageParam: (lastPage) => getPreviousPageParam(lastPage),\n    ...queryOptions,\n    onSuccess: (data) => {\n      queryOptions?.onSuccess?.(data);\n\n      const notificationConfig =\n        typeof successNotification === \"function\"\n          ? successNotification(data, notificationValues, identifier)\n          : successNotification;\n\n      handleNotification(notificationConfig);\n    },\n    onError: (err: TError) => {\n      checkError(err);\n      queryOptions?.onError?.(err);\n\n      const notificationConfig =\n        typeof errorNotification === \"function\"\n          ? errorNotification(err, notificationValues, identifier)\n          : errorNotification;\n\n      handleNotification(notificationConfig, {\n        key: `${identifier}-useInfiniteList-notification`,\n        message: translate(\n          \"notifications.error\",\n          { statusCode: err.statusCode },\n          `Error (status code: ${err.statusCode})`,\n        ),\n        description: err.message,\n        type: \"error\",\n      });\n    },\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useInfiniteList\", preferLegacyKeys, resource?.name),\n    },\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResponse.isFetching,\n  });\n\n  return { ...queryResponse, overtime: { elapsedTime } };\n};\n","import { useContext, useEffect } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\nimport { RefineContext } from \"@contexts/refine\";\nimport { useInvalidate } from \"@hooks/invalidate\";\nimport { useResource } from \"@hooks/resource\";\n\nimport type {\n  BaseKey,\n  CrudFilter,\n  CrudSort,\n  MetaQuery,\n  Pagination,\n} from \"../../../contexts/data/types\";\nimport type { LiveEvent, LiveModeProps } from \"../../../contexts/live/types\";\nimport type { IRefineContext } from \"../../../contexts/refine/types\";\n\nexport type UseResourceSubscriptionProps = {\n  channel: string;\n  params?: {\n    ids?: BaseKey[];\n    id?: BaseKey;\n    /**\n     * @deprecated `params.meta` is depcerated. Use `meta` directly from the root level instead.\n     */\n    meta?: MetaQuery;\n    /**\n     * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n     */\n    metaData?: MetaQuery;\n    pagination?: Pagination;\n    /**\n     * @deprecated `hasPagination` is deprecated, use `pagination.mode` instead.\n     */\n    hasPagination?: boolean;\n    /**\n     * @deprecated `sort` is deprecated. Use `sorters` instead.\n     */\n    sort?: CrudSort[];\n    sorters?: CrudSort[];\n    filters?: CrudFilter[];\n    subscriptionType: \"useList\" | \"useOne\" | \"useMany\";\n    [key: string]: any;\n  };\n  types: LiveEvent[\"type\"][];\n  resource?: string;\n  enabled?: boolean;\n  /**\n   * @deprecated use `meta.dataProviderName` instead.\n   */\n  dataProviderName?: string;\n  meta?: MetaQuery & { dataProviderName?: string };\n} & LiveModeProps;\n\nexport type PublishType = (event: LiveEvent) => void;\n\nexport const useResourceSubscription = ({\n  resource: resourceFromProp,\n  params,\n  channel,\n  types,\n  enabled = true,\n  liveMode: liveModeFromProp,\n  onLiveEvent,\n  dataProviderName: dataProviderNameFromProps,\n  meta,\n}: UseResourceSubscriptionProps): void => {\n  const { resource, identifier } = useResource(resourceFromProp);\n\n  const { liveProvider } = useContext(LiveContext);\n  const {\n    liveMode: liveModeFromContext,\n    onLiveEvent: onLiveEventContextCallback,\n  } = useContext<IRefineContext>(RefineContext);\n\n  const liveMode = liveModeFromProp ?? liveModeFromContext;\n\n  const invalidate = useInvalidate();\n\n  const dataProviderName =\n    dataProviderNameFromProps ??\n    meta?.dataProviderName ??\n    resource?.meta?.dataProviderName;\n\n  useEffect(() => {\n    let subscription: any;\n\n    const callback = (event: LiveEvent) => {\n      if (liveMode === \"auto\") {\n        invalidate({\n          resource: identifier,\n          dataProviderName,\n          invalidates: [\"resourceAll\"],\n          invalidationFilters: {\n            type: \"active\",\n            refetchType: \"active\",\n          },\n          invalidationOptions: { cancelRefetch: false },\n        });\n      }\n\n      onLiveEvent?.(event);\n      onLiveEventContextCallback?.(event);\n    };\n\n    if (liveMode && liveMode !== \"off\" && enabled) {\n      subscription = liveProvider?.subscribe({\n        channel,\n        params: {\n          resource: resource?.name,\n          ...params,\n        },\n        types,\n        callback,\n        dataProviderName,\n        meta: {\n          ...meta,\n          dataProviderName,\n        },\n      });\n    }\n\n    return () => {\n      if (subscription) {\n        liveProvider?.unsubscribe(subscription);\n      }\n    };\n  }, [enabled]);\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { ILiveContext } from \"./types\";\n\nexport const LiveContext = React.createContext<ILiveContext>({});\n\nexport const LiveContextProvider: React.FC<PropsWithChildren<ILiveContext>> = ({\n  liveProvider,\n  children,\n}) => {\n  return (\n    <LiveContext.Provider value={{ liveProvider }}>\n      {children}\n    </LiveContext.Provider>\n  );\n};\n","import { useCallback } from \"react\";\n\nimport {\n  type InvalidateOptions,\n  type InvalidateQueryFilters,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { pickDataProvider } from \"@definitions\";\nimport { useKeys, useResource } from \"@hooks\";\n\nimport type { BaseKey, IQueryKeys } from \"../../contexts/data/types\";\n\nexport type UseInvalidateProp = {\n  resource?: string;\n  id?: BaseKey;\n  dataProviderName?: string;\n  invalidates: Array<keyof IQueryKeys> | false;\n  invalidationFilters?: InvalidateQueryFilters;\n  invalidationOptions?: InvalidateOptions;\n};\n\nexport const useInvalidate = (): ((\n  props: UseInvalidateProp,\n) => Promise<void>) => {\n  const { resources } = useResource();\n  const queryClient = useQueryClient();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const invalidate = useCallback(\n    async ({\n      resource,\n      dataProviderName,\n      invalidates,\n      id,\n      invalidationFilters = { type: \"all\", refetchType: \"active\" },\n      invalidationOptions = { cancelRefetch: false },\n    }: UseInvalidateProp) => {\n      if (invalidates === false) {\n        return;\n      }\n      const dp = pickDataProvider(resource, dataProviderName, resources);\n\n      const queryKey = keys()\n        .data(dp)\n        .resource(resource ?? \"\");\n\n      await Promise.all(\n        invalidates.map((key) => {\n          switch (key) {\n            case \"all\":\n              return queryClient.invalidateQueries(\n                keys().data(dp).get(preferLegacyKeys),\n                invalidationFilters,\n                invalidationOptions,\n              );\n            case \"list\":\n              return queryClient.invalidateQueries(\n                queryKey.action(\"list\").get(preferLegacyKeys),\n                invalidationFilters,\n                invalidationOptions,\n              );\n            case \"many\":\n              return queryClient.invalidateQueries(\n                queryKey.action(\"many\").get(preferLegacyKeys),\n                invalidationFilters,\n                invalidationOptions,\n              );\n            case \"resourceAll\":\n              return queryClient.invalidateQueries(\n                queryKey.get(preferLegacyKeys),\n                invalidationFilters,\n                invalidationOptions,\n              );\n            case \"detail\":\n              return queryClient.invalidateQueries(\n                queryKey\n                  .action(\"one\")\n                  .id(id || \"\")\n                  .get(preferLegacyKeys),\n                invalidationFilters,\n                invalidationOptions,\n              );\n            default:\n              return;\n          }\n        }),\n      );\n\n      return;\n    },\n    [],\n  );\n\n  return invalidate;\n};\n","import { useContext } from \"react\";\n\nimport { ResourceContext } from \"@contexts/resource\";\nimport { useResourceWithRoute, useRouterContext } from \"@hooks\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { ResourceRouterParams } from \"../../../contexts/router/legacy/types\";\nimport { useRouterType } from \"../../../contexts/router/picker\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { pickResource } from \"../../../definitions/helpers/pick-resource\";\nimport { useParsed } from \"../../router/use-parsed\";\n\nexport type UseResourceLegacyProps = {\n  /**\n   * Determines which resource to use for redirection\n   * @deprecated resourceName deprecated. Use resourceNameOrRouteName instead # https://github.com/refinedev/refine/issues/1618\n   */\n  resourceName?: string;\n  /**\n   * Determines which resource to use for redirection\n   * @default Resource name that it reads from route\n   */\n  resourceNameOrRouteName?: string;\n  /**\n   * Adds id to the end of the URL\n   * @deprecated resourceName deprecated. Use resourceNameOrRouteName instead # https://github.com/refinedev/refine/issues/1618\n   */\n  recordItemId?: BaseKey;\n};\n\n/**\n * Matches the resource by identifier.\n * If not provided, the resource from the route will be returned.\n * If your resource does not explicitly define an identifier, the resource name will be used.\n */\nexport type UseResourceParam = string | undefined;\n\ntype SelectReturnType<T extends boolean> = T extends true\n  ? { resource: IResourceItem; identifier: string }\n  : { resource: IResourceItem; identifier: string } | undefined;\n\nexport type UseResourceReturnType = {\n  resources: IResourceItem[];\n  resource?: IResourceItem;\n  /**\n   * @deprecated Use `resource.name` instead when you need to get the resource name.\n   */\n  resourceName?: string;\n  /**\n   * @deprecated This value may not always reflect the correct \"id\" value. Use `useResourceParams` to obtain the calculated \"id\"` or `useParsed` to obtain the id from the route instead.\n   */\n  id?: BaseKey;\n  /**\n   * @deprecated This value may not always reflect the correct \"action\" value. Use `useResourceParams` to obtain the calculated \"action\" or `useParsed` to obtain the action from the route instead.\n   */\n  action?: Action;\n  select: <T extends boolean = true>(\n    resourceName: string,\n    force?: T,\n  ) => SelectReturnType<T>;\n  identifier?: string;\n};\n\ntype UseResourceReturnTypeWithResource = UseResourceReturnType & {\n  resource: IResourceItem;\n  identifier: string;\n};\n\n/**\n * @deprecated Use `useResource` with `identifier` property instead. (`identifier` does not check by route name in new router)\n */\nexport function useResource(\n  props: UseResourceLegacyProps,\n): UseResourceReturnType;\nexport function useResource(): UseResourceReturnType;\nexport function useResource<TIdentifier = UseResourceParam>(\n  identifier: TIdentifier,\n): TIdentifier extends NonNullable<UseResourceParam>\n  ? UseResourceReturnTypeWithResource\n  : UseResourceReturnType;\n/**\n * `useResource` is used to get `resources` that are defined as property of the `<Refine>` component.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/resource/useResource} for more details.\n */\nexport function useResource(\n  args?: UseResourceLegacyProps | UseResourceParam,\n): UseResourceReturnType {\n  const { resources } = useContext(ResourceContext);\n\n  const routerType = useRouterType();\n\n  const params = useParsed();\n\n  const oldProps = {\n    resourceName: args && typeof args !== \"string\" ? args.resourceName : args,\n    resourceNameOrRouteName:\n      args && typeof args !== \"string\" ? args.resourceNameOrRouteName : args,\n    recordItemId:\n      args && typeof args !== \"string\" ? args.recordItemId : undefined,\n  };\n\n  const select = <T extends boolean = true>(\n    resourceName: string,\n    force = true,\n  ): SelectReturnType<T> => {\n    const isLegacy = routerType === \"legacy\";\n    const pickedResource = pickResource(resourceName, resources, isLegacy);\n\n    if (pickedResource) {\n      return {\n        resource: pickedResource,\n        identifier: pickedResource.identifier ?? pickedResource.name,\n      } as SelectReturnType<T>;\n    }\n\n    if (force) {\n      const resource: IResourceItem = {\n        name: resourceName,\n        identifier: resourceName,\n      };\n\n      const identifier = resource.identifier ?? resource.name;\n\n      return {\n        resource,\n        identifier,\n      } as SelectReturnType<T>;\n    }\n\n    return undefined as SelectReturnType<T>;\n  };\n\n  /**\n   * Legacy Router - Start\n   *\n   * using `useParams` and `route` to match resource and get params.\n   */\n  const resourceWithRoute = useResourceWithRoute();\n\n  const { useParams } = useRouterContext();\n\n  const legacyParams = useParams<Partial<ResourceRouterParams>>();\n\n  if (routerType === \"legacy\") {\n    const resourceKeyToCheck = oldProps.resourceNameOrRouteName\n      ? oldProps.resourceNameOrRouteName\n      : legacyParams.resource;\n\n    const legacyResource = resourceKeyToCheck\n      ? resourceWithRoute(resourceKeyToCheck)\n      : undefined;\n    const legacyId = oldProps?.recordItemId ?? legacyParams.id;\n    const legacyAction = legacyParams.action;\n    const legacyResourceName = oldProps?.resourceName ?? legacyResource?.name;\n    const legacyIdentifier = legacyResource?.identifier ?? legacyResource?.name;\n\n    return {\n      resources,\n      resource: legacyResource,\n      resourceName: legacyResourceName,\n      id: legacyId,\n      action: legacyAction,\n      select,\n      identifier: legacyIdentifier,\n    };\n  }\n  /** Legacy Router - End */\n\n  /** New Router */\n  let resource: IResourceItem | undefined = undefined;\n  // we try to pick the resource from props first\n  const identifier =\n    typeof args === \"string\" ? args : oldProps?.resourceNameOrRouteName;\n  if (identifier) {\n    const pickedFromProps = pickResource(identifier, resources);\n    if (pickedFromProps) {\n      resource = pickedFromProps;\n    } else {\n      resource = {\n        name: identifier as string,\n      };\n    }\n  } else if (params?.resource) {\n    resource = params.resource;\n  }\n\n  return {\n    resources,\n    resource,\n    resourceName: resource?.name,\n    id: params.id,\n    action: params.action,\n    select,\n    identifier: resource?.identifier ?? resource?.name,\n  };\n}\n","import React from \"react\";\n\nimport { legacyResourceTransform } from \"@definitions/helpers\";\nimport { useDeepMemo } from \"@hooks/deepMemo\";\n\nimport type { IResourceContext, IResourceItem, ResourceProps } from \"./types\";\n\nexport const ResourceContext = React.createContext<IResourceContext>({\n  resources: [],\n});\n\nexport const ResourceContextProvider: React.FC<\n  React.PropsWithChildren<{ resources: ResourceProps[] }>\n> = ({ resources: providedResources, children }) => {\n  const resources: IResourceItem[] = useDeepMemo(() => {\n    return legacyResourceTransform(providedResources ?? []);\n  }, [providedResources]);\n\n  return (\n    <ResourceContext.Provider value={{ resources }}>\n      {children}\n    </ResourceContext.Provider>\n  );\n};\n","import React, { useMemo } from \"react\";\nimport { useMemoized } from \"@hooks/memoized\";\n\n/**\n * Hook that memoizes the given dependency array and checks the consecutive calls with deep equality and returns the same value as the first call if dependencies are not changed.\n * @internal\n */\nexport const useDeepMemo = <T,>(\n  fn: () => T,\n  dependencies: React.DependencyList,\n): T => {\n  const memoizedDependencies = useMemoized(dependencies);\n\n  const value = useMemo(fn, memoizedDependencies);\n\n  return value;\n};\n","import { useRef } from \"react\";\nimport isEqual from \"lodash/isEqual\";\n\n/**\n * Hook that memoizes the given value with deep equality.\n * @internal\n */\nexport const useMemoized = <T = unknown>(value: T): T => {\n  const ref = useRef(value);\n\n  if (!isEqual(ref.current, value)) {\n    ref.current = value;\n  }\n\n  return ref.current;\n};\n","import React from \"react\";\n\n/**\n * This context is used to determine which router to use.\n *\n * This is a temporary solution until we remove the legacy router.\n */\n\nexport const RouterPickerContext = React.createContext<\"legacy\" | \"new\">(\"new\");\n\nexport const RouterPickerProvider = RouterPickerContext.Provider;\n\n/**\n * This is a temporary hook to determine which router to use.\n * It will be removed once the legacy router is removed.\n * @internal This is an internal hook.\n */\nexport const useRouterType = () => {\n  const value = React.useContext(RouterPickerContext);\n  return value;\n};\n","import React from \"react\";\nimport { useParse } from \"../use-parse\";\n\nexport const useParsed = <\n  TParams extends Record<string, any> = Record<string, any>,\n>() => {\n  const parse = useParse();\n\n  const parsed = React.useMemo(() => parse<TParams>(), [parse]);\n\n  return parsed;\n};\n","import React, { createContext, type PropsWithChildren } from \"react\";\nimport type { RouterProvider } from \"./types\";\n\nconst defaultRouterProvider = {};\n\nexport const RouterContext = createContext<RouterProvider>(\n  defaultRouterProvider,\n);\n\nexport const RouterContextProvider: React.FC<\n  PropsWithChildren<{ router?: RouterProvider }>\n> = ({ children, router }) => {\n  return (\n    <RouterContext.Provider value={router ?? defaultRouterProvider}>\n      {children}\n    </RouterContext.Provider>\n  );\n};\n","import { RouterContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\nimport type {\n  ParseFunction,\n  ParseResponse,\n} from \"../../../contexts/router/types\";\n\ntype UseParseType = () => <\n  TParams extends Record<string, any> = Record<string, any>,\n>() => ParseResponse<TParams>;\n\nexport const useParse: UseParseType = () => {\n  const routerContext = useContext(RouterContext);\n\n  const useParse = React.useMemo(\n    () =>\n      routerContext?.parse ??\n      (() =>\n        (() => {\n          return {};\n        }) as ParseFunction),\n    [routerContext?.parse],\n  );\n\n  const parse = useParse();\n\n  return parse as ReturnType<UseParseType>;\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { ResourceContext } from \"@contexts/resource\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\n\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\n\nexport type UseResourceWithRouteReturnType = (route: string) => IResourceItem;\n\n/**\n * @deprecated Use `useResource` hook instead.\n * @internal This hook is for internal use only. And is kept for backward compatibility.\n */\nexport const useResourceWithRoute = (): UseResourceWithRouteReturnType => {\n  const { resources } = useContext(ResourceContext);\n\n  const resourceWithRoute = useCallback(\n    (route: string) => {\n      const picked = pickResource(route, resources, true);\n      if (picked) {\n        return picked;\n      }\n      return { name: route, route: route } as IResourceItem;\n    },\n    [resources],\n  );\n\n  return resourceWithRoute;\n};\n","import { useContext } from \"react\";\n\nimport { RefineContext } from \"@contexts/refine\";\n\nimport type { LiveModeProps } from \"../../../contexts/live/types\";\nimport type { IRefineContext } from \"../../../contexts/refine/types\";\n\nexport const useLiveMode = (\n  liveMode: LiveModeProps[\"liveMode\"],\n): LiveModeProps[\"liveMode\"] => {\n  const { liveMode: liveModeFromContext } =\n    useContext<IRefineContext>(RefineContext);\n\n  return liveMode ?? liveModeFromContext;\n};\n","import { useContext, useEffect } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\n\nimport type {\n  BaseKey,\n  CrudFilter,\n  CrudSort,\n  MetaQuery,\n  Pagination,\n} from \"../../../contexts/data/types\";\nimport type { LiveEvent } from \"../../../contexts/live/types\";\n\nexport type UseSubscriptionProps = {\n  /**\n   * Channel name to subscribe.\n   */\n  channel: string;\n  /**\n   * Callback that is run when new events from subscription arrive.\n   */\n  onLiveEvent: (event: LiveEvent) => void;\n  /**\n   * Type of events to subscribe. `\"*\"` means all events.\n   * @type Array<\"deleted\" | \"updated\" | \"created\" | \"*\" | string>\n   */\n  types?: LiveEvent[\"type\"][];\n  /**\n   * Determines subscription should subscribe or not.\n   * @type Array<\"deleted\" | \"updated\" | \"created\" | \"*\" | string>\n   */\n  enabled?: boolean;\n  params?: {\n    ids?: BaseKey[];\n    id?: BaseKey;\n    /**\n     * @deprecated `params.meta` is depcerated. Use `meta` directly from the root level instead.\n     */\n    meta?: MetaQuery;\n    /**\n     * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n     */\n    metaData?: MetaQuery;\n    pagination?: Pagination;\n    /**\n     * @deprecated `hasPagination` is deprecated, use `pagination.mode` instead.\n     */\n    hasPagination?: boolean;\n    /**\n     * @deprecated `sort` is deprecated, use `sorters` instead.\n     */\n    sort?: CrudSort[];\n    sorters?: CrudSort[];\n    filters?: CrudFilter[];\n    subscriptionType?: \"useList\" | \"useOne\" | \"useMany\";\n    resource?: string;\n    [key: string]: any;\n  };\n  /**\n   * @deprecated use `meta.dataProviderName` instead.\n   */\n  dataProviderName?: string;\n  meta?: MetaQuery & { dataProviderName?: string };\n};\n\nexport const useSubscription = ({\n  params,\n  channel,\n  types = [\"*\"],\n  enabled = true,\n  onLiveEvent,\n  dataProviderName = \"default\",\n  meta,\n}: UseSubscriptionProps): void => {\n  const { liveProvider } = useContext(LiveContext);\n\n  useEffect(() => {\n    let subscription: any;\n\n    if (enabled) {\n      subscription = liveProvider?.subscribe({\n        channel,\n        params,\n        types,\n        callback: onLiveEvent,\n        dataProviderName,\n        meta: {\n          ...meta,\n          dataProviderName,\n        },\n      });\n    }\n\n    return () => {\n      if (subscription) {\n        liveProvider?.unsubscribe(subscription);\n      }\n    };\n  }, [enabled]);\n};\n","import { useContext } from \"react\";\n\nimport { LiveContext } from \"@contexts/live\";\nimport type { LiveProvider } from \"../../../contexts/live/types\";\n\nexport const usePublish: () => NonNullable<LiveProvider>[\"publish\"] = () => {\n  const { liveProvider } = useContext(LiveContext);\n\n  return liveProvider?.publish;\n};\n","import { useContext } from \"react\";\n\nimport { UndoableQueueContext } from \"@contexts/undoableQueue\";\nimport type { IUndoableQueue } from \"../../../contexts/undoableQueue/types\";\n\nexport type UseCancelNotificationType = () => {\n  notifications: IUndoableQueue[];\n  notificationDispatch: React.Dispatch<any>;\n};\n\nexport const useCancelNotification: UseCancelNotificationType = () => {\n  const { notifications, notificationDispatch } =\n    useContext(UndoableQueueContext);\n\n  return { notifications, notificationDispatch };\n};\n","import React, {\n  createContext,\n  useReducer,\n  type PropsWithChildren,\n} from \"react\";\n\nimport isEqual from \"lodash/isEqual\";\n\nimport { UndoableQueue } from \"../../components\";\nimport {\n  ActionTypes,\n  type IUndoableQueue,\n  type IUndoableQueueContext,\n} from \"./types\";\n\nexport const UndoableQueueContext = createContext<IUndoableQueueContext>({\n  notifications: [],\n  notificationDispatch: () => false,\n});\n\nconst initialState: IUndoableQueue[] = [];\n\nexport const undoableQueueReducer = (state: IUndoableQueue[], action: any) => {\n  switch (action.type) {\n    case ActionTypes.ADD: {\n      const newState = state.filter((notificationItem: IUndoableQueue) => {\n        return !(\n          isEqual(notificationItem.id, action.payload.id) &&\n          notificationItem.resource === action.payload.resource\n        );\n      });\n\n      return [\n        ...newState,\n        {\n          ...action.payload,\n          isRunning: true,\n        },\n      ];\n    }\n    case ActionTypes.REMOVE:\n      return state.filter(\n        (notificationItem: IUndoableQueue) =>\n          !(\n            isEqual(notificationItem.id, action.payload.id) &&\n            notificationItem.resource === action.payload.resource\n          ),\n      );\n    case ActionTypes.DECREASE_NOTIFICATION_SECOND:\n      return state.map((notificationItem: IUndoableQueue) => {\n        if (\n          isEqual(notificationItem.id, action.payload.id) &&\n          notificationItem.resource === action.payload.resource\n        ) {\n          return {\n            ...notificationItem,\n            seconds: action.payload.seconds - 1000,\n          };\n        }\n        return notificationItem;\n      });\n    default:\n      return state;\n  }\n};\n\nexport const UndoableQueueContextProvider: React.FC<PropsWithChildren> = ({\n  children,\n}) => {\n  const [notifications, notificationDispatch] = useReducer(\n    undoableQueueReducer,\n    initialState,\n  );\n\n  const notificationData = { notifications, notificationDispatch };\n\n  return (\n    <UndoableQueueContext.Provider value={notificationData}>\n      {children}\n      {typeof window !== \"undefined\"\n        ? notifications.map((notification) => (\n            <UndoableQueue\n              key={`${notification.id}-${notification.resource}-queue`}\n              notification={notification}\n            />\n          ))\n        : null}\n    </UndoableQueueContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { NotificationContext } from \"@contexts/notification\";\nimport type { INotificationContext } from \"../../../contexts/notification/types\";\n\nexport const useNotification = (): INotificationContext => {\n  const { open, close } = useContext(NotificationContext);\n\n  return { open, close };\n};\n","import React, { createContext, type PropsWithChildren } from \"react\";\n\nimport type { INotificationContext } from \"./types\";\n\n/** @deprecated default value for notification context has no use and is an empty object.  */\nexport const defaultNotificationProvider: INotificationContext = {};\n\nexport const NotificationContext = createContext<INotificationContext>({});\n\nexport const NotificationContextProvider: React.FC<\n  PropsWithChildren<INotificationContext>\n> = ({ open, close, children }) => {\n  return (\n    <NotificationContext.Provider value={{ open, close }}>\n      {children}\n    </NotificationContext.Provider>\n  );\n};\n","import { useCallback } from \"react\";\n\nimport { useNotification } from \"@hooks\";\n\nimport type { OpenNotificationParams } from \"../../../contexts/notification/types\";\n\nexport const useHandleNotification = (): typeof handleNotification => {\n  const { open } = useNotification();\n\n  const handleNotification = useCallback(\n    (\n      notification: OpenNotificationParams | false | undefined,\n      fallbackNotification?: OpenNotificationParams,\n    ) => {\n      if (notification !== false) {\n        if (notification) {\n          open?.(notification);\n        } else if (fallbackNotification) {\n          open?.(fallbackNotification);\n        }\n      }\n    },\n    [],\n  );\n\n  return handleNotification;\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { I18nContext } from \"@contexts/i18n\";\n\n/**\n * If you need to change the locale at runtime, refine provides the `useSetLocale` hook.\n * It returns the changeLocale method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useSetLocale} for more details.\n */\nexport const useSetLocale = () => {\n  const { i18nProvider } = useContext(I18nContext);\n\n  return useCallback((lang: string) => i18nProvider?.changeLocale(lang), []);\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { I18nProvider, II18nContext } from \"./types\";\n\n/** @deprecated default value for translation context has no use and is an empty object.  */\nexport const defaultProvider: Partial<I18nProvider> = {};\n\nexport const I18nContext = React.createContext<II18nContext>({});\n\nexport const I18nContextProvider: React.FC<PropsWithChildren<II18nContext>> = ({\n  children,\n  i18nProvider,\n}) => {\n  return (\n    <I18nContext.Provider\n      value={{\n        i18nProvider,\n      }}\n    >\n      {children}\n    </I18nContext.Provider>\n  );\n};\n","import { useContext, useMemo } from \"react\";\n\nimport { I18nContext } from \"@contexts/i18n\";\n\n/**\n * If you need to translate the texts in your own components, refine provides the `useTranslate` hook.\n * It returns the translate method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useTranslate} for more details.\n */\nexport const useTranslate = () => {\n  const { i18nProvider } = useContext(I18nContext);\n\n  const fn = useMemo(() => {\n    function translate(\n      key: string,\n      options?: any,\n      defaultMessage?: string,\n    ): string;\n    function translate(key: string, defaultMessage?: string): string;\n\n    function translate(\n      key: string,\n      options?: string | any,\n      defaultMessage?: string,\n    ) {\n      return (\n        i18nProvider?.translate(key, options, defaultMessage) ??\n        defaultMessage ??\n        (typeof options === \"string\" && typeof defaultMessage === \"undefined\"\n          ? options\n          : key)\n      );\n    }\n\n    return translate;\n  }, [i18nProvider]);\n\n  return fn;\n};\n","import { useCallback, useContext } from \"react\";\n\nimport { I18nContext } from \"@contexts/i18n\";\n\nexport type UseGetLocaleType = () => () => string | undefined;\n\n/**\n * If you need to know the current locale, refine provides the `useGetLocale` hook.\n * It returns the `getLocale` method from `i18nProvider` under the hood.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/translate/useGetLocale} for more details.\n */\nexport const useGetLocale: UseGetLocaleType = () => {\n  const { i18nProvider } = useContext(I18nContext);\n\n  return useCallback(() => i18nProvider?.getLocale(), []);\n};\n","import { useGetLocale } from \"./useGetLocale\";\nimport { useSetLocale } from \"./useSetLocale\";\nimport { useTranslate } from \"./useTranslate\";\n\n/**\n * It combines `useTranslate`, `useSetLocale` and `useGetLocale` hooks for a better developer experience.\n * It returns `i18nProvider` methods under the hood.\n * @returns `translate` method to translate the texts.\n * @returns `changeLocale` method to change the locale\n * @returns `getLocale` method to get the current locale.\n *\n * @see {@link https://refine.dev/docs/i18n/i18n-provider/} for more details.\n */\nexport const useTranslation = () => {\n  const translate = useTranslate();\n  const changeLocale = useSetLocale();\n  const getLocale = useGetLocale();\n\n  return {\n    translate,\n    changeLocale,\n    getLocale,\n  };\n};\n","import { useState } from \"react\";\n\nimport papaparse from \"papaparse\";\nimport warnOnce from \"warn-once\";\n\nimport {\n  downloadInBrowser,\n  pickDataProvider,\n  pickNotDeprecated,\n  useUserFriendlyName,\n} from \"@definitions\";\nimport { useDataProvider, useMeta, useResource } from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { MapDataFn } from \"./types\";\n\n// Old options interface taken from export-to-csv-fix-source-map@0.2.1\n// Kept here to ensure backward compatibility\nexport interface ExportOptions {\n  filename?: string;\n  fieldSeparator?: string;\n  quoteStrings?: string;\n  decimalSeparator?: string;\n  showLabels?: boolean;\n  showTitle?: boolean;\n  title?: string;\n  useTextFile?: boolean;\n  useBom?: boolean;\n  headers?: string[];\n  useKeysAsHeaders?: boolean;\n}\n\ntype UseExportOptionsType<\n  TData extends BaseRecord = BaseRecord,\n  TVariables = any,\n> = {\n  /**\n   * Resource name for API data interactions\n   * @default Resource name that it reads from route\n   * @deprecated `resourceName` is deprecated. Use `resource` instead.\n   */\n  resourceName?: string;\n  /**\n   * Resource name for API data interactions\n   * @default Resource name that it reads from route\n   */\n  resource?: string;\n  /**\n   * A mapping function that runs for every record. Mapped data will be included in the file contents\n   */\n  mapData?: MapDataFn<TData, TVariables>;\n  /**\n   *  Sorts records\n   *  @deprecated `sorter` is deprecated. Use `sorters` instead.\n   */\n  sorter?: CrudSort[];\n  /**\n   *  Sorts records\n   */\n  sorters?: CrudSort[];\n  /**\n   *  Filters records\n   */\n  filters?: CrudFilter[];\n  maxItemCount?: number;\n  /**\n   *  Requests to fetch data are made as batches by page size. By default, it is 20. Used for `getList` method of `DataProvider`\n   */\n  pageSize?: number;\n  /**\n   *  Used for exporting options\n   *  @type [Options](https://github.com/alexcaza/export-to-csv)\n   * @deprecated `exportOptions` is deprecated. Use `unparseConfig` instead.\n   */\n  exportOptions?: ExportOptions;\n  /**\n   *  Used for exporting options\n   *  @type [UnparseConfig](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/papaparse)\n   */\n  unparseConfig?: papaparse.UnparseConfig;\n  /**\n   *  Metadata query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   *  Metadata query for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n  /**\n   *  Callback to handle error events of this hook\n   */\n  onError?: (error: any) => void;\n  /**\n   *  Whether to generate download of the CSV in browser environments, defaults to true.\n   */\n  download?: boolean;\n};\n\ntype UseExportReturnType = {\n  isLoading: boolean;\n  triggerExport: () => Promise<string | undefined>;\n};\n\n/**\n * `useExport` hook allows you to make your resources exportable.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/import-export/useExport} for more details.\n *\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TVariables - Values for params.\n *\n */\nexport const useExport = <\n  TData extends BaseRecord = BaseRecord,\n  TVariables = any,\n>({\n  resourceName,\n  resource: resourceFromProps,\n  sorter,\n  sorters,\n  filters,\n  maxItemCount,\n  pageSize = 20,\n  mapData = (item) => item as any,\n  exportOptions,\n  unparseConfig,\n  meta,\n  metaData,\n  dataProviderName,\n  onError,\n  download,\n}: UseExportOptionsType<TData, TVariables> = {}): UseExportReturnType => {\n  const [isLoading, setIsLoading] = useState(false);\n\n  const dataProvider = useDataProvider();\n  const getMeta = useMeta();\n  const { resource, resources, identifier } = useResource(\n    pickNotDeprecated(resourceFromProps, resourceName),\n  );\n  const getFriendlyName = useUserFriendlyName();\n\n  const filename = `${getFriendlyName(\n    identifier,\n    \"plural\",\n  )}-${new Date().toLocaleString()}`;\n\n  const { getList } = dataProvider(\n    pickDataProvider(identifier, dataProviderName, resources),\n  );\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: pickNotDeprecated(meta, metaData),\n  });\n\n  const triggerExport = async () => {\n    setIsLoading(true);\n\n    let rawData: BaseRecord[] = [];\n\n    let current = 1;\n    let preparingData = true;\n    while (preparingData) {\n      try {\n        const { data, total } = await getList<TData>({\n          resource: resource?.name ?? \"\",\n          filters,\n          sort: pickNotDeprecated(sorters, sorter),\n          sorters: pickNotDeprecated(sorters, sorter),\n          pagination: {\n            current,\n            pageSize,\n            mode: \"server\",\n          },\n          meta: combinedMeta,\n          metaData: combinedMeta,\n        });\n\n        current++;\n\n        rawData.push(...data);\n\n        if (maxItemCount && rawData.length >= maxItemCount) {\n          rawData = rawData.slice(0, maxItemCount);\n          preparingData = false;\n        }\n\n        if (total === rawData.length) {\n          preparingData = false;\n        }\n      } catch (error) {\n        setIsLoading(false);\n        preparingData = false;\n\n        onError?.(error);\n\n        return;\n      }\n    }\n\n    const hasUnparseConfig =\n      typeof unparseConfig !== \"undefined\" && unparseConfig !== null;\n\n    warnOnce(\n      hasUnparseConfig &&\n        typeof exportOptions !== \"undefined\" &&\n        exportOptions !== null,\n      `[useExport]: resource: \"${identifier}\" \\n\\nBoth \\`unparseConfig\\` and \\`exportOptions\\` are set, \\`unparseConfig\\` will take precedence`,\n    );\n\n    const options: ExportOptions = {\n      filename,\n      useKeysAsHeaders: true,\n      useBom: true, // original default\n      title: \"My Generated Report\", // original default\n      quoteStrings: '\"', // original default\n      ...exportOptions,\n    };\n\n    warnOnce(\n      exportOptions?.decimalSeparator !== undefined,\n      `[useExport]: resource: \"${identifier}\" \\n\\nUse of \\`decimalSeparator\\` no longer supported, please use \\`mapData\\` instead.\\n\\nSee https://refine.dev/docs/api-reference/core/hooks/import-export/useExport/`,\n    );\n\n    if (!hasUnparseConfig) {\n      unparseConfig = {\n        // useKeysAsHeaders takes priority over options.headers\n        columns: options.useKeysAsHeaders ? undefined : options.headers,\n        delimiter: options.fieldSeparator,\n        header: options.showLabels || options.useKeysAsHeaders,\n        quoteChar: options.quoteStrings,\n        quotes: true,\n      };\n    } else {\n      unparseConfig = {\n        // Set to force quote for better compatibility\n        quotes: true,\n        ...unparseConfig,\n      };\n    }\n\n    let csv = papaparse.unparse(rawData.map(mapData as any), unparseConfig);\n    if (options.showTitle) {\n      csv = `${options.title}\\r\\n\\n${csv}`;\n    }\n\n    // Backward compatibility support for downloadInBrowser of the exported file, only works for browsers.\n    if (typeof window !== \"undefined\" && csv.length > 0 && (download ?? true)) {\n      const fileExtension = options.useTextFile ? \".txt\" : \".csv\";\n      const fileType = `text/${\n        options.useTextFile ? \"plain\" : \"csv\"\n      };charset=utf8;`;\n      const downloadFilename = `${(options.filename ?? \"download\").replace(\n        / /g,\n        \"_\",\n      )}${fileExtension}`;\n\n      downloadInBrowser(\n        downloadFilename,\n        `${options?.useBom ? \"\\ufeff\" : \"\"}${csv}`,\n        fileType,\n      );\n    }\n\n    setIsLoading(false);\n    return csv;\n  };\n\n  return {\n    isLoading,\n    triggerExport,\n  };\n};\n","import React from \"react\";\nimport warnOnce from \"warn-once\";\n\nimport {\n  useMeta,\n  useOne,\n  useCreate,\n  useUpdate,\n  useResourceParams,\n  useInvalidate,\n  useMutationMode,\n  useRefineOptions,\n  useLoadingOvertime,\n  useWarnAboutChange,\n  useRedirectionAfterSubmission,\n} from \"@hooks\";\n\nimport {\n  redirectPage,\n  asyncDebounce,\n  deferExecution,\n  pickNotDeprecated,\n} from \"@definitions/helpers\";\n\nimport type { UpdateParams } from \"../data/useUpdate\";\nimport type { UseCreateParams } from \"../data/useCreate\";\nimport type { UseFormProps, UseFormReturnType } from \"./types\";\nimport type {\n  BaseKey,\n  BaseRecord,\n  CreateResponse,\n  HttpError,\n  UpdateResponse,\n} from \"../../contexts/data/types\";\n\nexport type {\n  ActionParams,\n  UseFormProps,\n  UseFormReturnType,\n  AutoSaveIndicatorElements,\n  AutoSaveProps,\n  AutoSaveReturnType,\n  FormAction,\n  RedirectAction,\n  RedirectionTypes,\n  FormWithSyncWithLocationParams,\n} from \"./types\";\n\n/**\n * This hook orchestrates Refine's data hooks to create, edit, and clone data. It also provides a set of features to make it easier for users to implement their real world needs and handle edge cases such as redirects, invalidation, auto-save and more.\n *\n * @see {@link https://refine.dev/docs/data/hooks/use-form} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interface-references/#httperror `HttpError`}\n * @typeParam TVariables - Values for params. default `{}`\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n * @typeParam TResponse - Result data returned by the mutation function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}. Defaults to `TData`\n * @typeParam TResponseError - Custom error object that extends {@link https://refine.dev/docs/core/interface-references/#httperror `HttpError`}. Defaults to `TError`\n *\n */\nexport const useForm = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n  TData extends BaseRecord = TQueryFnData,\n  TResponse extends BaseRecord = TData,\n  TResponseError extends HttpError = TError,\n>(\n  props: UseFormProps<\n    TQueryFnData,\n    TError,\n    TVariables,\n    TData,\n    TResponse,\n    TResponseError\n  > = {},\n): UseFormReturnType<\n  TQueryFnData,\n  TError,\n  TVariables,\n  TData,\n  TResponse,\n  TResponseError\n> => {\n  const getMeta = useMeta();\n  const invalidate = useInvalidate();\n  const { redirect: defaultRedirect } = useRefineOptions();\n  const { mutationMode: defaultMutationMode } = useMutationMode();\n\n  const { setWarnWhen } = useWarnAboutChange();\n  const handleSubmitWithRedirect = useRedirectionAfterSubmission();\n\n  const pickedMeta = pickNotDeprecated(props.meta, props.metaData);\n  const mutationMode = props.mutationMode ?? defaultMutationMode;\n\n  const {\n    id,\n    setId,\n    resource,\n    identifier,\n    formAction: action,\n  } = useResourceParams({\n    resource: props.resource,\n    id: props.id,\n    action: props.action,\n  });\n\n  const [autosaved, setAutosaved] = React.useState(false);\n\n  const isEdit = action === \"edit\";\n  const isClone = action === \"clone\";\n  const isCreate = action === \"create\";\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: pickedMeta,\n  });\n\n  const isIdRequired = (isEdit || isClone) && Boolean(props.resource);\n  const isIdDefined = typeof props.id !== \"undefined\";\n  const isQueryDisabled = props.queryOptions?.enabled === false;\n\n  /**\n   * When a custom resource is provided through props, `id` will not be inferred from the URL to avoid any potential faulty requests.\n   * In this case, `id` is required to be passed through props.\n   * If `id` is not handled, a warning will be thrown in development mode.\n   */\n  warnOnce(\n    isIdRequired && !isIdDefined && !isQueryDisabled,\n    idWarningMessage(action, identifier, id),\n  );\n\n  /**\n   * Target action to redirect after form submission.\n   */\n  const redirectAction = redirectPage({\n    redirectFromProps: props.redirect,\n    action,\n    redirectOptions: defaultRedirect,\n  });\n\n  /**\n   * Redirection function to be used in internal redirects and to be provided to the user.\n   */\n  const redirect: UseFormReturnType[\"redirect\"] = (\n    redirect = isEdit ? \"list\" : \"edit\",\n    redirectId = id,\n    routeParams = {},\n  ) => {\n    handleSubmitWithRedirect({\n      redirect: redirect,\n      resource,\n      id: redirectId,\n      meta: { ...pickedMeta, ...routeParams },\n    });\n  };\n\n  const queryResult = useOne<TQueryFnData, TError, TData>({\n    resource: identifier,\n    id,\n    queryOptions: {\n      // Only enable the query if it's not a create action and the `id` is defined\n      enabled: !isCreate && id !== undefined,\n      ...props.queryOptions,\n    },\n    liveMode: props.liveMode,\n    onLiveEvent: props.onLiveEvent,\n    liveParams: props.liveParams,\n    meta: { ...combinedMeta, ...props.queryMeta },\n    dataProviderName: props.dataProviderName,\n    overtimeOptions: { enabled: false },\n  });\n\n  const createMutation = useCreate<TResponse, TResponseError, TVariables>({\n    mutationOptions: props.createMutationOptions,\n    overtimeOptions: { enabled: false },\n  });\n\n  const updateMutation = useUpdate<TResponse, TResponseError, TVariables>({\n    mutationOptions: props.updateMutationOptions,\n    overtimeOptions: { enabled: false },\n  });\n\n  const mutationResult = isEdit ? updateMutation : createMutation;\n  const isMutationLoading = mutationResult.isLoading;\n  const formLoading = isMutationLoading || queryResult.isFetching;\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...props.overtimeOptions,\n    isLoading: formLoading,\n  });\n\n  React.useEffect(() => {\n    // After `autosaved` is set to `true`, it won't be set to `false` again.\n    // Therefore, the `invalidate` function will be called only once at the end of the hooks lifecycle.\n    return () => {\n      if (\n        props.autoSave?.invalidateOnUnmount &&\n        autosaved &&\n        identifier &&\n        typeof id !== \"undefined\"\n      ) {\n        invalidate({\n          id,\n          invalidates: props.invalidates || [\"list\", \"many\", \"detail\"],\n          dataProviderName: props.dataProviderName,\n          resource: identifier,\n        });\n      }\n    };\n  }, [props.autoSave?.invalidateOnUnmount, autosaved]);\n\n  const onFinish = async (\n    values: TVariables,\n    { isAutosave = false }: { isAutosave?: boolean } = {},\n  ) => {\n    const isPessimistic = mutationMode === \"pessimistic\";\n\n    // Disable warning trigger when the form is being submitted\n    setWarnWhen(false);\n\n    // Redirect after a successful form submission\n    const onSuccessRedirect = (id?: BaseKey) => redirect(redirectAction, id);\n\n    const submissionPromise = new Promise<\n      CreateResponse<TResponse> | UpdateResponse<TResponse> | void\n    >((resolve, reject) => {\n      // Reject the mutation if the resource is not defined\n      if (!resource) return reject(missingResourceError);\n      // Reject the mutation if the `id` is not defined in edit action\n      // This line is commented out because the `id` might not be set for some cases and edit is done on a resource.\n      // if (isEdit && !id) return reject(missingIdError);\n      // Reject the mutation if the `id` is not defined in clone action\n      if (isClone && !id) return reject(missingIdError);\n      // Reject the mutation if there's no `values` passed\n      if (!values) return reject(missingValuesError);\n      // Auto Save is only allowed in edit action\n      if (isAutosave && !isEdit) return reject(autosaveOnNonEditError);\n\n      if (!isPessimistic && !isAutosave) {\n        // If the mutation mode is not pessimistic, handle the redirect immediately in an async manner\n        // `setWarnWhen` blocks the redirects until set to `false`\n        // If redirect is done before the value is properly set, it will be blocked.\n        // We're deferring the execution of the redirect to ensure that the value is set properly.\n        deferExecution(() => onSuccessRedirect());\n        // Resolve the promise immediately\n        resolve();\n      }\n\n      const variables:\n        | UpdateParams<TResponse, TResponseError, TVariables>\n        | UseCreateParams<TResponse, TResponseError, TVariables> = {\n        values,\n        resource: identifier ?? resource.name,\n        meta: { ...combinedMeta, ...props.mutationMeta },\n        metaData: { ...combinedMeta, ...props.mutationMeta },\n        dataProviderName: props.dataProviderName,\n        invalidates: isAutosave ? [] : props.invalidates,\n        successNotification: isAutosave ? false : props.successNotification,\n        errorNotification: isAutosave ? false : props.errorNotification,\n        // Update specific variables\n        ...(isEdit\n          ? {\n              id: id ?? \"\",\n              mutationMode,\n              undoableTimeout: props.undoableTimeout,\n              optimisticUpdateMap: props.optimisticUpdateMap,\n            }\n          : {}),\n      };\n\n      const { mutateAsync } = isEdit ? updateMutation : createMutation;\n\n      mutateAsync(variables as any, {\n        // Call user-defined `onMutationSuccess` and `onMutationError` callbacks if provided\n        // These callbacks will not have an effect on the submission promise\n        onSuccess: props.onMutationSuccess\n          ? (data, _, context) => {\n              props.onMutationSuccess?.(data, values, context, isAutosave);\n            }\n          : undefined,\n        onError: props.onMutationError\n          ? (error: TResponseError, _, context) => {\n              props.onMutationError?.(error, values, context, isAutosave);\n            }\n          : undefined,\n      })\n        // If the mutation mode is pessimistic, resolve the promise after the mutation is succeeded\n        .then((data) => {\n          if (isPessimistic && !isAutosave) {\n            deferExecution(() => onSuccessRedirect(data?.data?.id));\n          }\n          if (isAutosave) {\n            setAutosaved(true);\n          }\n          resolve(data);\n        })\n        // If the mutation mode is pessimistic, reject the promise after the mutation is failed\n        .catch(reject);\n    });\n\n    return submissionPromise;\n  };\n\n  const onFinishAutoSave = asyncDebounce(\n    (values: TVariables) => onFinish(values, { isAutosave: true }),\n    props.autoSave?.debounce || 1000,\n    \"Cancelled by debounce\",\n  );\n\n  const overtime = {\n    elapsedTime,\n  };\n\n  const autoSaveProps = {\n    status: updateMutation.status,\n    data: updateMutation.data,\n    error: updateMutation.error,\n  };\n\n  return {\n    onFinish,\n    onFinishAutoSave,\n    formLoading,\n    mutationResult,\n    mutation: mutationResult,\n    queryResult,\n    query: queryResult,\n    autoSaveProps,\n    id,\n    setId,\n    redirect,\n    overtime,\n  };\n};\n\nconst missingResourceError = new Error(\n  \"[useForm]: `resource` is not defined or not matched but is required\",\n);\n\nconst missingIdError = new Error(\n  \"[useForm]: `id` is not defined but is required in edit and clone actions\",\n);\n\nconst missingValuesError = new Error(\n  \"[useForm]: `values` is not provided but is required\",\n);\n\nconst autosaveOnNonEditError = new Error(\n  \"[useForm]: `autoSave` is only allowed in edit action\",\n);\n\nconst idWarningMessage = (action?: string, identifier?: string, id?: BaseKey) =>\n  `[useForm]: action: \"${action}\", resource: \"${identifier}\", id: ${id}\n\nIf you don't use the \\`setId\\` method to set the \\`id\\`, you should pass the \\`id\\` prop to \\`useForm\\`. Otherwise, \\`useForm\\` will not be able to infer the \\`id\\` from the current URL with custom resource provided.\n\nSee https://refine.dev/docs/data/hooks/use-form/#id-`;\n","import { useCallback } from \"react\";\n\nimport { useNavigation } from \"@hooks\";\n\nimport type { BaseKey, MetaDataQuery } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\nimport type { RedirectAction } from \"../form/types\";\n\nexport type UseRedirectionAfterSubmissionType = () => (options: {\n  redirect: RedirectAction;\n  resource?: IResourceItem;\n  id?: BaseKey;\n  meta?: MetaDataQuery;\n}) => void;\n\nexport const useRedirectionAfterSubmission: UseRedirectionAfterSubmissionType =\n  () => {\n    const { show, edit, list, create } = useNavigation();\n\n    const handleSubmitWithRedirect = useCallback(\n      ({\n        redirect,\n        resource,\n        id,\n        meta = {},\n      }: {\n        redirect: RedirectAction;\n        resource?: IResourceItem;\n        id?: BaseKey;\n        meta?: MetaDataQuery;\n      }) => {\n        if (redirect && resource) {\n          if (!!resource.show && redirect === \"show\" && id) {\n            return show(resource, id, undefined, meta);\n          }\n\n          if (!!resource.edit && redirect === \"edit\" && id) {\n            return edit(resource, id, undefined, meta);\n          }\n\n          if (!!resource.create && redirect === \"create\") {\n            return create(resource, undefined, meta);\n          }\n\n          return list(resource, \"push\", meta);\n        }\n        return;\n      },\n      [],\n    );\n\n    return handleSubmitWithRedirect;\n  };\n","import { RouterContext } from \"@contexts/router\";\nimport React, { useContext } from \"react\";\n\nexport const useBack = () => {\n  const routerContext = useContext(RouterContext);\n\n  const useBack = React.useMemo(\n    () => routerContext?.back ?? (() => () => undefined),\n    [routerContext?.back],\n  );\n\n  const back = useBack();\n\n  return back;\n};\n","import React, { useCallback, useContext } from \"react\";\n\nimport { RouterContext } from \"@contexts/router\";\nimport { useResource } from \"@hooks/resource\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type {\n  Action,\n  GoConfig as GoConfigBase,\n} from \"../../../contexts/router/types\";\nimport { useGetToPath } from \"../use-get-to-path\";\n\ntype ResourceWithoutId = {\n  /**\n   *  The name or identifier of the resource.\n   */\n  resource: string;\n  action: Extract<Action, \"create\" | \"list\">;\n  id?: never;\n  meta?: Record<string, unknown>;\n};\n\ntype ResourceWithId = {\n  /**\n   *  The name or identifier of the resource.\n   */\n  resource: string;\n  action: Extract<Action, \"edit\" | \"show\" | \"clone\">;\n  id: BaseKey;\n  meta?: Record<string, unknown>;\n};\n\nexport type Resource = ResourceWithoutId | ResourceWithId;\n\nexport type GoConfigWithResource = Omit<GoConfigBase, \"to\"> & {\n  to?: GoConfigBase[\"to\"] | Resource;\n};\n\nexport const useGo = () => {\n  const routerContext = useContext(RouterContext);\n  const { select: resourceSelect } = useResource();\n  const getToPath = useGetToPath();\n\n  const useGo = React.useMemo(\n    () => routerContext?.go ?? (() => () => undefined),\n    [routerContext?.go],\n  );\n\n  const goFromRouter = useGo();\n\n  const go = useCallback(\n    (config: GoConfigWithResource | GoConfigBase) => {\n      if (typeof config.to !== \"object\") {\n        return goFromRouter({ ...config, to: config.to });\n      }\n\n      // when config.to is an object, it means that we want to go to a resource.\n      // so we need to find the path for the resource.\n      const { resource } = resourceSelect(config.to.resource);\n      handleResourceErrors(config.to, resource);\n      const newTo = getToPath({\n        resource,\n        action: config.to.action,\n        meta: {\n          id: config.to.id,\n          ...config.to.meta,\n        },\n      });\n\n      return goFromRouter({\n        ...config,\n        to: newTo,\n      });\n    },\n    [resourceSelect, goFromRouter],\n  );\n\n  return go;\n};\n\n/**\n * handle errors for resource\n * @internal\n */\nexport const handleResourceErrors = (to: Resource, resource: IResourceItem) => {\n  if (!to?.action || !to?.resource) {\n    throw new Error(`[useGo]: \"action\" or \"resource\" is required.`);\n  }\n\n  if ([\"edit\", \"show\", \"clone\"].includes(to?.action) && !to.id) {\n    throw new Error(\n      `[useGo]: [action: ${to.action}] requires an \"id\" for resource [resource: ${to.resource}]`,\n    );\n  }\n\n  const actionUrl = resource[to.action];\n  if (!actionUrl) {\n    throw new Error(\n      `[useGo]: [action: ${to.action}] is not defined for [resource: ${to.resource}]`,\n    );\n  }\n};\n","import React from \"react\";\n\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { useRouterType } from \"../../../contexts/router/picker\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { getActionRoutesFromResource } from \"../../../definitions/helpers/router\";\nimport { composeRoute } from \"../../../definitions/helpers/router/compose-route\";\nimport { useResource } from \"../../resource\";\nimport { useParsed } from \"../use-parsed\";\n\ntype UseToPathParams = {\n  resource?: IResourceItem;\n  action: Action;\n  meta?: Record<string, unknown>;\n  legacy?: boolean;\n};\n\ntype GetToPathFn = (params: UseToPathParams) => string | undefined;\n\n/**\n * Returns a function to get the route for a given action and resource.\n * If resource is not provided, it will use the resource from the route.\n * If the resource is not found, it will return undefined.\n * If the action is not found, it will return undefined.\n * `meta` can be provided to compose the routes with parameters. (Can be used for nested routes.)\n */\nexport const useGetToPath = (): GetToPathFn => {\n  const routerType = useRouterType();\n  const { resource: resourceFromRoute, resources } = useResource();\n  const parsed = useParsed();\n\n  const fn = React.useCallback(\n    ({ resource, action, meta }: UseToPathParams): string | undefined => {\n      const selectedResource = resource || resourceFromRoute;\n\n      if (!selectedResource) {\n        return undefined;\n      }\n\n      const actionRoutes = getActionRoutesFromResource(\n        selectedResource,\n        resources,\n        routerType === \"legacy\",\n      );\n\n      const actionRoute = actionRoutes.find(\n        (item) => item.action === action,\n      )?.route;\n\n      if (!actionRoute) {\n        return undefined;\n      }\n\n      const composed = composeRoute(\n        actionRoute,\n        selectedResource?.meta,\n        parsed,\n        meta,\n      );\n\n      return composed;\n    },\n    [resources, resourceFromRoute, parsed],\n  );\n\n  return fn;\n};\n","import { useRouterType } from \"@contexts/router/picker\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\nimport { getActionRoutesFromResource } from \"@definitions/helpers/router\";\nimport { composeRoute } from \"@definitions/helpers/router/compose-route\";\nimport { useResource, useRouterContext } from \"@hooks\";\nimport { useBack } from \"@hooks/router/use-back\";\nimport { useGo } from \"@hooks/router/use-go\";\nimport { useParsed } from \"@hooks/router/use-parsed\";\n\nimport type { BaseKey, MetaDataQuery } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\n\nexport type HistoryType = \"push\" | \"replace\";\n\n/**\n * `refine` uses {@link https://reactrouter.com/en/main/hooks/use-navigate#usenavigate `React Router`} and comes with all redirects out of the box.\n * It allows you to manage your routing operations in refine.\n * Using this hook, you can manage all the routing operations of your application very easily.\n *\n * @internal This is an internal hook of refine. Do not use it directly.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/navigation/useNavigation} for more details.\n */\nexport const useNavigation = () => {\n  const { resources } = useResource();\n  const routerType = useRouterType();\n  const { useHistory } = useRouterContext();\n  const history = useHistory();\n  const parsed = useParsed();\n  const go = useGo();\n  const back = useBack();\n\n  const handleUrl = (url: string, type: HistoryType = \"push\") => {\n    if (routerType === \"legacy\") {\n      history[type](url);\n    } else {\n      go({ to: url, type });\n    }\n  };\n\n  const createUrl = (\n    resource: string | IResourceItem,\n    meta: MetaDataQuery = {},\n  ) => {\n    if (routerType === \"legacy\") {\n      const resourceItem =\n        typeof resource === \"string\"\n          ? pickResource(resource, resources, true) ?? {\n              name: resource,\n              route: resource,\n            }\n          : resource;\n\n      const createActionRoute = getActionRoutesFromResource(\n        resourceItem,\n        resources,\n        true,\n      ).find((r) => r.action === \"create\");\n\n      if (!createActionRoute) {\n        return \"\";\n      }\n\n      return composeRoute(\n        createActionRoute.route,\n        resourceItem?.meta,\n        parsed,\n        meta,\n      );\n    }\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const createActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"create\")?.route;\n\n    if (!createActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(createActionRoute, resourceItem?.meta, parsed, meta),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const editUrl = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    meta: MetaDataQuery = {},\n  ) => {\n    const encodedId = encodeURIComponent(id);\n    if (routerType === \"legacy\") {\n      const resourceItem =\n        typeof resource === \"string\"\n          ? pickResource(resource, resources, true) ?? {\n              name: resource,\n              route: resource,\n            }\n          : resource;\n\n      const editActionRoute = getActionRoutesFromResource(\n        resourceItem,\n        resources,\n        true,\n      ).find((r) => r.action === \"edit\");\n\n      if (!editActionRoute) {\n        return \"\";\n      }\n\n      return composeRoute(editActionRoute.route, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      });\n    }\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const editActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"edit\")?.route;\n\n    if (!editActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(editActionRoute, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      }),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const cloneUrl = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    meta: MetaDataQuery = {},\n  ) => {\n    const encodedId = encodeURIComponent(id);\n\n    if (routerType === \"legacy\") {\n      const resourceItem =\n        typeof resource === \"string\"\n          ? pickResource(resource, resources, true) ?? {\n              name: resource,\n              route: resource,\n            }\n          : resource;\n\n      const cloneActionRoute = getActionRoutesFromResource(\n        resourceItem,\n        resources,\n        true,\n      ).find((r) => r.action === \"clone\");\n\n      if (!cloneActionRoute) {\n        return \"\";\n      }\n\n      return composeRoute(cloneActionRoute.route, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      });\n    }\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const cloneActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"clone\")?.route;\n\n    if (!cloneActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(cloneActionRoute, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      }),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const showUrl = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    meta: MetaDataQuery = {},\n  ) => {\n    const encodedId = encodeURIComponent(id);\n    if (routerType === \"legacy\") {\n      const resourceItem =\n        typeof resource === \"string\"\n          ? pickResource(resource, resources, true) ?? {\n              name: resource,\n              route: resource,\n            }\n          : resource;\n\n      const showActionRoute = getActionRoutesFromResource(\n        resourceItem,\n        resources,\n        true,\n      ).find((r) => r.action === \"show\");\n\n      if (!showActionRoute) {\n        return \"\";\n      }\n\n      return composeRoute(showActionRoute.route, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      });\n    }\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const showActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"show\")?.route;\n\n    if (!showActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(showActionRoute, resourceItem?.meta, parsed, {\n        ...meta,\n        id: encodedId,\n      }),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const listUrl = (\n    resource: string | IResourceItem,\n    meta: MetaDataQuery = {},\n  ) => {\n    if (routerType === \"legacy\") {\n      const resourceItem =\n        typeof resource === \"string\"\n          ? pickResource(resource, resources, true) ?? {\n              name: resource,\n              route: resource,\n            }\n          : resource;\n\n      const listActionRoute = getActionRoutesFromResource(\n        resourceItem,\n        resources,\n        true,\n      ).find((r) => r.action === \"list\");\n\n      if (!listActionRoute) {\n        return \"\";\n      }\n\n      return composeRoute(\n        listActionRoute.route,\n        resourceItem?.meta,\n        parsed,\n        meta,\n      );\n    }\n    const resourceItem =\n      typeof resource === \"string\"\n        ? pickResource(resource, resources) ?? { name: resource }\n        : resource;\n\n    const listActionRoute = getActionRoutesFromResource(\n      resourceItem,\n      resources,\n    ).find((r) => r.action === \"list\")?.route;\n\n    if (!listActionRoute) {\n      return \"\";\n    }\n\n    return go({\n      to: composeRoute(listActionRoute, resourceItem?.meta, parsed, meta),\n      type: \"path\",\n      query: meta.query,\n    }) as string;\n  };\n\n  const create = (\n    resource: string | IResourceItem,\n    type: HistoryType = \"push\",\n    meta: MetaDataQuery = {},\n  ) => {\n    handleUrl(createUrl(resource, meta), type);\n  };\n\n  const edit = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    type: HistoryType = \"push\",\n    meta: MetaDataQuery = {},\n  ) => {\n    handleUrl(editUrl(resource, id, meta), type);\n  };\n\n  const clone = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    type: HistoryType = \"push\",\n    meta: MetaDataQuery = {},\n  ) => {\n    handleUrl(cloneUrl(resource, id, meta), type);\n  };\n\n  const show = (\n    resource: string | IResourceItem,\n    id: BaseKey,\n    type: HistoryType = \"push\",\n    meta: MetaDataQuery = {},\n  ) => {\n    handleUrl(showUrl(resource, id, meta), type);\n  };\n\n  const list = (\n    resource: string | IResourceItem,\n    type: HistoryType = \"push\",\n    meta: MetaDataQuery = {},\n  ) => {\n    handleUrl(listUrl(resource, meta), type);\n  };\n\n  /**\n   * @deprecated Please use `useGo` hook instead.\n   */\n  const push = (path: string, ...rest: unknown[]) => {\n    if (routerType === \"legacy\") {\n      history.push(path, ...rest);\n    } else {\n      go({ to: path, type: \"push\" });\n    }\n  };\n\n  /**\n   * @deprecated Please use `useGo` hook instead.\n   */\n  const replace = (path: string, ...rest: unknown[]) => {\n    if (routerType === \"legacy\") {\n      history.replace(path, ...rest);\n    } else {\n      go({ to: path, type: \"replace\" });\n    }\n  };\n\n  /**\n   * @deprecated Please use `useBack` hook instead.\n   */\n  const goBack = () => {\n    if (routerType === \"legacy\") {\n      history.goBack();\n    } else {\n      back();\n    }\n  };\n\n  return {\n    create,\n    createUrl,\n    edit,\n    editUrl,\n    clone,\n    cloneUrl,\n    show,\n    showUrl,\n    list,\n    listUrl,\n    push,\n    replace,\n    goBack,\n  };\n};\n","import warnOnce from \"warn-once\";\nimport { useMeta, useOne, useResourceParams } from \"@hooks\";\nimport { pickNotDeprecated } from \"@definitions/helpers\";\n\nimport type { UseShowProps, UseShowReturnType } from \"./types\";\nimport type { BaseKey, BaseRecord, HttpError } from \"../../contexts/data/types\";\n\nexport type {\n  UseShowProps,\n  UseShowReturnType,\n  useShowProps,\n  useShowReturnType,\n} from \"./types\";\n\n/**\n * `useShow` hook allows you to fetch the desired record.\n * It uses `getOne` method as query function from the dataProvider that is\n * passed to {@link https://refine.dev/docs/core/refine-component `<Refine>`}.\n *\n * @see {@link https://refine.dev/docs/data/hooks/use-show} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/core/interface-references/#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/core/interface-references/#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\nexport const useShow = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  resource: resourceFromProp,\n  id,\n  meta,\n  metaData,\n  queryOptions,\n  overtimeOptions,\n  ...useOneProps\n}: UseShowProps<TQueryFnData, TError, TData> = {}): UseShowReturnType<\n  TData,\n  TError\n> => {\n  const {\n    resource,\n    identifier,\n    id: showId,\n    setId: setShowId,\n  } = useResourceParams({\n    id,\n    resource: resourceFromProp,\n  });\n\n  const getMeta = useMeta();\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: pickNotDeprecated(meta, metaData),\n  });\n\n  warnOnce(\n    Boolean(resourceFromProp) && !showId,\n    idWarningMessage(identifier, showId),\n  );\n\n  const queryResult = useOne<TQueryFnData, TError, TData>({\n    resource: identifier,\n    id: showId ?? \"\",\n    queryOptions: {\n      enabled: showId !== undefined,\n      ...queryOptions,\n    },\n    meta: combinedMeta,\n    metaData: combinedMeta,\n    overtimeOptions,\n    ...useOneProps,\n  });\n\n  return {\n    queryResult,\n    query: queryResult,\n    showId,\n    setShowId,\n    overtime: queryResult.overtime,\n  };\n};\n\nconst idWarningMessage = (identifier?: string, id?: BaseKey) =>\n  `[useShow]: resource: \"${identifier}\", id: ${id} \\n\\nIf you don't use the \\`setShowId\\` method to set the \\`showId\\`, you should pass the \\`id\\` prop to \\`useShow\\`. Otherwise, \\`useShow\\` will not be able to infer the \\`id\\` from the current URL. \\n\\nSee https://refine.dev/docs/data/hooks/use-show/#resource`;\n","import { useEffect, useState } from \"react\";\n\nimport chunk from \"lodash/chunk\";\nimport papaparse from \"papaparse\";\n\nimport {\n  importCSVMapper,\n  pickNotDeprecated,\n  sequentialPromises,\n} from \"@definitions\";\nimport { useCreate, useCreateMany, useMeta, useResource } from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  HttpError,\n  MetaQuery,\n} from \"../../contexts/data/types\";\nimport type { UseCreateReturnType } from \"../../hooks/data/useCreate\";\nimport type { UseCreateManyReturnType } from \"../../hooks/data/useCreateMany\";\nimport type { MapDataFn } from \"../export/types\";\n\nexport type ImportSuccessResult<TVariables, TData> = {\n  request: TVariables[];\n  type: \"success\";\n  response: TData[];\n};\n\nexport type ImportErrorResult<TVariables> = {\n  request: TVariables[];\n  type: \"error\";\n  response: HttpError[];\n};\n\nexport type OnFinishParams<TVariables, TData> = {\n  succeeded: ImportSuccessResult<TVariables, TData>[];\n  errored: ImportErrorResult<TVariables>[];\n};\n\nexport type OnProgressParams = {\n  totalAmount: number;\n  processedAmount: number;\n};\n\nexport type ImportOptions<\n  TItem,\n  TVariables = any,\n  TData extends BaseRecord = BaseRecord,\n> = {\n  /**\n   * Resource name for API data interactions.\n   * @default Resource name that it reads from route\n   * @deprecated `resourceName` is deprecated. Use `resource` instead.\n   */\n  resourceName?: string;\n  /**\n   * Resource name for API data interactions.\n   * @default Resource name that it reads from route\n   */\n  resource?: string;\n  /**\n   * A mapping function that runs for every record. Mapped data will be included in the file contents.\n   */\n  mapData?: MapDataFn<TItem, TVariables>;\n  /**\n   * Custom Papa Parse options.\n   * @type [`ParseConfig`](https://www.papaparse.com/docs)\n   */\n  paparseOptions?: papaparse.ParseConfig;\n  /**\n   * Requests batch size. If it is 1, all records are sent one by one. By default, it is [`Number.MAX_SAFE_INTEGER`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) to send all records in one batch. If it is more than 1, `createMany` should be implemented on DataProvider.\n   */\n  batchSize?: number;\n  /**\n   * Called with errors and successful responses when all requests are sent.\n   */\n  onFinish?: (results: OnFinishParams<TVariables, TData>) => void;\n  /**\n   *  Metadata query for `dataProvider`\n   */\n  meta?: MetaQuery;\n  /**\n   *  Metadata query for `dataProvider`\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   *  A callback function that returns a current state of uploading process.\n   *\n   *  Ex: `percentage = onProgressParams.processedAmount / onProgressParams.totalAmount * 100`\n   */\n  onProgress?: (onProgressParams: OnProgressParams) => void;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n};\n\nexport type CreatedValuesType<TVariables, TData> =\n  | ImportSuccessResult<TVariables, TData>\n  | ImportErrorResult<TVariables>;\n\nexport type HandleChangeType<TVariables, TData> = (onChangeParams: {\n  file: Partial<File>;\n}) => Promise<CreatedValuesType<TVariables, TData>[]>;\n\nexport type UseImportInputPropsType = {\n  type: \"file\";\n  accept: string;\n  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n};\n\nexport type UseImportReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TVariables = {},\n  TError extends HttpError = HttpError,\n> = {\n  inputProps: UseImportInputPropsType;\n  mutationResult:\n    | UseCreateReturnType<TData, TError, TVariables>\n    | UseCreateManyReturnType<TData, TError, TVariables>;\n  isLoading: boolean;\n  handleChange: HandleChangeType<TVariables, TData>;\n};\n\n/**\n * `useImport` hook allows you to handle your csv import logic easily.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/import-export/useImport} for more details.\n *\n * @typeParam TItem - Interface of parsed csv data\n * @typeParam TData - Result data of the query extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences/#httperror `HttpError`}\n * @typeParam TVariables - Values for mutation function\n *\n */\nexport const useImport = <\n  TItem = any,\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = any,\n>({\n  resourceName,\n  resource: resourceFromProps,\n  mapData = (item) => item as unknown as TVariables,\n  paparseOptions,\n  batchSize = Number.MAX_SAFE_INTEGER,\n  onFinish,\n  meta,\n  metaData,\n  onProgress,\n  dataProviderName,\n}: ImportOptions<TItem, TVariables, TData> = {}): UseImportReturnType<\n  TData,\n  TVariables,\n  TError\n> => {\n  const [processedAmount, setProcessedAmount] = useState<number>(0);\n  const [totalAmount, setTotalAmount] = useState<number>(0);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const { resource, identifier } = useResource(\n    resourceFromProps ?? resourceName,\n  );\n\n  const getMeta = useMeta();\n\n  const createMany = useCreateMany<TData, TError, TVariables>();\n  const create = useCreate<TData, TError, TVariables>();\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: pickNotDeprecated(meta, metaData),\n  });\n\n  let mutationResult:\n    | UseCreateReturnType<TData, TError, TVariables>\n    | UseCreateManyReturnType<TData, TError, TVariables>;\n\n  if (batchSize === 1) {\n    mutationResult = create;\n  } else {\n    mutationResult = createMany;\n  }\n\n  const handleCleanup = () => {\n    setTotalAmount(0);\n    setProcessedAmount(0);\n    setIsLoading(false);\n  };\n\n  const handleFinish = (\n    createdValues: CreatedValuesType<TVariables, TData>[],\n  ) => {\n    const result = {\n      succeeded: createdValues.filter(\n        (item) => item.type === \"success\",\n      ) as unknown as ImportSuccessResult<TVariables, TData>[],\n      errored: createdValues.filter(\n        (item) => item.type === \"error\",\n      ) as unknown as ImportErrorResult<TVariables>[],\n    };\n\n    onFinish?.(result);\n    setIsLoading(false);\n  };\n\n  useEffect(() => {\n    onProgress?.({ totalAmount, processedAmount });\n  }, [totalAmount, processedAmount]);\n\n  const handleChange: HandleChangeType<TVariables, TData> = ({ file }) => {\n    handleCleanup();\n    return new Promise<CreatedValuesType<TVariables, TData>[]>((resolve) => {\n      setIsLoading(true);\n      papaparse.parse(file as any, {\n        complete: async ({ data }: { data: unknown[][] }) => {\n          const values = importCSVMapper(data, mapData);\n\n          setTotalAmount(values.length);\n\n          if (batchSize === 1) {\n            // Create Processor Functions\n            const valueFns = values.map((value) => {\n              const fn = async () => {\n                const response = await create.mutateAsync({\n                  resource: identifier ?? \"\",\n                  values: value,\n                  successNotification: false,\n                  errorNotification: false,\n                  dataProviderName,\n                  meta: combinedMeta,\n                  metaData: combinedMeta,\n                });\n\n                return { response, value };\n              };\n              return fn;\n            });\n            // Sequentially run processor functions and process resolves/rejects\n            const createdValues = await sequentialPromises(\n              valueFns,\n              ({ response, value }) => {\n                setProcessedAmount((currentAmount) => {\n                  return currentAmount + 1;\n                });\n\n                return {\n                  response: [response.data],\n                  type: \"success\",\n                  request: [value],\n                } as ImportSuccessResult<TVariables, TData>;\n              },\n              (error: HttpError, index) => {\n                return {\n                  response: [error],\n                  type: \"error\",\n                  request: [values[index]],\n                } as ImportErrorResult<TVariables>;\n              },\n            );\n            // Resolve with created values\n            resolve(createdValues);\n          } else {\n            // Create Chunks\n            const chunks = chunk(values, batchSize);\n            // Create Chunk Processor Functions\n            const chunkedFns = chunks.map((chunkedValues) => {\n              const fn = async () => {\n                const response = await createMany.mutateAsync({\n                  resource: identifier ?? \"\",\n                  values: chunkedValues,\n                  successNotification: false,\n                  errorNotification: false,\n                  dataProviderName,\n                  meta: combinedMeta,\n                  metaData: combinedMeta,\n                });\n\n                return {\n                  response,\n                  value: chunkedValues,\n                  currentBatchLength: chunkedValues.length,\n                };\n              };\n\n              return fn;\n            });\n            // Sequentially run chunked functions and process resolves/rejects\n            const createdValues = await sequentialPromises(\n              chunkedFns,\n              ({ response, currentBatchLength, value }) => {\n                setProcessedAmount((currentAmount) => {\n                  return currentAmount + currentBatchLength;\n                });\n\n                return {\n                  response: response.data,\n                  type: \"success\",\n                  request: value,\n                } as ImportSuccessResult<TVariables, TData>;\n              },\n              (error: HttpError, index) => {\n                return {\n                  response: [error],\n                  type: \"error\",\n                  request: chunks[index],\n                } as ImportErrorResult<TVariables>;\n              },\n            );\n            // resolve with all created values\n            resolve(createdValues);\n          }\n        },\n\n        ...paparseOptions,\n      });\n    }).then((createdValues) => {\n      handleFinish(createdValues);\n      return createdValues;\n    });\n  };\n\n  return {\n    inputProps: {\n      type: \"file\",\n      accept: \".csv\",\n      onChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n        if (event.target.files && event.target.files.length > 0) {\n          handleChange({ file: event.target.files[0] });\n        }\n      },\n    },\n    mutationResult,\n    isLoading,\n    handleChange,\n  };\n};\n","import { useCallback, useState } from \"react\";\n\nexport type useModalReturnType = {\n  visible: boolean;\n  show: () => void;\n  close: () => void;\n};\n\nexport type useModalProps = {\n  /**\n   * Initial state of the modal\n   */\n  defaultVisible?: boolean;\n};\n\nexport const useModal = ({\n  defaultVisible = false,\n}: useModalProps = {}): useModalReturnType => {\n  const [visible, setVisible] = useState(defaultVisible);\n\n  const show = useCallback(() => setVisible(true), [visible]);\n  const close = useCallback(() => setVisible(false), [visible]);\n\n  return {\n    visible,\n    show,\n    close,\n  };\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { useGetToPath } from \"../use-get-to-path\";\n\ntype UseToPathParams = {\n  resource?: IResourceItem;\n  action: Action;\n  meta?: Record<string, unknown>;\n  legacy?: boolean;\n};\n\n/**\n * Returns the route for a given action and resource.\n * If resource is not provided, it will use the resource from the route.\n * If the resource is not found, it will return undefined.\n * If the action is not found, it will return undefined.\n * `meta` can be provided to compose the routes with parameters. (Can be used for nested routes.)\n */\nexport const useToPath = ({\n  resource,\n  action,\n  meta,\n  legacy,\n}: UseToPathParams): string | undefined => {\n  const getToPath = useGetToPath();\n\n  return getToPath({ resource, action, meta, legacy });\n};\n","import React, { type Ref, forwardRef, useContext } from \"react\";\nimport { useGo } from \"@hooks/router\";\nimport { RouterContext } from \"@contexts/router\";\nimport type { GoConfigWithResource } from \"../../hooks/router/use-go\";\nimport warnOnce from \"warn-once\";\n\ntype LinkPropsWithGo = {\n  go: Omit<GoConfigWithResource, \"type\">;\n};\n\ntype LinkPropsWithTo = {\n  to: string;\n};\n\nexport type LinkProps<TProps = {}> = React.PropsWithChildren<\n  (LinkPropsWithGo | LinkPropsWithTo) & TProps\n>;\n\n/**\n * @param to The path to navigate to.\n * @param go The useGo.go params to navigate to. If `to` provided, this will be ignored.\n * @returns routerProvider.Link if it is provided, otherwise an anchor tag.\n */\nconst LinkComponent = <TProps = {}>(\n  props: LinkProps<TProps>,\n  ref: Ref<Element>,\n) => {\n  const routerContext = useContext(RouterContext);\n  const LinkFromContext = routerContext?.Link;\n\n  const goFunction = useGo();\n\n  let resolvedTo = \"\";\n  if (\"go\" in props) {\n    if (!routerContext?.go) {\n      warnOnce(\n        true,\n        \"[Link]: `routerProvider` is not found. To use `go`, Please make sure that you have provided the `routerProvider` for `<Refine />` https://refine.dev/docs/routing/router-provider/ \\n\",\n      );\n    }\n    resolvedTo = goFunction({ ...props.go, type: \"path\" }) as string;\n  }\n  if (\"to\" in props) {\n    resolvedTo = props.to;\n  }\n\n  if (LinkFromContext) {\n    return (\n      <LinkFromContext\n        ref={ref}\n        {...props}\n        to={resolvedTo}\n        // This is a workaround to avoid passing `go` to the Link component.\n        go={undefined}\n      />\n    );\n  }\n  return (\n    <a\n      ref={ref}\n      href={resolvedTo}\n      {...props}\n      // This is a workaround to avoid passing `go` and `to` to the anchor tag.\n      to={undefined}\n      go={undefined}\n    />\n  );\n};\n\nexport const Link = forwardRef(LinkComponent) as <T = {}>(\n  props: LinkProps<T> & { ref?: Ref<Element> },\n) => ReturnType<typeof LinkComponent>;\n","import { Link } from \"../../../components/link\";\n\nexport const useLink = () => {\n  return Link;\n};\n","import { useContext } from \"react\";\n\nimport { LegacyRouterContext, defaultProvider } from \"@contexts/router/legacy\";\n\nexport const useRouterContext = () => {\n  const routerContextValues = useContext(LegacyRouterContext);\n\n  const { useHistory, useLocation, useParams, Prompt, Link, routes } =\n    routerContextValues ?? defaultProvider;\n\n  return {\n    useHistory,\n    useLocation,\n    useParams,\n    Prompt,\n    Link,\n    routes,\n  };\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { ILegacyRouterContext } from \"./types\";\n\nexport const defaultProvider: ILegacyRouterContext = {\n  useHistory: () => false,\n  useLocation: () => false,\n  useParams: () => ({}) as any,\n  Prompt: () => null,\n  Link: () => null,\n};\n\nexport const LegacyRouterContext =\n  React.createContext<ILegacyRouterContext>(defaultProvider);\n\nexport const LegacyRouterContextProvider: React.FC<\n  PropsWithChildren<Partial<ILegacyRouterContext>>\n> = ({\n  children,\n  useHistory,\n  useLocation,\n  useParams,\n  Prompt,\n  Link,\n  routes,\n}) => {\n  return (\n    <LegacyRouterContext.Provider\n      value={{\n        useHistory: useHistory ?? defaultProvider.useHistory,\n        useLocation: useLocation ?? defaultProvider.useLocation,\n        useParams: useParams ?? defaultProvider.useParams,\n        Prompt: Prompt ?? defaultProvider.Prompt,\n        Link: Link ?? defaultProvider.Link,\n        routes: routes ?? defaultProvider.routes,\n      }}\n    >\n      {children}\n    </LegacyRouterContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { useKeys } from \"@hooks/useKeys\";\nimport type {\n  CanParams,\n  CanReturnType,\n} from \"../../../contexts/accessControl/types\";\n\nexport type UseCanProps = CanParams & {\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n   */\n  queryOptions?: UseQueryOptions<CanReturnType>;\n};\n\n/**\n * `useCan` uses the `can` as the query function for `react-query`'s {@link https://react-query.tanstack.com/guides/queries `useQuery`}. It takes the parameters that `can` takes. It can also be configured with `queryOptions` for `useQuery`. Returns the result of `useQuery`.\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/accessControl/useCan} for more details.\n *\n * @typeParam CanParams {@link https://refine.dev/docs/core/interfaceReferences#canparams}\n * @typeParam CanReturnType {@link https://refine.dev/docs/core/interfaceReferences#canreturntype}\n *\n */\nexport const useCan = ({\n  action,\n  resource,\n  params,\n  queryOptions: hookQueryOptions,\n}: UseCanProps): UseQueryResult<CanReturnType> => {\n  const { can, options: globalOptions } = useContext(AccessControlContext);\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const { queryOptions: globalQueryOptions } = globalOptions || {};\n\n  const mergedQueryOptions = {\n    ...globalQueryOptions,\n    ...hookQueryOptions,\n  };\n\n  /**\n   * Since `react-query` stringifies the query keys, it will throw an error for a circular dependency if we include `React.ReactNode` elements inside the keys.\n   * The feature in #2220(https://github.com/refinedev/refine/issues/2220) includes such change and to fix this, we need to remove `icon` property in the `resource`\n   */\n  const { resource: _resource, ...paramsRest } = params ?? {};\n\n  const sanitizedResource = sanitizeResource(_resource);\n\n  const queryResponse = useQuery<CanReturnType>({\n    queryKey: keys()\n      .access()\n      .resource(resource)\n      .action(action)\n      .params({\n        params: { ...paramsRest, resource: sanitizedResource },\n        enabled: mergedQueryOptions?.enabled,\n      })\n      .get(preferLegacyKeys),\n    // Enabled check for `can` is enough to be sure that it's defined in the query function but TS is not smart enough to know that.\n    queryFn: () =>\n      can?.({\n        action,\n        resource,\n        params: { ...paramsRest, resource: sanitizedResource },\n      }) ?? Promise.resolve({ can: true }),\n    enabled: typeof can !== \"undefined\",\n    ...mergedQueryOptions,\n    meta: {\n      ...mergedQueryOptions?.meta,\n      ...getXRay(\"useCan\", preferLegacyKeys, resource, [\n        \"useButtonCanAccess\",\n        \"useNavigationButton\",\n      ]),\n    },\n    retry: false,\n  });\n\n  return typeof can === \"undefined\"\n    ? ({ data: { can: true } } as typeof queryResponse)\n    : queryResponse;\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type {\n  IAccessControlContext,\n  IAccessControlContextReturnType,\n} from \"./types\";\n\n/** @deprecated default value for access control context has no use and is an empty object. */\nexport const defaultAccessControlContext = {} as IAccessControlContext;\n\nexport const AccessControlContext =\n  React.createContext<IAccessControlContextReturnType>({\n    options: {\n      buttons: { enableAccessControl: true, hideIfUnauthorized: false },\n    },\n  });\n\nexport const AccessControlContextProvider: React.FC<\n  PropsWithChildren<IAccessControlContext>\n> = ({ can, children, options }) => {\n  return (\n    <AccessControlContext.Provider\n      value={{\n        can,\n        options: options\n          ? {\n              ...options,\n              buttons: {\n                enableAccessControl: true,\n                hideIfUnauthorized: false,\n                ...options.buttons,\n              },\n            }\n          : {\n              buttons: {\n                enableAccessControl: true,\n                hideIfUnauthorized: false,\n              },\n              queryOptions: undefined,\n            },\n      }}\n    >\n      {children}\n    </AccessControlContext.Provider>\n  );\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\n\n/**\n * Remove all properties that are non-serializable from a resource object.\n */\nexport const sanitizeResource = (\n  resource?: Partial<IResourceItem> &\n    Required<Pick<IResourceItem, \"name\">> & { children?: unknown },\n):\n  | (Partial<IResourceItem> & Required<Pick<IResourceItem, \"name\">>)\n  | undefined => {\n  if (!resource) {\n    return undefined;\n  }\n\n  const {\n    icon,\n    list,\n    edit,\n    create,\n    show,\n    clone,\n    children,\n    meta,\n    options,\n    ...restResource\n  } = resource;\n\n  const { icon: _metaIcon, ...restMeta } = meta ?? {};\n  const { icon: _optionsIcon, ...restOptions } = options ?? {};\n\n  return {\n    ...restResource,\n    ...(meta ? { meta: restMeta } : {}),\n    ...(options ? { options: restOptions } : {}),\n  };\n};\n","import React from \"react\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\n\nimport type { IAccessControlContext } from \"../../contexts/accessControl/types\";\n\nexport const useCanWithoutCache = (): IAccessControlContext => {\n  const { can: canFromContext } = React.useContext(AccessControlContext);\n\n  const can = React.useMemo(() => {\n    if (!canFromContext) {\n      return undefined;\n    }\n\n    const canWithSanitizedResource: NonNullable<typeof canFromContext> =\n      async ({ params, ...rest }) => {\n        const sanitizedResource = params?.resource\n          ? sanitizeResource(params.resource)\n          : undefined;\n\n        return canFromContext({\n          ...rest,\n          ...(params\n            ? {\n                params: {\n                  ...params,\n                  resource: sanitizedResource,\n                },\n              }\n            : {}),\n        });\n      };\n\n    return canWithSanitizedResource;\n  }, [canFromContext]);\n\n  return { can };\n};\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport type {\n  QueryObserverResult,\n  UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport debounce from \"lodash/debounce\";\nimport get from \"lodash/get\";\nimport uniqBy from \"lodash/uniqBy\";\n\nimport { pickNotDeprecated } from \"@definitions/helpers\";\nimport { useList, useMany, useMeta } from \"@hooks\";\n\nimport type {\n  BaseKey,\n  BaseOption,\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  GetManyResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport type { BaseListProps } from \"../data/useList\";\nimport { useResource } from \"../resource/useResource/index\";\nimport {\n  type UseLoadingOvertimeOptionsProps,\n  type UseLoadingOvertimeReturnType,\n  useLoadingOvertime,\n} from \"../useLoadingOvertime\";\n\nexport type SelectedOptionsOrder = \"in-place\" | \"selected-first\";\n\nexport type UseSelectProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource: string;\n  /**\n   * Set the option's label value\n   * @default `\"title\"`\n   */\n  optionLabel?:\n    | (keyof TData extends string ? keyof TData : never)\n    | ((item: TData) => string);\n  /**\n   * Set the option's value\n   * @default `\"id\"`\n   */\n  optionValue?:\n    | (keyof TData extends string ? keyof TData : never)\n    | ((item: TData) => string);\n  /**\n   * Field name to search for.\n   * @description If provided `optionLabel` is a string, uses `optionLabel`'s value.\n   * @default `\"title\"`\n   * @example\n   * // when optionLabel is string.\n   * useSelect({ optionLabel: \"name\" })\n   * // uses `name` field.\n   * @example\n   * // when optionLabel is function.\n   * useSelect({ optionLabel: (field) => field.description })\n   * // uses `title`, since `optionLabel` is a function.\n   */\n  searchField?: keyof TData extends string ? keyof TData : never;\n  /**\n   * Allow us to sort the options\n   * @deprecated Use `sorters` instead\n   */\n  sort?: CrudSort[];\n  /**\n   * Allow us to sort the options\n   */\n  sorters?: CrudSort[];\n  /**\n   * Resource name for API data interactions\n   */\n  filters?: CrudFilter[];\n  /**\n   * Adds extra `options`\n   */\n  defaultValue?: BaseKey | BaseKey[];\n  /**\n   * Allow us to sort the selection options\n   * @default `in-place`\n   */\n  selectedOptionsOrder?: SelectedOptionsOrder;\n  /**\n   * The number of milliseconds to delay\n   * @default `300`\n   */\n  debounce?: number;\n  /**\n   * react-query [useQuery](https://react-query.tanstack.com/reference/useQuery) options\n   */\n  queryOptions?: UseQueryOptions<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >;\n  /**\n   * Pagination option from [`useList()`](/docs/api-reference/core/hooks/data/useList/)\n   * @type {  current?: number; pageSize?: number;}\n   * @default `undefined`\n   */\n  pagination?: Prettify<\n    Omit<Pagination, \"mode\"> & {\n      /**\n       * Whether to use server side pagination or not.\n       * @default \"off\"\n       */\n      mode?: Pagination[\"mode\"];\n    }\n  >;\n  /**\n   * Disabling pagination option from [`useList()`](/docs/api-reference/core/hooks/data/useList/)\n   * @type boolean\n   * @default `false`\n   * @deprecated `hasPagination` is deprecated, use `pagination.mode` instead.\n   */\n  hasPagination?: boolean;\n  /**\n   * react-query [useQuery](https://react-query.tanstack.com/reference/useQuery) options\n   */\n  defaultValueQueryOptions?: UseQueryOptions<\n    GetManyResponse<TQueryFnData>,\n    TError\n  >;\n  /**\n   * If defined, this callback allows us to override all filters for every search request.\n   * @default `undefined`\n   */\n  onSearch?: (value: string) => CrudFilter[];\n  /**\n   * Additional meta data to pass to the `useMany` from the data provider\n   */\n  meta?: MetaQuery;\n  /**\n   * Additional meta data to pass to the `useMany` from the data provider\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   * @default `default`\n   */\n  dataProviderName?: string;\n  /**\n   * Amount of records to fetch in select box list.\n   * @deprecated use [`pagination`](https://refine.dev/docs/api-reference/core/interfaceReferences/#pagination) instead\n   * @default `undefined`\n   */\n  fetchSize?: number;\n} & SuccessErrorNotification<\n  GetListResponse<TData>,\n  TError,\n  Prettify<BaseListProps>\n> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\nexport type UseSelectReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TOption extends BaseOption = BaseOption,\n> = {\n  query: QueryObserverResult<GetListResponse<TData>, TError>;\n  defaultValueQuery: QueryObserverResult<GetManyResponse<TData>>;\n  /**\n   * @deprecated Use `query` instead\n   */\n  queryResult: QueryObserverResult<GetListResponse<TData>, TError>;\n  /**\n   * @deprecated Use `defaultValueQuery` instead\n   */\n  defaultValueQueryResult: QueryObserverResult<GetManyResponse<TData>>;\n  onSearch: (value: string) => void;\n  options: TOption[];\n} & UseLoadingOvertimeReturnType;\n\n/**\n * `useSelect` hook is used to fetch data from the dataProvider and return the options for the select box.\n *\n * It uses `getList` method as query function from the dataProvider that is\n * passed to {@link https://refine.dev/docs/api-reference/core/components/refine-config/ `<Refine>`}.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useSelect} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nexport const useSelect = <\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n  TOption extends BaseOption = BaseOption,\n>(\n  props: UseSelectProps<TQueryFnData, TError, TData>,\n): UseSelectReturnType<TData, TError, TOption> => {\n  const [search, setSearch] = useState<CrudFilter[]>([]);\n  const [options, setOptions] = useState<TOption[]>([]);\n  const [selectedOptions, setSelectedOptions] = useState<TOption[]>([]);\n\n  const {\n    resource: resourceFromProps,\n    sort,\n    sorters,\n    filters = [],\n    optionLabel = \"title\",\n    optionValue = \"id\",\n    searchField = typeof optionLabel === \"string\" ? optionLabel : \"title\",\n    debounce: debounceValue = 300,\n    successNotification,\n    errorNotification,\n    defaultValueQueryOptions: defaultValueQueryOptionsFromProps,\n    queryOptions,\n    fetchSize,\n    pagination,\n    hasPagination = false,\n    liveMode,\n    defaultValue = [],\n    selectedOptionsOrder = \"in-place\",\n    onLiveEvent,\n    onSearch: onSearchFromProp,\n    liveParams,\n    meta,\n    metaData,\n    dataProviderName,\n    overtimeOptions,\n  } = props;\n\n  const getOptionLabel = useCallback(\n    (item: TData) => {\n      if (typeof optionLabel === \"string\") {\n        return get(item, optionLabel);\n      }\n\n      return optionLabel(item);\n    },\n    [optionLabel],\n  );\n\n  const getOptionValue = useCallback(\n    (item: TData) => {\n      if (typeof optionValue === \"string\") {\n        return get(item, optionValue);\n      }\n\n      return optionValue(item);\n    },\n    [optionValue],\n  );\n\n  const { resource, identifier } = useResource(resourceFromProps);\n\n  const getMeta = useMeta();\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: pickNotDeprecated(meta, metaData),\n  });\n\n  const defaultValues = Array.isArray(defaultValue)\n    ? defaultValue\n    : [defaultValue];\n\n  const defaultValueQueryOnSuccess = useCallback(\n    (data: GetManyResponse<TData>) => {\n      setSelectedOptions(\n        data.data.map(\n          (item) =>\n            ({\n              label: getOptionLabel(item),\n              value: getOptionValue(item),\n            }) as TOption,\n        ),\n      );\n    },\n    [optionLabel, optionValue],\n  );\n\n  const defaultValueQueryOptions =\n    defaultValueQueryOptionsFromProps ?? (queryOptions as any);\n\n  const defaultValueQueryResult = useMany<TQueryFnData, TError, TData>({\n    resource: identifier,\n    ids: defaultValues,\n    queryOptions: {\n      ...defaultValueQueryOptions,\n      enabled:\n        defaultValues.length > 0 && (defaultValueQueryOptions?.enabled ?? true),\n      onSuccess: (data) => {\n        defaultValueQueryOnSuccess(data);\n        defaultValueQueryOptions?.onSuccess?.(data);\n      },\n    },\n    overtimeOptions: { enabled: false },\n    meta: combinedMeta,\n    metaData: combinedMeta,\n    liveMode: \"off\",\n    dataProviderName,\n  });\n\n  const defaultQueryOnSuccess = useCallback(\n    (data: GetListResponse<TData>) => {\n      setOptions(\n        data.data.map(\n          (item) =>\n            ({\n              label: getOptionLabel(item),\n              value: getOptionValue(item),\n            }) as TOption,\n        ),\n      );\n    },\n    [optionLabel, optionValue],\n  );\n\n  const queryResult = useList<TQueryFnData, TError, TData>({\n    resource: identifier,\n    sorters: pickNotDeprecated(sorters, sort),\n    filters: filters.concat(search),\n    pagination: {\n      current: pagination?.current,\n      pageSize: pagination?.pageSize ?? fetchSize,\n      mode: pagination?.mode,\n    },\n    hasPagination,\n    queryOptions: {\n      ...queryOptions,\n      onSuccess: (data) => {\n        defaultQueryOnSuccess(data);\n        queryOptions?.onSuccess?.(data);\n      },\n    },\n    overtimeOptions: { enabled: false },\n    successNotification,\n    errorNotification,\n    meta: combinedMeta,\n    metaData: combinedMeta,\n    liveMode,\n    liveParams,\n    onLiveEvent,\n    dataProviderName,\n  });\n\n  const { elapsedTime } = useLoadingOvertime({\n    ...overtimeOptions,\n    isLoading: queryResult.isFetching || defaultValueQueryResult.isFetching,\n  });\n\n  const combinedOptions = useMemo(\n    () =>\n      uniqBy(\n        selectedOptionsOrder === \"in-place\"\n          ? [...options, ...selectedOptions]\n          : [...selectedOptions, ...options],\n        \"value\",\n      ),\n    [options, selectedOptions],\n  );\n\n  /**\n   * To avoid any changes in the `onSearch` callback,\n   * We're storing `onSearchFromProp` in a ref and accessing it in the `onSearch` callback.\n   */\n  const onSearchFromPropRef = useRef(onSearchFromProp);\n\n  const onSearch = useMemo(() => {\n    return debounce((value: string) => {\n      if (onSearchFromPropRef.current) {\n        setSearch(onSearchFromPropRef.current(value));\n        return;\n      }\n\n      if (!value) {\n        setSearch([]);\n        return;\n      }\n\n      setSearch([\n        {\n          field: searchField,\n          operator: \"contains\",\n          value,\n        },\n      ]);\n    }, debounceValue);\n  }, [searchField, debounceValue]);\n\n  useEffect(() => {\n    onSearchFromPropRef.current = onSearchFromProp;\n  }, [onSearchFromProp]);\n\n  return {\n    queryResult,\n    defaultValueQueryResult,\n    query: queryResult,\n    defaultValueQuery: defaultValueQueryResult,\n    options: combinedOptions,\n    onSearch,\n    overtime: { elapsedTime },\n  };\n};\n","import React, { useState, useEffect, useCallback } from \"react\";\n\nimport type {\n  QueryObserverResult,\n  UseQueryOptions,\n} from \"@tanstack/react-query\";\nimport differenceWith from \"lodash/differenceWith\";\nimport isEqual from \"lodash/isEqual\";\nimport qs from \"qs\";\nimport warnOnce from \"warn-once\";\n\nimport { pickNotDeprecated } from \"@definitions/helpers\";\nimport {\n  parseTableParams,\n  setInitialFilters,\n  setInitialSorters,\n  stringifyTableParams,\n  unionFilters,\n  unionSorters,\n} from \"@definitions/table\";\nimport {\n  useGo,\n  useList,\n  useLiveMode,\n  useMeta,\n  useNavigation,\n  useParsed,\n  useResource,\n  useRouterContext,\n  useRouterType,\n  useSyncWithLocation,\n} from \"@hooks\";\n\nimport type {\n  BaseRecord,\n  CrudFilter,\n  CrudSort,\n  GetListResponse,\n  HttpError,\n  MetaQuery,\n  Pagination,\n  Prettify,\n} from \"../../contexts/data/types\";\nimport type { LiveModeProps } from \"../../contexts/live/types\";\nimport type { SuccessErrorNotification } from \"../../contexts/notification/types\";\nimport type { BaseListProps } from \"../data/useList\";\nimport type {\n  UseLoadingOvertimeOptionsProps,\n  UseLoadingOvertimeReturnType,\n} from \"../useLoadingOvertime\";\n\ntype SetFilterBehavior = \"merge\" | \"replace\";\n\nexport type useTableProps<TQueryFnData, TError, TData> = {\n  /**\n   * Resource name for API data interactions\n   * @default Resource name that it reads from route\n   */\n  resource?: string;\n  /**\n   * Configuration for pagination\n   */\n  pagination?: Pagination;\n  /**\n   * Initial page index\n   * @default 1\n   * @deprecated `initialCurrent` property is deprecated. Use `pagination.current` instead.\n   */\n  initialCurrent?: number;\n  /**\n   * Initial number of items per page\n   * @default 10\n   * @deprecated `initialPageSize` property is deprecated. Use `pagination.pageSize` instead.\n   */\n  initialPageSize?: number;\n  /**\n   * Sort configs\n   */\n  sorters?: {\n    /**\n     * Initial sorter state\n     */\n    initial?: CrudSort[];\n    /**\n     * Default and unchangeable sorter state\n     *  @default `[]`\n     */\n    permanent?: CrudSort[];\n    /**\n     * Whether to use server side sorting or not.\n     * @default \"server\"\n     */\n    mode?: \"server\" | \"off\";\n  };\n  /**\n   * Initial sorter state\n   * @deprecated `initialSorter` property is deprecated. Use `sorters.initial` instead.\n   */\n  initialSorter?: CrudSort[];\n  /**\n   * Default and unchangeable sorter state\n   *  @default `[]`\n   *  @deprecated `permanentSorter` property is deprecated. Use `sorters.permanent` instead.\n   */\n  permanentSorter?: CrudSort[];\n  /**\n   * Filter configs\n   */\n  filters?: {\n    /**\n     * Initial filter state\n     */\n    initial?: CrudFilter[];\n    /**\n     * Default and unchangeable filter state\n     *  @default `[]`\n     */\n    permanent?: CrudFilter[];\n    /**\n     * Default behavior of the `setFilters` function\n     * @default `\"merge\"`\n     */\n    defaultBehavior?: SetFilterBehavior;\n    /**\n     * Whether to use server side filter or not.\n     * @default \"server\"\n     */\n    mode?: \"server\" | \"off\";\n  };\n  /**\n   * Initial filter state\n   * @deprecated `initialFilter` property is deprecated. Use `filters.initial` instead.\n   */\n  initialFilter?: CrudFilter[];\n  /**\n   * Default and unchangeable filter state\n   * @default `[]`\n   * @deprecated `permanentFilter` property is deprecated. Use `filters.permanent` instead.\n   */\n  permanentFilter?: CrudFilter[];\n  /**\n   * Default behavior of the `setFilters` function\n   * @default `\"merge\"`\n   * @deprecated `defaultSetFilterBehavior` property is deprecated. Use `filters.defaultBehavior` instead.\n   */\n  defaultSetFilterBehavior?: SetFilterBehavior;\n  /**\n   * Whether to use server side pagination or not.\n   * @default `true`\n   * @deprecated `hasPagination` property is deprecated. Use `pagination.mode` instead.\n   */\n  hasPagination?: boolean;\n  /**\n   * Sortings, filters, page index and records shown per page are tracked by browser history\n   * @default Value set in [Refine](/docs/api-reference/core/components/refine-config/#syncwithlocation). If a custom resource is given, it will be `false`\n   */\n  syncWithLocation?: boolean;\n  /**\n   * react-query's [useQuery](https://tanstack.com/query/v4/docs/reference/useQuery) options\n   */\n  queryOptions?: UseQueryOptions<\n    GetListResponse<TQueryFnData>,\n    TError,\n    GetListResponse<TData>\n  >;\n  /**\n   * Metadata query for dataProvider\n   */\n  meta?: MetaQuery;\n  /**\n   * Metadata query for dataProvider\n   * @deprecated `metaData` is deprecated with refine@4, refine will pass `meta` instead, however, we still support `metaData` for backward compatibility.\n   */\n  metaData?: MetaQuery;\n  /**\n   * If there is more than one `dataProvider`, you should use the `dataProviderName` that you will use.\n   */\n  dataProviderName?: string;\n} & SuccessErrorNotification<\n  GetListResponse<TData>,\n  TError,\n  Prettify<BaseListProps>\n> &\n  LiveModeProps &\n  UseLoadingOvertimeOptionsProps;\n\ntype ReactSetState<T> = React.Dispatch<React.SetStateAction<T>>;\n\ntype SyncWithLocationParams = {\n  pagination: { current?: number; pageSize?: number };\n  /**\n   * @deprecated `sorter` is deprecated. Use `sorters` instead.\n   */\n  sorter?: CrudSort[];\n  sorters: CrudSort[];\n  filters: CrudFilter[];\n};\n\nexport type useTableReturnType<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n> = {\n  tableQuery: QueryObserverResult<GetListResponse<TData>, TError>;\n  /**\n   * @deprecated `tableQueryResult` is deprecated. Use `tableQuery` instead.\n   */\n  tableQueryResult: QueryObserverResult<GetListResponse<TData>, TError>;\n  /**\n   * @deprecated `sorter` is deprecated. Use `sorters` instead.\n   */\n  sorter: CrudSort[];\n  sorters: CrudSort[];\n  /**\n   * @deprecated `setSorter` is deprecated. Use `setSorters` instead.\n   */\n  setSorter: (sorter: CrudSort[]) => void;\n  setSorters: (sorter: CrudSort[]) => void;\n  filters: CrudFilter[];\n  setFilters: ((filters: CrudFilter[], behavior?: SetFilterBehavior) => void) &\n    ((setter: (prevFilters: CrudFilter[]) => CrudFilter[]) => void);\n  createLinkForSyncWithLocation: (params: SyncWithLocationParams) => string;\n  current: number;\n  setCurrent: ReactSetState<useTableReturnType[\"current\"]>;\n  pageSize: number;\n  setPageSize: ReactSetState<useTableReturnType[\"pageSize\"]>;\n  pageCount: number;\n} & UseLoadingOvertimeReturnType;\n\n/**\n * By using useTable, you are able to get properties that are compatible with\n * Ant Design {@link https://ant.design/components/table/ `<Table>`} component.\n * All features such as sorting, filtering and pagination comes as out of box.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/useTable} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#baserecord `BaseRecord`}. Defaults to `TQueryFnData`\n *\n */\n\nconst defaultPermanentFilter: CrudFilter[] = [];\nconst defaultPermanentSorter: CrudSort[] = [];\n\nexport function useTable<\n  TQueryFnData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TData extends BaseRecord = TQueryFnData,\n>({\n  initialCurrent,\n  initialPageSize,\n  hasPagination = true,\n  pagination,\n  initialSorter,\n  permanentSorter = defaultPermanentSorter,\n  defaultSetFilterBehavior,\n  initialFilter,\n  permanentFilter = defaultPermanentFilter,\n  filters: filtersFromProp,\n  sorters: sortersFromProp,\n  syncWithLocation: syncWithLocationProp,\n  resource: resourceFromProp,\n  successNotification,\n  errorNotification,\n  queryOptions,\n  liveMode: liveModeFromProp,\n  onLiveEvent,\n  liveParams,\n  meta,\n  metaData,\n  dataProviderName,\n  overtimeOptions,\n}: useTableProps<TQueryFnData, TError, TData> = {}): useTableReturnType<\n  TData,\n  TError\n> {\n  const { syncWithLocation: syncWithLocationContext } = useSyncWithLocation();\n\n  const syncWithLocation = syncWithLocationProp ?? syncWithLocationContext;\n\n  const liveMode = useLiveMode(liveModeFromProp);\n\n  const routerType = useRouterType();\n  const { useLocation } = useRouterContext();\n  const { search, pathname } = useLocation();\n  const getMeta = useMeta();\n  const parsedParams = useParsed();\n\n  const isServerSideFilteringEnabled =\n    (filtersFromProp?.mode || \"server\") === \"server\";\n  const isServerSideSortingEnabled =\n    (sortersFromProp?.mode || \"server\") === \"server\";\n  const hasPaginationString = hasPagination === false ? \"off\" : \"server\";\n  const isPaginationEnabled =\n    (pagination?.mode ?? hasPaginationString) !== \"off\";\n  const prefferedCurrent = pickNotDeprecated(\n    pagination?.current,\n    initialCurrent,\n  );\n  const prefferedPageSize = pickNotDeprecated(\n    pagination?.pageSize,\n    initialPageSize,\n  );\n  const preferredMeta = pickNotDeprecated(meta, metaData);\n\n  /** `parseTableParams` is redundant with the new routing */\n  // We want to always parse the query string even when syncWithLocation is\n  // deactivated, for hotlinking to work properly\n  const { parsedCurrent, parsedPageSize, parsedSorter, parsedFilters } =\n    parseTableParams(search ?? \"?\");\n\n  const preferredInitialFilters = pickNotDeprecated(\n    filtersFromProp?.initial,\n    initialFilter,\n  );\n  const preferredPermanentFilters =\n    pickNotDeprecated(filtersFromProp?.permanent, permanentFilter) ??\n    defaultPermanentFilter;\n\n  const preferredInitialSorters = pickNotDeprecated(\n    sortersFromProp?.initial,\n    initialSorter,\n  );\n  const preferredPermanentSorters =\n    pickNotDeprecated(sortersFromProp?.permanent, permanentSorter) ??\n    defaultPermanentSorter;\n\n  const prefferedFilterBehavior =\n    pickNotDeprecated(\n      filtersFromProp?.defaultBehavior,\n      defaultSetFilterBehavior,\n    ) ?? \"merge\";\n\n  let defaultCurrent: number;\n  let defaultPageSize: number;\n  let defaultSorter: CrudSort[] | undefined;\n  let defaultFilter: CrudFilter[] | undefined;\n\n  if (syncWithLocation) {\n    defaultCurrent =\n      parsedParams?.params?.current || parsedCurrent || prefferedCurrent || 1;\n    defaultPageSize =\n      parsedParams?.params?.pageSize ||\n      parsedPageSize ||\n      prefferedPageSize ||\n      10;\n    defaultSorter =\n      parsedParams?.params?.sorters ||\n      (parsedSorter.length ? parsedSorter : preferredInitialSorters);\n    defaultFilter =\n      parsedParams?.params?.filters ||\n      (parsedFilters.length ? parsedFilters : preferredInitialFilters);\n  } else {\n    defaultCurrent = prefferedCurrent || 1;\n    defaultPageSize = prefferedPageSize || 10;\n    defaultSorter = preferredInitialSorters;\n    defaultFilter = preferredInitialFilters;\n  }\n\n  const { replace } = useNavigation();\n  /** New way of `replace` calls to the router is using `useGo` */\n  const go = useGo();\n\n  const { resource, identifier } = useResource(resourceFromProp);\n\n  const combinedMeta = getMeta({\n    resource,\n    meta: preferredMeta,\n  });\n\n  React.useEffect(() => {\n    warnOnce(\n      typeof identifier === \"undefined\",\n      \"useTable: `resource` is not defined.\",\n    );\n  }, [identifier]);\n\n  const [sorters, setSorters] = useState<CrudSort[]>(\n    setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),\n  );\n  const [filters, setFilters] = useState<CrudFilter[]>(\n    setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),\n  );\n  const [current, setCurrent] = useState<number>(defaultCurrent);\n  const [pageSize, setPageSize] = useState<number>(defaultPageSize);\n\n  const getCurrentQueryParams = (): object => {\n    if (routerType === \"new\") {\n      // We get QueryString parameters that are uncontrolled by refine.\n      const { sorters, filters, pageSize, current, ...rest } =\n        parsedParams?.params ?? {};\n\n      return rest;\n    }\n\n    // We get QueryString parameters that are uncontrolled by refine.\n    const { sorter, filters, pageSize, current, ...rest } = qs.parse(search, {\n      ignoreQueryPrefix: true,\n    });\n\n    return rest;\n  };\n\n  const createLinkForSyncWithLocation = ({\n    pagination: { current, pageSize },\n    sorter,\n    filters,\n  }: SyncWithLocationParams) => {\n    if (routerType === \"new\") {\n      return (\n        go({\n          type: \"path\",\n          options: {\n            keepHash: true,\n            keepQuery: true,\n          },\n          query: {\n            ...(isPaginationEnabled ? { current, pageSize } : {}),\n            sorters: sorter,\n            filters,\n            ...getCurrentQueryParams(),\n          },\n        }) ?? \"\"\n      );\n    }\n    const currentQueryParams = qs.parse(search?.substring(1)); // remove first ? character\n\n    const stringifyParams = stringifyTableParams({\n      pagination: {\n        pageSize,\n        current,\n      },\n      sorters: sorters ?? sorter,\n      filters,\n      ...currentQueryParams,\n    });\n\n    return `${pathname ?? \"\"}?${stringifyParams ?? \"\"}`;\n  };\n\n  useEffect(() => {\n    if (search === \"\") {\n      setCurrent(defaultCurrent);\n      setPageSize(defaultPageSize);\n      setSorters(\n        setInitialSorters(preferredPermanentSorters, defaultSorter ?? []),\n      );\n      setFilters(\n        setInitialFilters(preferredPermanentFilters, defaultFilter ?? []),\n      );\n    }\n  }, [search]);\n\n  useEffect(() => {\n    if (syncWithLocation) {\n      // Careful! This triggers render\n      const queryParams = getCurrentQueryParams();\n\n      if (routerType === \"new\") {\n        go({\n          type: \"replace\",\n          options: {\n            keepQuery: true,\n          },\n          query: {\n            ...(isPaginationEnabled ? { pageSize, current } : {}),\n            sorters: differenceWith(\n              sorters,\n              preferredPermanentSorters,\n              isEqual,\n            ),\n            filters: differenceWith(\n              filters,\n              preferredPermanentFilters,\n              isEqual,\n            ),\n            // ...queryParams,\n          },\n        });\n      } else {\n        const stringifyParams = stringifyTableParams({\n          ...(isPaginationEnabled\n            ? {\n                pagination: {\n                  pageSize,\n                  current,\n                },\n              }\n            : {}),\n          sorters: differenceWith(sorters, preferredPermanentSorters, isEqual),\n          filters: differenceWith(filters, preferredPermanentFilters, isEqual),\n          ...queryParams,\n        });\n        return replace?.(`${pathname}?${stringifyParams}`, undefined, {\n          shallow: true,\n        });\n      }\n    }\n  }, [syncWithLocation, current, pageSize, sorters, filters]);\n\n  const queryResult = useList<TQueryFnData, TError, TData>({\n    resource: identifier,\n    hasPagination,\n    pagination: { current, pageSize, mode: pagination?.mode },\n    filters: isServerSideFilteringEnabled\n      ? unionFilters(preferredPermanentFilters, filters)\n      : undefined,\n    sorters: isServerSideSortingEnabled\n      ? unionSorters(preferredPermanentSorters, sorters)\n      : undefined,\n    queryOptions,\n    overtimeOptions,\n    successNotification,\n    errorNotification,\n    meta: combinedMeta,\n    metaData: combinedMeta,\n    liveMode,\n    liveParams,\n    onLiveEvent,\n    dataProviderName,\n  });\n\n  const setFiltersAsMerge = useCallback(\n    (newFilters: CrudFilter[]) => {\n      setFilters((prevFilters) =>\n        unionFilters(preferredPermanentFilters, newFilters, prevFilters),\n      );\n    },\n    [preferredPermanentFilters],\n  );\n\n  const setFiltersAsReplace = useCallback(\n    (newFilters: CrudFilter[]) => {\n      setFilters(unionFilters(preferredPermanentFilters, newFilters));\n    },\n    [preferredPermanentFilters],\n  );\n\n  const setFiltersWithSetter = useCallback(\n    (setter: (prevFilters: CrudFilter[]) => CrudFilter[]) => {\n      setFilters((prev) =>\n        unionFilters(preferredPermanentFilters, setter(prev)),\n      );\n    },\n    [preferredPermanentFilters],\n  );\n\n  const setFiltersFn: useTableReturnType<TQueryFnData>[\"setFilters\"] =\n    useCallback(\n      (\n        setterOrFilters,\n        behavior: SetFilterBehavior = prefferedFilterBehavior,\n      ) => {\n        if (typeof setterOrFilters === \"function\") {\n          setFiltersWithSetter(setterOrFilters);\n        } else {\n          if (behavior === \"replace\") {\n            setFiltersAsReplace(setterOrFilters);\n          } else {\n            setFiltersAsMerge(setterOrFilters);\n          }\n        }\n      },\n      [setFiltersWithSetter, setFiltersAsReplace, setFiltersAsMerge],\n    );\n\n  const setSortWithUnion = useCallback(\n    (newSorter: CrudSort[]) => {\n      setSorters(() => unionSorters(preferredPermanentSorters, newSorter));\n    },\n    [preferredPermanentSorters],\n  );\n\n  return {\n    tableQueryResult: queryResult,\n    tableQuery: queryResult,\n    sorters,\n    setSorters: setSortWithUnion,\n    sorter: sorters,\n    setSorter: setSortWithUnion,\n    filters,\n    setFilters: setFiltersFn,\n    current,\n    setCurrent,\n    pageSize,\n    setPageSize,\n    pageCount: pageSize\n      ? Math.ceil((queryResult.data?.total ?? 0) / pageSize)\n      : 1,\n    createLinkForSyncWithLocation,\n    overtime: queryResult.overtime,\n  };\n}\n","import { useContext } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseMutationOptions,\n  type UseMutationResult,\n  useMutation,\n  useQueryClient,\n} from \"@tanstack/react-query\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { ResourceContext } from \"@contexts/resource\";\nimport { hasPermission, pickNotDeprecated } from \"@definitions/helpers\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nimport { pickResource } from \"@definitions/helpers/pick-resource\";\nimport { useGetIdentity } from \"@hooks/auth\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { LogParams } from \"../../../contexts/auditLog/types\";\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\ntype LogRenameData =\n  | {\n      resource?: string;\n    }\n  | undefined;\n\nexport type UseLogReturnType<TLogData, TLogRenameData> = {\n  log: UseMutationResult<TLogData, Error, LogParams>;\n  rename: UseMutationResult<\n    TLogRenameData,\n    Error,\n    {\n      id: BaseKey;\n      name: string;\n    }\n  >;\n};\n\nexport type UseLogMutationProps<\n  TLogData,\n  TLogRenameData extends LogRenameData = LogRenameData,\n> = {\n  logMutationOptions?: Omit<\n    UseMutationOptions<TLogData, Error, LogParams, unknown>,\n    \"mutationFn\"\n  >;\n  renameMutationOptions?: Omit<\n    UseMutationOptions<\n      TLogRenameData,\n      Error,\n      { id: BaseKey; name: string },\n      unknown\n    >,\n    \"mutationFn\" | \"onSuccess\"\n  >;\n};\n\n/**\n * useLog is used to `create` a new and `rename` the existing audit log.\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/audit-log/useLog} for more details.\n */\n\nexport const useLog = <\n  TLogData,\n  TLogRenameData extends LogRenameData = LogRenameData,\n>({\n  logMutationOptions,\n  renameMutationOptions,\n}: UseLogMutationProps<TLogData, TLogRenameData> = {}): UseLogReturnType<\n  TLogData,\n  TLogRenameData\n> => {\n  const queryClient = useQueryClient();\n  const auditLogContext = useContext(AuditLogContext);\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const authProvider = useActiveAuthProvider();\n\n  const { resources } = useContext(ResourceContext);\n  const {\n    data: identityData,\n    refetch,\n    isLoading,\n  } = useGetIdentity({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n    queryOptions: {\n      enabled: !!auditLogContext?.create,\n    },\n  });\n\n  const log = useMutation<TLogData, Error, LogParams, unknown>(\n    async (params) => {\n      const resource = pickResource(params.resource, resources);\n      const logPermissions = pickNotDeprecated(\n        resource?.meta?.audit,\n        resource?.options?.audit,\n        resource?.options?.auditLog?.permissions,\n      );\n\n      if (logPermissions) {\n        if (!hasPermission(logPermissions, params.action)) {\n          return;\n        }\n      }\n\n      let authorData;\n      if (isLoading && !!auditLogContext?.create) {\n        authorData = await refetch();\n      }\n\n      return await auditLogContext.create?.({\n        ...params,\n        author: identityData ?? authorData?.data,\n      });\n    },\n    {\n      mutationKey: keys().audit().action(\"log\").get(),\n      ...logMutationOptions,\n      meta: {\n        ...logMutationOptions?.meta,\n        ...getXRay(\"useLog\", preferLegacyKeys),\n      },\n    },\n  );\n\n  const rename = useMutation<\n    TLogRenameData,\n    Error,\n    { id: BaseKey; name: string },\n    unknown\n  >(\n    async (params) => {\n      return await auditLogContext.update?.(params);\n    },\n    {\n      onSuccess: (data) => {\n        if (data?.resource) {\n          queryClient.invalidateQueries(\n            keys()\n              .audit()\n              .resource(data?.resource ?? \"\")\n              .action(\"list\")\n              .get(preferLegacyKeys),\n          );\n        }\n      },\n      mutationKey: keys().audit().action(\"rename\").get(),\n      ...renameMutationOptions,\n      meta: {\n        ...renameMutationOptions?.meta,\n        ...getXRay(\"useLog\", preferLegacyKeys),\n      },\n    },\n  );\n\n  return { log, rename };\n};\n","import React, { type PropsWithChildren } from \"react\";\n\nimport type { IAuditLogContext } from \"./types\";\n\nexport const AuditLogContext = React.createContext<IAuditLogContext>({});\n\nexport const AuditLogContextProvider: React.FC<\n  PropsWithChildren<IAuditLogContext>\n> = ({ create, get, update, children }) => {\n  return (\n    <AuditLogContext.Provider value={{ create, get, update }}>\n      {children}\n    </AuditLogContext.Provider>\n  );\n};\n","import { useContext } from \"react\";\n\nimport { getXRay } from \"@refinedev/devtools-internal\";\nimport {\n  type UseQueryOptions,\n  type UseQueryResult,\n  useQuery,\n} from \"@tanstack/react-query\";\n\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { useKeys } from \"@hooks/useKeys\";\n\nimport type { HttpError, MetaQuery } from \"../../../contexts/data/types\";\n\nexport type UseLogProps<TQueryFnData, TError, TData> = {\n  resource: string;\n  action?: string;\n  meta?: Record<number | string, any>;\n  author?: Record<number | string, any>;\n  queryOptions?: UseQueryOptions<TQueryFnData, TError, TData>;\n  metaData?: MetaQuery;\n};\n\n/**\n * useLogList is used to get and filter audit logs.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/audit-log/useLogList} for more details.\n *\n * @typeParam TQueryFnData - Result data returned by the query function.\n * @typeParam TError - Custom error object that extends {@link https://refine.dev/docs/api-reference/core/interfaceReferences#httperror `HttpError`}\n * @typeParam TData - Result data returned by the `select` function. Defaults to `TQueryFnData`\n *\n */\nexport const useLogList = <\n  TQueryFnData = any,\n  TError extends HttpError = HttpError,\n  TData = TQueryFnData,\n>({\n  resource,\n  action,\n  meta,\n  author,\n  metaData,\n  queryOptions,\n}: UseLogProps<TQueryFnData, TError, TData>): UseQueryResult<TData> => {\n  const { get } = useContext(AuditLogContext);\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const queryResponse = useQuery<TQueryFnData, TError, TData>({\n    queryKey: keys()\n      .audit()\n      .resource(resource)\n      .action(\"list\")\n      .params(meta)\n      .get(preferLegacyKeys),\n    queryFn: () =>\n      get?.({\n        resource,\n        action,\n        author,\n        meta,\n        metaData,\n      }) ?? Promise.resolve([]),\n    enabled: typeof get !== \"undefined\",\n    ...queryOptions,\n    retry: false,\n    meta: {\n      ...queryOptions?.meta,\n      ...getXRay(\"useLogList\", preferLegacyKeys, resource),\n    },\n  });\n\n  return queryResponse;\n};\n","import React, { useContext } from \"react\";\n\nimport warnOnce from \"warn-once\";\n\nimport { I18nContext } from \"@contexts/i18n\";\nimport { useRouterType } from \"@contexts/router/picker\";\nimport { pickNotDeprecated } from \"@definitions\";\nimport { getActionRoutesFromResource } from \"@definitions/helpers/router\";\nimport { composeRoute } from \"@definitions/helpers/router/compose-route\";\nimport { useRefineContext, useResource, useTranslate } from \"@hooks\";\nimport { useParsed } from \"@hooks/router/use-parsed\";\n\nimport type { IResourceItem } from \"../../contexts/resource/types\";\nimport { pickResource } from \"../../definitions/helpers/pick-resource/index\";\n\nexport type BreadcrumbsType = {\n  label: string;\n  href?: string;\n  icon?: React.ReactNode;\n};\n\ntype UseBreadcrumbReturnType = {\n  breadcrumbs: BreadcrumbsType[];\n};\n\ntype UseBreadcrumbProps = {\n  /**\n   * Additional params to be used in the route generation process.\n   */\n  meta?: Record<string, string | number>;\n};\n\nexport const useBreadcrumb = ({\n  meta: metaFromProps = {},\n}: UseBreadcrumbProps = {}): UseBreadcrumbReturnType => {\n  const routerType = useRouterType();\n  const { i18nProvider } = useContext(I18nContext);\n  const parsed = useParsed();\n  const translate = useTranslate();\n  const { resources, resource, action } = useResource();\n  const {\n    options: { textTransformers },\n  } = useRefineContext();\n\n  const breadcrumbs: BreadcrumbsType[] = [];\n\n  if (!resource?.name) {\n    return { breadcrumbs };\n  }\n\n  const addBreadcrumb = (parentName: string | IResourceItem) => {\n    const parentResource =\n      typeof parentName === \"string\"\n        ? pickResource(parentName, resources, routerType === \"legacy\") ?? {\n            name: parentName,\n          }\n        : parentName;\n\n    if (parentResource) {\n      const grandParentName = pickNotDeprecated(\n        parentResource?.meta?.parent,\n        parentResource?.parentName,\n      );\n      if (grandParentName) {\n        addBreadcrumb(grandParentName);\n      }\n      const listActionOfResource = getActionRoutesFromResource(\n        parentResource,\n        resources,\n        routerType === \"legacy\",\n      ).find((r) => r.action === \"list\");\n\n      const hrefRaw = listActionOfResource?.resource?.list\n        ? listActionOfResource?.route\n        : undefined;\n\n      const href = hrefRaw\n        ? routerType === \"legacy\"\n          ? hrefRaw\n          : composeRoute(hrefRaw, parentResource?.meta, parsed, metaFromProps)\n        : undefined;\n\n      breadcrumbs.push({\n        label:\n          pickNotDeprecated(\n            parentResource.meta?.label,\n            parentResource.options?.label,\n          ) ??\n          translate(\n            `${parentResource.name}.${parentResource.name}`,\n            textTransformers.humanize(parentResource.name),\n          ),\n        href: href,\n        icon: pickNotDeprecated(\n          parentResource.meta?.icon,\n          parentResource.options?.icon,\n          parentResource.icon,\n        ),\n      });\n    }\n  };\n\n  addBreadcrumb(resource);\n\n  if (action && action !== \"list\") {\n    const key = `actions.${action}`;\n    const actionLabel = translate(key);\n    if (typeof i18nProvider !== \"undefined\" && actionLabel === key) {\n      warnOnce(\n        true,\n        `[useBreadcrumb]: Breadcrumb missing translate key for the \"${action}\" action. Please add \"actions.${action}\" key to your translation file.\\nFor more information, see https://refine.dev/docs/api-reference/core/hooks/useBreadcrumb/#i18n-support`,\n      );\n      breadcrumbs.push({\n        label: translate(\n          `buttons.${action}`,\n          textTransformers.humanize(action),\n        ),\n      });\n    } else {\n      breadcrumbs.push({\n        label: translate(key, textTransformers.humanize(action)),\n      });\n    }\n  }\n\n  return {\n    breadcrumbs,\n  };\n};\n","import React from \"react\";\n\nimport { pickNotDeprecated, useUserFriendlyName } from \"@definitions\";\nimport { getParentResource } from \"@definitions/helpers/router\";\n\nimport { useParsed, useResource, useRouterContext, useTranslate } from \"..\";\nimport { useRouterType } from \"../../contexts/router/picker\";\nimport { createResourceKey } from \"../../definitions/helpers/menu/create-resource-key\";\nimport {\n  type FlatTreeItem,\n  createTree,\n} from \"../../definitions/helpers/menu/create-tree\";\nimport { useGetToPath } from \"../router/use-get-to-path/index\";\n\ntype UseMenuReturnType = {\n  defaultOpenKeys: string[];\n  selectedKey: string;\n  menuItems: TreeMenuItem[];\n};\n\nexport type UseMenuProps = {\n  meta?: Record<string, any>;\n  hideOnMissingParameter?: boolean;\n};\n\nexport type TreeMenuItem =\n  // Omitted because `label` and `route` are deprecated in `resource` but not in `menuItems`. These are populated in `prepareItem` for ease of use.\n  Omit<FlatTreeItem, \"label\" | \"route\" | \"children\"> & {\n    route?: string;\n    icon?: React.ReactNode;\n    label?: string;\n    children: TreeMenuItem[];\n  };\n\nconst getCleanPath = (pathname: string) => {\n  return pathname\n    .split(\"?\")[0]\n    .split(\"#\")[0]\n    .replace(/(.+)(\\/$)/, \"$1\");\n};\n\n/**\n * `useMenu` is used to get menu items of the default sidebar.\n * These items include a link to dashboard page (if it exists) and links to the user defined resources\n * (passed as children to {@link https://refine.dev/docs/core/components/refine-config `<Refine>`}).\n * This hook can also be used to build custom menus, which is also used by default sidebar to show menu items.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/hooks/ui/useMenu} for more details.\n */\nexport const useMenu = (\n  { meta, hideOnMissingParameter = true }: UseMenuProps = {\n    hideOnMissingParameter: true,\n  },\n): UseMenuReturnType => {\n  const translate = useTranslate();\n\n  const getToPath = useGetToPath();\n  const routerType = useRouterType();\n  const { resource, resources } = useResource();\n  const { pathname } = useParsed();\n  const { useLocation } = useRouterContext();\n  const { pathname: legacyPath } = useLocation();\n  const getFriendlyName = useUserFriendlyName();\n\n  const cleanPathname =\n    routerType === \"legacy\"\n      ? getCleanPath(legacyPath)\n      : pathname\n        ? getCleanPath(pathname)\n        : undefined;\n\n  const cleanRoute = `/${(cleanPathname ?? \"\").replace(/^\\//, \"\")}`;\n\n  const selectedKey = resource\n    ? createResourceKey(resource, resources, routerType === \"legacy\")\n    : cleanRoute ?? \"\";\n\n  const defaultOpenKeys = React.useMemo(() => {\n    if (!resource) return [];\n    let parent = getParentResource(resource, resources);\n    const keys = [createResourceKey(resource, resources)];\n    while (parent) {\n      keys.push(createResourceKey(parent, resources));\n      parent = getParentResource(parent, resources);\n    }\n    return keys;\n  }, []);\n\n  const prepareItem = React.useCallback(\n    (item: FlatTreeItem): TreeMenuItem | undefined => {\n      if (pickNotDeprecated(item?.meta?.hide, item?.options?.hide)) {\n        return undefined;\n      }\n      if (!item?.list && item.children.length === 0) return undefined;\n\n      const composed = item.list\n        ? getToPath({\n            resource: item,\n            action: \"list\",\n            legacy: routerType === \"legacy\",\n            meta,\n          })\n        : undefined;\n\n      if (\n        hideOnMissingParameter &&\n        composed &&\n        composed.match(/(\\/|^):(.+?)(\\/|$){1}/)\n      )\n        return undefined;\n\n      return {\n        ...item,\n        route: composed,\n        icon: pickNotDeprecated(item.meta?.icon, item.options?.icon, item.icon),\n        label:\n          pickNotDeprecated(item?.meta?.label, item?.options?.label) ??\n          translate(\n            `${item.name}.${item.name}`,\n            getFriendlyName(item.name, \"plural\"),\n          ),\n      };\n    },\n    [routerType, meta, getToPath, translate, hideOnMissingParameter],\n  );\n\n  const treeItems = React.useMemo(() => {\n    const treeMenuItems = createTree(resources, routerType === \"legacy\");\n\n    // add paths to items and their nodes recursively\n    const prepare = (items: TreeMenuItem[]): TreeMenuItem[] => {\n      return items.flatMap((item) => {\n        const preparedNodes = prepare(item.children);\n        const newItem = prepareItem({\n          ...item,\n          children: preparedNodes,\n        });\n\n        if (!newItem) return [];\n\n        return [newItem];\n      });\n    };\n\n    return prepare(treeMenuItems);\n  }, [resources, routerType, prepareItem]);\n\n  return {\n    defaultOpenKeys,\n    selectedKey,\n    menuItems: treeItems,\n  };\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport {\n  getParentResource,\n  removeLeadingTrailingSlashes,\n} from \"../../helpers/router\";\n\nexport const createResourceKey = (\n  resource: IResourceItem,\n  resources: IResourceItem[],\n  legacy = false,\n) => {\n  const parents: IResourceItem[] = [];\n\n  let currentParentResource = getParentResource(resource, resources);\n  while (currentParentResource) {\n    parents.push(currentParentResource);\n    currentParentResource = getParentResource(currentParentResource, resources);\n  }\n  parents.reverse();\n\n  const key = [...parents, resource]\n    .map((r) =>\n      removeLeadingTrailingSlashes(\n        (legacy ? r.route : undefined) ?? r.identifier ?? r.name,\n      ),\n    )\n    .join(\"/\");\n\n  return `/${key.replace(/^\\//, \"\")}`;\n};\n","import type { IResourceItem } from \"../../../contexts/resource/types\";\nimport { getParentResource } from \"../router\";\nimport { createResourceKey } from \"./create-resource-key\";\n\nexport type Tree = {\n  item: IResourceItem;\n  children: { [key: string]: Tree };\n};\n\nexport type FlatTreeItem = IResourceItem & {\n  key: string;\n  children: FlatTreeItem[];\n};\n\nexport const createTree = (\n  resources: IResourceItem[],\n  legacy = false,\n): FlatTreeItem[] => {\n  const root: Tree = {\n    item: {\n      name: \"__root__\",\n    },\n    children: {},\n  };\n\n  resources.forEach((resource) => {\n    const parents: IResourceItem[] = [];\n\n    let currentParent = getParentResource(resource, resources);\n    while (currentParent) {\n      parents.push(currentParent);\n      currentParent = getParentResource(currentParent, resources);\n    }\n    parents.reverse();\n\n    let currentTree = root;\n\n    parents.forEach((parent) => {\n      const key =\n        (legacy ? parent.route : undefined) ?? parent.identifier ?? parent.name;\n\n      if (!currentTree.children[key]) {\n        currentTree.children[key] = {\n          item: parent,\n          children: {},\n        };\n      }\n      currentTree = currentTree.children[key];\n    });\n\n    const key =\n      (legacy ? resource.route : undefined) ??\n      resource.identifier ??\n      resource.name;\n\n    if (!currentTree.children[key]) {\n      currentTree.children[key] = {\n        item: resource,\n        children: {},\n      };\n    }\n  });\n\n  const flatten = (tree: Tree): FlatTreeItem[] => {\n    const items: FlatTreeItem[] = [];\n\n    Object.keys(tree.children).forEach((key) => {\n      const itemKey = createResourceKey(\n        tree.children[key].item,\n        resources,\n        legacy,\n      );\n      const item: FlatTreeItem = {\n        ...tree.children[key].item,\n        key: itemKey,\n        children: flatten(tree.children[key]),\n      };\n      items.push(item);\n    });\n\n    return items;\n  };\n\n  return flatten(root);\n};\n","import React, {\n  type ReactNode,\n  createContext,\n  useContext,\n  useMemo,\n} from \"react\";\n\ntype MetaContextValue = Record<string, any>;\n\nexport const MetaContext = createContext<MetaContextValue>({});\n\n/**\n * Is used to provide meta data to the children components.\n * @internal\n */\nexport const MetaContextProvider = ({\n  children,\n  value,\n}: { children: ReactNode; value: MetaContextValue }) => {\n  const currentValue = useMetaContext();\n\n  const metaContext = useMemo(() => {\n    return {\n      ...currentValue,\n      ...value,\n    };\n  }, [currentValue, value]);\n\n  return (\n    <MetaContext.Provider value={metaContext}>{children}</MetaContext.Provider>\n  );\n};\n\n/**\n * @internal\n * @returns The MetaContext value.\n */\nexport const useMetaContext = () => {\n  const context = useContext(MetaContext);\n  if (!context) {\n    throw new Error(\"useMetaContext must be used within a MetaContextProvider\");\n  }\n\n  return useContext(MetaContext);\n};\n","import { useMetaContext } from \"@contexts/metaContext\";\nimport { sanitizeResource } from \"@definitions/helpers/sanitize-resource\";\nimport { useParsed } from \"@hooks/router\";\n\nimport type { MetaQuery } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\n\n/**\n * Hook that returns a function to get meta.\n * The meta is a combination of the resource meta, hook meta, query params and metaContext value.\n * @internal\n */\nexport const useMeta = () => {\n  const { params } = useParsed();\n\n  const metaContext = useMetaContext();\n\n  const getMetaFn = ({\n    resource,\n    meta: metaFromProp,\n  }: {\n    resource?: IResourceItem;\n    meta?: MetaQuery;\n  } = {}) => {\n    const { meta } = sanitizeResource(resource) ?? { meta: {} };\n\n    // this fields came from the query params and should be removed from the meta because they are not part of the meta.\n    const {\n      filters: _filters,\n      sorters: _sorters,\n      current: _current,\n      pageSize: _pageSize,\n      ...additionalParams\n    } = params ?? {};\n\n    const result: Record<string, unknown> = {\n      ...meta,\n      ...additionalParams,\n      ...metaFromProp,\n    };\n\n    // when MultiTenancyProvider from \"@refinedev-ee/multi-tenancy\" is provided, we need to add tenantId to the meta\n    if (metaContext?.tenantId) {\n      result[\"tenantId\"] = metaContext.tenantId;\n    }\n\n    return result;\n  };\n\n  return getMetaFn;\n};\n","import { RefineContext } from \"@contexts/refine\";\nimport React from \"react\";\n\nexport const useRefineOptions = () => {\n  const { options } = React.useContext(RefineContext);\n\n  return options;\n};\n","import React from \"react\";\n\nimport { useId } from \"./use-id\";\nimport { useAction } from \"./use-action\";\nimport { useResource } from \"../resource\";\nimport type { BaseKey } from \"../../contexts/data/types\";\nimport type { IResourceItem } from \"../../contexts/resource/types\";\nimport type { Action } from \"../../contexts/router/types\";\nimport type { FormAction } from \"../form/types\";\n\ntype Props = {\n  id?: BaseKey;\n  resource?: string;\n  action?: Action;\n};\n\ntype ResourceParams = {\n  id?: BaseKey;\n  setId: React.Dispatch<React.SetStateAction<BaseKey | undefined>>;\n  resource?: IResourceItem;\n  action?: Action;\n  identifier?: string;\n  formAction: FormAction;\n};\n\n/**\n * Interactions in Refine has 3 main parameters: resource, action and id.\n *\n * This hook is used to manage these parameters based on below conditions and outputs the final parameters.\n *\n * `resource`: The resource to be used. (either the identifier or the name of the resource)\n * - If a `resource` is provided, it will be used (even if it's not defined in the <Refine/> component)\n * - If a `resource` is not provided, it will be inferred from the route.\n * `id`: The `id` of the record to be used.\n * - If an `id` is provided, it will be used.\n * - If an `id` is not provided, it will either be inferred from the route or will be `undefined`.\n * -- If a custom resource is provided and it's different from the inferred resource, the id will be undefined.\n * -- If a custom resource is provided and it's same as the inferred resource, the id will be inferred from the route.\n * -- If a custom resource is not provided, the id will be inferred from the route.\n * `action`: The action to be used.\n * - If an `action` is provided, it will be used.\n * - If an `action` is not provided, it will be inferred from the route.\n * `formAction`: The action to be used in the form.\n * - `formAction` can only be \"edit\", \"clone\" or \"create\".\n * - If action is \"edit\" or \"clone\", `formAction` will be the same as action.\n * - Same as `id`, if passed resource is different from inferred resource, `formAction` will fallback to \"create\" and ignore the action from the route.\n */\nexport function useResourceParams(props?: Props): ResourceParams {\n  const { select, identifier: inferredIdentifier } = useResource();\n  const resourceToCheck = props?.resource ?? inferredIdentifier;\n  const { identifier = undefined, resource = undefined } = resourceToCheck\n    ? select(resourceToCheck, true)\n    : {};\n\n  const isSameResource = inferredIdentifier === identifier;\n  const inferredId = useId();\n  const action = useAction(props?.action);\n\n  const defaultId = React.useMemo(() => {\n    if (!isSameResource) return props?.id;\n\n    return props?.id ?? inferredId;\n  }, [isSameResource, props?.id, inferredId]);\n\n  const [id, setId] = React.useState<BaseKey | undefined>(defaultId);\n\n  React.useMemo(() => setId(defaultId), [defaultId]);\n\n  const formAction = React.useMemo(() => {\n    if (!isSameResource && !props?.action) {\n      return \"create\";\n    }\n\n    if (action === \"edit\" || action === \"clone\") {\n      return action;\n    }\n\n    return \"create\";\n  }, [action, isSameResource, props?.action]);\n\n  return {\n    id,\n    setId,\n    resource,\n    action,\n    identifier,\n    formAction,\n  };\n}\n","import { useParsed } from \"../../router/use-parsed\";\nimport { useRouterContext } from \"../../legacy-router/useRouterContext\";\nimport type { BaseKey } from \"../../../contexts/data/types\";\nimport { useRouterType } from \"../../../contexts/router/picker\";\nimport type { ResourceRouterParams } from \"../../../contexts/router/legacy/types\";\n\n/**\n * Returns the id from the router regardless of the router type.\n * In legacy routers, `useParsed` won't work and in the new router bindings, `useParams` won't work.\n * To make it easier to get the id from the router, this hook can be used.\n *\n * Additionally, if an id is provided as a parameter, it will be used instead of the inferred id.\n *\n * @internal usage only\n */\nexport const useId = (id?: BaseKey) => {\n  const routerType = useRouterType();\n  const { useParams } = useRouterContext();\n\n  const parsed = useParsed();\n  const legacyParams = useParams<Partial<ResourceRouterParams>>();\n\n  const inferredId = routerType === \"legacy\" ? legacyParams.id : parsed.id;\n\n  return id ?? inferredId;\n};\n","import { useParsed } from \"../../router/use-parsed\";\nimport { useRouterContext } from \"../../legacy-router/useRouterContext\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport { useRouterType } from \"../../../contexts/router/picker\";\nimport type { ResourceRouterParams } from \"../../../contexts/router/legacy/types\";\n\n/**\n * Returns the action from the router regardless of the router type.\n * In legacy routers, `useParsed` won't work and in the new router bindings, `useParams` won't work.\n * To make it easier to get the action from the router, this hook can be used.\n *\n * Additionally, if an action is provided as a parameter, it will be used instead of the inferred action.\n *\n * @internal usage only\n */\nexport const useAction = (action?: Action) => {\n  const routerType = useRouterType();\n  const { useParams } = useRouterContext();\n\n  const parsed = useParsed();\n  const legacyParams = useParams<Partial<ResourceRouterParams>>();\n\n  const inferredAction =\n    routerType === \"legacy\" ? legacyParams.action : parsed.action;\n\n  return action ?? inferredAction;\n};\n","import { useRefineOptions } from \"../../use-refine-options\";\nimport { useTranslate } from \"../../i18n\";\n\nexport type ActionableButtonProps = {\n  type: \"save\" | \"export\" | \"import\";\n};\n\nexport type ActionableButtonValues = {\n  label: string;\n};\n\nexport function useActionableButton({\n  type,\n}: ActionableButtonProps): ActionableButtonValues {\n  const translate = useTranslate();\n  const {\n    textTransformers: { humanize },\n  } = useRefineOptions();\n\n  const key = `buttons.${type}`;\n  const fallback = humanize(type);\n\n  const label = translate(key, fallback);\n\n  return { label };\n}\n","import React from \"react\";\n\nimport { useUserFriendlyName } from \"../../../definitions/helpers/useUserFriendlyName\";\nimport { useRouterType } from \"../../../contexts/router/picker\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useRefineOptions } from \"../../use-refine-options\";\nimport { useButtonCanAccess } from \"../button-can-access\";\nimport { useRouterContext } from \"../../legacy-router\";\nimport { useNavigation } from \"../../navigation\";\nimport { useTranslate } from \"../../i18n\";\nimport { useLink } from \"../../router\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport type { CanReturnType } from \"../../../contexts/accessControl/types\";\n\nexport type NavigationButtonProps = {\n  action: Action;\n  id?: BaseKey;\n  resource?: string;\n  meta?: Record<string, unknown>;\n  accessControl?: {\n    enabled?: boolean;\n    hideIfUnauthorized?: boolean;\n  };\n};\n\nexport type NavigationButtonValues = {\n  to: string;\n  label: string;\n  disabled: boolean;\n  title: string;\n  hidden: boolean;\n  canAccess: CanReturnType | undefined;\n  LinkComponent: React.ComponentType<\n    React.PropsWithChildren<{\n      [prop: string]: any;\n      to: string;\n    }>\n  >;\n};\n\nexport function useNavigationButton(\n  props: NavigationButtonProps,\n): NavigationButtonValues {\n  const navigation = useNavigation();\n  const routerType = useRouterType();\n  const Link = useLink();\n  const { Link: LegacyLink } = useRouterContext();\n  const translate = useTranslate();\n  const getUserFriendlyName = useUserFriendlyName();\n  const {\n    textTransformers: { humanize },\n  } = useRefineOptions();\n\n  const { id, resource, identifier } = useResourceParams({\n    resource: props.resource,\n    id: props.action === \"create\" ? undefined : props.id,\n  });\n\n  const { canAccess, title, hidden, disabled } = useButtonCanAccess({\n    action: props.action,\n    accessControl: props.accessControl,\n    id,\n    resource,\n  });\n\n  const LinkComponent = routerType === \"legacy\" ? LegacyLink : Link;\n\n  const to = React.useMemo(() => {\n    if (!resource) return \"\";\n    switch (props.action) {\n      case \"create\":\n      case \"list\":\n        return navigation[`${props.action}Url`](resource, props.meta);\n      default:\n        if (!id) return \"\";\n        return navigation[`${props.action}Url`](resource, id, props.meta);\n    }\n  }, [resource, id, props.meta, navigation[`${props.action}Url`]]);\n\n  const label =\n    props.action === \"list\"\n      ? translate(\n          `${identifier ?? props.resource}.titles.list`,\n          getUserFriendlyName(\n            resource?.meta?.label ??\n              resource?.label ??\n              identifier ??\n              props.resource,\n            \"plural\",\n          ),\n        )\n      : translate(`buttons.${props.action}`, humanize(props.action));\n\n  return {\n    to,\n    label,\n    title,\n    disabled,\n    hidden,\n    canAccess,\n    LinkComponent,\n  };\n}\n","import React from \"react\";\n\nimport { AccessControlContext } from \"../../../contexts/accessControl\";\nimport { useCan } from \"../../accessControl\";\nimport { useTranslate } from \"../../i18n\";\n\nimport type { CanReturnType } from \"../../../contexts/accessControl/types\";\nimport type { IResourceItem } from \"../../../contexts/resource/types\";\nimport type { Action } from \"../../../contexts/router/types\";\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\ntype ButtonCanAccessProps = {\n  action: Action | \"delete\";\n  resource?: IResourceItem;\n  id?: BaseKey;\n  accessControl?: {\n    enabled?: boolean;\n    hideIfUnauthorized?: boolean;\n  };\n};\n\ntype ButtonCanAccessValues = {\n  title: string;\n  hidden: boolean;\n  disabled: boolean;\n  canAccess: CanReturnType | undefined;\n};\n\nexport const useButtonCanAccess = (\n  props: ButtonCanAccessProps,\n): ButtonCanAccessValues => {\n  const translate = useTranslate();\n  const accessControlContext = React.useContext(AccessControlContext);\n\n  const accessControlEnabled =\n    props.accessControl?.enabled ??\n    accessControlContext.options.buttons.enableAccessControl;\n\n  const hideIfUnauthorized =\n    props.accessControl?.hideIfUnauthorized ??\n    accessControlContext.options.buttons.hideIfUnauthorized;\n\n  const { data: canAccess } = useCan({\n    resource: props.resource?.name,\n    action: props.action === \"clone\" ? \"create\" : props.action,\n    params: { id: props.id, resource: props.resource },\n    queryOptions: {\n      enabled: accessControlEnabled,\n    },\n  });\n\n  const title = React.useMemo(() => {\n    if (canAccess?.can) return \"\";\n    if (canAccess?.reason) return canAccess.reason;\n\n    return translate(\n      \"buttons.notAccessTitle\",\n      \"You don't have permission to access\",\n    );\n  }, [canAccess?.can, canAccess?.reason, translate]);\n\n  const hidden = accessControlEnabled && hideIfUnauthorized && !canAccess?.can;\n\n  const disabled = canAccess?.can === false;\n\n  return {\n    title,\n    hidden,\n    disabled,\n    canAccess,\n  };\n};\n","import { useTranslate } from \"../../i18n\";\nimport { useDelete } from \"../../data/useDelete\";\nimport { useButtonCanAccess } from \"../button-can-access\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useMutationMode, useWarnAboutChange } from \"../../refine\";\n\nimport type { BaseKey, DeleteOneResponse } from \"../../../contexts/data/types\";\nimport type { CanReturnType } from \"../../../contexts/accessControl/types\";\nimport type { DeleteParams } from \"../../data/useDelete\";\n\nexport type DeleteButtonProps = {\n  resource?: string;\n  id?: BaseKey;\n  dataProviderName?: string;\n  meta?: Record<string, unknown>;\n  accessControl?: {\n    enabled?: boolean;\n    hideIfUnauthorized?: boolean;\n  };\n  onSuccess?: (value: DeleteOneResponse) => void;\n} & Pick<\n  DeleteParams<any, any, any>,\n  \"mutationMode\" | \"successNotification\" | \"errorNotification\" | \"invalidates\"\n>;\n\nexport type DeleteButtonValues = {\n  label: string;\n  title: string;\n  hidden: boolean;\n  loading: boolean;\n  disabled: boolean;\n  canAccess: CanReturnType | undefined;\n  confirmOkLabel: string;\n  cancelLabel: string;\n  confirmTitle: string;\n  onConfirm: () => void;\n};\n\nexport function useDeleteButton(props: DeleteButtonProps): DeleteButtonValues {\n  const translate = useTranslate();\n  const { mutate, isLoading, variables } = useDelete();\n  const { setWarnWhen } = useWarnAboutChange();\n  const { mutationMode } = useMutationMode(props.mutationMode);\n\n  const { id, resource, identifier } = useResourceParams({\n    resource: props.resource,\n    id: props.id,\n  });\n\n  const { title, disabled, hidden, canAccess } = useButtonCanAccess({\n    action: \"delete\",\n    accessControl: props.accessControl,\n    id,\n    resource,\n  });\n\n  const label = translate(\"buttons.delete\", \"Delete\");\n\n  const confirmOkLabel = translate(\"buttons.delete\", \"Delete\");\n\n  const confirmTitle = translate(\"buttons.confirm\", \"Are you sure?\");\n\n  const cancelLabel = translate(\"buttons.cancel\", \"Cancel\");\n\n  const loading = id === variables?.id && isLoading;\n\n  const onConfirm = () => {\n    if (id && identifier) {\n      setWarnWhen(false);\n      mutate(\n        {\n          id,\n          resource: identifier,\n          mutationMode,\n          successNotification: props.successNotification,\n          errorNotification: props.errorNotification,\n          meta: props.meta,\n          metaData: props.meta,\n          dataProviderName: props.dataProviderName,\n          invalidates: props.invalidates,\n        },\n        {\n          onSuccess: props.onSuccess,\n        },\n      );\n    }\n  };\n\n  return {\n    label,\n    title,\n    hidden,\n    disabled,\n    canAccess,\n    loading,\n    confirmOkLabel,\n    cancelLabel,\n    confirmTitle,\n    onConfirm,\n  };\n}\n","import { useQueryClient } from \"@tanstack/react-query\";\n\nimport { useTranslate } from \"../../i18n\";\nimport { useInvalidate } from \"../../invalidate\";\nimport { useResourceParams } from \"../../use-resource-params\";\nimport { useResource } from \"../../resource\";\nimport { useKeys } from \"../../useKeys\";\nimport { pickDataProvider } from \"../../../definitions\";\n\nimport type { BaseKey } from \"../../../contexts/data/types\";\n\nexport type RefreshButtonProps = {\n  resource?: string;\n  id?: BaseKey;\n  dataProviderName?: string;\n  meta?: Record<string, unknown>;\n};\n\nexport type RefreshButtonValues = {\n  onClick: () => void;\n  label: string;\n  loading: boolean;\n};\n\nexport function useRefreshButton(\n  props: RefreshButtonProps,\n): RefreshButtonValues {\n  const translate = useTranslate();\n  const { keys, preferLegacyKeys } = useKeys();\n\n  const queryClient = useQueryClient();\n  const invalidates = useInvalidate();\n\n  const { identifier, id } = useResourceParams({\n    resource: props.resource,\n    id: props.id,\n  });\n\n  const { resources } = useResource();\n\n  const loading = !!queryClient.isFetching({\n    queryKey: keys()\n      .data(pickDataProvider(identifier, props.dataProviderName, resources))\n      .resource(identifier)\n      .action(\"one\")\n      .get(preferLegacyKeys),\n  });\n\n  const onClick = () => {\n    invalidates({\n      id,\n      invalidates: [\"detail\"],\n      dataProviderName: props.dataProviderName,\n      resource: identifier,\n    });\n  };\n\n  const label = translate(\"buttons.refresh\", \"Refresh\");\n\n  return {\n    onClick,\n    label,\n    loading,\n  };\n}\n","import { useActionableButton } from \"./actionable-button\";\nimport { useNavigationButton } from \"./navigation-button\";\n\nimport type { NavigationButtonProps } from \"./navigation-button\";\nimport type { Prettify } from \"../../contexts/data/types\";\n\nexport { useDeleteButton } from \"./delete-button\";\n\nexport { useRefreshButton } from \"./refresh-button\";\n\nexport const useShowButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\">>,\n) => useNavigationButton({ ...props, action: \"show\" });\n\nexport const useEditButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\">>,\n) => useNavigationButton({ ...props, action: \"edit\" });\n\nexport const useCloneButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\">>,\n) => useNavigationButton({ ...props, action: \"clone\" });\n\nexport const useCreateButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\" | \"id\">>,\n) => useNavigationButton({ ...props, action: \"create\" });\n\nexport const useListButton = (\n  props: Prettify<Omit<NavigationButtonProps, \"action\" | \"id\">>,\n) => useNavigationButton({ ...props, action: \"list\" });\n\nexport const useSaveButton = () => useActionableButton({ type: \"save\" });\n\nexport const useExportButton = () => useActionableButton({ type: \"export\" });\n\nexport const useImportButton = () => useActionableButton({ type: \"import\" });\n","import React, { useState } from \"react\";\n\nimport { useLogin, useTranslate } from \"@hooks\";\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nexport interface ILoginForm {\n  username: string;\n  password: string;\n}\n\n/**\n * @deprecated LoginPage is deprecated. Use AuthPage instead. @see {@link https://refine.dev/docs/core/components/auth-page} for more details.\n * **refine** has a default login page form which is served on `/login` route when the `authProvider` configuration is provided.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config/#loginpage} for more details.\n */\nexport const LoginPage: React.FC = () => {\n  const [username, setUsername] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n\n  const translate = useTranslate();\n\n  const authProvider = useActiveAuthProvider();\n  const { mutate: login } = useLogin<ILoginForm>({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n\n  return (\n    <>\n      <h1>{translate(\"pages.login.title\", \"Sign in your account\")}</h1>\n      <form\n        onSubmit={(e) => {\n          e.preventDefault();\n          login({ username, password });\n        }}\n      >\n        <table>\n          <tbody>\n            <tr>\n              <td>\n                {translate(\"pages.login.username\", undefined, \"username\")}:\n              </td>\n              <td>\n                <input\n                  type=\"text\"\n                  size={20}\n                  autoCorrect=\"off\"\n                  spellCheck={false}\n                  autoCapitalize=\"off\"\n                  autoFocus\n                  required\n                  value={username}\n                  onChange={(e) => setUsername(e.target.value)}\n                />\n              </td>\n            </tr>\n            <tr>\n              <td>\n                {translate(\"pages.login.password\", undefined, \"password\")}:\n              </td>\n              <td>\n                <input\n                  type=\"password\"\n                  required\n                  size={20}\n                  value={password}\n                  onChange={(e) => setPassword(e.target.value)}\n                />\n              </td>\n            </tr>\n          </tbody>\n        </table>\n        <br />\n        <input type=\"submit\" value=\"login\" />\n      </form>\n    </>\n  );\n};\n","import React, {\n  type DetailedHTMLProps,\n  type HTMLAttributes,\n  type FormHTMLAttributes,\n} from \"react\";\n\nimport {\n  ForgotPasswordPage,\n  LoginPage,\n  RegisterPage,\n  UpdatePasswordPage,\n} from \"./components\";\n\nimport type { AuthPageProps } from \"./types\";\n\nexport type DivPropsType = DetailedHTMLProps<\n  HTMLAttributes<HTMLDivElement>,\n  HTMLDivElement\n>;\nexport type FormPropsType = DetailedHTMLProps<\n  FormHTMLAttributes<HTMLFormElement>,\n  HTMLFormElement\n>;\n\nexport type AuthProps = AuthPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\n/**\n * **refine** has a default auth page form which is served on `/login` route when the `authProvider` configuration is provided.\n * @param title is not implemented yet.\n * @see {@link https://refine.dev/docs/api-reference/core/components/auth-page/} for more details.\n */\nexport const AuthPage: React.FC<AuthProps> = (props) => {\n  const { type } = props;\n  const renderView = () => {\n    switch (type) {\n      case \"register\":\n        return <RegisterPage {...props} />;\n      case \"forgotPassword\":\n        return <ForgotPasswordPage {...props} />;\n      case \"updatePassword\":\n        return <UpdatePasswordPage {...props} />;\n      default:\n        return <LoginPage {...props} />;\n    }\n  };\n\n  return <>{renderView()}</>;\n};\n","import React, { useState } from \"react\";\n\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nimport {\n  useLink,\n  useLogin,\n  useRouterContext,\n  useRouterType,\n  useTranslate,\n} from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type { LoginFormTypes, LoginPageProps } from \"../../types\";\n\ntype LoginProps = LoginPageProps<DivPropsType, DivPropsType, FormPropsType>;\n\nexport const LoginPage: React.FC<LoginProps> = ({\n  providers,\n  registerLink,\n  forgotPasswordLink,\n  rememberMe,\n  contentProps,\n  wrapperProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  hideForm,\n  mutationVariables,\n}) => {\n  const routerType = useRouterType();\n  const Link = useLink();\n  const { Link: LegacyLink } = useRouterContext();\n\n  const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n  const [email, setEmail] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n  const [remember, setRemember] = useState(false);\n\n  const translate = useTranslate();\n\n  const authProvider = useActiveAuthProvider();\n  const { mutate: login } = useLogin<LoginFormTypes>({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n\n  const renderLink = (link: string, text?: string) => {\n    return <ActiveLink to={link}>{text}</ActiveLink>;\n  };\n\n  const renderProviders = () => {\n    if (providers) {\n      return providers.map((provider) => (\n        <div\n          key={provider.name}\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            marginBottom: \"1rem\",\n          }}\n        >\n          <button\n            onClick={() =>\n              login({\n                ...mutationVariables,\n                providerName: provider.name,\n              })\n            }\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n            }}\n          >\n            {provider?.icon}\n            {provider.label ?? <label>{provider.label}</label>}\n          </button>\n        </div>\n      ));\n    }\n    return null;\n  };\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.login.title\", \"Sign in to your account\")}\n      </h1>\n      {renderProviders()}\n      {!hideForm && (\n        <>\n          <hr />\n          <form\n            onSubmit={(e) => {\n              e.preventDefault();\n              login({ ...mutationVariables, email, password, remember });\n            }}\n            {...formProps}\n          >\n            <div\n              style={{\n                display: \"flex\",\n                flexDirection: \"column\",\n                padding: 25,\n              }}\n            >\n              <label htmlFor=\"email-input\">\n                {translate(\"pages.login.fields.email\", \"Email\")}\n              </label>\n              <input\n                id=\"email-input\"\n                name=\"email\"\n                type=\"text\"\n                size={20}\n                autoCorrect=\"off\"\n                spellCheck={false}\n                autoCapitalize=\"off\"\n                required\n                value={email}\n                onChange={(e) => setEmail(e.target.value)}\n              />\n              <label htmlFor=\"password-input\">\n                {translate(\"pages.login.fields.password\", \"Password\")}\n              </label>\n              <input\n                id=\"password-input\"\n                type=\"password\"\n                name=\"password\"\n                required\n                size={20}\n                value={password}\n                onChange={(e) => setPassword(e.target.value)}\n              />\n              {rememberMe ?? (\n                <>\n                  <label htmlFor=\"remember-me-input\">\n                    {translate(\"pages.login.buttons.rememberMe\", \"Remember me\")}\n                    <input\n                      id=\"remember-me-input\"\n                      name=\"remember\"\n                      type=\"checkbox\"\n                      size={20}\n                      checked={remember}\n                      value={remember.toString()}\n                      onChange={() => {\n                        setRemember(!remember);\n                      }}\n                    />\n                  </label>\n                </>\n              )}\n              <br />\n              {forgotPasswordLink ??\n                renderLink(\n                  \"/forgot-password\",\n                  translate(\n                    \"pages.login.buttons.forgotPassword\",\n                    \"Forgot password?\",\n                  ),\n                )}\n              <input\n                type=\"submit\"\n                value={translate(\"pages.login.signin\", \"Sign in\")}\n              />\n              {registerLink ?? (\n                <span>\n                  {translate(\n                    \"pages.login.buttons.noAccount\",\n                    \"Don’t have an account?\",\n                  )}{\" \"}\n                  {renderLink(\n                    \"/register\",\n                    translate(\"pages.login.register\", \"Sign up\"),\n                  )}\n                </span>\n              )}\n            </div>\n          </form>\n        </>\n      )}\n      {registerLink !== false && hideForm && (\n        <div style={{ textAlign: \"center\" }}>\n          {translate(\"pages.login.buttons.noAccount\", \"Don’t have an account?\")}{\" \"}\n          {renderLink(\n            \"/register\",\n            translate(\"pages.login.register\", \"Sign up\"),\n          )}\n        </div>\n      )}\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport {\n  useLink,\n  useRegister,\n  useRouterContext,\n  useRouterType,\n  useTranslate,\n} from \"@hooks\";\n\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type { RegisterPageProps } from \"../../types\";\n\ntype RegisterProps = RegisterPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\nexport const RegisterPage: React.FC<RegisterProps> = ({\n  providers,\n  loginLink,\n  wrapperProps,\n  contentProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  hideForm,\n  mutationVariables,\n}) => {\n  const routerType = useRouterType();\n  const Link = useLink();\n  const { Link: LegacyLink } = useRouterContext();\n\n  const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n  const [email, setEmail] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n\n  const translate = useTranslate();\n\n  const authProvider = useActiveAuthProvider();\n  const { mutate: register, isLoading } = useRegister({\n    v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n  });\n\n  const renderLink = (link: string, text?: string) => {\n    return <ActiveLink to={link}>{text}</ActiveLink>;\n  };\n\n  const renderProviders = () => {\n    if (providers) {\n      return providers.map((provider) => (\n        <div\n          key={provider.name}\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            marginBottom: \"1rem\",\n          }}\n        >\n          <button\n            onClick={() =>\n              register({\n                ...mutationVariables,\n                providerName: provider.name,\n              })\n            }\n            style={{\n              display: \"flex\",\n              alignItems: \"center\",\n            }}\n          >\n            {provider?.icon}\n            {provider.label ?? <label>{provider.label}</label>}\n          </button>\n        </div>\n      ));\n    }\n    return null;\n  };\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.register.title\", \"Sign up for your account\")}\n      </h1>\n      {renderProviders()}\n      {!hideForm && (\n        <>\n          <hr />\n          <form\n            onSubmit={(e) => {\n              e.preventDefault();\n              register({ ...mutationVariables, email, password });\n            }}\n            {...formProps}\n          >\n            <div\n              style={{\n                display: \"flex\",\n                flexDirection: \"column\",\n                padding: 25,\n              }}\n            >\n              <label htmlFor=\"email-input\">\n                {translate(\"pages.register.fields.email\", \"Email\")}\n              </label>\n              <input\n                id=\"email-input\"\n                name=\"email\"\n                type=\"email\"\n                size={20}\n                autoCorrect=\"off\"\n                spellCheck={false}\n                autoCapitalize=\"off\"\n                required\n                value={email}\n                onChange={(e) => setEmail(e.target.value)}\n              />\n              <label htmlFor=\"password-input\">\n                {translate(\"pages.register.fields.password\", \"Password\")}\n              </label>\n              <input\n                id=\"password-input\"\n                name=\"password\"\n                type=\"password\"\n                required\n                size={20}\n                value={password}\n                onChange={(e) => setPassword(e.target.value)}\n              />\n              <input\n                type=\"submit\"\n                value={translate(\"pages.register.buttons.submit\", \"Sign up\")}\n                disabled={isLoading}\n              />\n              {loginLink ?? (\n                <>\n                  <span>\n                    {translate(\n                      \"pages.login.buttons.haveAccount\",\n                      \"Have an account?\",\n                    )}{\" \"}\n                    {renderLink(\n                      \"/login\",\n                      translate(\"pages.login.signin\", \"Sign in\"),\n                    )}\n                  </span>\n                </>\n              )}\n            </div>\n          </form>\n        </>\n      )}\n      {loginLink !== false && hideForm && (\n        <div style={{ textAlign: \"center\" }}>\n          {translate(\"pages.login.buttons.haveAccount\", \"Have an account?\")}{\" \"}\n          {renderLink(\"/login\", translate(\"pages.login.signin\", \"Sign in\"))}\n        </div>\n      )}\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport {\n  useForgotPassword,\n  useLink,\n  useRouterContext,\n  useRouterType,\n  useTranslate,\n} from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type {\n  ForgotPasswordFormTypes,\n  ForgotPasswordPageProps,\n} from \"../../types\";\n\ntype ForgotPasswordProps = ForgotPasswordPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\nexport const ForgotPasswordPage: React.FC<ForgotPasswordProps> = ({\n  loginLink,\n  wrapperProps,\n  contentProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  mutationVariables,\n}) => {\n  const translate = useTranslate();\n  const routerType = useRouterType();\n  const Link = useLink();\n  const { Link: LegacyLink } = useRouterContext();\n\n  const ActiveLink = routerType === \"legacy\" ? LegacyLink : Link;\n\n  const [email, setEmail] = useState(\"\");\n\n  const { mutate: forgotPassword, isLoading } =\n    useForgotPassword<ForgotPasswordFormTypes>();\n\n  const renderLink = (link: string, text?: string) => {\n    return <ActiveLink to={link}>{text}</ActiveLink>;\n  };\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.forgotPassword.title\", \"Forgot your password?\")}\n      </h1>\n      <hr />\n      <form\n        onSubmit={(e) => {\n          e.preventDefault();\n          forgotPassword({ ...mutationVariables, email });\n        }}\n        {...formProps}\n      >\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            padding: 25,\n          }}\n        >\n          <label htmlFor=\"email-input\">\n            {translate(\"pages.forgotPassword.fields.email\", \"Email\")}\n          </label>\n          <input\n            id=\"email-input\"\n            name=\"email\"\n            type=\"mail\"\n            autoCorrect=\"off\"\n            spellCheck={false}\n            autoCapitalize=\"off\"\n            required\n            value={email}\n            onChange={(e) => setEmail(e.target.value)}\n          />\n          <input\n            type=\"submit\"\n            disabled={isLoading}\n            value={translate(\n              \"pages.forgotPassword.buttons.submit\",\n              \"Send reset instructions\",\n            )}\n          />\n          <br />\n          {loginLink ?? (\n            <span>\n              {translate(\n                \"pages.register.buttons.haveAccount\",\n                \"Have an account? \",\n              )}{\" \"}\n              {renderLink(\"/login\", translate(\"pages.login.signin\", \"Sign in\"))}\n            </span>\n          )}\n        </div>\n      </form>\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport { useActiveAuthProvider } from \"@definitions/helpers\";\nimport { useTranslate, useUpdatePassword } from \"@hooks\";\n\nimport type { DivPropsType, FormPropsType } from \"../..\";\nimport type {\n  UpdatePasswordFormTypes,\n  UpdatePasswordPageProps,\n} from \"../../types\";\n\ntype UpdatePasswordProps = UpdatePasswordPageProps<\n  DivPropsType,\n  DivPropsType,\n  FormPropsType\n>;\n\nexport const UpdatePasswordPage: React.FC<UpdatePasswordProps> = ({\n  wrapperProps,\n  contentProps,\n  renderContent,\n  formProps,\n  title = undefined,\n  mutationVariables,\n}) => {\n  const translate = useTranslate();\n\n  const authProvider = useActiveAuthProvider();\n  const { mutate: updatePassword, isLoading } =\n    useUpdatePassword<UpdatePasswordFormTypes>({\n      v3LegacyAuthProviderCompatible: Boolean(authProvider?.isLegacy),\n    });\n\n  const [newPassword, setNewPassword] = useState(\"\");\n  const [confirmPassword, setConfirmPassword] = useState(\"\");\n\n  const content = (\n    <div {...contentProps}>\n      <h1 style={{ textAlign: \"center\" }}>\n        {translate(\"pages.updatePassword.title\", \"Update Password\")}\n      </h1>\n      <hr />\n      <form\n        onSubmit={(e) => {\n          e.preventDefault();\n          updatePassword({\n            ...mutationVariables,\n            password: newPassword,\n            confirmPassword,\n          });\n        }}\n        {...formProps}\n      >\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            padding: 25,\n          }}\n        >\n          <label htmlFor=\"password-input\">\n            {translate(\"pages.updatePassword.fields.password\", \"New Password\")}\n          </label>\n          <input\n            id=\"password-input\"\n            name=\"password\"\n            type=\"password\"\n            required\n            size={20}\n            value={newPassword}\n            onChange={(e) => setNewPassword(e.target.value)}\n          />\n          <label htmlFor=\"confirm-password-input\">\n            {translate(\n              \"pages.updatePassword.fields.confirmPassword\",\n              \"Confirm New Password\",\n            )}\n          </label>\n          <input\n            id=\"confirm-password-input\"\n            name=\"confirmPassword\"\n            type=\"password\"\n            required\n            size={20}\n            value={confirmPassword}\n            onChange={(e) => setConfirmPassword(e.target.value)}\n          />\n          <input\n            type=\"submit\"\n            disabled={isLoading}\n            value={translate(\"pages.updatePassword.buttons.submit\", \"Update\")}\n          />\n        </div>\n      </form>\n    </div>\n  );\n\n  return (\n    <div {...wrapperProps}>\n      {renderContent ? renderContent(content, title) : content}\n    </div>\n  );\n};\n","import React from \"react\";\n\n/**\n * **refine** shows a default ready page on root route when no `resources` is passed to the `<Refine>` component as a property.\n *\n * @deprecated `ReadyPage` is deprecated and will be removed in the next major release.\n */\nexport const ReadyPage: React.FC = () => {\n  return (\n    <>\n      <h1>Welcome on board</h1>\n      <p>Your configuration is completed.</p>\n      <p>\n        Now you can get started by adding your resources to the{\" \"}\n        <code>`resources`</code> property of <code>{\"`<Refine>`\"}</code>\n      </p>\n      <div style={{ display: \"flex\", gap: 8 }}>\n        <a href=\"https://refine.dev\" target=\"_blank\" rel=\"noreferrer\">\n          <button>Documentation</button>\n        </a>\n        <a href=\"https://refine.dev/examples\" target=\"_blank\" rel=\"noreferrer\">\n          <button>Examples</button>\n        </a>\n        <a href=\"https://discord.gg/refine\" target=\"_blank\" rel=\"noreferrer\">\n          <button>Community</button>\n        </a>\n      </div>\n    </>\n  );\n};\n","import React from \"react\";\nimport { ConfigSuccessPage } from \"../config-success\";\nimport { useRefineContext } from \"@hooks/refine\";\nimport { ConfigErrorPage } from \"../config-error\";\n\nexport const WelcomePage = () => {\n  const { __initialized } = useRefineContext();\n\n  return (\n    <>\n      <ConfigSuccessPage />\n      {!__initialized && <ConfigErrorPage />}\n    </>\n  );\n};\n","import React, { useState } from \"react\";\n\nimport { useMediaQuery } from \"@definitions/helpers\";\n\ntype CardInfo = {\n  title: string;\n  description: string;\n  link: string;\n  iconUrl: string;\n};\n\nconst cards: CardInfo[] = [\n  {\n    title: \"Documentation\",\n    description:\n      \"Learn about the technical details of using Refine in your projects.\",\n    link: \"https://refine.dev/docs\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/book.svg\",\n  },\n  {\n    title: \"Tutorial\",\n    description:\n      \"Learn how to use Refine by building a fully-functioning CRUD app, from scratch to full launch.\",\n    link: \"https://refine.dev/tutorial\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/hat.svg\",\n  },\n  {\n    title: \"Templates\",\n    description:\n      \"Explore a range of pre-built templates, perfect everything from admin panels to dashboards and CRMs.\",\n    link: \"https://refine.dev/templates\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/application.svg\",\n  },\n  {\n    title: \"Community\",\n    description: \"Join our Discord community and keep up with the latest news.\",\n    link: \"https://discord.gg/refine\",\n    iconUrl:\n      \"https://refine.ams3.cdn.digitaloceanspaces.com/welcome-page/discord.svg\",\n  },\n];\n\n/**\n * It is a page that welcomes you after the configuration is completed.\n */\nexport const ConfigSuccessPage: React.FC = () => {\n  const isTablet = useMediaQuery(\"(max-width: 1010px)\");\n  const isMobile = useMediaQuery(\"(max-width: 650px)\");\n\n  const getGridTemplateColumns = () => {\n    if (isMobile) {\n      return \"1, 280px\";\n    }\n    if (isTablet) {\n      return \"2, 280px\";\n    }\n    return \"4, 1fr\";\n  };\n\n  const getHeaderFontSize = () => {\n    if (isMobile) {\n      return \"32px\";\n    }\n    if (isTablet) {\n      return \"40px\";\n    }\n    return \"48px\";\n  };\n\n  const getSubHeaderFontSize = () => {\n    if (isMobile) {\n      return \"16px\";\n    }\n    if (isTablet) {\n      return \"20px\";\n    }\n    return \"24px\";\n  };\n\n  return (\n    <div\n      style={{\n        position: \"fixed\",\n        zIndex: 10,\n        inset: 0,\n        overflow: \"auto\",\n        width: \"100dvw\",\n        height: \"100dvh\",\n      }}\n    >\n      <div\n        style={{\n          overflow: \"hidden\",\n          position: \"relative\",\n          backgroundSize: \"cover\",\n          backgroundRepeat: \"no-repeat\",\n          background: isMobile\n            ? \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(88.89% 50% at 50% 100%, rgba(38, 217, 127, 0.10) 0%, rgba(38, 217, 127, 0.00) 100%), radial-gradient(88.89% 50% at 50% 0%, rgba(71, 235, 235, 0.15) 0%, rgba(71, 235, 235, 0.00) 100%), #1D1E30\"\n            : isTablet\n              ? \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(66.67% 50% at 50% 100%, rgba(38, 217, 127, 0.10) 0%, rgba(38, 217, 127, 0.00) 100%), radial-gradient(66.67% 50% at 50% 0%, rgba(71, 235, 235, 0.15) 0%, rgba(71, 235, 235, 0.00) 100%), #1D1E30\"\n              : \"url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/landing-noise.webp), radial-gradient(35.56% 50% at 50% 100%, rgba(38, 217, 127, 0.12) 0%, rgba(38, 217, 127, 0) 100%), radial-gradient(35.56% 50% at 50% 0%, rgba(71, 235, 235, 0.18) 0%, rgba(71, 235, 235, 0) 100%), #1D1E30\",\n          minHeight: \"100%\",\n          minWidth: \"100%\",\n          fontFamily: \"Arial\",\n          color: \"#FFFFFF\",\n        }}\n      >\n        <div\n          style={{\n            zIndex: 2,\n            position: \"absolute\",\n            width: isMobile ? \"400px\" : \"800px\",\n            height: \"552px\",\n            opacity: \"0.5\",\n            background:\n              \"url(https://refine.ams3.cdn.digitaloceanspaces.com/assets/welcome-page-hexagon.png)\",\n            backgroundRepeat: \"no-repeat\",\n            backgroundSize: \"contain\",\n            top: \"0\",\n            left: \"50%\",\n            transform: \"translateX(-50%)\",\n          }}\n        />\n        <div style={{ height: isMobile ? \"40px\" : \"80px\" }} />\n        <div style={{ display: \"flex\", justifyContent: \"center\" }}>\n          <div\n            style={{\n              backgroundRepeat: \"no-repeat\",\n              backgroundSize: isMobile ? \"112px 58px\" : \"224px 116px\",\n              backgroundImage:\n                \"url(https://refine.ams3.cdn.digitaloceanspaces.com/assets/refine-logo.svg)\",\n              width: isMobile ? 112 : 224,\n              height: isMobile ? 58 : 116,\n            }}\n          />\n        </div>\n        <div\n          style={{\n            height: isMobile ? \"120px\" : isTablet ? \"200px\" : \"30vh\",\n            minHeight: isMobile ? \"120px\" : isTablet ? \"200px\" : \"200px\",\n          }}\n        />\n        <div\n          style={{\n            display: \"flex\",\n            flexDirection: \"column\",\n            gap: \"16px\",\n            textAlign: \"center\",\n          }}\n        >\n          <h1\n            style={{\n              fontSize: getHeaderFontSize(),\n              fontWeight: 700,\n              margin: \"0px\",\n            }}\n          >\n            Welcome Aboard!\n          </h1>\n          <h4\n            style={{\n              fontSize: getSubHeaderFontSize(),\n              fontWeight: 400,\n              margin: \"0px\",\n            }}\n          >\n            Your configuration is completed.\n          </h4>\n        </div>\n        <div style={{ height: \"64px\" }} />\n        <div\n          style={{\n            display: \"grid\",\n            gridTemplateColumns: `repeat(${getGridTemplateColumns()})`,\n            justifyContent: \"center\",\n            gap: \"48px\",\n            paddingRight: \"16px\",\n            paddingLeft: \"16px\",\n            paddingBottom: \"32px\",\n            maxWidth: \"976px\",\n            margin: \"auto\",\n          }}\n        >\n          {cards.map((card) => (\n            <Card key={`welcome-page-${card.title}`} card={card} />\n          ))}\n        </div>\n      </div>\n    </div>\n  );\n};\n\ntype CardProps = {\n  card: CardInfo;\n};\n\nconst Card: React.FC<CardProps> = ({ card }) => {\n  const { title, description, iconUrl, link } = card;\n\n  const [isHover, setIsHover] = useState(false);\n\n  return (\n    <div\n      style={{\n        display: \"flex\",\n        flexDirection: \"column\",\n        gap: \"16px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"flex\",\n          alignItems: \"center\",\n        }}\n      >\n        <a\n          onPointerEnter={() => setIsHover(true)}\n          onPointerLeave={() => setIsHover(false)}\n          style={{\n            display: \"flex\",\n            alignItems: \"center\",\n            color: \"#fff\",\n            textDecoration: \"none\",\n          }}\n          href={link}\n        >\n          <div\n            style={{\n              width: \"16px\",\n              height: \"16px\",\n              backgroundPosition: \"center\",\n              backgroundSize: \"contain\",\n              backgroundRepeat: \"no-repeat\",\n              backgroundImage: `url(${iconUrl})`,\n            }}\n          />\n          <span\n            style={{\n              fontSize: \"16px\",\n              fontWeight: 700,\n              marginLeft: \"13px\",\n              marginRight: \"14px\",\n            }}\n          >\n            {title}\n          </span>\n          <svg\n            style={{\n              transition:\n                \"transform 0.5s ease-in-out, opacity 0.2s ease-in-out\",\n              ...(isHover && {\n                transform: \"translateX(4px)\",\n                opacity: 1,\n              }),\n            }}\n            width=\"12\"\n            height=\"8\"\n            fill=\"none\"\n            opacity=\"0.5\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n          >\n            <path\n              d=\"M7.293.293a1 1 0 0 1 1.414 0l3 3a1 1 0 0 1 0 1.414l-3 3a1 1 0 0 1-1.414-1.414L8.586 5H1a1 1 0 0 1 0-2h7.586L7.293 1.707a1 1 0 0 1 0-1.414Z\"\n              fill=\"#fff\"\n            />\n          </svg>\n        </a>\n      </div>\n      <span\n        style={{\n          fontSize: \"12px\",\n          opacity: 0.5,\n          lineHeight: \"16px\",\n        }}\n      >\n        {description}\n      </span>\n    </div>\n  );\n};\n","import React from \"react\";\n\nexport const ConfigErrorPage = () => {\n  return (\n    <div\n      style={{\n        position: \"fixed\",\n        zIndex: 11,\n        inset: 0,\n        overflow: \"auto\",\n        width: \"100dvw\",\n        height: \"100dvh\",\n      }}\n    >\n      <div\n        style={{\n          width: \"100%\",\n          height: \"100%\",\n          display: \"flex\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          padding: \"24px\",\n          background: \"#14141FBF\",\n          backdropFilter: \"blur(3px)\",\n        }}\n      >\n        <div\n          style={{\n            maxWidth: \"640px\",\n            width: \"100%\",\n            background: \"#1D1E30\",\n            borderRadius: \"16px\",\n            border: \"1px solid #303450\",\n            boxShadow: \"0px 0px 120px -24px #000000\",\n          }}\n        >\n          <div\n            style={{\n              padding: \"16px 20px\",\n              borderBottom: \"1px solid #303450\",\n              display: \"flex\",\n              alignItems: \"center\",\n              gap: \"8px\",\n              position: \"relative\",\n            }}\n          >\n            <ErrorGradient\n              style={{\n                position: \"absolute\",\n                left: 0,\n                top: 0,\n              }}\n            />\n            <div\n              style={{\n                lineHeight: \"24px\",\n                fontSize: \"16px\",\n                color: \"#FFFFFF\",\n                display: \"flex\",\n                alignItems: \"center\",\n                gap: \"16px\",\n              }}\n            >\n              <ErrorIcon />\n              <span\n                style={{\n                  fontWeight: 400,\n                }}\n              >\n                Configuration Error\n              </span>\n            </div>\n          </div>\n          <div\n            style={{\n              padding: \"20px\",\n              color: \"#A3ADC2\",\n              lineHeight: \"20px\",\n              fontSize: \"14px\",\n              display: \"flex\",\n              flexDirection: \"column\",\n              gap: \"20px\",\n            }}\n          >\n            <p\n              style={{\n                margin: 0,\n                padding: 0,\n                lineHeight: \"28px\",\n                fontSize: \"16px\",\n              }}\n            >\n              <code\n                style={{\n                  display: \"inline-block\",\n                  background: \"#30345080\",\n                  padding: \"0 4px\",\n                  lineHeight: \"24px\",\n                  fontSize: \"16px\",\n                  borderRadius: \"4px\",\n                  color: \"#FFFFFF\",\n                }}\n              >\n                {\"<Refine />\"}\n              </code>{\" \"}\n              is not initialized. Please make sure you have it mounted in your\n              app and placed your components inside it.\n            </p>\n            <div>\n              <ExampleImplementation />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nconst ExampleImplementation = () => {\n  return (\n    <pre\n      style={{\n        display: \"block\",\n        overflowX: \"auto\",\n        borderRadius: \"8px\",\n        fontSize: \"14px\",\n        lineHeight: \"24px\",\n        backgroundColor: \"#14141F\",\n        color: \"#E5ECF2\",\n        padding: \"16px\",\n        margin: \"0\",\n        maxHeight: \"400px\",\n        overflow: \"auto\",\n      }}\n    >\n      <span style={{ color: \"#FF7B72\" }}>import</span> {\"{\"} Refine, WelcomePage{\" \"}\n      {\"}\"} <span style={{ color: \"#FF7B72\" }}>from</span>{\" \"}\n      <span style={{ color: \"#A5D6FF\" }}>{'\"@refinedev/core\"'}</span>;{\"\\n\"}\n      {\"\\n\"}\n      <span style={{ color: \"#FF7B72\" }}>export</span>{\" \"}\n      <span style={{ color: \"#FF7B72\" }}>default</span>{\" \"}\n      <span>\n        <span style={{ color: \"#FF7B72\" }}>function</span>{\" \"}\n        <span style={{ color: \"#FFA657\" }}>App</span>\n        (\n        <span style={{ color: \"rgb(222, 147, 95)\" }} />){\" \"}\n      </span>\n      {\"{\"}\n      {\"\\n\"}\n      {\"  \"}\n      <span style={{ color: \"#FF7B72\" }}>return</span> ({\"\\n\"}\n      {\"    \"}\n      <span>\n        <span style={{ color: \"#79C0FF\" }}>\n          &lt;\n          <span style={{ color: \"#79C0FF\" }}>Refine</span>\n          {\"\\n\"}\n          {\"      \"}\n          <span style={{ color: \"#E5ECF2\", opacity: 0.6 }}>\n            {\"// \"}\n            <span>...</span>\n          </span>\n          {\"\\n\"}\n          {\"    \"}&gt;\n        </span>\n        {\"\\n\"}\n        {\"      \"}\n        <span style={{ opacity: 0.6 }}>\n          {\"{\"}\n          {\"/* ... */\"}\n          {\"}\"}\n        </span>\n        {\"\\n\"}\n        {\"      \"}\n        <span style={{ color: \"#79C0FF\" }}>\n          &lt;\n          <span style={{ color: \"#79C0FF\" }}>WelcomePage</span> /&gt;\n        </span>\n        {\"\\n\"}\n        {\"      \"}\n        <span style={{ opacity: 0.6 }}>\n          {\"{\"}\n          {\"/* ... */\"}\n          {\"}\"}\n        </span>\n        {\"\\n\"}\n        {\"    \"}\n        <span style={{ color: \"#79C0FF\" }}>\n          &lt;/\n          <span style={{ color: \"#79C0FF\" }}>Refine</span>\n          &gt;\n        </span>\n      </span>\n      {\"\\n\"}\n      {\"  \"});{\"\\n\"}\n      {\"}\"}\n    </pre>\n  );\n};\n\nconst ErrorGradient = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={204}\n    height={56}\n    viewBox=\"0 0 204 56\"\n    fill=\"none\"\n    {...props}\n  >\n    <path fill=\"url(#welcome-page-error-gradient-a)\" d=\"M12 0H0v12L12 0Z\" />\n    <path\n      fill=\"url(#welcome-page-error-gradient-b)\"\n      d=\"M28 0h-8L0 20v8L28 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-c)\"\n      d=\"M36 0h8L0 44v-8L36 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-d)\"\n      d=\"M60 0h-8L0 52v4h4L60 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-e)\"\n      d=\"M68 0h8L20 56h-8L68 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-f)\"\n      d=\"M92 0h-8L28 56h8L92 0Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-g)\"\n      d=\"M100 0h8L52 56h-8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-h)\"\n      d=\"M124 0h-8L60 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-i)\"\n      d=\"M140 0h-8L76 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-j)\"\n      d=\"M132 0h8L84 56h-8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-k)\"\n      d=\"M156 0h-8L92 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-l)\"\n      d=\"M164 0h8l-56 56h-8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-m)\"\n      d=\"M188 0h-8l-56 56h8l56-56Z\"\n    />\n    <path\n      fill=\"url(#welcome-page-error-gradient-n)\"\n      d=\"M204 0h-8l-56 56h8l56-56Z\"\n    />\n    <defs>\n      <radialGradient\n        id=\"welcome-page-error-gradient-a\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-b\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-c\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-d\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-e\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-f\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-g\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-h\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-i\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-j\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-k\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-l\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-m\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n      <radialGradient\n        id=\"welcome-page-error-gradient-n\"\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"scale(124)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#FF4C4D\" stopOpacity={0.1} />\n        <stop offset={1} stopColor=\"#FF4C4D\" stopOpacity={0} />\n      </radialGradient>\n    </defs>\n  </svg>\n);\n\nconst ErrorIcon = (props: React.SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={16}\n    height={16}\n    viewBox=\"0 0 16 16\"\n    fill=\"none\"\n    {...props}\n  >\n    <path\n      fill=\"#FF4C4D\"\n      fillRule=\"evenodd\"\n      d=\"M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16Z\"\n      clipRule=\"evenodd\"\n    />\n    <path\n      fill=\"#fff\"\n      fillRule=\"evenodd\"\n      d=\"M7 8a1 1 0 1 0 2 0V5a1 1 0 1 0-2 0v3Zm0 3a1 1 0 1 1 2 0 1 1 0 0 1-2 0Z\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\n","import React from \"react\";\n\nimport { useQuerySubscription } from \"@refinedev/devtools-internal\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\n\nimport { ReadyPage as DefaultReadyPage, RouteChangeHandler } from \"@components\";\nimport { Telemetry } from \"@components/telemetry\";\nimport { handleRefineOptions } from \"@definitions\";\nimport { useDeepMemo } from \"@hooks/deepMemo\";\n\nimport { AccessControlContextProvider } from \"../../../contexts/accessControl\";\nimport { AuditLogContextProvider } from \"../../../contexts/auditLog\";\nimport {\n  AuthBindingsContextProvider,\n  LegacyAuthContextProvider,\n} from \"../../../contexts/auth\";\nimport { DataContextProvider } from \"../../../contexts/data\";\nimport { I18nContextProvider } from \"../../../contexts/i18n\";\nimport { LiveContextProvider } from \"../../../contexts/live\";\nimport { NotificationContextProvider } from \"../../../contexts/notification\";\nimport { RefineContextProvider } from \"../../../contexts/refine\";\nimport { ResourceContextProvider } from \"../../../contexts/resource\";\nimport { RouterContextProvider } from \"../../../contexts/router\";\nimport { LegacyRouterContextProvider } from \"../../../contexts/router/legacy\";\nimport { RouterPickerProvider } from \"../../../contexts/router/picker\";\nimport { UndoableQueueContextProvider } from \"../../../contexts/undoableQueue\";\nimport { UnsavedWarnContextProvider } from \"../../../contexts/unsavedWarn\";\n\nimport type { RefineProps } from \"../../../contexts/refine/types\";\nimport { useRouterMisuseWarning } from \"../../../hooks/router/use-router-misuse-warning/index\";\n\n/**\n * {@link https://refine.dev/docs/api-reference/core/components/refine-config `<Refine> component`} is the entry point of a refine app.\n * It is where the highest level of configuration of the app occurs.\n * Only a dataProvider is required to bootstrap the app. After adding a dataProvider, resources can be added as property.\n *\n * @see {@link https://refine.dev/docs/api-reference/core/components/refine-config} for more details.\n */\nexport const Refine: React.FC<RefineProps> = ({\n  legacyAuthProvider,\n  authProvider,\n  dataProvider,\n  legacyRouterProvider,\n  routerProvider,\n  notificationProvider,\n  accessControlProvider,\n  auditLogProvider,\n  resources,\n  DashboardPage,\n  ReadyPage,\n  LoginPage,\n  catchAll,\n  children,\n  liveProvider,\n  i18nProvider,\n  Title,\n  Layout,\n  Sider,\n  Header,\n  Footer,\n  OffLayoutArea,\n  onLiveEvent,\n  options,\n}) => {\n  const {\n    optionsWithDefaults,\n    disableTelemetryWithDefault,\n    reactQueryWithDefaults,\n  } = handleRefineOptions({\n    options,\n  });\n\n  const queryClient = useDeepMemo(() => {\n    if (reactQueryWithDefaults.clientConfig instanceof QueryClient) {\n      return reactQueryWithDefaults.clientConfig;\n    }\n\n    return new QueryClient({\n      ...reactQueryWithDefaults.clientConfig,\n      defaultOptions: {\n        ...reactQueryWithDefaults.clientConfig.defaultOptions,\n        queries: {\n          refetchOnWindowFocus: false,\n          keepPreviousData: true,\n          ...reactQueryWithDefaults.clientConfig.defaultOptions?.queries,\n        },\n      },\n    });\n  }, [reactQueryWithDefaults.clientConfig]);\n\n  useQuerySubscription(queryClient);\n\n  const useNotificationProviderValues = React.useMemo(() => {\n    return typeof notificationProvider === \"function\"\n      ? notificationProvider\n      : () => notificationProvider;\n  }, [notificationProvider]);\n\n  const notificationProviderContextValues = useNotificationProviderValues();\n\n  /**\n   * Warn our users if they are using the old way of routing in the wrong prop.\n   */\n  useRouterMisuseWarning(routerProvider);\n  /** */\n\n  /**\n   * `<ReadyPage />` is only used in the legacy routing and is not used in the new routing.\n   * If `legacyRouterProvider` is provided and `routerProvider` is not, we'll check for the `resources` prop to be empty.\n   * If `resources` is empty, then we'll render `<ReadyPage />` component.\n   */\n  if (\n    legacyRouterProvider &&\n    !routerProvider &&\n    (resources ?? []).length === 0\n  ) {\n    return ReadyPage ? <ReadyPage /> : <DefaultReadyPage />;\n  }\n\n  /** Router\n   *\n   * Handle routing from `RouterContextProvider` and `router` prop for the brand new way\n   * If `router` is not provided, then we'r checking for `routerProvider` prop\n   * If `routerProvider` is provided, then `RouterContextProvider` is used\n   * If none of them is provided, then `RouterContextProvider` is used because it supports undefined router\n   *\n   * `RouterContextProvider` is skipped whenever possible and by this way,\n   * we can achieve backward compability only when its provided by user\n   *\n   */\n  const { RouterComponent = React.Fragment } = !routerProvider\n    ? legacyRouterProvider ?? {}\n    : {};\n  /** */\n\n  return (\n    <QueryClientProvider client={queryClient}>\n      <NotificationContextProvider {...notificationProviderContextValues}>\n        <LegacyAuthContextProvider\n          {...(legacyAuthProvider ?? {})}\n          isProvided={Boolean(legacyAuthProvider)}\n        >\n          <AuthBindingsContextProvider\n            {...(authProvider ?? {})}\n            isProvided={Boolean(authProvider)}\n          >\n            <DataContextProvider dataProvider={dataProvider}>\n              <LiveContextProvider liveProvider={liveProvider}>\n                <RouterPickerProvider\n                  value={\n                    legacyRouterProvider && !routerProvider ? \"legacy\" : \"new\"\n                  }\n                >\n                  <RouterContextProvider router={routerProvider}>\n                    <LegacyRouterContextProvider {...legacyRouterProvider}>\n                      <ResourceContextProvider resources={resources ?? []}>\n                        <I18nContextProvider i18nProvider={i18nProvider}>\n                          <AccessControlContextProvider\n                            {...(accessControlProvider ?? {})}\n                          >\n                            <AuditLogContextProvider\n                              {...(auditLogProvider ?? {})}\n                            >\n                              <UndoableQueueContextProvider>\n                                <RefineContextProvider\n                                  mutationMode={\n                                    optionsWithDefaults.mutationMode\n                                  }\n                                  warnWhenUnsavedChanges={\n                                    optionsWithDefaults.warnWhenUnsavedChanges\n                                  }\n                                  syncWithLocation={\n                                    optionsWithDefaults.syncWithLocation\n                                  }\n                                  Title={Title}\n                                  undoableTimeout={\n                                    optionsWithDefaults.undoableTimeout\n                                  }\n                                  catchAll={catchAll}\n                                  DashboardPage={DashboardPage}\n                                  LoginPage={LoginPage}\n                                  Layout={Layout}\n                                  Sider={Sider}\n                                  Footer={Footer}\n                                  Header={Header}\n                                  OffLayoutArea={OffLayoutArea}\n                                  hasDashboard={!!DashboardPage}\n                                  liveMode={optionsWithDefaults.liveMode}\n                                  onLiveEvent={onLiveEvent}\n                                  options={optionsWithDefaults}\n                                >\n                                  <UnsavedWarnContextProvider>\n                                    <RouterComponent>\n                                      {children}\n                                      {!disableTelemetryWithDefault && (\n                                        <Telemetry />\n                                      )}\n                                      <RouteChangeHandler />\n                                    </RouterComponent>\n                                  </UnsavedWarnContextProvider>\n                                </RefineContextProvider>\n                              </UndoableQueueContextProvider>\n                            </AuditLogContextProvider>\n                          </AccessControlContextProvider>\n                        </I18nContextProvider>\n                      </ResourceContextProvider>\n                    </LegacyRouterContextProvider>\n                  </RouterContextProvider>\n                </RouterPickerProvider>\n              </LiveContextProvider>\n            </DataContextProvider>\n          </AuthBindingsContextProvider>\n        </LegacyAuthContextProvider>\n      </NotificationContextProvider>\n    </QueryClientProvider>\n  );\n};\n","import React from \"react\";\n\nimport { useTelemetryData } from \"@hooks/useTelemetryData\";\n\nimport type { ITelemetryData } from \"./types\";\n\nconst encode = (payload: ITelemetryData): string | undefined => {\n  try {\n    const stringifiedPayload = JSON.stringify(payload || {});\n\n    if (typeof btoa !== \"undefined\") {\n      return btoa(stringifiedPayload);\n    }\n\n    return Buffer.from(stringifiedPayload).toString(\"base64\");\n  } catch (err) {\n    return undefined;\n  }\n};\n\nconst throughImage = (src: string) => {\n  const img = new Image();\n\n  img.src = src;\n};\n\nconst throughFetch = (src: string) => {\n  fetch(src);\n};\n\nconst transport = (src: string) => {\n  if (typeof Image !== \"undefined\") {\n    throughImage(src);\n  } else if (typeof fetch !== \"undefined\") {\n    throughFetch(src);\n  }\n};\n\nexport const Telemetry: React.FC<{}> = () => {\n  const payload = useTelemetryData();\n  const sent = React.useRef(false);\n\n  React.useEffect(() => {\n    if (sent.current) {\n      return;\n    }\n    const encoded = encode(payload);\n\n    if (!encoded) {\n      return;\n    }\n\n    transport(`https://telemetry.refine.dev/telemetry?payload=${encoded}`);\n    sent.current = true;\n  }, []);\n\n  return null;\n};\n","import { useContext } from \"react\";\n\nimport { AccessControlContext } from \"@contexts/accessControl\";\nimport { AuditLogContext } from \"@contexts/auditLog\";\nimport { DataContext } from \"@contexts/data\";\nimport { I18nContext } from \"@contexts/i18n\";\nimport { LiveContext } from \"@contexts/live\";\nimport { NotificationContext } from \"@contexts/notification\";\nimport { LegacyRouterContext } from \"@contexts/router/legacy\";\nimport { useResource } from \"@hooks/resource\";\n\nimport { useIsExistAuthentication, useRefineContext } from \"..\";\nimport type { ITelemetryData } from \"../../components/telemetry/types\";\n\n// It reads and updates from package.json during build. ref: tsup.config.ts\nconst REFINE_VERSION = \"4.57.9\";\n\nexport const useTelemetryData = (): ITelemetryData => {\n  const auth = useIsExistAuthentication();\n  const auditLogContext = useContext(AuditLogContext);\n  const { liveProvider } = useContext(LiveContext);\n  const routerContext = useContext(LegacyRouterContext);\n  const dataContext = useContext(DataContext);\n  const { i18nProvider } = useContext(I18nContext);\n  const notificationContext = useContext(NotificationContext);\n  const accessControlContext = useContext(AccessControlContext);\n  const { resources } = useResource();\n  const refineOptions = useRefineContext();\n\n  const auditLog =\n    !!auditLogContext.create ||\n    !!auditLogContext.get ||\n    !!auditLogContext.update;\n\n  const live =\n    !!liveProvider?.publish ||\n    !!liveProvider?.subscribe ||\n    !!liveProvider?.unsubscribe;\n\n  const router =\n    !!routerContext.useHistory ||\n    !!routerContext.Link ||\n    !!routerContext.Prompt ||\n    !!routerContext.useLocation ||\n    !!routerContext.useParams;\n\n  const data = !!dataContext;\n\n  const i18n =\n    !!i18nProvider?.changeLocale ||\n    !!i18nProvider?.getLocale ||\n    !!i18nProvider?.translate;\n\n  const notification =\n    !!notificationContext.close || !!notificationContext.open;\n\n  const accessControl = !!accessControlContext.can;\n\n  const projectId = refineOptions?.options?.projectId;\n\n  return {\n    providers: {\n      auth,\n      auditLog,\n      live,\n      router,\n      data,\n      i18n,\n      notification,\n      accessControl,\n    },\n    version: REFINE_VERSION,\n    resourceCount: resources.length,\n    projectId,\n  };\n};\n","import type { LegacyRouterProvider } from \"../../../contexts/router/legacy/types\";\nimport type { RouterProvider } from \"../../../contexts/router/types\";\n\nexport const checkRouterPropMisuse = (\n  value: LegacyRouterProvider | RouterProvider,\n) => {\n  // check if `routerProvider` prop is passed with legacy properties.\n  // If yes, console.warn the user to use `legacyRuterProvider` prop instead.\n  const bindings = [\"go\", \"parse\", \"back\", \"Link\"];\n\n  // check if `value` contains properties other than `bindings`\n  const otherProps = Object.keys(value).filter(\n    (key) => !bindings.includes(key),\n  );\n\n  const hasOtherProps = otherProps.length > 0;\n\n  if (hasOtherProps) {\n    console.warn(\n      `Unsupported properties are found in \\`routerProvider\\` prop. You provided \\`${otherProps.join(\n        \", \",\n      )}\\`. Supported properties are \\`${bindings.join(\n        \", \",\n      )}\\`. You may wanted to use \\`legacyRouterProvider\\` prop instead.`,\n    );\n\n    return true;\n  }\n\n  return false;\n};\n","import { checkRouterPropMisuse } from \"@definitions/helpers/check-router-prop-misuse\";\nimport React from \"react\";\nimport type { RouterProvider } from \"../../../contexts/router/types\";\n\nexport const useRouterMisuseWarning = (value?: RouterProvider) => {\n  const warned = React.useRef(false);\n\n  React.useEffect(() => {\n    if (warned.current === false) {\n      if (value) {\n        const warn = checkRouterPropMisuse(value);\n        if (warn) {\n          warned.current = true;\n        }\n      }\n    }\n  }, [value]);\n};\n","import React, { useEffect, useState } from \"react\";\n\nimport { useCancelNotification, useNotification, useTranslate } from \"@hooks\";\n\nimport { userFriendlySecond } from \"@definitions/helpers\";\nimport {\n  ActionTypes,\n  type IUndoableQueue,\n} from \"../../contexts/undoableQueue/types\";\n\nexport const UndoableQueue: React.FC<{\n  notification: IUndoableQueue;\n}> = ({ notification }) => {\n  const translate = useTranslate();\n\n  const { notificationDispatch } = useCancelNotification();\n  const { open } = useNotification();\n\n  const [timeoutId, setTimeoutId] = useState<number | undefined>();\n\n  const cancelNotification = () => {\n    if (notification.isRunning === true) {\n      if (notification.seconds === 0) {\n        notification.doMutation();\n      }\n      if (!notification.isSilent) {\n        open?.({\n          key: `${notification.id}-${notification.resource}-notification`,\n          type: \"progress\",\n          message: translate(\n            \"notifications.undoable\",\n            {\n              seconds: userFriendlySecond(notification.seconds),\n            },\n            `You have ${userFriendlySecond(\n              notification.seconds,\n            )} seconds to undo`,\n          ),\n          cancelMutation: notification.cancelMutation,\n          undoableTimeout: userFriendlySecond(notification.seconds),\n        });\n      }\n\n      if (notification.seconds > 0) {\n        if (timeoutId) {\n          clearTimeout(timeoutId);\n        }\n\n        const newTimeoutId = setTimeout(() => {\n          notificationDispatch({\n            type: ActionTypes.DECREASE_NOTIFICATION_SECOND,\n            payload: {\n              id: notification.id,\n              seconds: notification.seconds,\n              resource: notification.resource,\n            },\n          });\n        }, 1000) as unknown as number;\n\n        setTimeoutId(newTimeoutId);\n      }\n    }\n  };\n\n  useEffect(() => {\n    cancelNotification();\n  }, [notification]);\n\n  return null;\n};\n","import React, { useEffect } from \"react\";\n\nimport {\n  useRefineContext,\n  useRouterContext,\n  useTranslate,\n  useWarnAboutChange,\n} from \"@hooks\";\n\nimport type { LayoutProps, TitleProps } from \"../../contexts/refine/types\";\n\nexport interface LayoutWrapperProps {\n  /**\n   * Outer component that renders other components\n   * @default *\n   */\n  Layout?: React.FC<LayoutProps>;\n  /**\n   * [Custom sider to use](/api-reference/core/components/refine-config.md#sider)\n   * @default *\n   */\n  Sider?: React.FC;\n  /**\n   * [Custom header to use](/api-reference/core/components/refine-config.md#header)\n   * @default *\n   */\n  Header?: React.FC;\n  /**\n   * [Custom title to use](/api-reference/core/components/refine-config.md#title)\n   * @default *\n   */\n  Title?: React.FC<TitleProps>;\n  /**\n   * [Custom footer to use](/api-reference/core/components/refine-config.md#footer)\n   * @default *\n   */\n  Footer?: React.FC;\n  /**\n   * [Custom off layout area to use](/api-reference/core/components/refine-config.md#offlayoutarea)\n   * @default *\n   */\n  OffLayoutArea?: React.FC;\n  children: React.ReactNode;\n}\n\n/**\n * `<LayoutWrapper>` wraps its contents in **refine's** layout with all customizations made in {@link https://refine.dev/docs/core/components/refine-config `<Refine>`} component.\n * It is the default layout used in resource pages.\n * It can be used in custom pages to use global layout.\n *\n * @see {@link https://refine.dev/docs/core/components/layout-wrapper} for more details.\n *\n * @deprecated This component is obsolete and only works with the legacy router providers.\n */\nexport const LayoutWrapper: React.FC<LayoutWrapperProps> = ({\n  children,\n  Layout: LayoutFromProps,\n  Sider: SiderFromProps,\n  Header: HeaderFromProps,\n  Title: TitleFromProps,\n  Footer: FooterFromProps,\n  OffLayoutArea: OffLayoutAreaFromProps,\n}) => {\n  const { Layout, Footer, Header, Sider, Title, OffLayoutArea } =\n    useRefineContext();\n\n  const LayoutToRender = LayoutFromProps ?? Layout;\n\n  return (\n    <LayoutToRender\n      Sider={SiderFromProps ?? Sider}\n      Header={HeaderFromProps ?? Header}\n      Footer={FooterFromProps ?? Footer}\n      Title={TitleFromProps ?? Title}\n      OffLayoutArea={OffLayoutAreaFromProps ?? OffLayoutArea}\n    >\n      {children}\n      <UnsavedPrompt />\n    </LayoutToRender>\n  );\n};\n\nconst UnsavedPrompt: React.FC = () => {\n  const { Prompt } = useRouterContext();\n\n  const translate = useTranslate();\n\n  const { warnWhen, setWarnWhen } = useWarnAboutChange();\n\n  const warnWhenListener = (e: {\n    preventDefault: () => void;\n    returnValue: string;\n  }) => {\n    e.preventDefault();\n\n    e.returnValue = translate(\n      \"warnWhenUnsavedChanges\",\n      \"Are you sure you want to leave? You have unsaved changes.\",\n    );\n\n    return e.returnValue;\n  };\n\n  useEffect(() => {\n    if (warnWhen) {\n      window.addEventListener(\"beforeunload\", warnWhenListener);\n    }\n\n    return window.removeEventListener(\"beforeunload\", warnWhenListener);\n  }, [warnWhen]);\n\n  return (\n    <Prompt\n      when={warnWhen}\n      message={translate(\n        \"warnWhenUnsavedChanges\",\n        \"Are you sure you want to leave? You have unsaved changes.\",\n      )}\n      setWarnWhen={setWarnWhen}\n    />\n  );\n};\n","import React from \"react\";\n\nimport { useActiveAuthProvider } from \"@definitions/index\";\nimport {\n  useGo,\n  useIsAuthenticated,\n  useNavigation,\n  useParsed,\n  useRouterContext,\n  useRouterType,\n} from \"@hooks\";\nimport type { GoConfig } from \"../../contexts/router/types\";\n\nexport type AuthCheckParams = any;\n\nexport type AuthenticatedCommonProps = {\n  /**\n   * Unique key to identify the component.\n   * This is required if you have multiple `Authenticated` components at the same level.\n   * @required\n   */\n  key: React.Key;\n  /**\n   * Whether to redirect user if not logged in or not.\n   * If not set, user will be redirected to `redirectTo` property of the `check` function's response.\n   * This behavior is only available for new auth providers.\n   * Legacy auth providers will redirect to `/login` by default if this property is not set.\n   * If set to a string, user will be redirected to that string.\n   *\n   * This property only works if `fallback` is **not set**.\n   */\n  redirectOnFail?: string | true;\n  /**\n   * Whether to append current path to search params of the redirect url at `to` property.\n   *\n   * By default, `to` parameter is used by successful invocations of the `useLogin` hook.\n   * If `to` present, it will be used as the redirect url after successful login.\n   */\n  appendCurrentPathToQuery?: boolean;\n  /**\n   * Content to show if user is not logged in.\n   */\n  fallback?: React.ReactNode;\n  /**\n   * Content to show while checking whether user is logged in or not.\n   */\n  loading?: React.ReactNode;\n  /**\n   * Content to show if user is logged in.\n   */\n  children?: React.ReactNode;\n  /**\n   * optional params to be passed to the Auth Provider's check method via the useIsAuthenticated hook.\n   */\n  params?: AuthCheckParams;\n};\n\nexport type LegacyAuthenticatedProps = {\n  v3LegacyAuthProviderCompatible: true;\n} & AuthenticatedCommonProps;\n\nexport type AuthenticatedProps = {\n  v3LegacyAuthProviderCompatible?: false;\n} & AuthenticatedCommonProps;\n\n/**\n * `<Authenticated>` is the component form of {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated `useAuthenticated`}. It internally uses `useAuthenticated` to provide it's functionality.\n *\n * @requires {@link https://react.dev/learn/rendering-lists#why-does-react-need-keys `key`} prop if you have multiple components at the same level.\n * In React, components don't automatically unmount and remount with prop changes, which is generally good for performance. However, for specific cases this can cause issues like unwanted content rendering (`fallback` or `children`). To solve this, assigning unique `key` values to each instance of component is necessary, forcing React to unmount and remount the component, rather than just updating its props.\n * @example\n *```tsx\n * <Authenticated key=\"dashboard\">\n *   <h1>Dashboard Page</h1>\n * </Authenticated>\n *```\n *\n * @see {@link https://refine.dev/docs/core/components/auth/authenticated `<Authenticated>`} component for more details.\n */\nexport function Authenticated(\n  props: LegacyAuthenticatedProps,\n): JSX.Element | null;\n\n/**\n * `<Authenticated>` is the component form of {@link https://refine.dev/docs/api-reference/core/hooks/auth/useAuthenticated `useAuthenticated`}. It internally uses `useAuthenticated` to provide it's functionality.\n *\n * @requires {@link https://react.dev/learn/rendering-lists#why-does-react-need-keys `key`} prop if you have multiple components at the same level.\n * In React, components don't automatically unmount and remount with prop changes, which is generally good for performance. However, for specific cases this can cause issues like unwanted content rendering (`fallback` or `children`). To solve this, assigning unique `key` values to each instance of component is necessary, forcing React to unmount and remount the component, rather than just updating its props.\n * @example\n *```tsx\n * <Authenticated key=\"dashboard\">\n *   <h1>Dashboard Page</h1>\n * </Authenticated>\n *```\n *\n * @see {@link https://refine.dev/docs/core/components/auth/authenticated `<Authenticated>`} component for more details.\n */\nexport function Authenticated(props: AuthenticatedProps): JSX.Element | null;\n\nexport function Authenticated({\n  redirectOnFail = true,\n  appendCurrentPathToQuery = true,\n  children,\n  fallback: fallbackContent,\n  loading: loadingContent,\n  params,\n}: AuthenticatedProps | LegacyAuthenticatedProps): JSX.Element | null {\n  const activeAuthProvider = useActiveAuthProvider();\n  const routerType = useRouterType();\n\n  const hasAuthProvider = Boolean(activeAuthProvider?.isProvided);\n  const isLegacyAuth = Boolean(activeAuthProvider?.isLegacy);\n  const isLegacyRouter = routerType === \"legacy\";\n\n  const parsed = useParsed();\n  const go = useGo();\n  const { useLocation } = useRouterContext();\n  const legacyLocation = useLocation();\n\n  const {\n    isFetching,\n    isSuccess,\n    data: {\n      authenticated: isAuthenticatedStatus,\n      redirectTo: authenticatedRedirect,\n    } = {},\n  } = useIsAuthenticated({\n    v3LegacyAuthProviderCompatible: isLegacyAuth,\n    params,\n  });\n\n  // Authentication status\n  const isAuthenticated = hasAuthProvider\n    ? isLegacyAuth\n      ? isSuccess\n      : isAuthenticatedStatus\n    : true;\n\n  // when there is no auth provider\n  if (!hasAuthProvider) {\n    return <>{children ?? null}</>;\n  }\n\n  // when checking authentication status\n  if (isFetching) {\n    return <>{loadingContent ?? null}</>;\n  }\n\n  // when user is authenticated return children\n  if (isAuthenticated) {\n    return <>{children ?? null}</>;\n  }\n  // when user is not authenticated redirect or render fallbackContent\n\n  // render fallbackContent if it is exist\n  if (typeof fallbackContent !== \"undefined\") {\n    return <>{fallbackContent ?? null}</>;\n  }\n  // if there is no fallbackContent, redirect page\n\n  // Redirect url to use. use redirectOnFail if it is set.\n  // Otherwise use redirectTo property of the check function's response.\n  // If both are not set, use `/login` as the default redirect url. (only for legacy auth providers)\n  const appliedRedirect = isLegacyAuth\n    ? typeof redirectOnFail === \"string\"\n      ? redirectOnFail\n      : \"/login\"\n    : typeof redirectOnFail === \"string\"\n      ? redirectOnFail\n      : (authenticatedRedirect as string | undefined);\n\n  // Current pathname to append to the redirect url.\n  // User will be redirected to this url after successful mutation. (like login)\n  const pathname = `${\n    isLegacyRouter ? legacyLocation?.pathname : parsed.pathname\n  }`.replace(/(\\?.*|#.*)$/, \"\");\n  // Redirect if appliedRedirect is set, otherwise return null.\n  //  Uses `replace` for legacy router and `go` for new router.\n  if (appliedRedirect) {\n    if (isLegacyRouter) {\n      const toQuery = appendCurrentPathToQuery\n        ? `?to=${encodeURIComponent(pathname)}`\n        : \"\";\n      return <RedirectLegacy to={`${appliedRedirect}${toQuery}`} />;\n    }\n\n    const queryToValue: string | undefined = parsed.params?.to\n      ? parsed.params.to\n      : go({\n          to: pathname,\n          options: { keepQuery: true },\n          type: \"path\",\n        });\n\n    return (\n      <Redirect\n        config={{\n          to: appliedRedirect,\n          query:\n            appendCurrentPathToQuery && (queryToValue ?? \"\").length > 1\n              ? {\n                  to: queryToValue,\n                }\n              : undefined,\n          type: \"replace\",\n        }}\n      />\n    );\n  }\n\n  return null;\n}\n\nconst Redirect = ({ config }: { config: GoConfig }) => {\n  const go = useGo();\n\n  React.useEffect(() => {\n    go(config);\n  }, [go, config]);\n\n  return null;\n};\n\nconst RedirectLegacy = ({ to }: { to: string }) => {\n  const { replace } = useNavigation();\n\n  React.useEffect(() => {\n    replace(to);\n  }, [replace, to]);\n\n  return null;\n};\n","import { useEffect } from \"react\";\nimport { useRouterContext } from \"@hooks\";\nimport { useLegacyAuthContext } from \"@contexts/auth\";\n\nexport const RouteChangeHandler: React.FC = () => {\n  const { useLocation } = useRouterContext();\n\n  const { checkAuth } = useLegacyAuthContext();\n  const location = useLocation();\n\n  useEffect(() => {\n    checkAuth?.().catch(() => false);\n  }, [location?.pathname]);\n\n  return null;\n};\n","import React, { useEffect } from \"react\";\nimport type { UseQueryOptions } from \"@tanstack/react-query\";\n\nimport { useCan, useResourceParams } from \"@hooks\";\n\nimport type { CanReturnType } from \"../../contexts/accessControl/types\";\nimport type { BaseKey } from \"../../contexts/data/types\";\nimport type { IResourceItem, ITreeMenu } from \"../../contexts/resource/types\";\n\ntype CanParams = {\n  resource?: IResourceItem & { children?: ITreeMenu[] };\n  id?: BaseKey;\n  [key: string]: any;\n};\n\ntype OnUnauthorizedProps = {\n  resource?: string;\n  reason?: string;\n  action: string;\n  params: CanParams;\n};\n\ntype CanAccessBaseProps = {\n  /**\n   * Resource name for API data interactions\n   */\n  resource?: string;\n  /**\n   * Intended action on resource\n   */\n  action: string;\n  /**\n   * Parameters associated with the resource\n   * @type { resource?: [IResourceItem](https://refine.dev/docs/api-reference/core/interfaceReferences/#canparams), id?: [BaseKey](https://refine.dev/docs/api-reference/core/interfaceReferences/#basekey), [key: string]: any }\n   */\n  params?: CanParams;\n  /**\n   * Content to show if access control returns `false`\n   */\n  fallback?: React.ReactNode;\n  /**\n   * Callback function to be called if access control returns `can: false`\n   */\n  onUnauthorized?: (props: OnUnauthorizedProps) => void;\n  children: React.ReactNode;\n  queryOptions?: UseQueryOptions<CanReturnType>;\n};\n\ntype CanAccessWithoutParamsProps = {\n  [key in Exclude<\n    keyof CanAccessBaseProps,\n    \"fallback\" | \"children\"\n  >]?: undefined;\n} & {\n  [key in \"fallback\" | \"children\"]?: CanAccessBaseProps[key];\n};\n\nexport type CanAccessProps = CanAccessBaseProps | CanAccessWithoutParamsProps;\n\nexport const CanAccess: React.FC<CanAccessProps> = ({\n  resource: resourceFromProp,\n  action: actionFromProp,\n  params: paramsFromProp,\n  fallback,\n  onUnauthorized,\n  children,\n  queryOptions: componentQueryOptions,\n  ...rest\n}) => {\n  const {\n    id,\n    resource,\n    action: fallbackAction = \"\",\n  } = useResourceParams({\n    resource: resourceFromProp,\n    id: paramsFromProp?.id,\n  });\n\n  const action = actionFromProp ?? fallbackAction;\n\n  const params = paramsFromProp ?? {\n    id,\n    resource,\n  };\n\n  const { data } = useCan({\n    resource: resource?.name,\n    action,\n    params,\n    queryOptions: componentQueryOptions,\n  });\n\n  useEffect(() => {\n    if (onUnauthorized && data?.can === false) {\n      onUnauthorized({\n        resource: resource?.name,\n        action,\n        reason: data?.reason,\n        params,\n      });\n    }\n  }, [data?.can]);\n\n  if (data?.can) {\n    if (React.isValidElement(children)) {\n      const Children = React.cloneElement(children, rest);\n      return Children;\n    }\n\n    return <>{children}</>;\n  }\n\n  if (data?.can === false) {\n    return <>{fallback ?? null}</>;\n  }\n\n  return null;\n};\n","import React, { type CSSProperties, type SVGProps, useEffect } from \"react\";\nimport { CSSRules } from \"./styles\";\n\nconst text =\n  \"If you find Refine useful, you can contribute to its growth by giving it a star on GitHub\";\n\ntype Props = {\n  containerStyle?: CSSProperties;\n};\n\nexport const GitHubBanner = ({ containerStyle }: Props) => {\n  useEffect(() => {\n    const styleTag = document.createElement(\"style\");\n    document.head.appendChild(styleTag);\n    CSSRules.forEach((rule) =>\n      styleTag.sheet?.insertRule(rule, styleTag.sheet.cssRules.length),\n    );\n  }, []);\n\n  return (\n    <div\n      className=\"banner bg-top-announcement\"\n      style={{\n        width: \"100%\",\n        height: \"48px\",\n      }}\n    >\n      <div\n        style={{\n          position: \"relative\",\n          display: \"flex\",\n          justifyContent: \"center\",\n          alignItems: \"center\",\n          paddingLeft: \"200px\",\n          width: \"100%\",\n          maxWidth: \"100vw\",\n          height: \"100%\",\n          borderBottom: \"1px solid #47ebeb26\",\n          ...containerStyle,\n        }}\n      >\n        <div\n          className=\"top-announcement-mask\"\n          style={{\n            position: \"absolute\",\n            left: 0,\n            top: 0,\n            width: \"100%\",\n            height: \"100%\",\n            borderBottom: \"1px solid #47ebeb26\",\n          }}\n        >\n          <div\n            style={{\n              position: \"relative\",\n              width: \"960px\",\n              height: \"100%\",\n              display: \"flex\",\n              justifyContent: \"space-between\",\n              margin: \"0 auto\",\n            }}\n          >\n            <div\n              style={{\n                width: \"calc(50% - 300px)\",\n                height: \"100%\",\n                position: \"relative\",\n              }}\n            >\n              <GlowSmall\n                style={{\n                  animationDelay: \"1.5s\",\n                  position: \"absolute\",\n                  top: \"2px\",\n                  right: \"220px\",\n                }}\n                id={\"1\"}\n              />\n              <GlowSmall\n                style={{\n                  animationDelay: \"1s\",\n                  position: \"absolute\",\n                  top: \"8px\",\n                  right: \"100px\",\n                  transform: \"rotate(180deg)\",\n                }}\n                id={\"2\"}\n              />\n              <GlowBig\n                style={{\n                  position: \"absolute\",\n                  right: \"10px\",\n                }}\n                id={\"3\"}\n              />\n            </div>\n\n            <div\n              style={{\n                width: \"calc(50% - 300px)\",\n                height: \"100%\",\n                position: \"relative\",\n              }}\n            >\n              <GlowSmall\n                style={{\n                  animationDelay: \"2s\",\n                  position: \"absolute\",\n                  top: \"6px\",\n                  right: \"180px\",\n                  transform: \"rotate(180deg)\",\n                }}\n                id={\"4\"}\n              />\n              <GlowSmall\n                style={{\n                  animationDelay: \"0.5s\",\n                  transitionDelay: \"1.3s\",\n                  position: \"absolute\",\n                  top: \"2px\",\n                  right: \"40px\",\n                }}\n                id={\"5\"}\n              />\n              <GlowBig\n                style={{\n                  position: \"absolute\",\n                  right: \"-70px\",\n                }}\n                id={\"6\"}\n              />\n            </div>\n          </div>\n        </div>\n        <Text text={text} />\n      </div>\n    </div>\n  );\n};\n\nconst Text = ({ text }: { text: string }) => {\n  return (\n    <a\n      className=\"gh-link\"\n      href=\"https://s.refine.dev/github-support\"\n      target=\"_blank\"\n      rel=\"noreferrer\"\n      style={{\n        position: \"absolute\",\n        height: \"100%\",\n        padding: \"0 60px\",\n        display: \"flex\",\n        flexWrap: \"nowrap\",\n        whiteSpace: \"nowrap\",\n        justifyContent: \"center\",\n        alignItems: \"center\",\n        backgroundImage:\n          \"linear-gradient(90deg, rgba(31, 63, 72, 0.00) 0%, #1F3F48 10%, #1F3F48 90%, rgba(31, 63, 72, 0.00) 100%)\",\n      }}\n    >\n      <div\n        style={{\n          color: \"#fff\",\n          display: \"flex\",\n          flexDirection: \"row\",\n          gap: \"8px\",\n        }}\n      >\n        <span\n          style={{\n            display: \"flex\",\n            flexDirection: \"row\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n          }}\n        >\n          ⭐️\n        </span>\n        <span\n          className=\"text\"\n          style={{\n            fontSize: \"16px\",\n            lineHeight: \"24px\",\n          }}\n        >\n          {text}\n        </span>\n        <span\n          style={{\n            display: \"flex\",\n            flexDirection: \"row\",\n            justifyContent: \"center\",\n            alignItems: \"center\",\n          }}\n        >\n          ⭐️\n        </span>\n      </div>\n    </a>\n  );\n};\n\nconst GlowSmall = ({ style, ...props }: SVGProps<SVGSVGElement>) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width={80}\n      height={40}\n      fill=\"none\"\n      style={{\n        opacity: 1,\n        animation: \"top-announcement-glow 1s ease-in-out infinite alternate\",\n        ...style,\n      }}\n    >\n      <circle cx={40} r={40} fill={`url(#${props.id}-a)`} fillOpacity={0.5} />\n      <defs>\n        <radialGradient\n          id={`${props.id}-a`}\n          cx={0}\n          cy={0}\n          r={1}\n          gradientTransform=\"matrix(0 40 -40 0 40 0)\"\n          gradientUnits=\"userSpaceOnUse\"\n        >\n          <stop stopColor=\"#47EBEB\" />\n          <stop offset={1} stopColor=\"#47EBEB\" stopOpacity={0} />\n        </radialGradient>\n      </defs>\n    </svg>\n  );\n};\n\nconst GlowBig = ({ style, ...props }: SVGProps<SVGSVGElement>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width={120}\n    height={48}\n    fill=\"none\"\n    {...props}\n    style={{\n      opacity: 1,\n      animation: \"top-announcement-glow 1s ease-in-out infinite alternate\",\n      ...style,\n    }}\n  >\n    <circle\n      cx={60}\n      cy={24}\n      r={60}\n      fill={`url(#${props.id}-a)`}\n      fillOpacity={0.5}\n    />\n    <defs>\n      <radialGradient\n        id={`${props.id}-a`}\n        cx={0}\n        cy={0}\n        r={1}\n        gradientTransform=\"matrix(0 60 -60 0 60 24)\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"#47EBEB\" />\n        <stop offset={1} stopColor=\"#47EBEB\" stopOpacity={0} />\n      </radialGradient>\n    </defs>\n  </svg>\n);\n","export const CSSRules = [\n  `\n    .bg-top-announcement {\n        border-bottom: 1px solid rgba(71, 235, 235, 0.15);\n        background: radial-gradient(\n                218.19% 111.8% at 0% 0%,\n                rgba(71, 235, 235, 0.1) 0%,\n                rgba(71, 235, 235, 0.2) 100%\n            ),\n            #14141f;\n    }\n    `,\n  `\n    .top-announcement-mask {\n        mask-image: url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/hexagon.svg);\n        -webkit-mask-image: url(https://refine.ams3.cdn.digitaloceanspaces.com/website/static/assets/hexagon.svg);\n        mask-repeat: repeat;\n        -webkit-mask-repeat: repeat;\n        background: rgba(71, 235, 235, 0.25);\n    }\n    `,\n  `\n    .banner {\n        display: flex;\n        @media (max-width: 1000px) {\n            display: none;\n        }\n    }`,\n  `\n    .gh-link, .gh-link:hover, .gh-link:active, .gh-link:visited, .gh-link:focus {\n        text-decoration: none;\n        z-index: 9;\n    }\n    `,\n  `\n    @keyframes top-announcement-glow {\n        0% {\n            opacity: 1;\n        }\n\n        100% {\n            opacity: 0;\n        }\n    }\n    `,\n];\n","import React from \"react\";\n\nimport { useTranslate } from \"@hooks/i18n\";\n\nimport type { BaseRecord, HttpError } from \"../../contexts/data/types\";\nimport type { AutoSaveIndicatorElements } from \"../../hooks/form/types\";\nimport type { UseUpdateReturnType } from \"../../hooks/data/useUpdate\";\n\nexport type AutoSaveIndicatorProps<\n  TData extends BaseRecord = BaseRecord,\n  TError extends HttpError = HttpError,\n  TVariables = {},\n> = {\n  /**\n   * The data returned by the update request.\n   */\n  data?: UseUpdateReturnType<TData, TError, TVariables>[\"data\"];\n  /**\n   * The error returned by the update request.\n   */\n  error?: UseUpdateReturnType<TData, TError, TVariables>[\"error\"];\n  /**\n   * The status of the update request.\n   */\n  status: UseUpdateReturnType<TData, TError, TVariables>[\"status\"];\n  /**\n   * The elements to display for each status.\n   */\n  elements?: AutoSaveIndicatorElements;\n};\n\nexport const AutoSaveIndicator: React.FC<AutoSaveIndicatorProps> = ({\n  status,\n  elements: {\n    success = (\n      <Message translationKey=\"autoSave.success\" defaultMessage=\"saved\" />\n    ),\n    error = (\n      <Message\n        translationKey=\"autoSave.error\"\n        defaultMessage=\"auto save failure\"\n      />\n    ),\n    loading = (\n      <Message translationKey=\"autoSave.loading\" defaultMessage=\"saving...\" />\n    ),\n    idle = (\n      <Message\n        translationKey=\"autoSave.idle\"\n        defaultMessage=\"waiting for changes\"\n      />\n    ),\n  } = {},\n}) => {\n  switch (status) {\n    case \"success\":\n      return <>{success}</>;\n    case \"error\":\n      return <>{error}</>;\n    case \"loading\":\n      return <>{loading}</>;\n    default:\n      return <>{idle}</>;\n  }\n};\n\nconst Message = ({\n  translationKey,\n  defaultMessage,\n}: {\n  translationKey: string;\n  defaultMessage: string;\n}) => {\n  const translate = useTranslate();\n\n  return <span>{translate(translationKey, defaultMessage)}</span>;\n};\n"],"mappings":";qnBAAA,IAAAA,GAAA,GAAAC,GAAAD,GAAA,0BAAAE,GAAA,gBAAAC,GAAA,aAAAC,GAAA,kBAAAC,GAAA,sBAAAC,GAAA,cAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,gBAAAC,GAAA,eAAAC,GAAA,kBAAAC,GAAA,SAAAC,GAAA,cAAAC,GAAA,wBAAAC,GAAA,cAAAC,GAAA,WAAAC,GAAA,oBAAAC,GAAA,uBAAAC,GAAA,uBAAAT,GAAA,kBAAAU,GAAA,gBAAAC,GAAA,mBAAAC,GAAA,gBAAAC,GAAA,sBAAAC,GAAA,iCAAAC,GAAA,qBAAAC,GAAA,wBAAAC,GAAA,qBAAAC,GAAA,yBAAAC,GAAA,oBAAAC,GAAA,oBAAAC,GAAA,SAAAC,GAAA,4BAAAC,GAAA,2BAAAC,GAAA,qBAAAC,GAAA,8BAAAC,GAAA,qBAAAC,GAAA,sBAAAC,EAAA,wBAAAC,GAAA,cAAAC,GAAA,mBAAAC,GAAA,sBAAAC,GAAA,sBAAAC,GAAA,yBAAAC,GAAA,iBAAAC,GAAA,iBAAAC,GAAA,0BAAAC,GAAA,cAAAC,GAAA,qBAAAC,GAAA,YAAAC,GAAA,kBAAAC,GAAA,WAAAC,GAAA,uBAAAC,GAAA,0BAAAC,GAAA,kBAAAC,GAAA,mBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,cAAAC,GAAA,sBAAAC,GAAA,oBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,sBAAAC,GAAA,YAAAC,GAAA,mBAAAC,GAAA,iBAAAC,GAAA,iBAAAC,GAAA,UAAAC,GAAA,0BAAAC,GAAA,cAAAC,GAAA,oBAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,2BAAAC,GAAA,uBAAAC,GAAA,6BAAAC,GAAA,YAAAC,EAAA,YAAAC,GAAA,YAAAC,GAAA,kBAAAC,GAAA,gBAAAC,GAAA,uBAAAC,GAAA,WAAAC,GAAA,eAAAC,GAAA,aAAAC,GAAA,cAAAC,GAAA,YAAAC,GAAA,YAAAC,GAAA,YAAAC,GAAA,mBAAAC,GAAA,aAAAC,GAAA,oBAAAC,GAAA,kBAAAC,GAAA,oBAAAC,GAAA,eAAAC,GAAA,WAAAC,GAAA,aAAAC,GAAA,cAAAC,GAAA,mBAAAC,GAAA,eAAAC,GAAA,kCAAAC,GAAA,qBAAAC,GAAA,qBAAAC,GAAA,qBAAAC,GAAA,gBAAAC,GAAA,gBAAAC,EAAA,sBAAAC,GAAA,4BAAAC,GAAA,yBAAAC,GAAA,qBAAAC,GAAA,kBAAAC,GAAA,kBAAAC,GAAA,cAAAC,GAAA,iBAAAC,GAAA,YAAAC,GAAA,kBAAAC,GAAA,oBAAAC,GAAA,wBAAAC,GAAA,aAAAC,GAAA,aAAAC,GAAA,cAAAC,GAAA,iBAAAC,EAAA,mBAAAC,GAAA,cAAAC,GAAA,kBAAAC,GAAA,sBAAAC,GAAA,wBAAAC,GAAA,uBAAAC,GAAA,6BAAAC,KAAA,eAAAC,GAAAxI,ICAA,IAAAyI,GAA2C,oBCA3C,IAAAC,GAAwB,wCACxBC,GAIO,iCCLP,IAAAC,GAA8C,oBASvC,IAAMC,GAAoB,GAAAC,QAAM,cAAkC,CAAC,CAAC,EAK9DC,GAETC,EAAA,CAAC,CAAE,SAAAC,EAAU,WAAAC,EAAY,GAAGC,CAAe,IAAM,CACnD,GAAM,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAE5BC,EAAYN,EAAA,MAAOO,GAAgB,CAnB3C,IAAAC,EAoBI,GAAI,CAGF,OAFe,OAAMA,EAAAL,EAAe,QAAf,YAAAK,EAAA,KAAAL,EAAuBI,GAG9C,OAASE,EAAP,CACA,OAAO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EARkB,aAUZC,EAAeV,EAAA,MAAOO,GAAgB,CA7B9C,IAAAC,EA8BI,GAAI,CAGF,OAFe,OAAMA,EAAAL,EAAe,WAAf,YAAAK,EAAA,KAAAL,EAA0BI,GAGjD,OAASE,EAAP,CACA,OAAO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EARqB,gBAUfE,EAAaX,EAAA,MAAOO,GAAgB,CAvC5C,IAAAC,EAwCI,GAAI,CAGF,OAFqB,OAAMA,EAAAL,EAAe,SAAf,YAAAK,EAAA,KAAAL,EAAwBI,GAGrD,OAASE,EAAP,CACA,OAAO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EARmB,cAUbG,EAAgBZ,EAAA,MAAOO,GAAgB,CAjD/C,IAAAC,EAkDI,GAAI,CACF,cAAMA,EAAAL,EAAe,YAAf,YAAAK,EAAA,KAAAL,EAA2BI,IAC1B,QAAQ,QAAQ,CACzB,OAASE,EAAP,CACA,OAAKA,GAAA,MAAAA,EAAqC,cACxCL,EAASK,EAAmC,YAAY,EAGnD,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAXsB,iBAatB,OACE,GAAAX,QAAA,cAACD,GAAkB,SAAlB,CACC,MAAO,CACL,GAAGM,EACH,MAAOG,EACP,OAAQK,EACR,UAAWC,EACX,SAAUF,EACV,WAAAR,CACF,GAECD,CACH,CAEJ,EA5DI,6BA8DSY,GAAsB,GAAAf,QAAM,cACvC,CAAC,CACH,EAEagB,GAETd,EAAA,CAAC,CAAE,SAAAC,EAAU,WAAAC,EAAY,GAAGa,CAAa,IAAM,CACjD,IAAMC,EAAchB,EAAA,MAAOO,GAAoB,CArFjD,IAAAC,EAsFI,GAAI,CAGF,OAFe,OAAMA,EAAAO,EAAa,QAAb,YAAAP,EAAA,KAAAO,EAAqBR,GAG5C,OAASE,EAAP,CACA,eAAQ,KACN,sEACAA,CACF,EACO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAZoB,eAcdQ,EAAiBjB,EAAA,MAAOO,GAAoB,CAnGpD,IAAAC,EAoGI,GAAI,CAGF,OAFe,OAAMA,EAAAO,EAAa,WAAb,YAAAP,EAAA,KAAAO,EAAwBR,GAG/C,OAASE,EAAP,CACA,eAAQ,KACN,yEACAA,CACF,EACO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAZuB,kBAcjBS,EAAelB,EAAA,MAAOO,GAAoB,CAjHlD,IAAAC,EAkHI,GAAI,CAGF,OAFe,OAAMA,EAAAO,EAAa,SAAb,YAAAP,EAAA,KAAAO,EAAsBR,GAG7C,OAASE,EAAP,CACA,eAAQ,KACN,uEACAA,CACF,EACO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAZqB,gBAcfU,EAAcnB,EAAA,MAAOO,GAAoB,CA/HjD,IAAAC,EAgII,GAAI,CACF,IAAMY,EAAS,OAAMZ,EAAAO,EAAa,QAAb,YAAAP,EAAA,KAAAO,EAAqBR,IAE1C,OAAO,QAAQ,QAAQa,CAAM,CAC/B,OAASX,EAAP,CACA,eAAQ,KACN,sEACAA,CACF,EACO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAZoB,eAcdY,EAAuBrB,EAAA,MAAOO,GAAoB,CA7I1D,IAAAC,EA8II,GAAI,CACF,IAAMY,EAAS,OAAMZ,EAAAO,EAAa,iBAAb,YAAAP,EAAA,KAAAO,EAA8BR,IAEnD,OAAO,QAAQ,QAAQa,CAAM,CAC/B,OAASX,EAAP,CACA,eAAQ,KACN,+EACAA,CACF,EACO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAZ6B,wBAcvBa,EAAuBtB,EAAA,MAAOO,GAAoB,CA3J1D,IAAAC,EA4JI,GAAI,CACF,IAAMY,EAAS,OAAMZ,EAAAO,EAAa,iBAAb,YAAAP,EAAA,KAAAO,EAA8BR,IACnD,OAAO,QAAQ,QAAQa,CAAM,CAC/B,OAASX,EAAP,CACA,eAAQ,KACN,+EACAA,CACF,EACO,QAAQ,OAAOA,CAAK,CAC7B,CACF,EAX6B,wBAa7B,OACE,GAAAX,QAAA,cAACe,GAAoB,SAApB,CACC,MAAO,CACL,GAAGE,EACH,MAAOC,EACP,OAAQE,EACR,MAAOC,EACP,SAAUF,EACV,eAAgBI,EAChB,eAAgBC,EAChB,WAAApB,CACF,GAECD,CACH,CAEJ,EApGI,+BAyGSsB,GAAuBvB,EAAA,IAClB,GAAAF,QAAM,WAAWD,EAAiB,EADhB,wBAMvB2B,GAAyBxB,EAAA,IACpB,GAAAF,QAAM,WAAWe,EAAmB,EADhB,0BCnMtC,IAAAY,GAA2B,oCAC3BC,GAAsB,+BACtBC,GAA2C,iBAC3CC,GAAqB,wBCHd,IAAMC,GAAqBC,EAACC,GAC1BA,EAAc,IADW,sBCAlC,IAAAC,GAAsB,+BACtBC,GAAgB,yBAIT,IAAMC,GAAkBC,EAAA,CAC7BC,EACAC,EAAyCC,GAASA,IACjC,CACjB,GAAM,CAACC,EAAS,GAAGC,CAAI,EAAIJ,EAC3B,OAAOI,EACJ,IAAKC,MAAU,GAAAC,YAAU,GAAAC,SAAIJ,EAASE,CAAK,CAAC,CAAC,EAC7C,IAAI,CAACH,EAAWM,EAAOC,IACtBR,EAAQ,KAAK,OAAWC,EAAMM,EAAOC,CAAK,CAC5C,CACJ,EAV+B,mBCL/B,IAAAC,GAAsB,wBAQf,IAAMC,GAA2BC,EAAA,CACtCC,EAAW,GACXC,IACW,CACX,IAAMC,EAAmBC,GAAeH,CAAQ,EAChD,OAAIC,IAAS,WACJ,GAAAG,QAAU,SAASF,CAAgB,EAErC,GAAAE,QAAU,OAAOF,CAAgB,CAC1C,EATwC,4BCRjC,IAAMG,GAAkBC,EAAA,CAACC,EAAc,CAAC,IACzCA,GAAA,MAAAA,EAAQ,GACH,CACL,GAAGA,EACH,GAAI,mBAAmBA,EAAO,EAAE,CAClC,EAEKA,EAPsB,mBCmCxB,SAASC,GAAkBC,EAAYC,EAAoB,CAChE,OAAOD,EAAM,UACX,CAACE,EAAMC,IACLA,GAASH,EAAM,OAASC,EAAM,QAC9BA,EAAM,MACJ,CAACG,EAAWC,IAAeL,EAAMG,EAAQE,CAAU,IAAMD,CAC3D,CACJ,CACF,CARgBE,EAAAP,GAAA,kBA6BhB,SAASQ,GAAgBC,EAAwB,CAE/C,GAAIA,EAAS,CAAC,IAAM,OAAQ,CAE1B,IAAMC,EAAcD,EAAS,MAAM,CAAC,EAEpC,GAAIC,EAAY,CAAC,IAAM,OACrBA,EAAY,CAAC,EAAI,kBACRA,EAAY,CAAC,IAAM,WAC5BA,EAAY,CAAC,EAAI,eACRA,EAAY,CAAC,IAAM,MAC5BA,EAAY,CAAC,EAAI,iBACRA,EAAY,CAAC,IAAM,SAAU,CACtC,IAAMC,EAAY,CAChB,GAAGD,EAAY,CAAC,CAClB,EACA,cAAOC,EAAU,OACjB,OAAOA,EAAU,IAEV,CACLD,EAAY,CAAC,EACbA,EAAY,CAAC,EACbA,EAAY,CAAC,EAAE,OACfA,EAAY,CAAC,EAAE,IACfC,CACF,EAGF,OAAOD,EAGT,GAAID,EAAS,CAAC,IAAM,SAIdA,EAAS,CAAC,IAAM,OAClB,MAAO,CAAC,UAAWA,EAAS,CAAC,EAAGA,EAAS,CAAC,CAAC,EAI/C,GAAIA,EAAS,CAAC,IAAM,UAEdA,EAAS,SAAW,EACtB,MAAO,CACL,SACA,CACE,SAAUA,EAAS,CAAC,EACpB,OAAQA,EAAS,CAAC,EAClB,GAAGA,EAAS,CAAC,CACf,CACF,EAIJ,GAAIA,EAAS,CAAC,IAAM,OAAQ,CAC1B,GAAIG,GAAeH,EAAU,CAAC,OAAQ,OAAO,CAAC,IAAM,GAClD,MAAO,CAAC,UAAU,EAEpB,GAAIG,GAAeH,EAAU,CAAC,OAAQ,QAAQ,CAAC,IAAM,GACnD,MAAO,CAAC,WAAW,EAErB,GAAIG,GAAeH,EAAU,CAAC,OAAQ,UAAU,CAAC,IAAM,GACrD,MAAO,CAAC,iBAAiB,EAE3B,GAAIG,GAAeH,EAAU,CAAC,OAAQ,UAAU,CAAC,IAAM,GACrD,MAAO,CAAC,aAAa,EAEvB,GAAIG,GAAeH,EAAU,CAAC,OAAQ,gBAAgB,CAAC,IAAM,GAC3D,MAAO,CAAC,mBAAmB,EAE7B,GAAIG,GAAeH,EAAU,CAAC,OAAQ,OAAO,CAAC,IAAM,GAClD,MAAO,CAAC,mBAAoBA,EAAS,CAAC,CAAC,EAEzC,GAAIG,GAAeH,EAAU,CAAC,OAAQ,SAAS,CAAC,IAAM,GACpD,MAAO,CAAC,eAAe,EAEzB,GAAIG,GAAeH,EAAU,CAAC,OAAQ,aAAa,CAAC,IAAM,GACxD,MAAO,CAAC,gBAAgB,EAE1B,GAAIG,GAAeH,EAAU,CAAC,OAAQ,gBAAgB,CAAC,IAAM,GAC3D,MAAO,CAAC,mBAAmB,EAG/B,OAAOA,CACT,CApFSI,EAAAL,GAAA,mBAsFT,IAAMM,GAAN,KAAqB,CAGnB,YAAYL,EAAyB,CAAC,EAAG,CAFzC,cAAyB,CAAC,EAGxB,KAAK,SAAWA,CAClB,CAEA,KAAM,CACJ,OAAO,KAAK,QACd,CAEA,QAAS,CACP,OAAOD,GAAgB,KAAK,QAAQ,CACtC,CAEA,IAAIO,EAAkB,CACpB,OAAOA,EAAS,KAAK,OAAO,EAAI,KAAK,QACvC,CACF,EAlBMF,EAAAC,GAAA,kBAoBN,IAAME,GAAN,cAA+BF,EAAe,CAC5C,OAAOG,EAA0B,CAC/B,OAAO,IAAIH,GAAe,CAAC,GAAG,KAAK,SAAUG,CAAW,CAAC,CAC3D,CACF,EAJMJ,EAAAG,GAAA,oBAMN,IAAME,GAAN,cAAwCJ,EAAe,CACrD,GAAGK,EAAkB,CACnB,OAAO,IAAIH,GAAiB,CAC1B,GAAG,KAAK,SACRG,EAAU,OAAOA,CAAO,EAAI,MAC9B,CAAC,CACH,CACF,EAPMN,EAAAK,GAAA,6BASN,IAAME,GAAN,cAAyCN,EAAe,CACtD,OAAOO,EAAmB,CACxB,OAAO,IAAIL,GAAiB,CAC1B,GAAG,KAAK,SACR,GAAIK,EAAS,OAAS,CAACA,EAAS,IAAKC,GAAO,OAAOA,CAAE,CAAC,CAAC,EAAI,CAAC,CAC9D,CAAC,CACH,CACF,EAPMT,EAAAO,GAAA,8BASN,IAAMG,GAAN,cAAqCT,EAAe,CAIlD,OACEU,EAI2E,CAC3E,GAAIA,IAAe,MACjB,OAAO,IAAIN,GAA0B,CAAC,GAAG,KAAK,SAAUM,CAAU,CAAC,EAErE,GAAIA,IAAe,OACjB,OAAO,IAAIJ,GAA2B,CAAC,GAAG,KAAK,SAAUI,CAAU,CAAC,EAEtE,GAAI,CAAC,OAAQ,UAAU,EAAE,SAASA,CAAU,EAC1C,OAAO,IAAIR,GAAiB,CAAC,GAAG,KAAK,SAAUQ,CAAU,CAAC,EAE5D,MAAM,IAAI,MAAM,qBAAqB,CACvC,CACF,EArBMX,EAAAU,GAAA,0BAuBN,IAAME,GAAN,cAA6BX,EAAe,CAC1C,SAASY,EAAuB,CAC9B,OAAO,IAAIH,GAAuB,CAAC,GAAG,KAAK,SAAUG,CAAY,CAAC,CACpE,CAEA,SAASC,EAAmC,CAC1C,OAAO,IAAIX,GAAiB,CAC1B,GAAIW,IAAiB,SAAW,KAAK,SAAW,CAAC,KAAK,SAAS,CAAC,CAAC,EACjEA,CACF,CAAC,CACH,CACF,EAXMd,EAAAY,GAAA,kBAaN,IAAMG,GAAN,cAA6Bd,EAAe,CAC1C,OAAOU,EAA4B,CACjC,OAAO,IAAIR,GAAiB,CAAC,GAAG,KAAK,SAAUQ,CAAU,CAAC,CAC5D,CACF,EAJMX,EAAAe,GAAA,kBAMN,IAAMC,GAAN,cAAuCf,EAAe,CACpD,OAAOY,EAAsB,CAC3B,OAAO,IAAIV,GAAiB,CAAC,GAAG,KAAK,SAAUU,CAAY,CAAC,CAC9D,CACF,EAJMb,EAAAgB,GAAA,4BAMN,IAAMC,GAAN,cAA+BhB,EAAe,CAC5C,SAASY,EAAuB,CAC9B,OAAO,IAAIG,GAAyB,CAAC,GAAG,KAAK,SAAUH,CAAY,CAAC,CACtE,CACF,EAJMb,EAAAiB,GAAA,oBAMN,IAAMC,GAAN,cAAoCjB,EAAe,CACjD,OAAOU,EAA8C,CACnD,OAAO,IAAIR,GAAiB,CAAC,GAAG,KAAK,SAAUQ,CAAU,CAAC,CAC5D,CACF,EAJMX,EAAAkB,GAAA,yBAMN,IAAMC,GAAN,cAA8BlB,EAAe,CAC3C,SAASY,EAAuB,CAC9B,OAAO,IAAIK,GAAsB,CAAC,GAAG,KAAK,SAAUL,CAAY,CAAC,CACnE,CAEA,OAAOF,EAAwD,CAC7D,OAAO,IAAIR,GAAiB,CAAC,GAAG,KAAK,SAAUQ,CAAU,CAAC,CAC5D,CACF,EARMX,EAAAmB,GAAA,mBAUC,IAAMC,GAAN,cAAyBnB,EAAe,CAC7C,KAAKoB,EAAe,CAClB,OAAO,IAAIT,GAAe,CAAC,OAAQS,GAAQ,SAAS,CAAC,CACvD,CAEA,MAAO,CACL,OAAO,IAAIN,GAAe,CAAC,MAAM,CAAC,CACpC,CAEA,QAAS,CACP,OAAO,IAAIE,GAAiB,CAAC,QAAQ,CAAC,CACxC,CAEA,OAAQ,CACN,OAAO,IAAIE,GAAgB,CAAC,OAAO,CAAC,CACtC,CACF,EAhBanB,EAAAoB,GAAA,cAkBN,IAAME,GAAOtB,EAAA,IAAM,IAAIoB,GAAW,CAAC,CAAC,EAAvB,QCtRb,IAAMG,EAAoBC,EAAA,IAC5BC,IAEIA,EAAK,KAAMC,GAAQ,OAAOA,EAAQ,GAAW,EAHrB,qBCK1B,IAAMC,GAAYC,EAAA,CACvBC,EACAC,EACAC,EAIAC,IACe,CACf,IAAMC,EAAeH,GAAoB,UACnCI,EAAmB,CACvB,IAAK,CAACD,CAAY,EAClB,YAAa,CAACA,EAAcJ,GAAY,EAAE,EAC1C,KAAOM,GAAW,CAChB,GAAGD,EAAK,YACR,OACA,CACE,GAAGC,EACH,GAAIC,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAC5C,CACF,EACA,KAAOK,GACL,CACE,GAAGH,EAAK,YACR,UACAG,GAAA,YAAAA,EAAK,IAAI,QACT,CAAE,GAAID,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAAG,CACjD,EAAE,OAAQM,GAASA,IAAS,MAAS,EACvC,OAASC,GAAO,CACd,GAAGL,EAAK,YACR,SACAK,GAAA,YAAAA,EAAI,WACJ,CAAE,GAAIH,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAAG,CACjD,EACA,QAAUD,GACR,CAAC,UAAWF,EAAUE,EAAaC,CAAoB,EAAE,OACtDM,GAASA,IAAS,MACrB,CACJ,EACA,OAAOJ,CACT,EAxCyB,aA0CZM,GAAuBZ,EAACa,GAC5B,CACLZ,EACAC,EACAC,EAIAC,IACe,CACf,IAAMC,EAAeH,GAAoB,UAkDzC,MAhDyB,CACvB,IAAKI,GAAQ,EAAE,KAAKD,CAAY,EAAE,IAAIQ,CAAgB,EACtD,YAAaP,GAAQ,EAClB,KAAKJ,CAAgB,EACrB,SAASD,GAAY,EAAE,EACvB,IAAIY,CAAgB,EACvB,KAAON,GACLD,GAAQ,EACL,KAAKJ,CAAgB,EACrB,SAASD,GAAY,EAAE,EACvB,OAAO,MAAM,EACb,OAAO,CACN,GAAGM,EACH,GAAIC,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAC5C,CAAC,EACA,IAAIS,CAAgB,EACzB,KAAOJ,GACLH,GAAQ,EACL,KAAKJ,CAAgB,EACrB,SAASD,GAAY,EAAE,EACvB,OAAO,MAAM,EACb,IAAI,GAAIQ,GAAO,CAAC,CAAE,EAClB,OAAO,CACN,GAAID,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAC5C,CAAC,EACA,IAAIS,CAAgB,EACzB,OAASF,GACPL,GAAQ,EACL,KAAKJ,CAAgB,EACrB,SAASD,GAAY,EAAE,EACvB,OAAO,KAAK,EACZ,GAAGU,GAAM,EAAE,EACX,OAAO,CACN,GAAIH,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAC5C,CAAC,EACA,IAAIS,CAAgB,EACzB,QAAUV,GACR,CACE,GAAGG,GAAQ,EACR,MAAM,EACN,SAASL,CAAQ,EACjB,OAAO,MAAM,EACb,OAAOE,CAAI,EACX,IAAIU,CAAgB,EACvBT,CACF,EAAE,OAAQM,GAASA,IAAS,MAAS,CACzC,CAGF,EA7DkC,wBCnD7B,IAAMI,GAAgBC,EAAA,CAC3BC,EACAC,IAEI,CAACD,GAAe,CAACC,EACZ,GAEF,CAAC,CAACD,EAAY,KAAME,GAAMA,IAAMD,CAAM,EAPlB,iBCGtB,IAAME,GAAcC,EAACC,GACnBA,EAAQ,WAAW,GAAG,EADJ,eCApB,IAAMC,GAAkBC,EAACC,GACbA,EAAK,MAAM,GAAG,EAAE,OAAQC,GAAYA,IAAY,EAAE,EADtC,mBCExB,IAAMC,GAAsBC,EAAA,CAACC,EAAeC,IAA0B,CAC3E,IAAMC,EAAgBC,GAAgBH,CAAK,EACrCI,EAAwBD,GAAgBF,CAAa,EAE3D,OAAOC,EAAc,SAAWE,EAAsB,MACxD,EALmC,uBCF5B,IAAMC,GAA+BC,EAACC,GACpCA,EAAM,QAAQ,WAAY,EAAE,EADO,gCCSrC,IAAMC,GAAkBC,EAAA,CAACC,EAAeC,IAA0B,CACvE,IAAMC,EAAWC,GAA6BH,CAAK,EAC7CI,EAAmBD,GAA6BF,CAAa,EAGnE,GAAI,CAACI,GAAoBH,EAAUE,CAAgB,EACjD,MAAO,GAGT,IAAME,EAAgBC,GAAgBL,CAAQ,EAG9C,OAF8BK,GAAgBH,CAAgB,EAEjC,MAAM,CAACI,EAASC,IACpCC,GAAYF,CAAO,GAAKA,IAAYF,EAAcG,CAAK,CAC/D,CACH,EAf+B,mBCJxB,IAAME,GAAuBC,EAAA,CAClCC,EACAC,EACAC,IACW,CACX,IAAMC,EAAoBC,GAA6BF,GAAgB,EAAE,EAErEG,EAAO,GAAGF,IACZA,EAAoB,IAAM,KACzBH,IAEH,OAAIC,IAAW,OACbI,EAAO,GAAGA,IACDJ,IAAW,SACpBI,EAAO,GAAGA,WACDJ,IAAW,OACpBI,EAAO,GAAGA,aACDJ,IAAW,OACpBI,EAAO,GAAGA,aACDJ,IAAW,UACpBI,EAAO,GAAGA,eAGL,IAAIA,EAAK,QAAQ,MAAO,EAAE,GACnC,EAxBoC,wBCD7B,IAAMC,GAAoBC,EAAA,CAC/BC,EACAC,IAC8B,CAVhC,IAAAC,EAAAC,EAWE,IAAMC,EAAaC,GACjBH,EAAAF,EAAS,OAAT,YAAAE,EAAe,QACfC,EAAAH,EAAS,UAAT,YAAAG,EAAkB,OAClBH,EAAS,UACX,EAEA,OAAKI,EAIkBH,EAAU,KAC9BD,IAAcA,EAAS,YAAcA,EAAS,QAAUI,CAC3D,GAMyB,CAAE,KAAMA,CAAW,EAX1C,MAYJ,EAvBiC,qBCC1B,IAAME,GAA6BC,EAAA,CACxCC,EACAC,EAIAC,IACuB,CACvB,IAAMC,EAA2B,CAAC,EAE9BC,EAASC,GAAkBL,EAAUC,CAAS,EAElD,KAAOG,GACLD,EAAQ,KAAKC,CAAM,EACnBA,EAASC,GAAkBD,EAAQH,CAAS,EAG9C,GAAIE,EAAQ,SAAW,EAIvB,MAAO,IAAIA,EACR,QAAQ,EACR,IAAKC,GAAW,CA/BrB,IAAAE,EAgCM,IAAMC,EAAIL,IAASI,EAAAF,EAAO,UAAP,YAAAE,EAAgB,QAASF,EAAO,KAAOA,EAAO,KACjE,OAAOI,GAA6BD,CAAC,CACvC,CAAC,EACA,KAAK,GAAG,GACb,EA5B0C,8BCUnC,IAAME,GAA8BC,EAAA,CACzCC,EACAC,EAIAC,IACG,CACH,IAAMC,EAAiC,CAAC,EAElCC,EAAuB,CAAC,OAAQ,OAAQ,OAAQ,SAAU,OAAO,EAEjEC,EAAeC,GAA2BN,EAAUC,EAAWC,CAAM,EAE3E,OAAAE,EAAW,QAASG,GAAW,CAhCjC,IAAAC,EAAAC,EAiCI,IAAMC,EACJR,GAAUK,IAAW,QAAUP,EAAS,OAASA,EAASO,CAAM,EAE9DI,EAEA,OAAOD,GAAS,YAAcR,EAEhCS,EAAQC,GACNV,IACIM,EAAAR,EAAS,OAAT,YAAAQ,EAAe,UAASC,EAAAT,EAAS,UAAT,YAAAS,EAAkB,QAAST,EAAS,KAC5DA,EAAS,KACbO,EACAL,EAASG,EAAe,MAC1B,EACS,OAAOK,GAAS,SAEzBC,EAAQD,EACC,OAAOA,GAAS,WAEzBC,EAAQD,EAAK,MAGXC,GACFR,EAAQ,KAAK,CACX,OAAAI,EACA,SAAAP,EACA,MAAO,IAAIW,EAAM,QAAQ,MAAO,EAAE,GACpC,CAAC,CAEL,CAAC,EAEMR,CACT,EA/C2C,+BCRpC,IAAMU,GAAmBC,EAC9BC,GACoC,CAZtC,IAAAC,EAgBE,GAAID,EAAO,SAAW,EACpB,OAIF,GAAIA,EAAO,SAAW,EACpB,OAAOA,EAAO,CAAC,EAKjB,IAAME,EAAkBF,EAAO,IAAKG,IAAW,CAC7C,GAAGA,EACH,SAAUC,GAAgBC,GAA6BF,EAAM,KAAK,CAAC,CACrE,EAAE,EAGIG,IAAgBL,EAAAC,EAAgB,CAAC,IAAjB,YAAAD,EAAoB,SAAS,SAAU,EAEzDM,EAA0D,CAC5D,GAAGL,CACL,EAGA,QAAS,EAAI,EAAG,EAAII,EAAe,IAAK,CACtC,IAAME,EAAwBD,EAAe,OAC1CJ,GAAU,CAACM,GAAYN,EAAM,SAAS,CAAC,CAAC,CAC3C,EAEA,GAAIK,EAAsB,SAAW,EAIrC,IAAIA,EAAsB,SAAW,EAAG,CAEtCD,EAAiBC,EACjB,MAIFD,EAAiBC,GAGnB,OAAOD,EAAe,CAAC,CACzB,EAlDgC,oBCEzB,IAAMG,GAAyBC,EAAA,CACpCC,EACAC,IAMG,CAKH,IAAMC,EAJkBD,EAAU,QAASE,GAClCC,GAA4BD,EAAUF,CAAS,CACvD,EAEgC,OAAQI,GAChCC,GAAgBN,EAAOK,EAAY,KAAK,CAChD,EAEKE,EAAeC,GAAiBN,CAAQ,EAE9C,MAAO,CACL,MAAO,CAAC,CAACK,EACT,SAAUA,GAAA,YAAAA,EAAc,SACxB,OAAQA,GAAA,YAAAA,EAAc,OACtB,aAAcA,GAAA,YAAAA,EAAc,KAC9B,CACF,EAzBsC,0BCJ/B,IAAME,GAAiBC,EAAA,CAC5BC,EACAC,IACuB,CAXzB,IAAAC,EAYE,IAAIC,EAEEC,EAAeC,GACnBL,EACAC,EACA,EACF,EAEA,GAAIG,EAAc,CAChB,IAAME,EAAOC,EAAkBP,EAAK,KAAMA,EAAK,OAAO,EACtDG,EAAQ,GAAGC,MAAgBE,GAAA,YAAAA,EAAM,QAASN,EAAK,YAE/CG,IAAQD,EAAAF,EAAK,UAAL,YAAAE,EAAc,QAASF,EAAK,KAGtC,MAAO,IAAIG,EAAM,QAAQ,MAAO,EAAE,GACpC,EApB8B,kBCGvB,IAAMK,GAAiBC,EAC5BC,GAC8B,CAbhC,IAAAC,EAcE,IAAMC,EAAO,CAAC,EACRC,EAA+C,CAAC,EAChDC,EAA8C,CAAC,EACjDC,EACAC,EAEJ,QAASC,EAAI,EAAGA,EAAIP,EAAU,OAAQO,IAAK,CACzCF,EAASL,EAAUO,CAAC,EAEpB,IAAMC,EACJH,EAAO,SACPJ,EAAAQ,EAAkBJ,GAAA,YAAAA,EAAQ,KAAMA,EAAO,OAAO,IAA9C,YAAAJ,EAAiD,QACjD,GAEFE,EAAqBK,CAAK,EAAIH,EAC9BF,EAAqBK,CAAK,EAAE,SAAc,CAAC,EAE3CJ,EAAoBC,EAAO,IAAI,EAAIA,EACnCD,EAAoBC,EAAO,IAAI,EAAE,SAAc,CAAC,EAGlD,QAAWK,KAAQP,EACb,OAAO,OAAOA,EAAsBO,CAAI,IAC1CJ,EAAQH,EAAqBO,CAAI,EAE7BJ,EAAM,YAAcF,EAAoBE,EAAM,UAAU,EAC1DF,EAAoBE,EAAM,UAAU,EAAE,SAAY,KAAKA,CAAK,EAE5DJ,EAAK,KAAKI,CAAK,GAKrB,OAAOJ,CACT,EArC8B,kBCXvB,IAAMS,GAAiBC,EAACC,IAC7BA,EAAOA,EAAK,QAAQ,wBAAyB,OAAO,EACpDA,EAAOA,EAAK,QAAQ,kCAAmC,SAAS,EAEhEA,EAAOA,EACJ,YAAY,EACZ,QAAQ,SAAU,GAAG,EACrB,QAAQ,UAAW,GAAG,EACtB,KAAK,EACRA,EAAOA,EAAK,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAK,MAAM,CAAC,EAE3CA,GAXqB,kBCA9B,IAAAC,GAAkB,oBAElBC,GAAsB,wBCFtB,IAAAC,GAAkB,oBAIX,IAAMC,GAAuCC,EAAA,CAAC,CAAE,SAAAC,CAAS,IACvD,GAAAC,QAAA,cAAC,WAAKD,CAAS,EAD4B,iBDWpD,IAAME,GAA+C,CACnD,KACE,GAAAC,QAAA,cAAC,OACC,MAAO,GACP,OAAQ,GACR,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,cAAY,cACZ,GAAG,uBAEH,GAAAA,QAAA,cAAC,QACC,SAAS,UACT,SAAS,UACT,EAAE,qcACF,KAAK,eACP,EACA,GAAAA,QAAA,cAAC,QACC,EAAE,oHACF,KAAK,eACP,CACF,EAEF,KAAM,gBACR,EAEaC,GAA8C,CACzD,aAAc,cACd,iBAAkB,GAClB,gBAAiB,IACjB,uBAAwB,GACxB,SAAU,MACV,SAAU,CACR,YAAa,OACb,WAAY,OACZ,UAAW,MACb,EACA,SAAU,CACR,QAAS,GACT,SAAU,GACZ,EACA,iBAAkB,CAChB,SAAUC,GACV,OAAQ,GAAAC,QAAU,OAClB,SAAU,GAAAA,QAAU,QACtB,EACA,4BAA6B,GAC7B,MAAOJ,EACT,EAEaK,GAAgB,GAAAJ,QAAM,cAA8B,CAC/D,aAAc,GACd,aAAc,cACd,uBAAwB,GACxB,iBAAkB,GAClB,gBAAiB,IACjB,MAAO,OACP,MAAO,OACP,OAAQ,OACR,OAAQ,OACR,OAAQK,GACR,cAAe,OACf,SAAU,MACV,YAAa,OACb,QAASJ,EACX,CAAC,EAEYK,GAA0DC,EAAA,CAAC,CACtE,aAAAC,EACA,aAAAC,EACA,uBAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,cAAAC,EACA,MAAAC,EACA,OAAAC,EAASX,GACT,OAAAY,EACA,MAAAC,EACA,OAAAC,EACA,cAAAC,EACA,UAAAC,EAAYA,GACZ,SAAAC,EACA,SAAAC,EAAW,MACX,YAAAC,EACA,QAAAC,CACF,IAEI,GAAAzB,QAAA,cAACI,GAAc,SAAd,CACC,MAAO,CACL,cAAe,GACf,aAAAI,EACA,aAAAC,EACA,uBAAAC,EACA,iBAAAC,EACA,MAAAI,EACA,gBAAAH,EACA,OAAAI,EACA,OAAAC,EACA,MAAAC,EACA,OAAAC,EACA,cAAAC,EACA,cAAAN,EACA,UAAAO,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,QAAAC,CACF,GAECZ,CACH,EA5CmE,yBElDhE,IAAMa,GAAsBC,EAAA,CAAC,CAClC,QAAAC,EACA,iBAAAC,EACA,SAAAC,EACA,aAAAC,EACA,uBAAAC,EACA,wBAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,uBAAAC,CACF,EAA8B,CAAC,IAAuC,CA1CtE,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA2CE,IAAMC,EAA6C,CACjD,WAAYrB,GAAA,YAAAA,EAAS,WACrB,cACEA,GAAA,YAAAA,EAAS,eACTG,GACAmB,GAAqB,aACvB,iBACEtB,GAAA,YAAAA,EAAS,kBACTO,GACAe,GAAqB,gBACvB,kBACEtB,GAAA,YAAAA,EAAS,mBACTM,GACAgB,GAAqB,iBACvB,wBACEtB,GAAA,YAAAA,EAAS,yBACTQ,GACAc,GAAqB,uBACvB,UAAUtB,GAAA,YAAAA,EAAS,WAAYE,GAAYoB,GAAqB,SAChE,SAAU,CACR,cACEb,EAAAT,GAAA,YAAAA,EAAS,WAAT,YAAAS,EAAmB,cACnBa,GAAqB,SAAS,YAChC,aACEZ,EAAAV,GAAA,YAAAA,EAAS,WAAT,YAAAU,EAAmB,aACnBY,GAAqB,SAAS,WAChC,YACEX,EAAAX,GAAA,YAAAA,EAAS,WAAT,YAAAW,EAAmB,YAAaW,GAAqB,SAAS,SAClE,EACA,UAAUtB,GAAA,YAAAA,EAAS,WAAYsB,GAAqB,SACpD,iBAAkB,CAChB,WACEV,EAAAZ,GAAA,YAAAA,EAAS,mBAAT,YAAAY,EAA2B,WAC3BU,GAAqB,iBAAiB,SACxC,SACET,EAAAb,GAAA,YAAAA,EAAS,mBAAT,YAAAa,EAA2B,SAC3BS,GAAqB,iBAAiB,OACxC,WACER,EAAAd,GAAA,YAAAA,EAAS,mBAAT,YAAAc,EAA2B,WAC3BQ,GAAqB,iBAAiB,QAC1C,EACA,6BACEtB,GAAA,YAAAA,EAAS,8BACTsB,GAAqB,4BACvB,UAAWtB,GAAA,YAAAA,EAAS,UACpB,gBAAiBA,GAAA,YAAAA,EAAS,gBAC1B,MAAO,CACL,KACE,QAAOe,EAAAf,GAAA,YAAAA,EAAS,QAAT,YAAAe,EAAgB,MAAS,IAC5BO,GAAqB,MAAM,MAC3BN,EAAAhB,GAAA,YAAAA,EAAS,QAAT,YAAAgB,EAAgB,KACtB,KACE,QAAOC,EAAAjB,GAAA,YAAAA,EAAS,QAAT,YAAAiB,EAAgB,MAAS,IAC5BK,GAAqB,MAAM,MAC3BJ,EAAAlB,GAAA,YAAAA,EAAS,QAAT,YAAAkB,EAAgB,IACxB,CACF,EAEMK,GACJvB,GAAA,YAAAA,EAAS,mBAAoBC,GAAoB,GAE7CuB,EAAyB,CAC7B,eACEL,EAAAnB,GAAA,YAAAA,EAAS,aAAT,YAAAmB,EAAqB,eAAgBf,GAA0B,CAAC,EAClE,gBACEgB,EAAApB,GAAA,YAAAA,EAAS,aAAT,YAAAoB,EAAqB,gBAAiBf,GAA2B,CAAC,CACtE,EAEA,MAAO,CACL,oBAAAgB,EACA,4BAAAE,EACA,uBAAAC,CACF,CACF,EApFmC,uBCtB5B,IAAMC,GAAeC,EAAA,CAAC,CAC3B,kBAAAC,EACA,OAAAC,EACA,gBAAAC,CACF,IAAyC,CACvC,GAAIF,GAAqBA,IAAsB,GAC7C,OAAOA,EAGT,OAAQC,EAAQ,CACd,IAAK,QACH,OAAOC,EAAgB,WACzB,IAAK,SACH,OAAOA,EAAgB,YACzB,IAAK,OACH,OAAOA,EAAgB,UACzB,QACE,MAAO,EACX,CACF,EAnB4B,gBCDrB,IAAMC,GAAqBC,EAAA,MAMhCC,EACAC,EACAC,IACoD,CACpD,IAAMC,EAAU,CAAC,EAEjB,OAAW,CAACC,EAAOC,CAAO,IAAKL,EAAS,QAAQ,EAC9C,GAAI,CACF,IAAMM,EAAS,MAAMD,EAAQ,EAE7BF,EAAQ,KAAKF,EAAcK,EAAQF,CAAK,CAAC,CAC3C,OAASG,EAAP,CACAJ,EAAQ,KAAKD,EAAaK,EAAkBH,CAAK,CAAC,CACpD,CAEF,OAAOD,CACT,EAtBkC,sBCD3B,IAAMK,GAAeC,EAAA,CAC1BC,EACAC,EAA6B,CAAC,EAI9BC,EAAS,KACqB,CAC9B,GAAI,CAACF,EACH,OAGF,GAAIE,EAAQ,CACV,IAAMC,EAAkBF,EAAU,KAC/BG,GACCC,GAA6BD,EAAE,OAAS,EAAE,IAC1CC,GAA6BL,CAAU,CAC3C,EAMA,OAJiBG,GAEbF,EAAU,KAAMG,GAAMA,EAAE,OAASJ,CAAU,EAKjD,IAAIM,EAAWL,EAAU,KAAMG,GAAMA,EAAE,aAAeJ,CAAU,EAChE,OAAKM,IACHA,EAAWL,EAAU,KAAMG,GAAMA,EAAE,OAASJ,CAAU,GAGjDM,CACT,EAhC4B,gBCDrB,IAAMC,GAAmBC,EAAA,CAC9BC,EACAC,EACAC,IACG,CACH,GAAID,EACF,OAAOA,EAMT,IAAME,EAAWC,GAAaJ,EAAcE,CAAS,EAE/CG,EAAOC,EAAkBH,GAAA,YAAAA,EAAU,KAAMA,GAAA,YAAAA,EAAU,OAAO,EAEhE,OAAIE,GAAA,MAAAA,EAAM,iBACDA,EAAK,iBAGP,SACT,EArBgC,oBCPzB,IAAME,GAAiBC,EAAA,MAC5BC,IAEO,CACL,MAAO,MAAM,QAAQ,IAAIA,CAAQ,GAAG,IAAKC,GAAQA,EAAI,IAAI,CAC3D,GAL4B,kBCEvB,IAAMC,GAAmBC,EAACC,GAA8B,CAC7D,GAAM,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIF,EAG/B,GAAIE,GAAA,MAAAA,EAAQ,KACV,OAAOA,EAAO,KAGhB,IAAMC,GAAUF,GAAA,YAAAA,EAAY,UAAW,EAEjCG,GAAWH,GAAA,YAAAA,EAAY,WAAY,GACnCI,EAAa,KAAK,MAAML,EAAS,OAAS,GAAKI,CAAQ,EAE7D,OAAOD,EAAUE,EAAa,OAAOF,CAAO,EAAI,EAAI,MACtD,EAdgC,oBAgBnBG,GAAuBP,EAACC,GAA8B,CACjE,GAAM,CAAE,WAAAC,EAAY,OAAAC,CAAO,EAAIF,EAG/B,GAAIE,GAAA,MAAAA,EAAQ,KACV,OAAOA,EAAO,KAGhB,IAAMC,GAAUF,GAAA,YAAAA,EAAY,UAAW,EAEvC,OAAOE,IAAY,EAAI,OAAYA,EAAU,CAC/C,EAXoC,wBCN7B,IAAMI,GAA0BC,EAACC,GAA+B,CACrE,IAAMC,EAA8B,CAAC,EAErC,OAAAD,EAAU,QAASE,GAAa,CAflC,IAAAC,EAAAC,EAgBIH,EAAW,KAAK,CACd,GAAGC,EACH,QAAOC,EAAAD,EAAS,OAAT,YAAAC,EAAe,UAASC,EAAAF,EAAS,UAAT,YAAAE,EAAkB,OACjD,MAAOC,GAAeH,EAAUF,CAAS,EACzC,UAAW,CAAC,CAACE,EAAS,OACtB,QAAS,CAAC,CAACA,EAAS,KACpB,QAAS,CAAC,CAACA,EAAS,KACpB,UAAWA,EAAS,SACtB,CAAC,CACH,CAAC,EAEMD,CACT,EAhBuC,2BCJhC,IAAMK,GAAkBC,EAACC,GACbC,GAAgBC,GAA6BF,CAAK,CAAC,EAEpD,QAASG,GACnBC,GAAYD,CAAC,EACR,CAACA,EAAE,MAAM,CAAC,CAAC,EAGb,CAAC,CACT,EAT4B,mBCFxB,IAAME,GAAqBC,EAAA,CAGhCC,EACAC,EAAgC,CAAC,IAE1BD,EAAY,OACjB,CAACE,EAAKC,IAAQ,CACZ,IAAMC,EAAQH,EAAKE,CAAa,EAChC,OAAI,OAAOC,EAAU,MACnBF,EAAIC,CAAG,EAAIC,GAENF,CACT,EACA,CAAC,CACH,EAfgC,sBCM3B,IAAMG,GAAeC,EAAA,CAC1BC,EACAC,EAA0B,CAAC,EAC3BC,EAAwB,CAAC,EACzBC,EAAgC,CAAC,IACtB,CAEX,IAAMC,EAAcC,GAAgBL,CAAe,EAE7CM,EAAsBC,GAAmBH,EAAa,CAC1D,GAAGH,EACH,GAAI,OAAOC,GAAA,YAAAA,EAAQ,IAAO,IAAc,CAAE,GAAIA,EAAO,EAAG,EAAI,CAAC,EAC7D,GAAI,OAAOA,GAAA,YAAAA,EAAQ,QAAW,IAAc,CAAE,OAAQA,EAAO,MAAO,EAAI,CAAC,EACzE,GAAI,OAAOA,GAAA,YAAAA,EAAQ,UAAa,IAC5B,CAAE,SAAUA,EAAO,QAAS,EAC5B,CAAC,EACL,GAAGA,GAAA,YAAAA,EAAQ,OACX,GAAGC,CACL,CAAC,EAED,OAAOH,EAAgB,QAAQ,aAAc,CAACQ,EAAOC,IAAQ,CAC3D,IAAMC,EAAaJ,EAAoBG,CAAG,EAC1C,OAAI,OAAOC,EAAe,IACjB,GAAGA,IAELF,CACT,CAAC,CACH,EA3B4B,gBCLrB,IAAMG,GAAwBC,EAAA,IAAM,CACzC,IAAMC,EAAqBC,GAAqB,EAC1CC,EAAeC,GAAuB,EAE5C,OAAID,EAAa,WACR,CAAE,SAAU,GAAO,GAAGA,CAAa,EAGxCF,EAAmB,WAId,CACL,SAAU,GACV,GAAGA,EACH,MAAOA,EAAmB,UAC1B,QAASA,EAAmB,WAC5B,YAAaA,EAAmB,eAClC,EAGK,IACT,EAtBqC,yBCE9B,IAAMI,GAAyBC,EAAA,CAAC,CACrC,cAAAC,EACA,WAAAC,EACA,iBAAAC,CACF,EAAiC,CAAC,IAA4B,CAC5D,IAAMC,EAAsBH,IAAkB,GAAQ,MAAQ,SACxDI,GAAOH,GAAA,YAAAA,EAAY,OAAQE,EAE3BE,EACJC,EAAkBL,GAAA,YAAAA,EAAY,QAASC,GAAA,YAAAA,EAAkB,OAAO,GAAK,EAEjEK,EACJD,EAAkBL,GAAA,YAAAA,EAAY,SAAUC,GAAA,YAAAA,EAAkB,QAAQ,GAAK,GAEzE,MAAO,CACL,QAAAG,EACA,SAAAE,EACA,KAAAH,CACF,CACF,EAnBsC,0BCTtC,IAAAI,GAAoC,iBAE7B,IAAMC,GAAgBC,EAACC,GAAkB,CAC9C,GAAM,CAACC,EAASC,CAAU,KAAI,aAAS,EAAK,EAE5C,uBAAU,IAAM,CACd,IAAMC,EAAQ,OAAO,WAAWH,CAAK,EACjCG,EAAM,UAAYF,GACpBC,EAAWC,EAAM,OAAO,EAE1B,IAAMC,EAAWL,EAAA,IAAMG,EAAWC,EAAM,OAAO,EAA9B,YACjB,cAAO,iBAAiB,SAAUC,CAAQ,EACnC,IAAM,OAAO,oBAAoB,SAAUA,CAAQ,CAC5D,EAAG,CAACH,EAASD,CAAK,CAAC,EAEZC,CACT,EAd6B,iBCAtB,IAAMI,GAAgBC,EAAA,CAC3BC,EACAC,EACAC,EACAC,IACG,CACH,IAAMC,EAAaD,EACfH,EAAUC,EAAKE,EAASD,CAAc,EACtCF,EAAUC,EAAKC,CAAc,EAE3BG,EAAWH,GAAkBD,EAEnC,OAAIG,IAAeH,GAAO,OAAOG,EAAe,IACvCC,EAGFD,CACT,EAjB6B,iBCOtB,SAASE,GACdC,EACAC,EACAC,EACAC,EACAC,EACA,CAfF,IAAAC,EAgBE,IAAMC,EAAsB,CAC1B,OAAQ,cACR,MAAO,IAAIH,GAAM,YACjB,KAAM,IAAIA,GAAM,WAChB,KAAM,IAAIA,GAAM,WAChB,KAAM,EACR,EAEMI,GAAaN,GAAA,YAAAA,EAAU,cAAcA,GAAA,YAAAA,EAAU,MAE/CO,GACJP,GAAA,YAAAA,EAAU,UACVI,EAAAJ,GAAA,YAAAA,EAAU,OAAV,YAAAI,EAAgB,QAChBI,GACEF,EACAL,IAAW,OAAS,SAAW,UACjC,EAEIQ,EAA2BN,GAAgBI,EAE3CG,EAAeC,GACnBZ,EACA,wBACA,QACF,EACMa,EAASD,GAAcZ,EAAW,uBAAwB,WAAW,EACvEc,EAAqBH,EAEzB,OAAIT,GAAUK,IACZO,EAAqBF,GACnBZ,EACA,iBAAiBO,KAAcL,IAC/B,GACEI,EAAoBJ,CAA0C,GAAK,KAClEQ,IAA2BG,IAC9B,CAAE,GAAAV,CAAG,CACP,GAGKW,CACT,CA/CgBC,EAAAhB,GAAA,gCCThB,IAAAiB,GAA2B,iBAqBpB,IAAMC,GAAuCC,EAAA,CAClDC,EACAC,IACG,CACH,GAAM,CAAE,aAAAC,EAAc,gBAAAC,CAAgB,KAAI,eAAWC,EAAa,EAElE,MAAO,CACL,aAAcJ,GAAyBE,EACvC,gBAAiBD,GAA4BE,CAC/C,CACF,EAVoD,mBCrBpD,IAAAE,GAA2B,iBCA3B,IAAAC,GAAwD,oBAIjD,IAAMC,GAAqB,GAAAC,QAAM,cAAmC,CAAC,CAAC,EAEhEC,GAA0DC,EAAA,CAAC,CACtE,SAAAC,CACF,IAAM,CACJ,GAAM,CAACC,EAAUC,CAAW,KAAI,aAAS,EAAK,EAE9C,OACE,GAAAL,QAAA,cAACD,GAAmB,SAAnB,CAA4B,MAAO,CAAE,SAAAK,EAAU,YAAAC,CAAY,GACzDF,CACH,CAEJ,EAVuE,8BDahE,IAAMG,GAA6CC,EAAA,IAAM,CAC9D,GAAM,CAAE,uBAAAC,CAAuB,KAAI,eAAWC,EAAa,EAErD,CAAE,SAAAC,EAAU,YAAAC,CAAY,KAAI,eAAWC,EAAkB,EAE/D,MAAO,CACL,uBAAAJ,EACA,SAAU,EAAQE,EAClB,YAAaC,IAAgB,IAAG,GAClC,CACF,EAV0D,sBEnB1D,IAAAE,GAA2B,iBAepB,IAAMC,GAA+CC,EAAA,IAAM,CAChE,GAAM,CAAE,iBAAAC,CAAiB,KAAI,eAAWC,EAAa,EAErD,MAAO,CAAE,iBAAAD,CAAiB,CAC5B,EAJ4D,uBCf5D,IAAAE,GAA2B,iBAYpB,IAAMC,GAAmDC,EAAA,IAAM,CACpE,GAAM,CAAE,MAAAC,CAAM,KAAI,eAAWC,EAAa,EAE1C,OAAOD,CACT,EAJgE,YCZhE,IAAAE,GAA2B,iBAIpB,IAAMC,GAAmBC,EAAA,IAAM,CACpC,GAAM,CACJ,OAAAC,EACA,OAAAC,EACA,OAAAC,EACA,cAAAC,EACA,MAAAC,EACA,MAAAC,EACA,aAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,cAAAC,CACF,KAAI,eAAWC,EAAa,EAE5B,MAAO,CACL,cAAAD,EACA,OAAAf,EACA,OAAAC,EACA,OAAAC,EACA,cAAAC,EACA,MAAAC,EACA,MAAAC,EACA,aAAAC,EACA,aAAAC,EACA,iBAAAC,EACA,gBAAAC,EACA,uBAAAC,EACA,cAAAC,EACA,UAAAC,EACA,SAAAC,EACA,QAAAC,CACF,CACF,EAtCgC,oBCEzB,IAAMG,GAAsBC,EAAA,IAAM,CACvC,GAAM,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EAUrB,OARwBF,EAAA,CAACG,EAAO,GAAIC,IAAwC,CAC1E,IAAMC,EAAeJ,EAAiB,SAASE,CAAI,EACnD,OAAIC,IAAS,WACJH,EAAiB,SAASI,CAAY,EAExCJ,EAAiB,OAAOI,CAAY,CAC7C,EANwB,kBAS1B,EAdmC,uBCNnC,IAAMC,GAAWC,EAACC,GAAa,OAAOA,GAAQ,UAAYA,IAAQ,KAAjD,YACXC,GAAUF,EAACC,GAAa,MAAM,QAAQA,CAAG,EAA/B,WAEHE,GAAoBH,EAAA,CAACC,EAAUG,EAAS,KAC9CL,GAASE,CAAG,EAMV,OAAO,KAAKA,CAAG,EAAE,OACtB,CAACI,EAAKC,IAAQ,CACZ,IAAMC,EAAgBH,EAAO,OAAS,GAAGA,KAAY,GAErD,OAAIL,GAASE,EAAIK,CAAG,CAAC,GAAK,OAAO,KAAKL,EAAIK,CAAG,CAAC,EAAE,SAC1CJ,GAAQD,EAAIK,CAAG,CAAC,GAAKL,EAAIK,CAAG,EAAE,OAChCL,EAAIK,CAAG,EAAE,QAAQ,CAACE,EAAiBC,IAAkB,CACnD,OAAO,OACLJ,EACAF,GAAkBK,EAAM,GAAGD,EAAgBD,KAAOG,GAAO,CAC3D,CACF,CAAC,EAED,OAAO,OAAOJ,EAAKF,GAAkBF,EAAIK,CAAG,EAAGC,EAAgBD,CAAG,CAAC,GAGrED,EAAIE,EAAgBD,CAAG,EAAIL,EAAIK,CAAG,EAI7BD,CACT,EACA,CAAC,CACH,EA5BS,CACL,CAACD,CAAM,EAAGH,CACZ,EAJ6B,qBCH1B,IAAMS,GAAsBC,EAACC,GAC3BA,EACJ,MAAM,GAAG,EACT,IAAKC,GAAW,OAAO,MAAM,OAAOA,CAAI,CAAC,EAAmBA,EAAf,OAAOA,CAAI,CAAS,EAHnC,uBCA5B,IAAMC,GAAoBC,EAAA,CAC/BC,EACAC,EACAC,IACG,CACH,GAAI,OAAO,OAAW,IACpB,OAGF,IAAMC,EAAO,IAAI,KAAK,CAACF,CAAO,EAAG,CAAE,KAAAC,CAAK,CAAC,EAEnCE,EAAO,SAAS,cAAc,GAAG,EACvCA,EAAK,aAAa,aAAc,QAAQ,EACxCA,EAAK,SAAWJ,EAChB,IAAMK,EAAU,IAAI,gBAAgBF,CAAI,EACxCC,EAAK,KAAOC,EACZ,SAAS,KAAK,YAAYD,CAAI,EAC9BA,EAAK,MAAM,EACX,SAAS,KAAK,YAAYA,CAAI,EAE9B,WAAW,IAAM,CACf,IAAI,gBAAgBC,CAAO,CAC7B,CAAC,CACH,EAvBiC,qBCO1B,IAAMC,GAAiBC,EAACC,GAAiB,CAC9C,WAAWA,EAAI,CAAC,CAClB,EAF8B,kBCP9B,IAAAC,GAAqB,8BAuBd,IAAMC,GAAgBC,EAAA,CAC3BC,EACAC,EAAO,IACPC,IACyB,CACzB,IAAIC,EAAiC,CAAC,EAEhCC,EAAiBL,EAAA,IAAM,CAC3BI,EAAU,QAASE,GAAI,CA/B3B,IAAAC,EA+B8B,OAAAA,EAAAD,EAAG,SAAH,YAAAC,EAAA,KAAAD,EAAYH,GAAa,EACnDC,EAAY,CAAC,CACf,EAHuB,kBAKjBI,KAAgB,GAAAC,SAAS,IAAIC,IAAwB,CACzD,GAAM,CAAE,QAAAC,EAAS,OAAAC,CAAO,EAAIR,EAAU,IAAI,GAAK,CAAC,EAChD,QAAQ,QAAQH,EAAK,GAAGS,CAAI,CAAC,EAC1B,KAAKC,CAAO,EACZ,MAAMC,CAAM,CACjB,EAAGV,CAAI,EAEDW,EAASb,EAAA,IAAIU,IACV,IAAI,QAAgC,CAACC,EAASC,IAAW,CAC9DP,EAAe,EAEfD,EAAU,KAAK,CACb,QAAAO,EACA,OAAAC,CACF,CAAC,EAEDJ,EAAc,GAAGE,CAAI,CACvB,CAAC,EAVY,UAaf,OAAAG,EAAO,MAAQ,IAAML,EAAc,MAAM,EACzCK,EAAO,OAAS,IAAM,CACpBL,EAAc,OAAO,EACrBH,EAAe,CACjB,EAEOQ,CACT,EAvC6B,iBCrBtB,IAAMC,GAAsBC,EACjCC,GACsD,CACtD,IAAMC,EAAe,CACnB,SAAUD,EAAQ,SAClB,UAAWA,EAAQ,SACrB,EAEA,cAAO,eAAeC,EAAc,SAAU,CAC5C,WAAY,GACZ,IAAK,IACID,EAAQ,MAEnB,CAAC,EAEMC,CACT,EAhBmC,uBrDY5B,IAAMC,GAAmBC,EAACC,GAAgB,CAC/C,GAAM,CAAE,QAAAC,EAAS,SAAAC,EAAU,OAAAC,EAAQ,QAAAC,EAAS,QAAAC,CAAQ,EAAI,GAAAC,QAAG,MACzDN,EAAI,UAAU,CAAC,CACjB,EAEA,MAAO,CACL,cAAeC,GAAW,OAAOA,CAAO,EACxC,eAAgBC,GAAY,OAAOA,CAAQ,EAC3C,aAAeK,EAAkBH,EAASD,CAAM,GAAoB,CAAC,EACrE,cAAgBE,GAA4B,CAAC,CAC/C,CACF,EAXgC,oBAanBG,GAA4BT,EAACU,GAAgB,CACxD,IAAMT,EAAM,GAAAM,QAAG,UAAUG,CAAM,EAC/B,OAAOX,GAAiB,IAAIE,GAAK,CACnC,EAHyC,6BAQ5BU,GAAuBX,EAACU,GAKvB,CACZ,IAAME,EAA6B,CACjC,UAAW,GACX,YAAa,UACb,OAAQ,EACV,EACM,CAAE,WAAAC,EAAY,OAAAT,EAAQ,QAAAC,EAAS,QAAAC,EAAS,GAAGQ,CAAK,EAAIJ,EAY1D,OAVoB,GAAAH,QAAG,UACrB,CACE,GAAGO,EACH,GAAID,GAA0B,CAAC,EAC/B,QAASL,EAAkBH,EAASD,CAAM,EAC1C,QAAAE,CACF,EACAM,CACF,CAGF,EAxBoC,wBA0BvBG,GAAiBf,EAAA,CAC5BgB,EACAC,IAGED,EAAK,WAAa,OAClBA,EAAK,WAAa,MAClBC,EAAM,WAAa,OACnBA,EAAM,WAAa,MAGhB,UAAWD,EAAOA,EAAK,MAAQ,WAC7B,UAAWC,EAAQA,EAAM,MAAQ,SACpCD,EAAK,WAAaC,EAAM,UAKzB,QAASD,EAAOA,EAAK,IAAM,WACzB,QAASC,EAAQA,EAAM,IAAM,SAChCD,EAAK,WAAaC,EAAM,SApBE,kBAwBjBC,GAAiBlB,EAAA,CAACgB,EAAgBC,IAC7CD,EAAK,QAAUC,EAAM,MADO,kBAOjBE,GAAenB,EAAA,CAC1BoB,EACAC,EACAC,EAA4B,CAAC,KAEPD,EAAW,OAC9BE,IAAOA,EAAE,WAAa,MAAQA,EAAE,WAAa,QAAU,CAACA,EAAE,GAC7D,EAEkB,OAAS,MACzB,GAAAC,SACE,GACA;AAAA,kJACF,KAGK,GAAAC,SACLL,EACAC,EACAC,EACAP,EACF,EAAE,OACCW,GACCA,EAAW,QAAU,QACrBA,EAAW,QAAU,OACpBA,EAAW,WAAa,MACtBA,EAAW,WAAa,MAAQA,EAAW,MAAM,SAAW,KAC9DA,EAAW,WAAa,OACtBA,EAAW,WAAa,OAASA,EAAW,MAAM,SAAW,EACpE,GA7B0B,gBAgCfC,GAAe3B,EAAA,CAC1B4B,EACAC,OAEA,GAAAJ,SAAUG,EAAiBC,EAAYX,EAAc,EAAE,OACpDY,GAAeA,EAAW,QAAU,QAAaA,EAAW,QAAU,IACzE,EAN0B,gBAQfC,GAAoB/B,EAAA,CAC/BoB,EACAY,IACiB,CACjB,MAAG,GAAAC,SAAeD,EAAeZ,EAAiBL,EAAc,EAChE,GAAGK,CACL,EANiC,qBAQpBc,GAAoBlC,EAAA,CAC/B4B,EACAO,IACe,CACf,MAAG,GAAAF,SAAeE,EAAeP,EAAiBV,EAAc,EAChE,GAAGU,CACL,EANiC,qBAQpBQ,GAAsBpC,EAAA,CACjCqC,EACAjC,IAC0B,CAC1B,GAAI,CAACA,EACH,OAGF,IAAMkC,EAAWlC,EAAO,KAAMmC,GAASA,EAAK,QAAUF,CAAU,EAEhE,GAAIC,EACF,OAAOA,EAAS,KAIpB,EAfmC,uBAiBtBE,GAAmBxC,EAAA,CAC9BqC,EACA/B,EACAmC,EAA8B,OACM,CACpC,IAAMC,EAASpC,GAAA,YAAAA,EAAS,KAAMoC,GAAW,CACvC,GACEA,EAAO,WAAa,MACpBA,EAAO,WAAa,OACpB,UAAWA,EACX,CACA,GAAM,CAAE,SAAAC,EAAU,MAAAC,CAAM,EAAIF,EAC5B,OAAOE,IAAUP,GAAcM,IAAaF,EAGhD,GAEA,GAAIC,EACF,OAAOA,EAAO,OAAS,CAAC,CAI5B,EAtBgC,oBsDrKzB,IAAMG,GAAcC,EAACC,GACnB,IAAI,QAAQ,CAACC,EAASC,IAAW,CACtC,IAAMC,EAAS,IAAI,WAEbC,EAAgBL,EAAA,IAAM,CACtBI,EAAO,SACTA,EAAO,oBAAoB,OAAQC,EAAe,EAAK,EAEvDH,EAAQE,EAAO,MAAgB,EAEnC,EANsB,iBAQtBA,EAAO,iBAAiB,OAAQC,EAAe,EAAK,EAEpDD,EAAO,cAAcH,EAAK,aAAqB,EAC/CG,EAAO,QAAWE,IAChBF,EAAO,oBAAoB,OAAQC,EAAe,EAAK,EAChDF,EAAOG,CAAK,EAEvB,CAAC,EAnBwB,eCGpB,IAAMC,EAAUC,EAAA,IAAM,CAC3B,GAAM,CACJ,QAAS,CAAE,gBAAAC,CAAgB,CAC7B,EAAIC,GAAiB,EAErB,MAAO,CACL,KAAAC,GACA,iBAAkB,CAACF,CACrB,CACF,EATuB,WzD6EhB,SAASG,GAGd,CACA,+BAAAC,EAAiC,GACjC,QAAAC,EACA,OAAAC,CACF,EAEgD,CAAC,EAEP,CACxC,GAAM,CAAE,eAAgBC,CAAoB,EAAIC,GAAqB,EAC/D,CAAE,eAAAC,CAAe,EAAIC,GAAuB,EAC5C,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAgB,aAAgB,CACpC,SAAUH,EAAK,EAAE,KAAK,EAAE,OAAO,aAAa,EAAE,IAAIC,CAAgB,EAElE,QAAUH,EACN,IAAMA,EAAeH,CAAM,EAC3B,IAAM,QAAQ,QAAQ,MAAS,EAGnC,QAAS,CAACF,GAAkC,CAAC,CAACK,EAC9C,GAAIL,EAAiC,CAAC,EAAIC,EAC1C,KAAM,CACJ,GAAID,EAAiC,CAAC,EAAIC,GAAA,YAAAA,EAAS,KACnD,MAAG,YAAQ,iBAAkBO,CAAgB,CAC/C,CACF,CAAC,EAEKG,KAAsB,aAAgB,CAC1C,SAAU,CACR,GAAGJ,EAAK,EAAE,KAAK,EAAE,OAAO,aAAa,EAAE,IAAIC,CAAgB,EAC3D,gCACF,EAEA,QAAUL,EACN,IAAMA,EAAoBD,CAAM,EAChC,IAAM,QAAQ,QAAQ,MAAS,EAGnC,QAASF,GAAkC,CAAC,CAACG,EAC7C,GAAIH,EAAiCC,EAAU,CAAC,EAChD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAS,KAAO,CAAC,EACtD,MAAG,YAAQ,iBAAkBO,CAAgB,CAC/C,CACF,CAAC,EAED,OAAOR,EAAiCW,EAAsBD,CAChE,CApDgBE,EAAAb,GAAA,kB0DhFhB,IAAAc,GAAwB,wCACxBC,GAIO,iCAwDA,SAASC,GAA4B,CAC1C,+BAAAC,EAAiC,GACjC,aAAAC,CACF,EAAmE,CAAC,EAE1B,CACxC,GAAM,CAAE,gBAAiBC,CAAsB,EAAIC,GAAqB,EAClE,CAAE,YAAAC,CAAY,EAAIC,GAAuB,EACzC,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAgB,aAAgB,CACpC,SAAUH,EAAK,EAAE,KAAK,EAAE,OAAO,UAAU,EAAE,IAAIC,CAAgB,EAE/D,QACGH,IACA,IAAM,QAAQ,QAAQ,CAAC,CAAC,GAC3B,QAAS,CAACJ,GAAkC,CAAC,CAACI,EAC9C,MAAO,GACP,GAAIJ,IAAmC,GAAO,CAAC,EAAIC,EACnD,KAAM,CACJ,GAAID,IAAmC,GAAO,CAAC,EAAIC,GAAA,YAAAA,EAAc,KACjE,MAAG,YAAQ,iBAAkBM,CAAgB,CAC/C,CACF,CAAC,EAEKG,KAAsB,aAAgB,CAC1C,SAAU,CACR,GAAGJ,EAAK,EAAE,KAAK,EAAE,OAAO,UAAU,EAAE,IAAIC,CAAgB,EACxD,gCACF,EAEA,QAASL,IAA0B,IAAM,QAAQ,QAAQ,CAAC,CAAC,GAC3D,QAASF,GAAkC,CAAC,CAACE,EAC7C,MAAO,GACP,GAAIF,EAAiCC,EAAe,CAAC,EACrD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAc,KAAO,CAAC,EAC3D,MAAG,YAAQ,iBAAkBM,CAAgB,CAC/C,CACF,CAAC,EAED,OAAOP,EAAiCU,EAAsBD,CAChE,CA1CgBE,EAAAZ,GAAA,kBC7DhB,IAAAa,GAAwB,wCACxBC,GAIO,iCCJP,IAAAC,GAA+B,iCAExB,IAAMC,GAAyBC,EAAA,IAAM,CAC1C,IAAMC,KAAc,mBAAe,EAC7B,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAY3C,OAVmBJ,EAAA,SAAY,CAC7B,MAAM,QAAQ,IACX,CAAC,QAAS,WAAY,aAAa,EAAY,IAAKK,GACnDJ,EAAY,kBACVC,EAAK,EAAE,KAAK,EAAE,OAAOG,CAAM,EAAE,IAAIF,CAAgB,CACnD,CACF,CACF,CACF,EARmB,aAWrB,EAfsC,0BDwG/B,SAASG,GAA2B,CACzC,+BAAAC,EACA,gBAAAC,CACF,EAAmE,CAAC,EAEhC,CAClC,IAAMC,EAAsBC,GAAuB,EAC7CC,EAAaC,GAAc,EAC3BC,EAAKC,GAAM,EACX,CAAE,KAAAC,CAAK,EAAIC,GAAc,EACzB,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAIC,GAAgB,EAClC,CAAE,OAAQC,CAAwB,EAAIC,GAAqB,EAC3D,CAAE,OAAQC,CAAkB,EAAIC,GAAuB,EACvD,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAW,gBAKf,CACA,YAAaH,EAAK,EAAE,KAAK,EAAE,OAAO,QAAQ,EAAE,IAAIC,CAAgB,EAChE,WAAYH,EACZ,UAAW,MAAOM,EAAMC,IAAc,CACpC,GAAM,CAAE,QAAAC,EAAS,MAAAC,EAAO,WAAAC,EAAY,oBAAAC,CAAoB,EAAIL,EACtD,CAAE,aAAAM,CAAa,EAAIL,GAAa,CAAC,EAEjCM,EAAWD,GAAgBF,EAE7BF,IACFZ,GAAA,MAAAA,EAAQ,mBAEJe,IACFhB,GAAA,MAAAA,EAAOmB,GAAyBH,CAAmB,MAInDF,GAAS,CAACD,KACZb,GAAA,MAAAA,EAAOoB,GAAkBN,CAAK,IAG5BI,IAAa,KACXxB,IAAe,SACjBI,EAAKoB,GAAY,QAAQ,EAErBA,GACFtB,EAAG,CAAE,GAAIsB,CAAS,CAAC,GAKzB,MAAM1B,EAAoB,CAC5B,EACA,QAAUsB,GAAe,CACvBd,GAAA,MAAAA,EAAOoB,GAAkBN,CAAK,EAChC,EACA,GAAIxB,IAAmC,GAAO,CAAC,EAAIC,EACnD,KAAM,CACJ,GAAID,IAAmC,GAAO,CAAC,EAAIC,GAAA,YAAAA,EAAiB,KACpE,MAAG,YAAQ,YAAaiB,CAAgB,CAC1C,CACF,CAAC,EAEKa,KAAyC,gBAK7C,CACA,YAAa,CACX,GAAGd,EAAK,EAAE,KAAK,EAAE,OAAO,QAAQ,EAAE,IAAIC,CAAgB,EACtD,gCACF,EACA,WAAYL,EACZ,UAAW,MAAOQ,EAAMC,IAAc,CACpC,IAAMK,GAAeL,GAAA,YAAAA,EAAW,eAAgBD,EAEhD,GAAIM,IAAiB,GAIrB,IAAIA,EAAc,CACZvB,IAAe,SACjBI,EAAKmB,CAAY,EAEjBrB,EAAG,CAAE,GAAIqB,CAAa,CAAC,EAEzB,OAGEvB,IAAe,SACjBI,EAAK,QAAQ,EAEbF,EAAG,CAAE,GAAI,QAAS,CAAC,EAGrB,MAAMJ,EAAoB,EAC5B,EACA,QAAUsB,GAAe,CACvBd,GAAA,MAAAA,EAAOoB,GAAkBN,CAAK,EAChC,EACA,GAAIxB,EAAiCC,EAAkB,CAAC,EACxD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAiB,KAAO,CAAC,EAC9D,MAAG,YAAQ,YAAaiB,CAAgB,CAC1C,CACF,CAAC,EAED,OAAOlB,EACH+B,EACAX,CACN,CA/GgBY,EAAAjC,GAAA,aAiHhB,IAAM+B,GAAoBE,EACxBR,IAEO,CACL,IAAK,kBACL,KAAM,QACN,SAASA,GAAA,YAAAA,EAAO,OAAQ,eACxB,aAAaA,GAAA,YAAAA,EAAO,UAAW,oCACjC,GARwB,qBAWpBK,GAA2BG,EAC/BN,IAEO,CACL,QAASA,EAAoB,QAC7B,YAAaA,EAAoB,YACjC,IAAK,iBACL,KAAM,SACR,GAR+B,4BEvOjC,IAAAO,GAAkB,oBAElBC,GAAwB,wCACxBC,GAIO,iCACPC,GAAe,iBAkGR,SAASC,GAA0B,CACxC,+BAAAC,EACA,gBAAAC,CACF,EAAiE,CAAC,EAE/B,CACjC,IAAMC,EAAsBC,GAAuB,EAC7CC,EAAaC,GAAc,EAE3BC,EAAKC,GAAM,EACX,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAE5BC,EAASC,GAAU,EAEnB,CAAE,YAAAC,CAAY,EAAIC,GAAiB,EACnC,CAAE,OAAAC,CAAO,EAAIF,EAAY,EAEzB,CAAE,MAAAG,EAAO,KAAAC,CAAK,EAAIC,GAAgB,EAClC,CAAE,MAAOC,CAAuB,EAAIC,GAAqB,EACzD,CAAE,MAAOC,CAAiB,EAAIC,GAAuB,EACrD,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAK,GAAAC,QAAM,QAAQ,IAAM,CAhIjC,IAAAC,EAiII,OAAIvB,IAAe,SACI,GAAAwB,QAAG,MAAMd,EAAQ,CACpC,kBAAmB,EACrB,CAAC,EACmB,IAEfa,EAAAjB,EAAO,SAAP,YAAAiB,EAAe,EACxB,EAAG,CAACvB,EAAYM,EAAO,OAAQI,CAAM,CAAC,EAEhCe,KAAW,gBAKf,CACA,YAAaP,EAAK,EAAE,KAAK,EAAE,OAAO,OAAO,EAAE,IAAIC,CAAgB,EAC/D,WAAYH,EACZ,UAAW,MAAO,CAAE,QAAAU,EAAS,WAAAC,EAAY,MAAAC,EAAO,oBAAAC,CAAoB,IAAM,CACpEH,IACFf,GAAA,MAAAA,EAAQ,eAEJkB,IACFjB,GAAA,MAAAA,EAAOkB,GAAyBD,CAAmB,MAInDD,GAAS,CAACF,KACZd,GAAA,MAAAA,EAAOmB,GAAkBH,CAAK,IAG5BP,GAAMK,EACJ1B,IAAe,SACjBI,EAAQiB,CAAY,EAEpBnB,EAAG,CAAE,GAAImB,EAAc,KAAM,SAAU,CAAC,EAEjCM,EACL3B,IAAe,SACjBI,EAAQuB,CAAU,EAElBzB,EAAG,CAAE,GAAIyB,EAAY,KAAM,SAAU,CAAC,EAGpC3B,IAAe,UACjBI,EAAQ,GAAG,EAIf,WAAW,IAAM,CACfN,EAAoB,CACtB,EAAG,EAAE,CACP,EACA,QAAU8B,GAAe,CACvBhB,GAAA,MAAAA,EAAOmB,GAAkBH,CAAK,EAChC,EACA,GAAIhC,IAAmC,GAAO,CAAC,EAAIC,EACnD,KAAM,CACJ,GAAID,IAAmC,GAAO,CAAC,EAAIC,GAAA,YAAAA,EAAiB,KACpE,MAAG,YAAQ,WAAYsB,CAAgB,CACzC,CACF,CAAC,EAEKa,KAAyC,gBAK7C,CACA,YAAa,CACX,GAAGd,EAAK,EAAE,KAAK,EAAE,OAAO,OAAO,EAAE,IAAIC,CAAgB,EACrD,gCACF,EACA,WAAYL,EACZ,UAAW,MAAOmB,GAAyB,CACrCZ,GACFjB,EAAQiB,CAAY,EAGlBY,IAAyB,IAAS,CAACZ,IACjC,OAAOY,GAAyB,SAC9BjC,IAAe,SACjBI,EAAQ6B,CAAoB,EAE5B/B,EAAG,CAAE,GAAI+B,EAAsB,KAAM,SAAU,CAAC,EAG9CjC,IAAe,SACjBI,EAAQ,GAAG,EAEXF,EAAG,CAAE,GAAI,IAAK,KAAM,SAAU,CAAC,GAKrC,WAAW,IAAM,CACfJ,EAAoB,CACtB,EAAG,EAAE,EAELa,GAAA,MAAAA,EAAQ,cACV,EACA,QAAUiB,GAAe,CACvBhB,GAAA,MAAAA,EAAOmB,GAAkBH,CAAK,EAChC,EACA,GAAIhC,EAAiCC,EAAkB,CAAC,EACxD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAiB,KAAO,CAAC,EAC9D,MAAG,YAAQ,WAAYsB,CAAgB,CACzC,CACF,CAAC,EAED,OAAOvB,EACHoC,EACAP,CACN,CAxIgBS,EAAAvC,GAAA,YA0IhB,IAAMoC,GAAoBG,EACxBN,IAEO,CACL,SAASA,GAAA,YAAAA,EAAO,OAAQ,cACxB,aAAaA,GAAA,YAAAA,EAAO,UAAW,sBAC/B,IAAK,cACL,KAAM,OACR,GARwB,qBAWpBE,GAA2BI,EAC/BL,IAEO,CACL,QAASA,EAAoB,QAC7B,YAAaA,EAAoB,YACjC,IAAK,gBACL,KAAM,SACR,GAR+B,4BC/PjC,IAAAM,GAAwB,wCACxBC,GAIO,iCAiGA,SAASC,GAA6B,CAC3C,+BAAAC,EACA,gBAAAC,CACF,EAAuE,CAAC,EAE5B,CAC1C,IAAMC,EAAsBC,GAAuB,EAC7CC,EAAaC,GAAc,EAC3BC,EAAKC,GAAM,EACX,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAC5B,CAAE,SAAUC,CAA0B,EAAIC,GAAqB,EAC/D,CAAE,SAAUC,CAAoB,EAAIC,GAAuB,EAC3D,CAAE,MAAAC,EAAO,KAAAC,CAAK,EAAIC,GAAgB,EAElC,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAW,gBAKf,CACA,YAAaH,EAAK,EAAE,KAAK,EAAE,OAAO,UAAU,EAAE,IAAIC,CAAgB,EAClE,WAAYN,EACZ,UAAW,MAAO,CAAE,QAAAS,EAAS,WAAAC,EAAY,MAAAC,EAAO,oBAAAC,CAAoB,IAAM,CACpEH,IACFP,GAAA,MAAAA,EAAQ,kBAEJU,IACFT,GAAA,MAAAA,EAAOU,GAAyBD,CAAmB,IAGrD,MAAMtB,EAAoB,IAGxBqB,GAAS,CAACF,KACZN,GAAA,MAAAA,EAAOW,GAAkBH,CAAK,IAG5BD,EACElB,IAAe,SACjBI,EAAQc,CAAU,EAElBhB,EAAG,CAAE,GAAIgB,EAAY,KAAM,SAAU,CAAC,EAGpClB,IAAe,UACjBI,EAAQ,GAAG,CAGjB,EACA,QAAUe,GAAe,CACvBR,GAAA,MAAAA,EAAOW,GAAkBH,CAAK,EAChC,EACA,GAAIvB,IAAmC,GAAO,CAAC,EAAIC,EACnD,KAAM,CACJ,GAAID,IAAmC,GAAO,CAAC,EAAIC,GAAA,YAAAA,EAAiB,KACpE,MAAG,YAAQ,cAAeiB,CAAgB,CAC5C,CACF,CAAC,EAEKS,KAAyC,gBAK7C,CACA,YAAa,CACX,GAAGV,EAAK,EAAE,KAAK,EAAE,OAAO,UAAU,EAAE,IAAIC,CAAgB,EACxD,gCACF,EACA,WAAYR,EACZ,UAAW,MAAOkB,GAAyB,CACrCA,IAAyB,KACvBA,EACExB,IAAe,SACjBI,EAAQoB,CAAoB,EAE5BtB,EAAG,CAAE,GAAIsB,EAAsB,KAAM,SAAU,CAAC,EAG9CxB,IAAe,SACjBI,EAAQ,GAAG,EAEXF,EAAG,CAAE,GAAI,IAAK,KAAM,SAAU,CAAC,EAInC,MAAMJ,EAAoB,EAE1BY,GAAA,MAAAA,EAAQ,kBAEZ,EACA,QAAUS,GAAe,CACvBR,GAAA,MAAAA,EAAOW,GAAkBH,CAAK,EAChC,EACA,GAAIvB,EAAiCC,EAAkB,CAAC,EACxD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAiB,KAAO,CAAC,EAC9D,MAAG,YAAQ,cAAeiB,CAAgB,CAC5C,CACF,CAAC,EAED,OAAOlB,EACH2B,EACAP,CACN,CA1GgBS,EAAA9B,GAAA,eA4GhB,IAAM2B,GAAoBG,EACxBN,IAEO,CACL,SAASA,GAAA,YAAAA,EAAO,OAAQ,iBACxB,aAAaA,GAAA,YAAAA,EAAO,UAAW,0BAC/B,IAAK,iBACL,KAAM,OACR,GARwB,qBAWpBE,GAA2BI,EAC/BL,IAEO,CACL,QAASA,EAAoB,QAC7B,YAAaA,EAAoB,YACjC,IAAK,mBACL,KAAM,SACR,GAR+B,4BC7NjC,IAAAM,GAAwB,wCACxBC,GAIO,iCAoGA,SAASC,GAAmC,CACjD,+BAAAC,EACA,gBAAAC,CACF,EAE+C,CAAC,EAEE,CAChD,IAAMC,EAAaC,GAAc,EAC3BC,EAAKC,GAAM,EACX,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAC5B,CACJ,eAAgBC,CAClB,EAAIC,GAAqB,EACnB,CAAE,eAAgBC,CAA0B,EAChDC,GAAuB,EACnB,CAAE,MAAAC,EAAO,KAAAC,CAAK,EAAIC,GAAgB,EAClC,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAW,gBAKf,CACA,YAAaH,EAAK,EAAE,KAAK,EAAE,OAAO,gBAAgB,EAAE,IAAIC,CAAgB,EACxE,WAAYN,EACZ,UAAW,CAAC,CAAE,QAAAS,EAAS,WAAAC,EAAY,MAAAC,EAAO,oBAAAC,CAAoB,IAAM,CAC9DH,IACFP,GAAA,MAAAA,EAAQ,yBAEJU,IACFT,GAAA,MAAAA,EAAOU,GAAyBD,CAAmB,MAInDD,GAAS,CAACF,KACZN,GAAA,MAAAA,EAAOW,GAAkBH,CAAK,IAG5BD,IACElB,IAAe,SACjBI,EAAQc,CAAU,EAElBhB,EAAG,CAAE,GAAIgB,EAAY,KAAM,SAAU,CAAC,EAG5C,EACA,QAAUC,GAAe,CACvBR,GAAA,MAAAA,EAAOW,GAAkBH,CAAK,EAChC,EACA,GAAIrB,IAAmC,GAAO,CAAC,EAAIC,EACnD,KAAM,CACJ,GAAID,IAAmC,GAAO,CAAC,EAAIC,GAAA,YAAAA,EAAiB,KACpE,MAAG,YAAQ,oBAAqBe,CAAgB,CAClD,CACF,CAAC,EAEKS,KAAyC,gBAK7C,CACA,YAAa,CACX,GAAGV,EAAK,EAAE,KAAK,EAAE,OAAO,gBAAgB,EAAE,IAAIC,CAAgB,EAC9D,gCACF,EACA,WAAYR,EACZ,UAAYkB,GAAyB,CAC/BA,IAAyB,IACvBA,IACExB,IAAe,SACjBI,EAAQoB,CAAoB,EAE5BtB,EAAG,CAAE,GAAIsB,EAAsB,KAAM,SAAU,CAAC,GAItDd,GAAA,MAAAA,EAAQ,wBACV,EACA,QAAUS,GAAe,CACvBR,GAAA,MAAAA,EAAOW,GAAkBH,CAAK,EAChC,EACA,GAAIrB,EAAiCC,EAAkB,CAAC,EACxD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAiB,KAAO,CAAC,EAC9D,MAAG,YAAQ,oBAAqBe,CAAgB,CAClD,CACF,CAAC,EAED,OAAOhB,EACHyB,EACAP,CACN,CA9FgBS,EAAA5B,GAAA,qBAgGhB,IAAMyB,GAAoBG,EACxBN,IAEO,CACL,SAASA,GAAA,YAAAA,EAAO,OAAQ,wBACxB,aAAaA,GAAA,YAAAA,EAAO,UAAW,iCAC/B,IAAK,wBACL,KAAM,OACR,GARwB,qBAWpBE,GAA2BI,EAC/BL,IAEO,CACL,QAASA,EAAoB,QAC7B,YAAaA,EAAoB,YACjC,IAAK,0BACL,KAAM,SACR,GAR+B,4BCpNjC,IAAAM,GAAkB,oBAElBC,GAAwB,wCACxBC,GAIO,iCACPC,GAAe,iBAkHR,SAASC,GAEd,CACA,+BAAAC,EACA,gBAAAC,CACF,EAE+C,CAAC,EAEE,CAChD,IAAMC,EAAaC,GAAc,EAE3BC,EAAKC,GAAM,EACX,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAC5B,CAAE,eAAgBC,CAAgC,EACtDC,GAAqB,EACjB,CAAE,eAAgBC,CAA0B,EAChDC,GAAuB,EACnB,CAAE,MAAAC,EAAO,KAAAC,CAAK,EAAIC,GAAgB,EAElC,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAASC,GAAU,EACnB,CAAE,YAAAC,CAAY,EAAIC,GAAiB,EACnC,CAAE,OAAAC,CAAO,EAAIF,EAAY,EAEzBG,EAAS,GAAAC,QAAM,QAAQ,IACvBtB,IAAe,SACI,GAAAuB,QAAG,MAAMH,EAAQ,CACpC,kBAAmB,EACrB,CAAC,GACsB,CAAC,EAEnBJ,EAAO,QAAU,CAAC,EACxB,CAACI,EAAQJ,EAAQhB,CAAU,CAAC,EAEzBwB,KAAW,gBAA4D,CAC3E,YAAaX,EAAK,EAAE,KAAK,EAAE,OAAO,gBAAgB,EAAE,IAAIC,CAAgB,EACxE,WAAY,MAAOW,GACVjB,GAAA,YAAAA,EAA4B,CACjC,GAAGa,EACH,GAAGI,CACL,GAEF,UAAW,CAAC,CAAE,QAAAC,EAAS,WAAAC,EAAY,MAAAC,EAAO,oBAAAC,CAAoB,IAAM,CAC9DH,IACFhB,GAAA,MAAAA,EAAQ,yBAEJmB,IACFlB,GAAA,MAAAA,EAAOmB,GAAyBD,CAAmB,MAInDD,GAAS,CAACF,KACZf,GAAA,MAAAA,EAAOoB,GAAkBH,CAAK,IAG5BD,IACE3B,IAAe,SACjBI,EAAQuB,CAAU,EAElBzB,EAAG,CAAE,GAAIyB,EAAY,KAAM,SAAU,CAAC,EAG5C,EACA,QAAUC,GAAe,CACvBjB,GAAA,MAAAA,EAAOoB,GAAkBH,CAAK,EAChC,EACA,GAAI9B,IAAmC,GAAO,CAAC,EAAIC,EACnD,KAAM,CACJ,GAAID,IAAmC,GAAO,CAAC,EAAIC,GAAA,YAAAA,EAAiB,KACpE,MAAG,YAAQ,oBAAqBe,CAAgB,CAClD,CACF,CAAC,EAEKkB,KAAyC,gBAK7C,CACA,YAAa,CACX,GAAGnB,EAAK,EAAE,KAAK,EAAE,OAAO,gBAAgB,EAAE,IAAIC,CAAgB,EAC9D,gCACF,EACA,WAAY,MAAOW,GACVnB,GAAA,YAAAA,EAAkC,CACvC,GAAGe,EACH,GAAGI,CACL,GAEF,UAAYQ,GAAyB,CAC/BA,IAAyB,IACvBA,IACEjC,IAAe,SACjBI,EAAQ6B,CAAoB,EAE5B/B,EAAG,CAAE,GAAI+B,EAAsB,KAAM,SAAU,CAAC,GAItDvB,GAAA,MAAAA,EAAQ,wBACV,EACA,QAAUkB,GAAe,CACvBjB,GAAA,MAAAA,EAAOoB,GAAkBH,CAAK,EAChC,EACA,GAAI9B,EAAiCC,EAAkB,CAAC,EACxD,KAAM,CACJ,GAAID,EAAiCC,GAAA,YAAAA,EAAiB,KAAO,CAAC,EAC9D,MAAG,YAAQ,oBAAqBe,CAAgB,CAClD,CACF,CAAC,EAED,OAAOhB,EACHkC,EACAR,CACN,CApHgBU,EAAArC,GAAA,qBAsHhB,IAAMkC,GAAoBG,EACxBN,IAEO,CACL,SAASA,GAAA,YAAAA,EAAO,OAAQ,wBACxB,aAAaA,GAAA,YAAAA,EAAO,UAAW,gCAC/B,IAAK,wBACL,KAAM,OACR,GARwB,qBAWpBE,GAA2BI,EAC/BL,IAEO,CACL,QAASA,EAAoB,QAC7B,YAAaA,EAAoB,YACjC,IAAK,0BACL,KAAM,SACR,GAR+B,4BC3PjC,IAAAM,GAAwB,wCACxBC,GAA8C,iCAgDvC,SAASC,GAAmB,CACjC,+BAAAC,EAAiC,GACjC,OAAAC,CACF,EAA6D,CAAC,EAEvB,CACrC,GAAM,CAAE,UAAAC,CAAU,EAAIC,GAAqB,EACrC,CAAE,MAAAC,CAAM,EAAIC,GAAuB,EACnC,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAgB,aAAS,CAC7B,SAAUH,EAAK,EACZ,KAAK,EACL,OAAO,OAAO,EACd,OAAOL,CAAM,EACb,IAAIM,CAAgB,EACvB,QAAS,SAAa,MAAMH,GAAA,YAAAA,EAAQH,KAAY,CAAC,EACjD,MAAO,GACP,QAAS,CAACD,EACV,KAAM,CACJ,MAAG,YAAQ,qBAAsBO,CAAgB,CACnD,CACF,CAAC,EAEKG,KAAsB,aAAS,CACnC,SAAU,CACR,GAAGJ,EAAK,EAAE,KAAK,EAAE,OAAO,OAAO,EAAE,OAAOL,CAAM,EAAE,IAAIM,CAAgB,EACpE,gCACF,EACA,QAAS,SAAa,MAAML,GAAA,YAAAA,EAAYD,KAAY,CAAC,EACrD,MAAO,GACP,QAASD,EACT,KAAM,CACJ,MAAG,YAAQ,qBAAsBO,CAAgB,CACnD,CACF,CAAC,EAED,OAAOP,EAAiCU,EAAsBD,CAChE,CAtCgBE,EAAAZ,GAAA,sBA2CT,IAAMa,GAAmBb,GC5FhC,IAAAc,GAAwB,wCACxBC,GAAoD,iCAwD7C,SAASC,GAAW,CACzB,+BAAAC,EAAiC,EACnC,EAA6C,CAAC,EAEf,CAC7B,IAAMC,EAAaC,GAAc,EAC3BC,EAAKC,GAAM,EACX,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAE5B,CAAE,WAAYC,CAA4B,EAAIC,GAAqB,EACnE,CAAE,QAASC,CAAmB,EAAIC,GAAuB,EAEzD,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErC,CAAE,OAAQC,CAAa,EAAIC,GAAU,CACzC,+BAAgC,EAAQf,CAC1C,CAAC,EACK,CAAE,OAAQgB,CAAO,EAAID,GAAU,CACnC,+BAAgC,EAAQf,CAC1C,CAAC,EAEKiB,KAAW,gBAAwD,CACvE,YAAaN,EAAK,EAAE,KAAK,EAAE,OAAO,SAAS,EAAE,IAAIC,CAAgB,EACjE,GAAIH,EACA,CACE,WAAYA,EACZ,UAAW,CAAC,CAAE,OAAQS,EAAc,WAAAC,CAAW,IAAM,CACnD,GAAID,EAAc,CAChBF,EAAO,CAAE,aAAcG,CAAW,CAAC,EACnC,OAGF,GAAIA,EAAY,CACVlB,IAAe,SACjBI,EAAQc,CAAU,EAElBhB,EAAG,CAAE,GAAIgB,EAAY,KAAM,SAAU,CAAC,EAExC,OAEJ,CACF,EACA,CACE,WAAY,KAAO,CAAC,EACtB,EACJ,KAAM,CACJ,MAAG,YAAQ,aAAcP,CAAgB,CAC3C,CACF,CAAC,EAEKQ,KAAyC,gBAAY,CACzD,YAAa,CACX,GAAGT,EAAK,EAAE,KAAK,EAAE,OAAO,SAAS,EAAE,IAAIC,CAAgB,EACvD,gCACF,EACA,WAAYL,EACZ,QAAUc,GAA0B,CAClCP,EAAa,CAAE,aAAAO,CAAa,CAAC,CAC/B,EACA,KAAM,CACJ,MAAG,YAAQ,aAAcT,CAAgB,CAC3C,CACF,CAAC,EAED,OAAOZ,EACHoB,EACAH,CACN,CAnEgBK,EAAAvB,GAAA,cAwET,IAAMwB,GAAgBxB,GC3HtB,IAAMyB,GAA2BC,EAAA,IAAe,CACrD,GAAM,CAAE,WAAYC,CAAiB,EAAIC,GAAqB,EACxD,CAAE,WAAAC,CAAW,EAAIC,GAAuB,EAE9C,MAAO,GAAQD,GAAcF,EAC/B,EALwC,4BCNxC,IAAAI,GAAwB,wCACxBC,GAIO,iCCLP,IAAAC,GAAoC,iBAuE7B,IAAMC,GAAqBC,EAAA,CAAC,CACjC,QAASC,EACT,UAAAC,EACA,SAAUC,EACV,WAAYC,CACd,IAAqE,CACnE,GAAM,CAACC,EAAaC,CAAc,KAAI,aAA6B,MAAS,EAEtE,CAAE,QAAAC,CAAQ,EAAIC,GAAiB,EAC/B,CAAE,SAAAC,CAAS,EAAIF,EAGfG,EAAWP,GAAgBM,EAAS,SACpCE,EAAaP,IAAkBK,GAAA,YAAAA,EAAU,YACzCG,EACJ,OAAOX,EAAgB,IACnBA,EACA,OAAOQ,EAAS,QAAY,IAC1BA,EAAS,QACT,GAER,uBAAU,IAAM,CACd,IAAII,EAEJ,OAAID,GAAWV,IACbW,EAAa,YAAY,IAAM,CAE7BP,EAAgBQ,GACVA,IAAoB,OACfJ,EAGFI,EAAkBJ,CAC1B,CACH,EAAGA,CAAQ,GAGN,IAAM,CACP,OAAOG,EAAe,KACxB,cAAcA,CAAU,EAG1BP,EAAe,MAAS,CAC1B,CACF,EAAG,CAACJ,EAAWQ,EAAUE,CAAO,CAAC,KAEjC,cAAU,IAAM,CAEVD,GAAcN,GAChBM,EAAWN,CAAW,CAE1B,EAAG,CAACA,CAAW,CAAC,EAET,CACL,YAAAA,CACF,CACF,EAxDkC,sBDsD3B,IAAMU,GAAUC,EAAA,CAIrB,CACA,SAAUC,EACV,OAAAC,EACA,QAAAC,EACA,cAAAC,EACA,WAAAC,EACA,QAAAC,EACA,aAAAC,EACA,oBAAAC,EACA,kBAAAC,EACA,KAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,EAA+C,CAAC,IAId,CAChC,GAAM,CAAE,UAAAC,EAAW,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAYnB,CAAgB,EAElEoB,EAAeC,GAAgB,EAC/BC,EAAYC,EAAa,EACzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAqBC,GAAsB,EAC3CC,EAAUC,GAAQ,EAClB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAqBC,GACzBlB,EACAJ,EACAE,CACF,EACMqB,EAAgBC,EAAkB7B,EAAMC,CAAQ,EAChD6B,EAAmBD,EAAkBpC,EAASD,GAAA,YAAAA,EAAQ,OAAO,EAC7DuC,EAAmBF,EAAkBjC,EAASJ,GAAA,YAAAA,EAAQ,IAAI,EAC1DwC,EAAyBH,EAC7BnC,EACAF,GAAA,YAAAA,EAAQ,aACV,EACMyC,EAAsBC,GAAuB,CACjD,WAAAvC,EACA,iBAAkBH,GAAA,YAAAA,EAAQ,WAC1B,cAAewC,CACjB,CAAC,EACKG,EAAqBF,EAAoB,OAAS,SAElDG,EAAef,EAAQ,CAAE,SAAAb,EAAU,KAAMoB,CAAc,CAAC,EAExDS,EAAqB,CACzB,KAAMD,EACN,SAAUA,EACV,QAASN,EACT,cAAeK,EACf,WAAYF,EACZ,QAASF,EACT,OAAQ,CACN,GAAGvC,EACH,KAAMuC,CACR,CACF,EAEMO,GACJzC,GAAA,YAAAA,EAAc,WAAY,SAAaA,GAAA,YAAAA,EAAc,WAAY,GAE7D,CAAE,QAAA0C,CAAQ,EAAI5B,EAAae,CAAkB,EAEnDc,GAAwB,CACtB,SAAU/B,EACV,MAAO,CAAC,GAAG,EACX,OAAQ,CACN,KAAM2B,EACN,SAAUA,EACV,WAAYH,EACZ,cAAeE,EACf,KAAMJ,EACN,QAASA,EACT,QAASD,EACT,iBAAkB,UAClB,GAAG1B,CACL,EACA,QAAS,aAAaI,GAAA,YAAAA,EAAU,OAChC,QAAS8B,EACT,SAAApC,EACA,YAAAC,EACA,iBAAkBuB,EAClB,KAAM,CACJ,GAAG1B,EACH,iBAAAK,CACF,CACF,CAAC,EAED,IAAMoC,MAAgB,aAIpB,CACA,SAAUlB,EAAK,EACZ,KAAKG,CAAkB,EACvB,SAASjB,GAAc,EAAE,EACzB,OAAO,MAAM,EACb,OAAO,CACN,GAAImB,GAAiB,CAAC,EACtB,QAASE,EACT,cAAeK,EACf,GAAIA,GAAsB,CACxB,WAAYF,CACd,EACA,GAAIrC,GAAW,CACb,QAAAA,CACF,EACA,IAAIJ,GAAA,YAAAA,EAAQ,OAAQ,CAClB,KAAMA,GAAA,YAAAA,EAAQ,IAChB,CACF,CAAC,EACA,IAAIgC,CAAgB,EACvB,QAAUkB,GAAY,CACpB,IAAM1C,EAAO,CACX,GAAGoC,EACH,aAAcO,GAAoBD,CAAO,CAC3C,EACA,OAAOH,EAAsB,CAC3B,UAAU/B,GAAA,YAAAA,EAAU,OAAQ,GAC5B,WAAYyB,EACZ,cAAeE,EACf,QAASL,EACT,KAAMC,EACN,QAASA,EACT,KAAA/B,EACA,SAAUA,CACZ,CAAC,CACH,EACA,GAAGH,EACH,QACE,OAAOA,GAAA,YAAAA,EAAc,SAAY,IAC7BA,GAAA,YAAAA,EAAc,QACd,CAAC,EAACW,GAAA,MAAAA,EAAU,MAClB,OAASoC,GAAY,CAhRzB,IAAAC,EAiRM,IAAIC,EAAOF,EAEL,CAAE,QAAAG,EAAS,KAAAC,EAAM,SAAAC,CAAS,EAAIhB,EAUpC,OARIe,IAAS,WACXF,EAAO,CACL,GAAGA,EACH,KAAMA,EAAK,KAAK,OAAOC,EAAU,GAAKE,EAAUF,EAAUE,CAAQ,EAClE,MAAOH,EAAK,KACd,GAGEjD,GAAA,MAAAA,EAAc,QACTgD,EAAAhD,GAAA,YAAAA,EAAc,SAAd,YAAAgD,EAAA,KAAAhD,EAAuBiD,GAGzBA,CACT,EACA,UAAYA,GAAS,CAnSzB,IAAAD,GAoSMA,EAAAhD,GAAA,YAAAA,EAAc,YAAd,MAAAgD,EAAA,KAAAhD,EAA0BiD,GAE1B,IAAMI,EACJ,OAAOpD,GAAwB,WAC3BA,EAAoBgD,EAAMT,EAAoB5B,CAAU,EACxDX,EAENqB,EAAmB+B,CAAkB,CACvC,EACA,QAAUC,GAAgB,CA7S9B,IAAAN,EA8SM5B,EAAWkC,CAAG,GACdN,EAAAhD,GAAA,YAAAA,EAAc,UAAd,MAAAgD,EAAA,KAAAhD,EAAwBsD,GAExB,IAAMD,EACJ,OAAOnD,GAAsB,WACzBA,EAAkBoD,EAAKd,EAAoB5B,CAAU,EACrDV,EAENoB,EAAmB+B,EAAoB,CACrC,IAAK,GAAGzC,yBACR,QAASI,EACP,sBACA,CAAE,WAAYsC,EAAI,UAAW,EAC7B,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,CACH,EACA,KAAM,CACJ,GAAGtD,GAAA,YAAAA,EAAc,KACjB,MAAG,YAAQ,UAAW2B,EAAkBhB,GAAA,YAAAA,EAAU,IAAI,CACxD,CACF,CAAC,EAEK,CAAE,YAAA4C,EAAY,EAAIC,GAAmB,CACzC,GAAG/C,EACH,UAAWmC,GAAc,UAC3B,CAAC,EAED,MAAO,CAAE,GAAGA,GAAe,SAAU,CAAE,YAAAW,EAAY,CAAE,CACvD,EAhNuB,WE7HvB,IAAAE,GAAwB,wCACxBC,GAIO,iCAwFA,IAAMC,GAASC,EAAA,CAIpB,CACA,SAAUC,EACV,GAAAC,EACA,aAAAC,EACA,oBAAAC,EACA,kBAAAC,EACA,KAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,IAIkC,CAChC,GAAM,CAAE,UAAAC,EAAW,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAYf,CAAgB,EAElEgB,EAAeC,GAAgB,EAC/BC,EAAYC,EAAa,EACzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAqBC,GAAsB,EAC3CC,EAAUC,GAAQ,EAClB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAgBC,EAAkB3B,EAAMC,CAAQ,EAChD2B,EAAqBC,GACzBpB,EACAJ,EACAE,CACF,EAEM,CAAE,OAAAuB,CAAO,EAAInB,EAAaiB,CAAkB,EAE5CG,EAAeV,EAAQ,CAAE,SAAAb,EAAU,KAAMkB,CAAc,CAAC,EAE9DM,GAAwB,CACtB,SAAUvB,EACV,MAAO,CAAC,GAAG,EACX,QAAS,aAAaD,GAAA,YAAAA,EAAU,OAChC,OAAQ,CACN,IAAKZ,EAAK,CAACA,CAAE,EAAI,CAAC,EAClB,GAAIA,EACJ,KAAMmC,EACN,SAAUA,EACV,iBAAkB,SAClB,GAAG3B,CACL,EACA,QACE,OAAOP,GAAA,YAAAA,EAAc,SAAY,IAC7BA,GAAA,YAAAA,EAAc,QACd,OAAOW,GAAA,YAAAA,EAAU,MAAS,KAAe,OAAOZ,EAAO,IAC7D,SAAAM,EACA,YAAAC,EACA,iBAAkByB,EAClB,KAAM,CACJ,GAAG5B,EACH,iBAAAK,CACF,CACF,CAAC,EAED,IAAM4B,KAAgB,aAIpB,CACA,SAAUV,EAAK,EACZ,KAAKK,CAAkB,EACvB,SAASnB,GAAc,EAAE,EACzB,OAAO,KAAK,EACZ,GAAGb,GAAM,EAAE,EACX,OAAO,CACN,GAAI8B,GAAiB,CAAC,CACxB,CAAC,EACA,IAAIF,CAAgB,EACvB,QAAUU,GACRJ,EAAqB,CACnB,UAAUtB,GAAA,YAAAA,EAAU,OAAQ,GAC5B,GAAIZ,EACJ,KAAM,CACJ,GAAGmC,EACH,aAAcI,GAAoBD,CAAO,CAC3C,EACA,SAAU,CACR,GAAGH,EACH,aAAcI,GAAoBD,CAAO,CAC3C,CACF,CAAC,EACH,GAAGrC,EACH,QACE,OAAOA,GAAA,YAAAA,EAAc,SAAY,IAC7BA,GAAA,YAAAA,EAAc,QACd,OAAOD,EAAO,IACpB,UAAYwC,GAAS,CAnMzB,IAAAC,GAoMMA,EAAAxC,GAAA,YAAAA,EAAc,YAAd,MAAAwC,EAAA,KAAAxC,EAA0BuC,GAE1B,IAAME,EACJ,OAAOxC,GAAwB,WAC3BA,EACEsC,EACA,CACE,GAAAxC,EACA,GAAGmC,CACL,EACAtB,CACF,EACAX,EAENqB,EAAmBmB,CAAkB,CACvC,EACA,QAAUC,GAAgB,CApN9B,IAAAF,EAqNMpB,EAAWsB,CAAG,GACdF,EAAAxC,GAAA,YAAAA,EAAc,UAAd,MAAAwC,EAAA,KAAAxC,EAAwB0C,GAExB,IAAMD,EACJ,OAAOvC,GAAsB,WACzBA,EACEwC,EACA,CACE,GAAA3C,EACA,GAAGmC,CACL,EACAtB,CACF,EACAV,EAENoB,EAAmBmB,EAAoB,CACrC,IAAK,GAAG1C,KAAMa,wBACd,QAASI,EACP,sBACA,CAAE,WAAY0B,EAAI,UAAW,EAC7B,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,CACH,EACA,KAAM,CACJ,GAAG1C,GAAA,YAAAA,EAAc,KACjB,MAAG,YAAQ,SAAU2B,EAAkBhB,GAAA,YAAAA,EAAU,IAAI,CACvD,CACF,CAAC,EAEK,CAAE,YAAAgC,CAAY,EAAIC,GAAmB,CACzC,GAAGnC,EACH,UAAW2B,EAAc,UAC3B,CAAC,EAED,MAAO,CAAE,GAAGA,EAAe,SAAU,CAAE,YAAAO,CAAY,CAAE,CACvD,EA9JsB,UC7FtB,IAAAE,GAAwB,wCACxBC,GAIO,iCAkCP,IAAAC,GAAqB,wBAmDd,IAAMC,GAAUC,EAAA,CAIrB,CACA,SAAUC,EACV,IAAAC,EACA,aAAAC,EACA,oBAAAC,EACA,kBAAAC,EACA,KAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,IAIkC,CAChC,GAAM,CAAE,UAAAC,EAAW,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAYf,CAAgB,EAClEgB,EAAeC,GAAgB,EAC/BC,EAAYC,EAAa,EACzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAqBC,GAAsB,EAC3CC,EAAUC,GAAQ,EAClB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAgBC,EAAkB3B,EAAMC,CAAQ,EAChD2B,EAAqBC,GACzBpB,EACAJ,EACAE,CACF,EACMuB,GACJjC,GAAA,YAAAA,EAAc,WAAY,SAAaA,GAAA,YAAAA,EAAc,WAAY,GAE7D,CAAE,QAAAkC,EAAS,OAAAC,CAAO,EAAIrB,EAAaiB,CAAkB,EAErDK,EAAeZ,EAAQ,CAAE,SAAAb,EAAU,KAAMkB,CAAc,CAAC,EAExDQ,EAAS,MAAM,QAAQtC,CAAG,EAC1BuC,EAAc,GAAQ3B,GAAA,MAAAA,EAAU,MAChC4B,GAAkBvC,GAAA,YAAAA,EAAc,WAAY,MAElD,GAAAwC,SAAS,CAACH,GAAU,CAACE,EAAiBE,GAAkB1C,EAAKY,GAAA,YAAAA,EAAU,IAAI,CAAC,KAC5E,GAAA6B,SAAS,CAACF,GAAe,CAACC,EAAiBG,GAAuB,CAAC,EAEnEC,GAAwB,CACtB,SAAU/B,EACV,MAAO,CAAC,GAAG,EACX,OAAQ,CACN,IAAKb,GAAO,CAAC,EACb,KAAMqC,EACN,SAAUA,EACV,iBAAkB,UAClB,GAAG7B,CACL,EACA,QAAS,cAAaI,GAAA,YAAAA,EAAU,OAAQ,KACxC,QAASsB,EACT,SAAA5B,EACA,YAAAC,EACA,iBAAkByB,EAClB,KAAM,CACJ,GAAG5B,EACH,iBAAAK,CACF,CACF,CAAC,EAED,IAAMoC,KAAgB,aAIpB,CACA,SAAUlB,EAAK,EACZ,KAAKK,CAAkB,EACvB,SAASnB,CAAU,EACnB,OAAO,MAAM,EACb,IAAI,GAAIb,GAAO,CAAC,CAAE,EAClB,OAAO,CACN,GAAI8B,GAAiB,CAAC,CACxB,CAAC,EACA,IAAIF,CAAgB,EACvB,QAAUkB,GAAY,CACpB,IAAM1C,EAAO,CACX,GAAGiC,EACH,aAAcU,GAAoBD,CAAO,CAC3C,EAEA,OAAIX,EACKA,EAAQ,CACb,SAAUvB,GAAA,YAAAA,EAAU,KACpB,IAAAZ,EACA,KAAAI,EACA,SAAUA,CACZ,CAAC,EAEI4C,GACLhD,EAAI,IAAKiD,GACPb,EAAqB,CACnB,SAAUxB,GAAA,YAAAA,EAAU,KACpB,GAAAqC,EACA,KAAA7C,EACA,SAAUA,CACZ,CAAC,CACH,CACF,CACF,EACA,QAASkC,GAAUC,EACnB,GAAGtC,EACH,UAAYiD,GAAS,CA7MzB,IAAAC,GA8MMA,EAAAlD,GAAA,YAAAA,EAAc,YAAd,MAAAkD,EAAA,KAAAlD,EAA0BiD,GAE1B,IAAME,EACJ,OAAOlD,GAAwB,WAC3BA,EAAoBgD,EAAMlD,EAAKa,CAAU,EACzCX,EAENqB,EAAmB6B,CAAkB,CACvC,EACA,QAAUC,GAAgB,CAvN9B,IAAAF,EAwNM9B,EAAWgC,CAAG,GACdF,EAAAlD,GAAA,YAAAA,EAAc,UAAd,MAAAkD,EAAA,KAAAlD,EAAwBoD,GAExB,IAAMD,EACJ,OAAOjD,GAAsB,WACzBA,EAAkBkD,EAAKrD,EAAKa,CAAU,EACtCV,EAENoB,EAAmB6B,EAAoB,CACrC,IAAK,GAAGpD,EAAI,CAAC,KAAKa,yBAClB,QAASI,EACP,sBACA,CAAE,WAAYoC,EAAI,UAAW,EAC7B,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,CACH,EACA,KAAM,CACJ,GAAGpD,GAAA,YAAAA,EAAc,KACjB,MAAG,YAAQ,UAAW2B,EAAkBhB,GAAA,YAAAA,EAAU,IAAI,CACxD,CACF,CAAC,EAEK,CAAE,YAAA0C,CAAY,EAAIC,GAAmB,CACzC,GAAG7C,EACH,UAAWmC,EAAc,UAC3B,CAAC,EAED,MAAO,CAAE,GAAGA,EAAe,SAAU,CAAE,YAAAS,CAAY,CAAE,CACvD,EA7JuB,WA+JjBZ,GAAoB5C,EAAA,CACxBE,EACAY,IACG,qEAAqE,OAAOZ,kBAAoBY;AAAA;AAAA,uDAH3E,qBAOpB+B,GAAyB7C,EAAA,IAAM;AAAA;AAAA,4DAAN,0BChQ/B,IAAA0D,GAAwB,wCACxBC,GAKO,iCCJA,IAAKC,QACVA,EAAA,IAAM,MACNA,EAAA,OAAS,SACTA,EAAA,6BAA+B,+BAHrBA,QAAA,ID8KL,IAAMC,GAAYC,EAAA,CAIvB,CACA,GAAIC,EACJ,SAAUC,EACV,OAAQC,EACR,iBAAkBC,EAClB,oBAAqBC,EACrB,kBAAmBC,EACnB,KAAMC,EACN,SAAUC,EACV,aAAcC,EACd,gBAAiBC,EACjB,SAAUC,EACV,oBAAqBC,EACrB,YAAaC,EACb,gBAAAC,EACA,gBAAAC,CACF,EAA+C,CAAC,IAI3C,CACH,GAAM,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAAIC,EAAY,EACpCC,KAAc,mBAAe,EAC7BC,EAAeC,GAAgB,EAE/B,CACJ,aAAcC,EACd,gBAAiBC,CACnB,EAAIC,GAAgB,EACdC,EAAYC,EAAa,EACzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAUC,GAAW,EACrB,CAAE,IAAAC,CAAI,EAAIC,GAAO,EACjB,CAAE,qBAAAC,CAAqB,EAAIC,GAAsB,EACjDC,EAAqBC,GAAsB,EAC3CC,EAAkBC,GAAc,EAChCC,EAAUC,GAAQ,EAClB,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EACf,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAiB,gBAKrB,CACA,WAAY,CAAC,CACX,GAAAC,EAAKhD,EACL,OAAAiD,EAAS/C,EACT,SAAUgD,EAAejD,EACzB,aAAAkD,EAAe3C,EACf,gBAAA4C,EAAkB3C,EAClB,SAAA4C,EAAW3C,EACX,KAAA4C,GAAOhD,EACP,SAAAiD,EAAWhD,EACX,iBAAAiD,EAAmBrD,CACrB,IAAM,CACJ,GAAI,OAAO6C,EAAO,IAAa,MAAMS,GACrC,GAAI,CAACR,EAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,SAAAC,EAAU,WAAAC,EAAW,EAAI7C,EAAOkC,CAAY,EAE9CY,GAAetB,EAAQ,CAC3B,SAAAoB,EACA,KAAMG,EAAkBT,GAAMC,CAAQ,CACxC,CAAC,EAEKS,GAA4Bb,GAAgB9B,EAE5C4C,GACJb,GAAmB9B,EAErB,OAAM0C,KAA8B,WAC3B7C,EACL+C,GAAiBL,GAAYL,EAAkBzC,CAAS,CAC1D,EAAE,OAA0B,CAC1B,SAAU6C,EAAS,KACnB,GAAAZ,EACA,UAAWC,EACX,KAAMa,GACN,SAAUA,EACZ,CAAC,EAEmB,IAAI,QACxB,CAACK,GAASC,KAAW,CACnB,IAAMC,GAAatE,EAAA,IAAM,CACvBoB,EACE+C,GAAiBL,GAAYL,EAAkBzC,CAAS,CAC1D,EACG,OAA0B,CACzB,SAAU6C,EAAS,KACnB,GAAAZ,EACA,UAAWC,EACX,KAAMa,GACN,SAAUA,EACZ,CAAC,EACA,KAAMQ,IAAWH,GAAQG,EAAM,CAAC,EAChC,MAAOC,IAAQH,GAAOG,EAAG,CAAC,CAC/B,EAbmB,cAebC,GAAiBzE,EAAA,IAAM,CAC3BqE,GAAO,CAAE,QAAS,mBAAoB,CAAC,CACzC,EAFuB,kBAInBf,GACFA,EAASmB,EAAc,EAGzBtC,EAAqB,CACnB,WACA,QAAS,CACP,GAAIc,EACJ,SAAUa,GACV,eAAgBW,GAChB,WAAYH,GACZ,QAASJ,GACT,SAAU,CAAC,CAACZ,CACd,CACF,CAAC,CACH,CACF,CAEF,EACA,SAAU,MAAO,CACf,SAAUH,EAAejD,EACzB,GAAA+C,EAAKhD,EACL,aAAAmD,EAAe3C,EACf,OAAAyC,EAAS/C,EACT,iBAAAsD,EAAmBrD,EACnB,KAAAmD,EAAOhD,EACP,SAAAiD,GAAWhD,EACX,oBAAAkE,EAAsB9D,GAAgC,CACpD,KAAM,GACN,KAAM,GACN,OAAQ,EACV,CACF,IAAM,CACJ,GAAI,OAAOqC,EAAO,IAAa,MAAMS,GACrC,GAAI,CAACR,EAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI7C,EAAOkC,CAAY,EAEpC,CACJ,YAAawB,EACb,SAAUC,GACV,GAAGC,EACL,EAAIb,EAAkBT,EAAMC,EAAQ,GAAK,CAAC,EAEpCsB,GAAWC,GAAqBjC,CAAgB,EACpDgB,EACAK,GAAiBL,EAAYL,EAAkBzC,CAAS,EACxD6D,EACF,EAEMG,GAAenC,EAAK,EACvB,KAAKsB,GAAiBL,EAAYL,EAAkBzC,CAAS,CAAC,EAC9D,SAAS8C,CAAU,EAEhBmB,GACJ9D,EAAY,eAAe6D,GAAa,IAAIlC,CAAgB,CAAC,EAEzDmB,GAA4Bb,GAAgB9B,EAElD,aAAMH,EAAY,cAChB6D,GAAa,IAAIlC,CAAgB,EACjC,OACA,CACE,OAAQ,EACV,CACF,EAEImB,KAA8B,gBAC5BS,EAAoB,MAEtBvD,EAAY,eACV6D,GACG,OAAO,MAAM,EACb,OAAOH,IAAiB,CAAC,CAAC,EAC1B,IAAI/B,CAAgB,EACtBoC,IAA6C,CAC5C,GAAI,OAAOR,EAAoB,MAAS,WACtC,OAAOA,EAAoB,KAAKQ,GAAUhC,EAAQD,CAAE,EAGtD,GAAI,CAACiC,GACH,OAAO,KAGT,IAAMC,GAAOD,GAAS,KAAK,IAAKE,IAAkB,CAvXhE,IAAAC,GAwXgB,QAAIA,GAAAD,GAAO,KAAP,YAAAC,GAAW,eAAepC,GAAA,YAAAA,EAAI,YACzB,CACL,GAAAA,EACA,GAAGmC,GACH,GAAGlC,CACL,EAEKkC,EACT,CAAC,EAED,MAAO,CACL,GAAGF,GACH,KAAAC,EACF,CACF,CACF,EAGET,EAAoB,MACtBvD,EAAY,eACV6D,GAAa,OAAO,MAAM,EAAE,IAAIlC,CAAgB,EAC/CoC,IAA6C,CAC5C,GAAI,OAAOR,EAAoB,MAAS,WACtC,OAAOA,EAAoB,KAAKQ,GAAUhC,EAAQD,CAAE,EAGtD,GAAI,CAACiC,GACH,OAAO,KAGT,IAAMC,GAAOD,GAAS,KAAK,IAAKE,IAAkB,CAtZhE,IAAAC,GAuZgB,QAAIA,GAAAD,GAAO,KAAP,YAAAC,GAAW,eAAepC,GAAA,YAAAA,EAAI,cAChCmC,GAAS,CACP,GAAAnC,EACA,GAAGmC,GACH,GAAGlC,CACL,GAEKkC,EACT,CAAC,EACD,MAAO,CACL,GAAGF,GACH,KAAAC,EACF,CACF,CACF,EAGET,EAAoB,QACtBvD,EAAY,eACV6D,GACG,OAAO,KAAK,EACZ,GAAG/B,CAAE,EACL,OAAO4B,IAAiB,CAAC,CAAC,EAC1B,IAAI/B,CAAgB,EACtBoC,IACK,OAAOR,EAAoB,QAAW,WACjCA,EAAoB,OAAOQ,GAAUhC,EAAQD,CAAE,EAGnDiC,GAIE,CACL,GAAGA,GACH,KAAM,CACJ,GAAGA,GAAS,KACZ,GAAGhC,CACL,CACF,EATS,IAWb,GAIG,CACL,gBAAA+B,GACA,SAAAH,EACF,CACF,EACA,UAAW,CAACK,EAAMG,EAAOC,EAAWC,IAAY,CAzcpD,IAAAH,EA0cM,GAAM,CACJ,GAAApC,EAAKhD,EACL,SAAUkD,EAAejD,EACzB,iBAAAuD,GAAmBrD,EACnB,YAAAqF,EAAc5E,GAAwB,CAAC,OAAQ,OAAQ,QAAQ,CACjE,EAAI0E,EACJ,GAAI,OAAOtC,EAAO,IAAa,MAAMS,GACrC,GAAI,CAACP,EAAc,MAAMS,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI7C,EAAOkC,CAAY,EAE1CZ,EAAgB,CACd,SAAUuB,EACV,iBAAkBK,GAChBL,EACAL,GACAzC,CACF,EACA,YAAAyE,EACA,GAAAxC,CACF,CAAC,EAEDd,EAAqB,CACnB,cACA,QAAS,CAAE,GAAAc,EAAI,SAAUa,CAAW,CACtC,CAAC,GAEDuB,EAAAvE,GAAA,YAAAA,EAAiB,YAAjB,MAAAuE,EAAA,KAAAvE,EAA6BqE,EAAMG,EAAOC,EAAWC,EACvD,EACA,UAAW,CAACL,EAAMI,EAAWC,IAAY,CAve7C,IAAAH,GAAAK,GAweM,GAAM,CACJ,GAAAzC,EAAKhD,EACL,SAAUkD,EAAejD,EACzB,oBAAAyF,EAAsBtF,EACtB,iBAAkBuF,GAA2BxF,EAC7C,OAAA8C,EAAS/C,EACT,KAAAoD,EAAOhD,EACP,SAAAiD,EAAWhD,CACb,EAAI+E,EACJ,GAAI,OAAOtC,EAAO,IAAa,MAAMS,GACrC,GAAI,CAACR,EAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,SAAAC,GAAU,WAAAC,EAAW,EAAI7C,EAAOkC,CAAY,EAC9C0C,GAAmBlD,EAAiB,SAASmB,EAAU,EAEvDL,GAAmBU,GACvBL,GACA8B,GACA5E,CACF,EAEM+C,GAAetB,EAAQ,CAC3B,SAAAoB,GACA,KAAMG,EAAkBT,EAAMC,CAAQ,CACxC,CAAC,EAEKsC,GACJ,OAAOH,GAAwB,WAC3BA,EAAoBR,EAAM,CAAE,GAAAlC,EAAI,OAAAC,CAAO,EAAGY,EAAU,EACpD6B,EAENtD,EAAmByD,GAAoB,CACrC,IAAK,GAAG7C,KAAMa,kBACd,YAAarC,EAAU,wBAAyB,YAAY,EAC5D,QAASA,EACP,4BACA,CACE,SAAUA,EACR,GAAGqC,MAAcA,KACjB+B,EACF,CACF,EACA,wBAAwBA,IAC1B,EACA,KAAM,SACR,CAAC,EAED9D,GAAA,MAAAA,EAAU,CACR,QAAS,aAAa8B,GAAS,OAC/B,KAAM,UACN,QAAS,CACP,KAAKwB,GAAAF,EAAK,OAAL,MAAAE,GAAW,GAAK,CAACF,EAAK,KAAK,EAAE,EAAI,MACxC,EACA,KAAM,IAAI,KACV,KAAM,CACJ,GAAGpB,GACH,iBAAAN,EACF,CACF,GAEA,IAAIsC,GACJ,GAAIP,EAAS,CACX,IAAMQ,GAAY7E,EAAY,aAC5BqE,EAAQ,SAAS,OAAOvC,CAAE,CAC5B,EAEA8C,GAAe,OAAO,KAAK7C,GAAU,CAAC,CAAC,EAAE,OAAY,CAAC+C,GAAKC,KAAS,CA3iB5E,IAAAb,GA4iBU,OAAAY,GAAIC,EAAI,GAAIb,GAAAW,IAAA,YAAAA,GAAW,OAAX,YAAAX,GAAkBa,IACvBD,EACT,EAAG,CAAC,CAAC,EAGP,GAAM,CACJ,OAAQE,GACR,UAAWC,GACX,UAAWC,GACX,GAAGC,EACL,EAAIvC,IAAgB,CAAC,EACrB9B,GAAA,MAAAA,EAAK,OAAO,CACV,OAAQ,SACR,SAAU4B,GAAS,KACnB,KAAMX,EACN,aAAA6C,GACA,KAAM,CACJ,GAAA9C,EACA,iBAAAQ,GACA,GAAG6C,EACL,CACF,IAEAZ,GAAA5E,GAAA,YAAAA,EAAiB,YAAjB,MAAA4E,GAAA,KAAA5E,EAA6BqE,EAAMI,EAAWC,EAChD,EACA,QAAS,CAAChB,EAAae,EAAWC,IAAY,CArkBlD,IAAAH,EAskBM,GAAM,CACJ,GAAApC,EAAKhD,EACL,SAAUkD,EAAejD,EACzB,kBAAAqG,EAAoBjG,EACpB,OAAA4C,GAAS/C,CACX,EAAIoF,EACJ,GAAI,OAAOtC,EAAO,IAAa,MAAMS,GACrC,GAAI,CAACR,GAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI7C,EAAOkC,CAAY,EAG1C,GAAIqC,EACF,QAAWgB,KAAShB,EAAQ,gBAC1BrE,EAAY,aAAaqF,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAI/C,GAAIhC,EAAI,UAAY,oBAAqB,CACvC3C,GAAA,MAAAA,EAAa2C,GAEb,IAAMqB,EAAmBlD,EAAiB,SAASmB,CAAU,EAEvDgC,GACJ,OAAOS,GAAsB,WACzBA,EAAkB/B,EAAK,CAAE,GAAAvB,EAAI,OAAAC,EAAO,EAAGY,CAAU,EACjDyC,EAENlE,EAAmByD,GAAoB,CACrC,IAAK,GAAG7C,KAAMa,iBACd,QAASrC,EACP,0BACA,CACE,SAAUA,EACR,GAAGqC,KAAcA,IACjB+B,CACF,EACA,WAAYrB,EAAI,UAClB,EACA,uBAAuBqB,mBAAkCrB,EAAI,aAC/D,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,GAGHa,EAAAvE,GAAA,YAAAA,EAAiB,UAAjB,MAAAuE,EAAA,KAAAvE,EAA2B0D,EAAKe,EAAWC,EAC7C,EACA,YAAa3C,EAAK,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,IAAIC,CAAgB,EAClE,GAAGhC,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,YAAagC,CAAgB,CAC1C,CACF,CAAC,EACK,CAAE,OAAA2D,EAAQ,YAAAC,EAAa,GAAGC,CAAS,EAAI3D,EAEvC,CAAE,YAAA4D,CAAY,EAAIC,GAAmB,CACzC,GAAG9F,EACH,UAAW4F,EAAS,SACtB,CAAC,EA4BD,MAAO,CACL,GAAGA,EACH,OA3BqB3G,EAAA,CACrBuF,EACAuB,IAOOL,EAAOlB,GAAa,CAAC,EAAGuB,CAAO,EATjB,kBA4BrB,YAfwB9G,EAAA,CACxBuF,EACAuB,IAOOJ,EAAYnB,GAAa,CAAC,EAAGuB,CAAO,EATnB,qBAgBxB,SAAU,CAAE,YAAAF,CAAY,CAC1B,CACF,EArfyB,aAufnBhD,GAAuB,IAAI,MAC/B,uEACF,EAEMF,GAAiB,IAAI,MACzB,4EACF,EAEMC,GAAqB,IAAI,MAC7B,uDACF,EE5qBA,IAAAoD,GAAwB,wCACxBC,GAIO,iCAoGA,IAAMC,GAAYC,EAAA,CAIvB,CACA,SAAUC,EACV,OAAQC,EACR,iBAAkBC,EAClB,oBAAqBC,EACrB,kBAAmBC,EACnB,YAAaC,EACb,KAAMC,EACN,SAAUC,EACV,gBAAAC,EACA,gBAAAC,CACF,EAA+C,CAAC,IAKd,CAChC,IAAMC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAeC,GAAgB,EAC/BC,EAAkBC,GAAc,EAChC,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAAIC,EAAY,EACpCC,EAAYC,EAAa,EACzBC,EAAUC,GAAW,EACrB,CAAE,IAAAC,CAAI,EAAIC,GAAO,EACjBC,EAAqBC,GAAsB,EAC3CC,EAAUC,GAAQ,EAClB,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EACf,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAiB,gBAKrB,CACA,WAAY,CAAC,CACX,SAAUC,EAAerC,EACzB,OAAAsC,EAASrC,EACT,KAAAsC,EAAOjC,EACP,SAAAkC,EAAWjC,EACX,iBAAAkC,EAAmBvC,CACrB,IAAkD,CAChD,GAAI,CAACoC,EAAQ,MAAMI,GACnB,GAAI,CAACL,EAAc,MAAMM,GAEzB,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAI1B,EAAOkB,CAAY,EAE9CS,GAAejB,EAAQ,CAC3B,SAAAe,EACA,KAAMG,EAAkBR,EAAMC,CAAQ,CACxC,CAAC,EAED,OAAO1B,EACLkC,GAAiBH,EAAYJ,EAAkBvB,CAAS,CAC1D,EAAE,OAA0B,CAC1B,SAAU0B,EAAS,KACnB,UAAWN,EACX,KAAMQ,GACN,SAAUA,EACZ,CAAC,CACH,EACA,UAAW,CAACG,EAAMC,EAAWC,IAAY,CApL7C,IAAAC,GAAAC,GAAAC,GAqLM,GAAM,CACJ,SAAUjB,EAAerC,EACzB,oBACEuD,EAA8BpD,EAChC,iBAAkBqD,EAA2BtD,EAC7C,YAAAuD,EAAcpD,GAAwB,CAAC,OAAQ,MAAM,EACrD,OAAAiC,GAASrC,EACT,KAAAsC,GAAOjC,EACP,SAAAkC,EAAWjC,CACb,EAAI2C,EACJ,GAAI,CAACZ,GAAQ,MAAMI,GACnB,GAAI,CAACL,EAAc,MAAMM,GAEzB,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAI1B,EAAOkB,CAAY,EAC9CqB,EAAmB3B,EAAiB,SAASc,CAAU,EAEvDJ,EAAmBO,GACvBH,EACAW,EACAtC,CACF,EAEM4B,EAAejB,EAAQ,CAC3B,SAAAe,EACA,KAAMG,EAAkBR,GAAMC,CAAQ,CACxC,CAAC,EAEKmB,GACJ,OAAOJ,GAAgC,WACnCA,EAA4BN,EAAMX,GAAQO,CAAU,EACpDU,EAEN5B,EAAmBgC,GAAoB,CACrC,IAAK,UAAUd,iBACf,QAASxB,EACP,8BACA,CACE,SAAUA,EACR,GAAGwB,KAAcA,IACjBa,CACF,CACF,EACA,wBAAwBA,GAC1B,EACA,YAAarC,EAAU,wBAAyB,SAAS,EACzD,KAAM,SACR,CAAC,EAEDL,EAAgB,CACd,SAAU6B,EACV,iBAAAJ,EACA,YAAAgB,CACF,CAAC,EAEDlC,GAAA,MAAAA,EAAU,CACR,QAAS,aAAaqB,EAAS,OAC/B,KAAM,UACN,QAAS,CACP,KAAKQ,GAAAH,GAAA,YAAAA,EAAM,OAAN,MAAAG,GAAY,GAAK,CAACH,EAAK,KAAK,EAAE,EAAI,MACzC,EACA,KAAM,IAAI,KACV,KAAM,CACJ,GAAGH,EACH,iBAAAL,CACF,CACF,GAEA,GAAM,CACJ,OAAQmB,EACR,UAAWC,EACX,UAAWC,EACX,GAAGC,EACL,EAAIjB,GAAgB,CAAC,EACrBrB,GAAA,MAAAA,EAAK,OAAO,CACV,OAAQ,SACR,SAAUmB,EAAS,KACnB,KAAMN,GACN,KAAM,CACJ,iBAAAG,EACA,KAAIY,GAAAJ,GAAA,YAAAA,EAAM,OAAN,YAAAI,GAAY,KAAM,OACtB,GAAGU,EACL,CACF,IAEAT,GAAA9C,GAAA,YAAAA,EAAiB,YAAjB,MAAA8C,GAAA,KAAA9C,EAA6ByC,EAAMC,EAAWC,EAChD,EACA,QAAS,CAACa,EAAad,EAAWC,IAAY,CA3QlD,IAAAC,EA4QM,GAAM,CACJ,SAAUf,EAAerC,EACzB,kBACEiE,EAA4B7D,EAC9B,OAAAkC,EAASrC,CACX,EAAIiD,EACJ,GAAI,CAACZ,EAAQ,MAAMI,GACnB,GAAI,CAACL,EAAc,MAAMM,GAEzB/B,EAAWoD,CAAG,EAEd,GAAM,CAAE,WAAAnB,CAAW,EAAI1B,EAAOkB,CAAY,EAEpCqB,GAAmB3B,EAAiB,SAASc,CAAU,EAEvDc,GACJ,OAAOM,GAA8B,WACjCA,EAA0BD,EAAK1B,EAAQO,CAAU,EACjDoB,EAENtC,EAAmBgC,GAAoB,CACrC,IAAK,UAAUd,iBACf,YAAamB,EAAI,QACjB,QAAS3C,EACP,4BACA,CACE,SAAUA,EACR,GAAGwB,KAAcA,IACjBa,EACF,EACA,WAAYM,EAAI,UAClB,EACA,+BAA+BN,oBAAkCM,EAAI,aACvE,EACA,KAAM,OACR,CAAC,GAEDZ,EAAA5C,GAAA,YAAAA,EAAiB,UAAjB,MAAA4C,EAAA,KAAA5C,EAA2BwD,EAAKd,EAAWC,EAC7C,EACA,YAAalB,EAAK,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,IAAIC,CAAgB,EAClE,GAAG1B,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,YAAa0B,CAAgB,CAC1C,CACF,CAAC,EACK,CAAE,OAAAgC,EAAQ,YAAAC,EAAa,GAAGC,CAAS,EAAIhC,EAEvC,CAAE,YAAAiC,CAAY,EAAIC,GAAmB,CACzC,GAAG7D,EACH,UAAW2D,EAAS,SACtB,CAAC,EA4BD,MAAO,CACL,GAAGA,EACH,OA3BqBrE,EAAA,CACrBmD,EACAqB,IAOOL,EAAOhB,GAAa,CAAC,EAAGqB,CAAO,EATjB,kBA4BrB,YAfwBxE,EAAA,CACxBmD,EACAqB,IAOOJ,EAAYjB,GAAa,CAAC,EAAGqB,CAAO,EATnB,qBAgBxB,SAAU,CAAE,YAAAF,CAAY,CAC1B,CACF,EAnPyB,aAqPnB1B,GAAuB,IAAI,MAC/B,uEACF,EAEMD,GAAqB,IAAI,MAC7B,uDACF,ECzWA,IAAA8B,GAAwB,wCACxBC,GAKO,iCAgIA,IAAMC,GAAYC,EAAA,CAIvB,CACA,gBAAAC,EACA,gBAAAC,CACF,EAA+C,CAAC,IAI3C,CACH,IAAMC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAeC,GAAgB,EAE/B,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAAIC,EAAY,EACpCC,KAAc,mBAAe,EAE7B,CACJ,aAAcC,EACd,gBAAiBC,CACnB,EAAIC,GAAgB,EAEd,CAAE,qBAAAC,CAAqB,EAAIC,GAAsB,EACjDC,EAAYC,EAAa,EACzBC,EAAUC,GAAW,EACrB,CAAE,IAAAC,CAAI,EAAIC,GAAO,EACjBC,EAAqBC,GAAsB,EAC3CC,EAAkBC,GAAc,EAChCC,EAAUC,GAAQ,EAClB,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EACf,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAW,gBAKf,CACA,WAAY,CAAC,CACX,GAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,SAAUC,EACV,SAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,OAAAC,CACF,IAAM,CACJ,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAIpC,EAAO6B,CAAY,EAE9CQ,EAAenB,EAAQ,CAC3B,SAAAiB,EACA,KAAMG,EAAkBP,EAAMC,CAAQ,CACxC,CAAC,EAEKO,EAA4BZ,GAAgBxB,EAE5CqC,EACJZ,GAAmBxB,EAErB,OAAMmC,IAA8B,WAC3B1C,EACL4C,GAAiBL,EAAYH,EAAkBlC,CAAS,CAC1D,EAAE,UAA6B,CAC7B,SAAUoC,EAAS,KACnB,GAAAT,EACA,KAAMW,EACN,SAAUA,EACV,UAAWH,CACb,CAAC,EAGmB,IAAI,QACxB,CAACQ,EAASC,KAAW,CACnB,IAAMC,GAAatD,EAAA,IAAM,CACvBO,EACE4C,GAAiBL,EAAYH,EAAkBlC,CAAS,CAC1D,EACG,UAA6B,CAC5B,SAAUoC,EAAS,KACnB,GAAAT,EACA,KAAMW,EACN,SAAUA,EACV,UAAWH,CACb,CAAC,EACA,KAAMW,GAAWH,EAAQG,CAAM,CAAC,EAChC,MAAOC,GAAQH,GAAOG,CAAG,CAAC,CAC/B,EAbmB,cAebC,EAAiBzD,EAAA,IAAM,CAC3BqD,GAAO,CAAE,QAAS,mBAAoB,CAAC,CACzC,EAFuB,kBAInBb,GACFA,EAASiB,CAAc,EAGzBzC,EAAqB,CACnB,WACA,QAAS,CACP,GAAAoB,EACA,SAAUU,EACV,eAAgBW,EAChB,WAAYH,GACZ,QAASJ,EACT,SAAU,CAAC,CAACV,CACd,CACF,CAAC,CACH,CACF,CAEF,EACA,SAAU,MAAO,CACf,GAAAJ,EACA,SAAUG,EACV,aAAAF,EACA,iBAAAM,EACA,KAAAF,EACA,SAAAC,CACF,IAAM,CACJ,GAAM,CAAE,WAAAI,CAAW,EAAIpC,EAAO6B,CAAY,EAEpC,CACJ,YAAamB,EACb,SAAUC,EACV,GAAGC,CACL,EAAIZ,EAAkBP,EAAMC,CAAQ,GAAK,CAAC,EAEpCmB,EAAWC,GAAqB7B,CAAgB,EACpDa,EACAK,GAAiBL,EAAYH,EAAkBlC,CAAS,EACxDmD,CACF,EAEMG,EAAe/B,EAAK,EACvB,KAAKmB,GAAiBL,EAAYH,EAAkBlC,CAAS,CAAC,EAC9D,SAASqC,CAAU,EAEhBG,EAA4BZ,GAAgBxB,EAElD,MAAMD,EAAY,cAChBmD,EAAa,IAAI9B,CAAgB,EACjC,OACA,CACE,OAAQ,EACV,CACF,EAEA,IAAM+B,EACJpD,EAAY,eAAemD,EAAa,IAAI9B,CAAgB,CAAC,EAE/D,OAAIgB,IAA8B,gBAEhCrC,EAAY,eACVmD,EACG,OAAO,MAAM,EACb,OAAOH,GAAiB,CAAC,CAAC,EAC1B,IAAI3B,CAAgB,EACtBgC,GACMA,EAOE,CACL,KALWA,EAAS,KAAK,OACxBC,IAAe,CAhT9B,IAAAC,GAgTiC,QAAAA,GAAAD,GAAO,KAAP,YAAAC,GAAW,cAAe/B,EAAG,SAAS,EAC3D,EAIE,MAAO6B,EAAS,MAAQ,CAC1B,EATS,IAWb,EAEArD,EAAY,eACVmD,EAAa,OAAO,MAAM,EAAE,IAAI9B,CAAgB,EAC/CgC,GAA6C,CAC5C,GAAI,CAACA,EACH,OAAO,KAET,IAAMG,EAAOH,EAAS,KAAK,OAAQC,IAAkB,CAhUjE,IAAAC,GAiUc,QAAOA,GAAAD,GAAO,KAAP,YAAAC,GAAW,eAAe/B,GAAA,YAAAA,EAAI,WACvC,CAAC,EAED,MAAO,CACL,GAAG6B,EACH,KAAAG,CACF,CACF,CACF,GAGK,CACL,gBAAAJ,EACA,SAAAH,CACF,CACF,EACA,UAAW,CACTQ,EACAC,EACA,CACE,GAAAlC,EACA,SAAUG,EACV,iBAAAI,EACA,YAAA4B,EAAc,CAAC,OAAQ,MAAM,CAC/B,IACG,CACH,GAAM,CAAE,WAAAzB,CAAW,EAAIpC,EAAO6B,CAAY,EAG1Cb,EAAgB,CACd,SAAUoB,EACV,iBAAkBK,GAChBL,EACAH,EACAlC,CACF,EACA,YAAA8D,CACF,CAAC,EAEDvD,EAAqB,CACnB,cACA,QAAS,CAAE,GAAAoB,EAAI,SAAUU,CAAW,CACtC,CAAC,CACH,EACA,UAAW,CACTuB,EACA,CACE,GAAAjC,EACA,SAAUG,EACV,oBAAAiC,EACA,iBAAkBC,EAClB,KAAAhC,EACA,SAAAC,CACF,EACAgC,IACG,CACH,GAAM,CAAE,SAAA7B,EAAU,WAAAC,CAAW,EAAIpC,EAAO6B,CAAY,EAC9CoC,EAAmB7C,EAAiB,SAASgB,CAAU,EAEvDH,EAAmBQ,GACvBL,EACA2B,EACAhE,CACF,EAEMsC,EAAenB,EAAQ,CAC3B,SAAAiB,EACA,KAAMG,EAAkBP,EAAMC,CAAQ,CACxC,CAAC,EAGD9B,EAAY,cAAc8D,GAAA,YAAAA,EAAS,SAAS,OAAOtC,EAAG,EAEtD,IAAMwC,EACJ,OAAOJ,GAAwB,WAC3BA,EAAoBH,EAAOjC,EAAIU,CAAU,EACzC0B,EAENhD,EAAmBoD,EAAoB,CACrC,IAAK,GAAGxC,KAAMU,iBACd,YAAa5B,EAAU,wBAAyB,SAAS,EACzD,QAASA,EACP,8BACA,CACE,SAAUA,EACR,GAAG4B,KAAcA,IACjB6B,CACF,CACF,EACA,0BAA0BA,GAC5B,EACA,KAAM,SACR,CAAC,EAEDvD,GAAA,MAAAA,EAAU,CACR,QAAS,aAAayB,EAAS,OAC/B,KAAM,UACN,QAAS,CACP,IAAK,CAACT,CAAE,CACV,EACA,KAAM,IAAI,KACV,KAAM,CACJ,GAAGW,EACH,iBAAAJ,CACF,CACF,GAEA,GAAM,CACJ,OAAQkC,EACR,UAAWC,EACX,UAAWC,GACX,GAAGC,EACL,EAAIjC,GAAgB,CAAC,EACrBzB,GAAA,MAAAA,EAAK,OAAO,CACV,OAAQ,SACR,SAAUuB,EAAS,KACnB,KAAM,CACJ,GAAAT,EACA,iBAAAO,EACA,GAAGqC,EACL,CACF,GAGApE,EAAY,cAAc8D,GAAA,YAAAA,EAAS,SAAS,OAAOtC,EAAG,CACxD,EACA,QAAS,CACPoB,EACA,CAAE,GAAApB,EAAI,SAAUG,EAAc,kBAAA0C,CAAkB,EAChDP,IACG,CACH,GAAM,CAAE,WAAA5B,CAAW,EAAIpC,EAAO6B,CAAY,EAG1C,GAAImC,EACF,QAAWQ,KAASR,EAAQ,gBAC1B9D,EAAY,aAAasE,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAI/C,GAAI1B,EAAI,UAAY,oBAAqB,CACvCnD,EAAWmD,CAAG,EAEd,IAAMmB,EAAmB7C,EAAiB,SAASgB,CAAU,EAEvD8B,EACJ,OAAOK,GAAsB,WACzBA,EAAkBzB,EAAKpB,EAAIU,CAAU,EACrCmC,EAENzD,EAAmBoD,EAAoB,CACrC,IAAK,GAAGxC,KAAMU,iBACd,QAAS5B,EACP,4BACA,CACE,SAAUyD,EACV,WAAYnB,EAAI,UAClB,EACA,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,EAEL,EACA,YAAaxB,EAAK,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,IAAIC,CAAgB,EAClE,GAAGhC,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,YAAagC,CAAgB,CAC1C,CACF,CAAC,EAEK,CAAE,YAAAkD,CAAY,EAAIC,GAAmB,CACzC,GAAGlF,EACH,UAAWiC,EAAS,SACtB,CAAC,EAED,MAAO,CAAE,GAAGA,EAAU,SAAU,CAAE,YAAAgD,CAAY,CAAE,CAClD,EA9WyB,aCtIzB,IAAAE,GAAwB,wCACxBC,GAIO,iCAmFA,IAAMC,GAAgBC,EAAA,CAI3B,CACA,SAAUC,EACV,OAAQC,EACR,iBAAkBC,EAClB,oBAAqBC,EACrB,kBAAmBC,EACnB,KAAMC,EACN,SAAUC,EACV,YAAaC,EACb,gBAAAC,EACA,gBAAAC,CACF,EAAmD,CAAC,IAKlB,CAChC,IAAMC,EAAeC,GAAgB,EAC/B,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAAIC,EAAY,EACpCC,EAAYC,EAAa,EACzBC,EAAUC,GAAW,EACrBC,EAAqBC,GAAsB,EAC3CC,EAAkBC,GAAc,EAChC,CAAE,IAAAC,CAAI,EAAIC,GAAO,EACjBC,EAAUC,GAAQ,EAClB,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EACf,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAiB,gBAIrB,CACA,WAAY,CAAC,CACX,SAAUC,EAAejC,EACzB,OAAAkC,EAASjC,EACT,KAAAkC,EAAO9B,EACP,SAAA+B,EAAW9B,EACX,iBAAA+B,EAAmBnC,CACrB,IAAsD,CACpD,GAAI,CAACgC,EAAQ,MAAMI,GACnB,GAAI,CAACL,EAAc,MAAMM,GAEzB,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAI5B,EAAOoB,CAAY,EAE9CS,EAAejB,EAAQ,CAC3B,SAAAe,EACA,KAAMG,EAAkBR,EAAMC,CAAQ,CACxC,CAAC,EAEKQ,EAAuBlC,EAC3BmC,GAAiBJ,EAAYJ,EAAkBzB,CAAS,CAC1D,EAEA,OAAIgC,EAAqB,WAChBA,EAAqB,WAA8B,CACxD,SAAUJ,EAAS,KACnB,UAAWN,EACX,KAAMQ,EACN,SAAUA,CACZ,CAAC,EAEII,GACLZ,EAAO,IAAKa,IACVH,EAAqB,OAA0B,CAC7C,SAAUJ,EAAS,KACnB,UAAWO,GACX,KAAML,EACN,SAAUA,CACZ,CAAC,CACH,CACF,CACF,EACA,UAAW,CAACM,EAAUC,EAAWC,IAAY,CAvKjD,IAAAC,GAwKM,GAAM,CACJ,SAAUlB,EAAejC,EACzB,oBAAAoD,EAAsBjD,EACtB,iBAAkBkD,EAA2BnD,EAC7C,YAAAoD,EAAc/C,GAAwB,CAAC,OAAQ,MAAM,EACrD,OAAA2B,EAASjC,EACT,KAAAkC,EAAO9B,EACP,SAAA+B,GAAW9B,CACb,EAAI2C,EACJ,GAAI,CAACf,EAAQ,MAAMI,GACnB,GAAI,CAACL,EAAc,MAAMM,GAEzB,GAAM,CAAE,SAAAC,GAAU,WAAAC,CAAW,EAAI5B,EAAOoB,CAAY,EAC9CsB,EAAiB5B,EAAiB,OAAOc,CAAU,EAEnDJ,EAAmBQ,GACvBJ,EACAY,EACAzC,CACF,EAEM8B,EAAejB,EAAQ,CAC3B,SAAAe,GACA,KAAMG,EAAkBR,EAAMC,EAAQ,CACxC,CAAC,EAEKoB,EACJ,OAAOJ,GAAwB,WAC3BA,EAAoBJ,EAAUd,EAAQO,CAAU,EAChDW,EAENjC,EAAmBqC,EAAoB,CACrC,IAAK,cAAcf,iBACnB,QAAS1B,EACP,8BACA,CACE,SAAUA,EAAU,GAAG0B,KAAcA,IAAcA,CAAU,CAC/D,EACA,wBAAwBc,GAC1B,EACA,YAAaxC,EAAU,wBAAyB,SAAS,EACzD,KAAM,SACR,CAAC,EAEDM,EAAgB,CACd,SAAUoB,EACV,iBAAAJ,EACA,YAAAiB,CACF,CAAC,EAED,IAAMG,EAAMT,GAAA,YAAAA,EAAU,KACnB,OAAQU,KAASA,IAAA,YAAAA,GAAM,MAAO,QAC9B,IAAKA,IAASA,GAAK,IACtBzC,GAAA,MAAAA,EAAU,CACR,QAAS,aAAauB,GAAS,OAC/B,KAAM,UACN,QAAS,CACP,IAAAiB,CACF,EACA,KAAM,IAAI,KACV,KAAM,CACJ,GAAGf,EACH,iBAAAL,CACF,CACF,GAEA,GAAM,CACJ,OAAQsB,GACR,UAAWC,EACX,UAAWC,EACX,GAAGC,CACL,EAAIpB,GAAgB,CAAC,EACrBnB,GAAA,MAAAA,EAAK,OAAO,CACV,OAAQ,aACR,SAAUiB,GAAS,KACnB,KAAMN,EACN,KAAM,CACJ,iBAAAG,EACA,IAAAoB,EACA,GAAGK,CACL,CACF,IAEAX,GAAA3C,GAAA,YAAAA,EAAiB,YAAjB,MAAA2C,GAAA,KAAA3C,EAA6BwC,EAAUC,EAAWC,EACpD,EACA,QAAS,CAACa,EAAad,EAAWC,IAAY,CA7PlD,IAAAC,EA8PM,GAAM,CACJ,SAAUlB,EAAejC,EACzB,kBAAAgE,EAAoB5D,EACpB,OAAA8B,EAASjC,CACX,EAAIgD,EACJ,GAAI,CAACf,EAAQ,MAAMI,GACnB,GAAI,CAACL,EAAc,MAAMM,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI5B,EAAOoB,CAAY,EAEpCuB,EACJ,OAAOQ,GAAsB,WACzBA,EAAkBD,EAAK7B,EAAQO,CAAU,EACzCuB,EAEN7C,EAAmBqC,EAAoB,CACrC,IAAK,cAAcf,iBACnB,YAAasB,EAAI,QACjB,QAAShD,EACP,4BACA,CACE,SAAUA,EAAU,GAAG0B,KAAcA,IAAcA,CAAU,EAC7D,WAAYsB,EAAI,UAClB,EACA,+BAA+BtB,mBAA4BsB,EAAI,YACjE,EACA,KAAM,OACR,CAAC,GAEDZ,EAAA3C,GAAA,YAAAA,EAAiB,UAAjB,MAAA2C,EAAA,KAAA3C,EAA2BuD,EAAKd,EAAWC,EAC7C,EACA,YAAarB,EAAK,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,IAAIC,CAAgB,EACtE,GAAGtB,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,gBAAiBsB,CAAgB,CAC9C,CACF,CAAC,EACK,CAAE,OAAAmC,EAAQ,YAAAC,EAAa,GAAGC,CAAS,EAAInC,EAEvC,CAAE,YAAAoC,CAAY,EAAIC,GAAmB,CACzC,GAAG5D,EACH,UAAW0D,EAAS,SACtB,CAAC,EA4BD,MAAO,CACL,GAAGA,EACH,OA3BqBpE,EAAA,CACrBkD,EACAqB,IAOOL,EAAOhB,GAAa,CAAC,EAAGqB,CAAO,EATjB,kBA4BrB,YAfwBvE,EAAA,CACxBkD,EACAqB,IAOOJ,EAAYjB,GAAa,CAAC,EAAGqB,CAAO,EATnB,qBAgBxB,SAAU,CAAE,YAAAF,CAAY,CAC1B,CACF,EAnP6B,iBAqPvB7B,GAAuB,IAAI,MAC/B,2EACF,EAEMD,GAAqB,IAAI,MAC7B,2DACF,ECnVA,IAAAiC,GAAwB,wCACxBC,GAKO,iCA4KA,IAAMC,GAAgBC,EAAA,CAI3B,CACA,IAAKC,EACL,SAAUC,EACV,OAAQC,EACR,iBAAkBC,EAClB,oBAAqBC,EACrB,kBAAmBC,EACnB,KAAMC,EACN,SAAUC,EACV,aAAcC,EACd,gBAAiBC,EACjB,SAAUC,EACV,oBAAqBC,EACrB,YAAaC,EACb,gBAAAC,EACA,gBAAAC,CACF,EAAmD,CAAC,IAI/C,CACH,GAAM,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAAIC,EAAY,EACpCC,KAAc,mBAAe,EAC7BC,EAAeC,GAAgB,EAC/BC,EAAYC,EAAa,EACzB,CACJ,aAAcC,EACd,gBAAiBC,CACnB,EAAIC,GAAgB,EACdC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACK,CAAE,qBAAAI,CAAqB,EAAIC,GAAsB,EACjDC,EAAUC,GAAW,EACrBC,EAAqBC,GAAsB,EAC3CC,EAAkBC,GAAc,EAChC,CAAE,IAAAC,CAAI,EAAIC,GAAO,EACjBC,EAAUC,GAAQ,EAClB,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EACf,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAiB,gBAKrB,CACA,WAAY,CAAC,CACX,IAAAC,EAAMhD,EACN,OAAAiD,EAAS/C,EACT,SAAUgD,EAAejD,EACzB,SAAAkD,EAAWzC,EACX,aAAA0C,EAAe5C,EACf,gBAAA6C,EAAkB5C,EAClB,KAAA6C,GAAOhD,EACP,SAAAiD,EAAWhD,EACX,iBAAAiD,EAAmBrD,CACrB,IAAmD,CACjD,GAAI,CAAC6C,EAAK,MAAMS,GAChB,GAAI,CAACR,EAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,SAAAC,EAAU,WAAAC,EAAW,EAAI7C,EAAOkC,CAAY,EAE9CY,GAAetB,EAAQ,CAC3B,SAAAoB,EACA,KAAMG,EAAkBT,GAAMC,CAAQ,CACxC,CAAC,EAEKS,GAA4BZ,GAAgB7B,EAE5C0C,GACJZ,GAAmB7B,EAEf0C,GAAuB/C,EAC3BgD,GAAiBN,GAAYL,EAAkBzC,CAAS,CAC1D,EAEMqD,GAAarE,EAAA,IACbmE,GAAqB,WAChBA,GAAqB,WAA8B,CACxD,SAAUN,EAAS,KACnB,IAAAZ,EACA,UAAWC,EACX,KAAMa,GACN,SAAUA,EACZ,CAAC,EAEIO,GACLrB,EAAI,IAAKsB,IACPJ,GAAqB,OAA0B,CAC7C,SAAUN,EAAS,KACnB,GAAAU,GACA,UAAWrB,EACX,KAAMa,GACN,SAAUA,EACZ,CAAC,CACH,CACF,EApBiB,cAuBnB,OAAME,KAA8B,WAC3BI,GAAW,EAGE,IAAI,QACxB,CAACG,GAASC,KAAW,CACnB,IAAMC,GAAa1E,EAAA,IAAM,CACvBqE,GAAW,EACR,KAAMM,IAAWH,GAAQG,EAAM,CAAC,EAChC,MAAOC,IAAQH,GAAOG,EAAG,CAAC,CAC/B,EAJmB,cAMbC,GAAiB7E,EAAA,IAAM,CAC3ByE,GAAO,CAAE,QAAS,mBAAoB,CAAC,CACzC,EAFuB,kBAInBrB,GACFA,EAASyB,EAAc,EAGzB9C,EAAqB,CACnB,WACA,QAAS,CACP,GAAIkB,EACJ,SAAUa,GACV,eAAgBe,GAChB,WAAYH,GACZ,QAASR,GACT,SAAU,CAAC,CAACd,CACd,CACF,CAAC,CACH,CACF,CAEF,EACA,SAAU,MAAO,CACf,SAAUD,EAAejD,EACzB,IAAA+C,EAAMhD,EACN,OAAAiD,EAAS/C,EACT,aAAAkD,EAAe5C,EACf,iBAAAgD,EAAmBrD,EACnB,KAAAmD,EAAOhD,EACP,SAAAiD,GAAWhD,EACX,oBAAAsE,EAAsBlE,GAAgC,CACpD,KAAM,GACN,KAAM,GACN,OAAQ,EACV,CACF,IAAM,CACJ,GAAI,CAACqC,EAAK,MAAMS,GAChB,GAAI,CAACR,EAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI7C,EAAOkC,CAAY,EACpC,CACJ,YAAa4B,EACb,SAAUC,GACV,GAAGC,EACL,EAAIjB,EAAkBT,EAAMC,EAAQ,GAAK,CAAC,EAEpC0B,GAAWC,GAAqBrC,CAAgB,EACpDgB,EACAM,GAAiBN,EAAYL,EAAkBzC,CAAS,EACxDiE,EACF,EAEMG,GAAevC,EAAK,EACvB,KAAKuB,GAAiBN,EAAYL,EAAkBzC,CAAS,CAAC,EAC9D,SAAS8C,CAAU,EAEhBG,GAA4BZ,GAAgB7B,EAElD,MAAML,EAAY,cAChBiE,GAAa,IAAItC,CAAgB,EACjC,OACA,CACE,OAAQ,EACV,CACF,EAEA,IAAMuC,GAAkBlE,EAAY,eAClCiE,GAAa,IAAItC,CAAgB,CACnC,EAEA,GAAImB,KAA8B,gBAC5Ba,EAAoB,MAEtB3D,EAAY,eACViE,GACG,OAAO,MAAM,EACb,OAAOH,IAAiB,CAAC,CAAC,EAC1B,IAAInC,CAAgB,EACtBwC,IAA6C,CAC5C,GAAI,OAAOR,EAAoB,MAAS,WACtC,OAAOA,EAAoB,KAAKQ,GAAUpC,EAAQD,CAAG,EAGvD,GAAI,CAACqC,GACH,OAAO,KAGT,IAAMC,GAAOD,GAAS,KAAK,IAAKE,IAE5BA,GAAO,KAAO,QACdvC,EACG,OAAQsB,IAAOA,KAAO,MAAS,EAC/B,IAAI,MAAM,EACV,SAASiB,GAAO,GAAG,SAAS,CAAC,EAEzB,CACL,GAAGA,GACH,GAAGtC,CACL,EAGKsC,EACR,EAED,MAAO,CACL,GAAGF,GACH,KAAAC,EACF,CACF,CACF,EAGET,EAAoB,MACtB3D,EAAY,eACViE,GAAa,OAAO,MAAM,EAAE,IAAItC,CAAgB,EAC/CwC,IAA6C,CAC5C,GAAI,OAAOR,EAAoB,MAAS,WACtC,OAAOA,EAAoB,KAAKQ,GAAUpC,EAAQD,CAAG,EAGvD,GAAI,CAACqC,GACH,OAAO,KAGT,IAAMC,GAAOD,GAAS,KAAK,IAAKE,IAE5BA,GAAO,KAAO,QACdvC,EACG,OAAQsB,IAAOA,KAAO,MAAS,EAC/B,IAAI,MAAM,EACV,SAASiB,GAAO,GAAG,SAAS,CAAC,EAEzB,CACL,GAAGA,GACH,GAAGtC,CACL,EAEKsC,EACR,EACD,MAAO,CACL,GAAGF,GACH,KAAAC,EACF,CACF,CACF,EAGET,EAAoB,QACtB,QAAWP,MAAMtB,EACf9B,EAAY,eACViE,GACG,OAAO,KAAK,EACZ,GAAGb,EAAE,EACL,OAAOU,IAAiB,CAAC,CAAC,EAC1B,IAAInC,CAAgB,EACtBwC,IAA4C,CAC3C,GAAI,OAAOR,EAAoB,QAAW,WACxC,OAAOA,EAAoB,OAAOQ,GAAUpC,EAAQqB,EAAE,EAGxD,GAAI,CAACe,GACH,OAAO,KAGT,IAAMC,GAAO,CACX,GAAGD,GAAS,KACZ,GAAGpC,CACL,EACA,MAAO,CACL,GAAGoC,GACH,KAAAC,EACF,CACF,CACF,EAKN,MAAO,CACL,gBAAAF,GACA,SAAAH,EACF,CACF,EACA,UAAW,CAACK,EAAME,EAAOC,EAAWC,IAAY,CAnepD,IAAAC,EAoeM,GAAM,CACJ,IAAA3C,EAAMhD,EACN,SAAUkD,EAAejD,EACzB,iBAAAuD,GAAmBrD,EACnB,YAAAyF,EAAchF,CAChB,EAAI6E,EACJ,GAAI,CAACzC,EAAK,MAAMS,GAChB,GAAI,CAACP,EAAc,MAAMS,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI7C,EAAOkC,CAAY,EAG1Cd,EAAgB,CACd,SAAUyB,EACV,YAAa+B,GAAe,CAAC,OAAQ,MAAM,EAC3C,iBAAkBzB,GAChBN,EACAL,GACAzC,CACF,CACF,CAAC,EAEDiC,EAAI,QAASsB,IACXlC,EAAgB,CACd,SAAUyB,EACV,YAAa+B,GAAe,CAAC,QAAQ,EACrC,iBAAkBzB,GAChBN,EACAL,GACAzC,CACF,EACA,GAAAuD,EACF,CAAC,CACH,EAEAxC,EAAqB,CACnB,cACA,QAAS,CAAE,GAAIkB,EAAK,SAAUa,CAAW,CAC3C,CAAC,GAED8B,EAAA9E,GAAA,YAAAA,EAAiB,YAAjB,MAAA8E,EAAA,KAAA9E,EAA6ByE,EAAME,EAAOC,EAAWC,EACvD,EACA,UAAW,CAACJ,EAAMG,EAAWC,IAAY,CA9gB7C,IAAAC,GA+gBM,GAAM,CACJ,IAAA3C,EAAMhD,EACN,SAAUkD,EAAejD,EACzB,OAAAgD,EAAS/C,EACT,KAAAoD,GAAOhD,EACP,SAAAiD,EAAWhD,EACX,iBAAkBsF,EAA2B1F,EAC7C,oBAAA2F,EAAsB1F,CACxB,EAAIqF,EACJ,GAAI,CAACzC,EAAK,MAAMS,GAChB,GAAI,CAACR,EAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,SAAAC,GAAU,WAAAC,EAAW,EAAI7C,EAAOkC,CAAY,EAC9C6C,GAAmBrD,EAAiB,SAASmB,EAAU,EAEvDL,GAAmBW,GACvBN,GACAgC,EACA9E,CACF,EAEM+C,GAAetB,EAAQ,CAC3B,SAAAoB,GACA,KAAMG,EAAkBT,GAAMC,CAAQ,CACxC,CAAC,EAEKyC,GACJ,OAAOF,GAAwB,WAC3BA,EAAoBR,EAAM,CAAE,IAAAtC,EAAK,OAAAC,CAAO,EAAGY,EAAU,EACrDiC,EAEN5D,EAAmB8D,GAAoB,CACrC,IAAK,GAAGhD,KAAOa,kBACf,YAAaxC,EAAU,wBAAyB,YAAY,EAC5D,QAASA,EACP,4BACA,CACE,SAAUA,EAAU,GAAGwC,MAAcA,KAAcA,EAAU,CAC/D,EACA,wBAAwBkC,IAC1B,EACA,KAAM,SACR,CAAC,EAED/D,GAAA,MAAAA,EAAU,CACR,QAAS,aAAa4B,GAAS,OAC/B,KAAM,UACN,QAAS,CACP,IAAKZ,EAAI,IAAI,MAAM,CACrB,EACA,KAAM,IAAI,KACV,KAAM,CACJ,GAAGc,GACH,iBAAAN,EACF,CACF,GAEA,IAAMyC,GAAsB,CAAC,EACzBP,GACF1C,EAAI,QAASsB,IAAO,CAClB,IAAM4B,GAAYhF,EAAY,aAC5BwE,EAAQ,SAAS,OAAOpB,EAAE,CAC5B,EAEA2B,GAAa,KACX,OAAO,KAAKhD,GAAU,CAAC,CAAC,EAAE,OAAY,CAACkD,GAAKC,KAAc,CAjlBtE,IAAAT,GAklBc,OAAAQ,GAAIC,EAAI,GAAIT,GAAAO,IAAA,YAAAA,GAAW,OAAX,YAAAP,GAAkBS,IACvBD,EACT,EAAG,CAAC,CAAC,CACP,CACF,CAAC,EAGH,GAAM,CACJ,OAAQE,GACR,UAAWC,GACX,UAAWC,GACX,GAAGC,EACL,EAAI1C,IAAgB,CAAC,EACrBxB,GAAA,MAAAA,EAAK,OAAO,CACV,OAAQ,aACR,SAAUsB,GAAS,KACnB,KAAMX,EACN,aAAAgD,GACA,KAAM,CACJ,IAAAjD,EACA,iBAAAQ,GACA,GAAGgD,EACL,CACF,IAEAb,GAAA9E,GAAA,YAAAA,EAAiB,YAAjB,MAAA8E,GAAA,KAAA9E,EAA6ByE,EAAMG,EAAWC,EAChD,EACA,QAAS,CAACf,EAAac,EAAWC,IAAY,CA7mBlD,IAAAC,EA8mBM,GAAM,CACJ,IAAA3C,EAAMhD,EACN,SAAUkD,EAAejD,EACzB,kBAAAwG,EAAoBpG,EACpB,OAAA4C,GAAS/C,CACX,EAAIuF,EACJ,GAAI,CAACzC,EAAK,MAAMS,GAChB,GAAI,CAACR,GAAQ,MAAMS,GACnB,GAAI,CAACR,EAAc,MAAMS,GAEzB,GAAM,CAAE,WAAAE,CAAW,EAAI7C,EAAOkC,CAAY,EAG1C,GAAIwC,EACF,QAAWgB,KAAShB,EAAQ,gBAC1BxE,EAAY,aAAawF,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAI/C,GAAI/B,EAAI,UAAY,oBAAqB,CACvC/C,GAAA,MAAAA,EAAa+C,GAEb,IAAMoB,EAAmBrD,EAAiB,SAASmB,CAAU,EAEvDmC,GACJ,OAAOS,GAAsB,WACzBA,EAAkB9B,EAAK,CAAE,IAAA3B,EAAK,OAAAC,EAAO,EAAGY,CAAU,EAClD4C,EAENvE,EAAmB8D,GAAoB,CACrC,IAAK,GAAGhD,KAAOa,kCACf,QAASxC,EACP,0BACA,CACE,SAAU0E,EACV,WAAYpB,EAAI,UAClB,EACA,uBAAuBoB,mBAAkCpB,EAAI,aAC/D,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,GAGHgB,EAAA9E,GAAA,YAAAA,EAAiB,UAAjB,MAAA8E,EAAA,KAAA9E,EAA2B8D,EAAKc,EAAWC,EAC7C,EACA,YAAa9C,EAAK,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,IAAIC,CAAgB,EACtE,GAAGhC,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,gBAAiBgC,CAAgB,CAC9C,CACF,CAAC,EACK,CAAE,OAAA8D,EAAQ,YAAAC,EAAa,GAAGC,CAAS,EAAI9D,EAEvC,CAAE,YAAA+D,CAAY,EAAIC,GAAmB,CACzC,GAAGjG,EACH,UAAW+F,EAAS,SACtB,CAAC,EA4BD,MAAO,CACL,GAAGA,EACH,OA3BqB9G,EAAA,CACrB0F,EACAuB,IAOOL,EAAOlB,GAAa,CAAC,EAAGuB,CAAO,EATjB,kBA4BrB,YAfwBjH,EAAA,CACxB0F,EACAuB,IAOOJ,EAAYnB,GAAa,CAAC,EAAGuB,CAAO,EATnB,qBAgBxB,SAAU,CAAE,YAAAF,CAAY,CAC1B,CACF,EAxhB6B,iBA0hBvBnD,GAAuB,IAAI,MAC/B,2EACF,EAEMF,GAAiB,IAAI,MACzB,gFACF,EAEMC,GAAqB,IAAI,MAC7B,2DACF,ECttBA,IAAAuD,GAAwB,wCACxBC,GAKO,iCAiIA,IAAMC,GAAgBC,EAAA,CAI3B,CACA,gBAAAC,EACA,gBAAAC,CACF,EAAmD,CAAC,IAI/C,CACH,IAAMC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EAEK,CACJ,aAAcI,EACd,gBAAiBC,CACnB,EAAIC,GAAgB,EACdC,EAAeC,GAAgB,EAC/B,CAAE,qBAAAC,CAAqB,EAAIC,GAAsB,EACjDC,EAAYC,EAAa,EACzBC,EAAUC,GAAW,EACrBC,EAAqBC,GAAsB,EAC3CC,EAAkBC,GAAc,EAChC,CAAE,IAAAC,CAAI,EAAIC,GAAO,EACjB,CAAE,UAAAC,EAAW,OAAAC,CAAO,EAAIC,EAAY,EACpCC,KAAc,mBAAe,EAC7BC,EAAUC,GAAQ,EAClB,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EACf,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAW,gBAKf,CACA,WAAY,CAAC,CACX,SAAUC,EACV,IAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,OAAAC,CACF,IAAmD,CACjD,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAIrB,EAAOW,CAAY,EAE9CW,EAAenB,EAAQ,CAC3B,SAAAiB,EACA,KAAMG,EAAkBP,EAAMC,CAAQ,CACxC,CAAC,EAEKO,EAA4BX,GAAgB/B,EAE5C2C,EACJX,GAAmB/B,EAEf2C,EAAuBzC,EAC3B0C,GAAiBN,EAAYH,EAAkBnB,CAAS,CAC1D,EAEM6B,EAAarD,EAAA,IACbmD,EAAqB,WAChBA,EAAqB,WAA8B,CACxD,SAAUN,EAAS,KACnB,IAAAR,EACA,KAAMU,EACN,SAAUA,EACV,UAAWH,CACb,CAAC,EAEIU,GACLjB,EAAI,IAAKkB,IACPJ,EAAqB,UAA6B,CAChD,SAAUN,EAAS,KACnB,GAAAU,GACA,KAAMR,EACN,SAAUA,EACV,UAAWH,CACb,CAAC,CACH,CACF,EApBiB,cAuBnB,OAAMK,IAA8B,WAC3BI,EAAW,EAGE,IAAI,QACxB,CAACG,GAASC,IAAW,CACnB,IAAMC,EAAa1D,EAAA,IAAM,CACvBqD,EAAW,EACR,KAAMM,GAAWH,GAAQG,CAAM,CAAC,EAChC,MAAOC,GAAQH,EAAOG,CAAG,CAAC,CAC/B,EAJmB,cAMbC,EAAiB7D,EAAA,IAAM,CAC3ByD,EAAO,CAAE,QAAS,mBAAoB,CAAC,CACzC,EAFuB,kBAInBjB,GACFA,EAASqB,CAAc,EAGzBjD,EAAqB,CACnB,WACA,QAAS,CACP,GAAIyB,EACJ,SAAUS,EACV,eAAgBe,EAChB,WAAYH,EACZ,QAASR,EACT,SAAU,CAAC,CAACV,CACd,CACF,CAAC,CACH,CACF,CAEF,EACA,SAAU,MAAO,CACf,IAAAH,EACA,SAAUD,EACV,aAAAE,EACA,iBAAAK,EACA,KAAAF,EACA,SAAAC,CACF,IAAM,CACJ,GAAM,CAAE,WAAAI,CAAW,EAAIrB,EAAOW,CAAY,EAEpC,CACJ,YAAa0B,EACb,SAAUC,EACV,GAAGC,CACL,EAAIhB,EAAkBP,EAAMC,CAAQ,GAAK,CAAC,EAEpCuB,EAAWC,GAAqBjC,CAAgB,EACpDa,EACAM,GAAiBN,EAAYH,EAAkBnB,CAAS,EACxDwC,CACF,EAEMG,EAAenC,EAAK,EACvB,KAAKoB,GAAiBN,EAAYH,EAAkBnB,CAAS,CAAC,EAC9D,SAASsB,CAAU,EAEhBG,EAA4BX,GAAgB/B,EAElD,MAAMoB,EAAY,cAChBwC,EAAa,IAAIlC,CAAgB,EACjC,OACA,CACE,OAAQ,EACV,CACF,EAEA,IAAMmC,EACJzC,EAAY,eAAewC,EAAa,IAAIlC,CAAgB,CAAC,EAE/D,GAAIgB,IAA8B,cAAe,CAE/CtB,EAAY,eACVwC,EACG,OAAO,MAAM,EACb,OAAOH,GAAiB,CAAC,CAAC,EAC1B,IAAI/B,CAAgB,EACtBoC,GACMA,EASE,CACL,KANWA,EAAS,KAAK,OACxBC,IACCA,GAAK,IAAM,CAACjC,EAAI,IAAI,MAAM,EAAE,SAASiC,GAAK,GAAG,SAAS,CAAC,CAC3D,EAIE,MAAOD,EAAS,MAAQ,CAC1B,EAXS,IAab,EAEA1C,EAAY,eACVwC,EAAa,OAAO,MAAM,EAAE,IAAIlC,CAAgB,EAC/CoC,GAA6C,CAC5C,GAAI,CAACA,EACH,OAAO,KAGT,IAAME,EAAOF,EAAS,KAAK,OAAQG,IAC7BA,GAAO,GACF,CAACnC,EAAI,IAAI,MAAM,EAAE,SAASmC,GAAO,GAAG,SAAS,CAAC,EAEhD,EACR,EAED,MAAO,CACL,GAAGH,EACH,KAAAE,CACF,CACF,CACF,EAEA,QAAWhB,KAAMlB,EACfV,EAAY,eACVwC,EACG,OAAO,KAAK,EACZ,GAAGZ,CAAE,EACL,OAAOS,CAAa,EACpB,IAAI/B,CAAgB,EACtBoC,GACK,CAACA,GAAYA,EAAS,KAAK,KAAOd,EAC7B,KAEF,CACL,GAAGc,CACL,CAEJ,EAIJ,MAAO,CACL,gBAAAD,EACA,SAAAH,CACF,CACF,EAEA,UAAW,CACTQ,EACAC,EACA,CACE,SAAUtC,EACV,IAAAC,EACA,iBAAAM,EACA,YAAAgC,EAAc,CAAC,OAAQ,MAAM,CAC/B,IACG,CACH,GAAM,CAAE,WAAA7B,CAAW,EAAIrB,EAAOW,CAAY,EAG1ChB,EAAgB,CACd,SAAU0B,EACV,iBAAkBM,GAChBN,EACAH,EACAnB,CACF,EACA,YAAAmD,CACF,CAAC,EAED/D,EAAqB,CACnB,cACA,QAAS,CAAE,GAAIyB,EAAK,SAAUS,CAAW,CAC3C,CAAC,CACH,EACA,UAAW,CACT2B,EACA,CACE,IAAApC,EACA,SAAUD,EACV,KAAAK,EACA,SAAAC,EACA,iBAAkBkC,EAClB,oBAAAC,CACF,EACAC,IACG,CACH,GAAM,CAAE,SAAAjC,EAAU,WAAAC,CAAW,EAAIrB,EAAOW,CAAY,EAE9CO,EAAmBS,GACvBN,EACA8B,EACApD,CACF,EAEMuB,EAAenB,EAAQ,CAC3B,SAAAiB,EACA,KAAMG,EAAkBP,EAAMC,CAAQ,CACxC,CAAC,EAGDL,EAAI,QAASkB,IACX5B,EAAY,cAAcmD,GAAA,YAAAA,EAAS,SAAS,OAAOvB,GAAG,CACxD,EAEA,IAAMwB,EACJ,OAAOF,GAAwB,WAC3BA,EAAoBJ,EAAOpC,EAAKS,CAAU,EAC1C+B,EAEN3D,EAAmB6D,EAAoB,CACrC,IAAK,GAAG1C,KAAOS,iBACf,YAAahC,EAAU,wBAAyB,SAAS,EACzD,QAASA,EACP,8BACA,CACE,SAAUA,EAAU,GAAGgC,KAAcA,IAAcA,CAAU,CAC/D,EACA,wBAAwBA,GAC1B,EACA,KAAM,SACR,CAAC,EAED9B,GAAA,MAAAA,EAAU,CACR,QAAS,aAAa6B,EAAS,OAC/B,KAAM,UACN,QAAS,CAAE,IAAAR,CAAI,EACf,KAAM,IAAI,KACV,KAAM,CACJ,GAAGU,EACH,iBAAAJ,CACF,CACF,GAEA,GAAM,CACJ,OAAQqC,EACR,UAAWC,EACX,UAAWC,EACX,GAAGC,EACL,EAAIpC,GAAgB,CAAC,EACrBzB,GAAA,MAAAA,EAAK,OAAO,CACV,OAAQ,aACR,SAAUuB,EAAS,KACnB,KAAM,CACJ,IAAAR,EACA,iBAAAM,EACA,GAAGwC,EACL,CACF,GAGA9C,EAAI,QAASkB,IACX5B,EAAY,cAAcmD,GAAA,YAAAA,EAAS,SAAS,OAAOvB,GAAG,CACxD,CACF,EACA,QAAS,CACPK,EACA,CAAE,IAAAvB,EAAK,SAAUD,EAAc,kBAAAgD,CAAkB,EACjDN,IACG,CACH,GAAM,CAAE,WAAAhC,CAAW,EAAIrB,EAAOW,CAAY,EAG1C,GAAI0C,EACF,QAAWO,KAASP,EAAQ,gBAC1BnD,EAAY,aAAa0D,EAAM,CAAC,EAAGA,EAAM,CAAC,CAAC,EAI/C,GAAIzB,EAAI,UAAY,oBAAqB,CACvCvD,EAAWuD,CAAG,EACd,IAAM0B,EAAmBxD,EAAiB,SAASgB,CAAU,EAEvDiC,EACJ,OAAOK,GAAsB,WACzBA,EAAkBxB,EAAKvB,EAAKS,CAAU,EACtCsC,EAENlE,EAAmB6D,EAAoB,CACrC,IAAK,GAAG1C,KAAOS,iBACf,QAAShC,EACP,4BACA,CACE,SAAUwE,EACV,WAAY1B,EAAI,UAClB,EACA,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,EAEL,EACA,YAAa5B,EAAK,EAAE,KAAK,EAAE,SAAS,YAAY,EAAE,IAAIC,CAAgB,EACtE,GAAGhC,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,gBAAiBgC,CAAgB,CAC9C,CACF,CAAC,EAEK,CAAE,YAAAsD,CAAY,EAAIC,GAAmB,CACzC,GAAGtF,EACH,UAAWiC,EAAS,SACtB,CAAC,EAED,MAAO,CAAE,GAAGA,EAAU,SAAU,CAAE,YAAAoD,CAAY,CAAE,CAClD,EA5Y6B,iBCpItB,IAAME,GAAYC,EAACC,GAAsC,CAHhE,IAAAC,EAIE,IAAMC,EAAeC,GAAgB,EAC/B,CAAE,SAAAC,CAAS,EAAIC,EAAY,EAE3B,CAAE,UAAAC,CAAU,EAAIJ,EACpBF,KACEC,EAAAM,EAAkBH,GAAA,YAAAA,EAAU,KAAMA,GAAA,YAAAA,EAAU,OAAO,IAAnD,YAAAH,EAAsD,iBAC1D,EAEA,OAAOK,EAAU,CACnB,EAVyB,aCHzB,IAAAE,GAAwB,wCACxBC,GAIO,iCAoGA,IAAMC,GAAYC,EAAA,CAMvB,CACA,IAAAC,EACA,OAAAC,EACA,OAAAC,EACA,aAAAC,EACA,oBAAAC,EACA,kBAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,IAOkC,CAChC,IAAMC,EAAeC,GAAgB,EAC/BC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAYC,EAAa,EACzBC,EAAqBC,GAAsB,EAC3CC,EAAUC,GAAQ,EAClB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAgBC,EAAkBpB,EAAMC,CAAQ,EAEhD,CAAE,OAAAoB,CAAO,EAAIjB,EAAaF,CAAgB,EAE1CoB,EAAeR,EAAQ,CAAE,KAAMK,CAAc,CAAC,EAEpD,GAAIE,EAAQ,CACV,IAAME,KAAgB,aAIpB,CACA,SAAUP,EAAK,EACZ,KAAKd,CAAgB,EACrB,SAAS,QAAQ,EACjB,OAAO,CACN,OAAAP,EACA,IAAAD,EACA,GAAGE,EACH,GAAIuB,GAAiB,CAAC,CACxB,CAAC,EACA,IAAIF,CAAgB,EACvB,QAAUO,GACRH,EAAqB,CACnB,IAAA3B,EACA,OAAAC,EACA,GAAGC,EACH,KAAM,CACJ,GAAG0B,EACH,aAAcG,GAAoBD,CAAO,CAC3C,EACA,SAAU,CACR,GAAGF,EACH,aAAcG,GAAoBD,CAAO,CAC3C,CACF,CAAC,EACH,GAAG3B,EACH,UAAY6B,GAAS,CAjL3B,IAAAC,GAkLQA,EAAA9B,GAAA,YAAAA,EAAc,YAAd,MAAA8B,EAAA,KAAA9B,EAA0B6B,GAE1B,IAAME,EACJ,OAAO9B,GAAwB,WAC3BA,EAAoB4B,EAAM,CACxB,GAAG9B,EACH,GAAG0B,CACL,CAAC,EACDxB,EAENc,EAAmBgB,CAAkB,CACvC,EACA,QAAUC,GAAgB,CA9LhC,IAAAF,EA+LQnB,EAAWqB,CAAG,GACdF,EAAA9B,GAAA,YAAAA,EAAc,UAAd,MAAA8B,EAAA,KAAA9B,EAAwBgC,GAExB,IAAMD,EACJ,OAAO7B,GAAsB,WACzBA,EAAkB8B,EAAK,CACrB,GAAGjC,EACH,GAAG0B,CACL,CAAC,EACDvB,EAENa,EAAmBgB,EAAoB,CACrC,IAAK,GAAGjC,iBACR,QAASe,EACP,sBACA,CAAE,WAAYmB,EAAI,UAAW,EAC7B,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,CACH,EACA,KAAM,CACJ,GAAGhC,GAAA,YAAAA,EAAc,KACjB,MAAG,YAAQ,YAAaoB,CAAgB,CAC1C,CACF,CAAC,EACK,CAAE,YAAAa,CAAY,EAAIC,GAAmB,CACzC,GAAG5B,EACH,UAAWoB,EAAc,UAC3B,CAAC,EAED,MAAO,CAAE,GAAGA,EAAe,SAAU,CAAE,YAAAO,CAAY,CAAE,EAEvD,MAAM,MAAM,0CAA0C,CACxD,EAzHyB,aCzGzB,IAAAE,GAAwB,wCACxBC,GAIO,iCA2FA,IAAMC,GAAoBC,EAAA,CAI/B,CACA,gBAAAC,EACA,gBAAAC,CACF,EAII,CAAC,IAC6B,CAChC,IAAMC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAqBC,GAAsB,EAC3CC,EAAeC,GAAgB,EAC/BC,EAAYC,EAAa,EACzBC,EAAUC,GAAQ,EAClB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAW,gBAMf,CAAC,CACC,IAAAC,EACA,OAAAC,EACA,OAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,OAAAC,CACF,IAA0D,CACxD,IAAMC,EAAeb,EAAQ,CAC3B,KAAMc,EAAkBL,EAAMC,CAAQ,CACxC,CAAC,EAEK,CAAE,OAAAK,CAAO,EAAInB,EAAae,CAAgB,EAEhD,GAAII,EACF,OAAOA,EAAc,CACnB,IAAAT,EACA,OAAAC,EACA,QAASC,EACT,KAAMK,EACN,SAAUA,EACV,QAAS,CAAE,GAAGD,GAAA,YAAAA,EAAQ,OAAQ,CAChC,CAAC,EAGH,MAAM,MAAM,0CAA0C,CACxD,EACA,CACE,UAAW,CACTI,EACA,CACE,oBAAqBC,EACrB,OAAAL,EACA,KAAAH,EACA,SAAAC,CACF,IACG,CACH,IAAMQ,EACJ,OAAOD,GAAgC,WACnCA,EAA4BD,EAAM,CAChC,GAAGJ,EACH,GAAIE,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAC5C,CAAC,EACDO,EAENvB,EAAmBwB,CAAkB,CACvC,EACA,QAAS,CACPC,EACA,CACE,kBAAmBC,EACnB,OAAAb,EACA,OAAAK,EACA,KAAAH,EACA,SAAAC,CACF,IACG,CACHlB,EAAW2B,CAAG,EAEd,IAAMD,EACJ,OAAOE,GAA8B,WACjCA,EAA0BD,EAAK,CAC7B,GAAGP,EACH,GAAIE,EAAkBL,EAAMC,CAAQ,GAAK,CAAC,CAC5C,CAAC,EACDU,EAEN1B,EAAmBwB,EAAoB,CACrC,IAAK,GAAGX,iBACR,QAAST,EACP,sBACA,CAAE,WAAYqB,EAAI,UAAW,EAC7B,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,CACH,EACA,YAAajB,EAAK,EACf,KAAK,EACL,SAAS,gBAAgB,EACzB,IAAIC,CAAgB,EACvB,GAAGf,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAiB,KACpB,MAAG,YAAQ,oBAAqBe,CAAgB,CAClD,CACF,CACF,EAEM,CAAE,YAAAkB,CAAY,EAAIC,GAAmB,CACzC,GAAGjC,EACH,UAAWgB,EAAS,SACtB,CAAC,EAED,MAAO,CAAE,GAAGA,EAAU,SAAU,CAAE,YAAAgB,CAAY,CAAE,CAClD,EA9HiC,qBChGjC,IAAAE,GAAwC,iBCAxC,IAAAC,GAA8C,oBAIvC,IAAMC,GAAqC,CAChD,QAAS,CAAC,CACZ,EAEaC,GACX,GAAAC,QAAM,cAA4BF,EAAmB,EAM1CG,GAAuCC,EAAA,CAAC,CACnD,SAAAC,EACA,aAAAC,CACF,IAAM,CACJ,IAAIC,EAAgBP,GAEpB,OAAIM,IAEA,EAAE,YAAaA,KACd,YAAaA,GAAgB,WAAYA,GAE1CC,EAAgB,CACd,QAASD,CACX,EAEAC,EAAgBD,GAKlB,GAAAJ,QAAA,cAACD,GAAY,SAAZ,CAAqB,MAAOM,GAC1BF,CACH,CAEJ,EAxBoD,uBDX7C,IAAMG,GAAkBC,EAAA,IAKT,CACpB,IAAMC,KAAU,eAAWC,EAAW,EA8BtC,SA5B2B,gBACxBC,GAA8B,CAC7B,GAAIA,EAAkB,CACpB,IAAMC,EAAeH,GAAA,YAAAA,EAAUE,GAC/B,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,IAAID,4BAA2C,EAGjE,GAAIC,GAAgB,EAACH,GAAA,MAAAA,EAAS,SAC5B,MAAM,IAAI,MACR,sFACF,EAGF,OAAOA,EAAQE,CAAgB,EAGjC,GAAIF,EAAQ,QACV,OAAOA,EAAQ,QAGjB,MAAM,IAAI,MACR,oEACF,CACF,EACA,CAACA,CAAO,CACV,CAGF,EArC+B,mBEJ/B,IAAAI,GAAwB,wCACxBC,GAKO,iCAyHA,IAAMC,GAAkBC,EAAA,CAI7B,CACA,SAAUC,EACV,OAAAC,EACA,QAAAC,EACA,cAAAC,EACA,WAAAC,EACA,QAAAC,EACA,aAAAC,EACA,oBAAAC,EACA,kBAAAC,EACA,KAAAC,EACA,SAAAC,EACA,SAAAC,EACA,YAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,IAKkC,CAChC,GAAM,CAAE,UAAAC,EAAW,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAYnB,CAAgB,EAElEoB,EAAeC,GAAgB,EAC/BC,EAAYC,EAAa,EACzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAW,EAAIC,GAAW,CACxC,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EACKI,EAAqBC,GAAsB,EAC3CC,EAAUC,GAAQ,EAClB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAqBC,GACzBlB,EACAJ,EACAE,CACF,EACMqB,EAAgBC,EAAkB7B,EAAMC,CAAQ,EAChD6B,EAAmBD,EAAkBpC,EAASD,GAAA,YAAAA,EAAQ,OAAO,EAC7DuC,EAAmBF,EAAkBjC,EAASJ,GAAA,YAAAA,EAAQ,IAAI,EAC1DwC,EAAyBH,EAC7BnC,EACAF,GAAA,YAAAA,EAAQ,aACV,EACMyC,EAAsBC,GAAuB,CACjD,WAAAvC,EACA,iBAAkBH,GAAA,YAAAA,EAAQ,WAC1B,cAAewC,CACjB,CAAC,EACKG,EAAqBF,EAAoB,OAAS,SAClDG,EAAqB,CACzB,KAAMR,EACN,SAAUA,EACV,QAASE,EACT,cAAeK,EACf,WAAYF,EACZ,QAASF,EACT,OAAQ,CACN,GAAGvC,EACH,KAAMuC,CACR,CACF,EAEMM,GACJxC,GAAA,YAAAA,EAAc,WAAY,SAAaA,GAAA,YAAAA,EAAc,WAAY,GAE7DyC,EAAejB,EAAQ,CAAE,SAAAb,EAAU,KAAMoB,CAAc,CAAC,EAExD,CAAE,QAAAW,CAAQ,EAAI5B,EAAae,CAAkB,EAEnDc,GAAwB,CACtB,SAAU/B,EACV,MAAO,CAAC,GAAG,EACX,OAAQ,CACN,KAAM6B,EACN,SAAUA,EACV,WAAYL,EACZ,cAAeE,EACf,KAAMJ,EACN,QAASA,EACT,QAASD,EACT,iBAAkB,UAClB,GAAG1B,CACL,EACA,QAAS,aAAaI,EAAS,OAC/B,QAAS6B,EACT,SAAAnC,EACA,YAAAC,EACA,iBAAkBuB,EAClB,KAAM,CACJ,GAAGY,EACH,iBAAAjC,CACF,CACF,CAAC,EAED,IAAMoC,MAAgB,qBAIpB,CACA,SAAUlB,EAAK,EACZ,KAAKG,CAAkB,EACvB,SAASjB,CAAU,EACnB,OAAO,UAAU,EACjB,OAAO,CACN,GAAImB,GAAiB,CAAC,EACtB,QAASE,EACT,cAAeK,EACf,GAAIA,GAAsB,CACxB,WAAYF,CACd,EACA,GAAIrC,GAAW,CACb,QAAAA,CACF,EACA,IAAIJ,GAAA,YAAAA,EAAQ,OAAQ,CAClB,KAAMA,GAAA,YAAAA,EAAQ,IAChB,CACF,CAAC,EACA,IAAIgC,CAAgB,EACvB,QAAUkB,GAAY,CACpB,IAAMC,EAAuB,CAC3B,GAAGV,EACH,QAASS,EAAQ,SACnB,EAEM1C,EAAO,CACX,GAAGsC,EACH,aAAcM,GAAoBF,CAAO,CAC3C,EAEA,OAAOH,EAAsB,CAC3B,SAAU/B,EAAS,KACnB,WAAYmC,EACZ,cAAeR,EACf,QAASL,EACT,KAAMC,EACN,QAASA,EACT,KAAA/B,EACA,SAAUA,CACZ,CAAC,EAAE,KAAK,CAAC,CAAE,KAAA6C,EAAM,MAAAC,EAAO,GAAGC,CAAK,KACvB,CACL,KAAAF,EACA,MAAAC,EACA,WAAYH,EACZ,GAAGI,CACL,EACD,CACH,EACA,iBAAmBC,GAAaC,GAAiBD,CAAQ,EACzD,qBAAuBA,GAAaE,GAAqBF,CAAQ,EACjE,GAAGnD,EACH,UAAYgD,GAAS,CA7RzB,IAAAM,GA8RMA,EAAAtD,GAAA,YAAAA,EAAc,YAAd,MAAAsD,EAAA,KAAAtD,EAA0BgD,GAE1B,IAAMO,EACJ,OAAOtD,GAAwB,WAC3BA,EAAoB+C,EAAMT,EAAoB3B,CAAU,EACxDX,EAENqB,EAAmBiC,CAAkB,CACvC,EACA,QAAUC,GAAgB,CAvS9B,IAAAF,EAwSMlC,EAAWoC,CAAG,GACdF,EAAAtD,GAAA,YAAAA,EAAc,UAAd,MAAAsD,EAAA,KAAAtD,EAAwBwD,GAExB,IAAMD,EACJ,OAAOrD,GAAsB,WACzBA,EAAkBsD,EAAKjB,EAAoB3B,CAAU,EACrDV,EAENoB,EAAmBiC,EAAoB,CACrC,IAAK,GAAG3C,iCACR,QAASI,EACP,sBACA,CAAE,WAAYwC,EAAI,UAAW,EAC7B,uBAAuBA,EAAI,aAC7B,EACA,YAAaA,EAAI,QACjB,KAAM,OACR,CAAC,CACH,EACA,KAAM,CACJ,GAAGxD,GAAA,YAAAA,EAAc,KACjB,MAAG,YAAQ,kBAAmB2B,EAAkBhB,GAAA,YAAAA,EAAU,IAAI,CAChE,CACF,CAAC,EAEK,CAAE,YAAA8C,EAAY,EAAIC,GAAmB,CACzC,GAAGjD,EACH,UAAWmC,GAAc,UAC3B,CAAC,EAED,MAAO,CAAE,GAAGA,GAAe,SAAU,CAAE,YAAAa,EAAY,CAAE,CACvD,EAxM+B,mBC/H/B,IAAAE,GAAsC,iBCAtC,IAAAC,GAA8C,oBAIvC,IAAMC,GAAc,GAAAC,QAAM,cAA4B,CAAC,CAAC,EAElDC,GAAiEC,EAAA,CAAC,CAC7E,aAAAC,EACA,SAAAC,CACF,IAEI,GAAAJ,QAAA,cAACD,GAAY,SAAZ,CAAqB,MAAO,CAAE,aAAAI,CAAa,GACzCC,CACH,EAP0E,uBCN9E,IAAAC,GAA4B,iBAE5BC,GAIO,iCAgBA,IAAMC,GAAgBC,EAAA,IAEN,CACrB,GAAM,CAAE,UAAAC,CAAU,EAAIC,EAAY,EAC5BC,KAAc,mBAAe,EAC7B,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAmE3C,SAjEmB,gBACjB,MAAO,CACL,SAAAC,EACA,iBAAAC,EACA,YAAAC,EACA,GAAAC,EACA,oBAAAC,EAAsB,CAAE,KAAM,MAAO,YAAa,QAAS,EAC3D,oBAAAC,EAAsB,CAAE,cAAe,EAAM,CAC/C,IAAyB,CACvB,GAAIH,IAAgB,GAClB,OAEF,IAAMI,EAAKC,GAAiBP,EAAUC,EAAkBP,CAAS,EAE3Dc,EAAWX,EAAK,EACnB,KAAKS,CAAE,EACP,SAASN,GAAY,EAAE,EAE1B,MAAM,QAAQ,IACZE,EAAY,IAAKO,GAAQ,CACvB,OAAQA,EAAK,CACX,IAAK,MACH,OAAOb,EAAY,kBACjBC,EAAK,EAAE,KAAKS,CAAE,EAAE,IAAIR,CAAgB,EACpCM,EACAC,CACF,EACF,IAAK,OACH,OAAOT,EAAY,kBACjBY,EAAS,OAAO,MAAM,EAAE,IAAIV,CAAgB,EAC5CM,EACAC,CACF,EACF,IAAK,OACH,OAAOT,EAAY,kBACjBY,EAAS,OAAO,MAAM,EAAE,IAAIV,CAAgB,EAC5CM,EACAC,CACF,EACF,IAAK,cACH,OAAOT,EAAY,kBACjBY,EAAS,IAAIV,CAAgB,EAC7BM,EACAC,CACF,EACF,IAAK,SACH,OAAOT,EAAY,kBACjBY,EACG,OAAO,KAAK,EACZ,GAAGL,GAAM,EAAE,EACX,IAAIL,CAAgB,EACvBM,EACAC,CACF,EACF,QACE,MACJ,CACF,CAAC,CACH,CAGF,EACA,CAAC,CACH,CAGF,EAzE6B,iBCtB7B,IAAAK,GAA2B,iBCA3B,IAAAC,GAAkB,oBCAlB,IAAAC,GAA+B,iBCA/B,IAAAC,GAAuB,iBACvBC,GAAoB,6BAMb,IAAMC,GAAcC,EAAcC,GAAgB,CACvD,IAAMC,KAAM,WAAOD,CAAK,EAExB,SAAK,GAAAE,SAAQD,EAAI,QAASD,CAAK,IAC7BC,EAAI,QAAUD,GAGTC,EAAI,OACb,EAR2B,eDApB,IAAME,GAAcC,EAAA,CACzBC,EACAC,IACM,CACN,IAAMC,EAAuBC,GAAYF,CAAY,EAIrD,SAFc,YAAQD,EAAIE,CAAoB,CAGhD,EAT2B,eDApB,IAAME,GAAkB,GAAAC,QAAM,cAAgC,CACnE,UAAW,CAAC,CACd,CAAC,EAEYC,GAETC,EAAA,CAAC,CAAE,UAAWC,EAAmB,SAAAC,CAAS,IAAM,CAClD,IAAMC,EAA6BC,GAAY,IACtCC,GAAwBJ,GAAqB,CAAC,CAAC,EACrD,CAACA,CAAiB,CAAC,EAEtB,OACE,GAAAH,QAAA,cAACD,GAAgB,SAAhB,CAAyB,MAAO,CAAE,UAAAM,CAAU,GAC1CD,CACH,CAEJ,EAVI,2BGbJ,IAAAI,GAAkB,oBAQX,IAAMC,GAAsB,GAAAC,QAAM,cAAgC,KAAK,EAEjEC,GAAuBF,GAAoB,SAO3CG,GAAgBC,EAAA,IACb,GAAAH,QAAM,WAAWD,EAAmB,EADvB,iBCjB7B,IAAAK,GAAkB,oBCAlB,IAAAC,GAA6D,oBAG7D,IAAMC,GAAwB,CAAC,EAElBC,MAAgB,kBAC3BD,EACF,EAEaE,GAETC,EAAA,CAAC,CAAE,SAAAC,EAAU,OAAAC,CAAO,IAEpB,GAAAC,QAAA,cAACL,GAAc,SAAd,CAAuB,MAAOI,GAAUL,IACtCI,CACH,EAJA,yBCVJ,IAAAG,GAAkC,oBAU3B,IAAMC,GAAyBC,EAAA,IAAM,CAC1C,IAAMC,KAAgB,eAAWC,EAAa,EAc9C,OAZiB,GAAAC,QAAM,QACrB,KACEF,GAAA,YAAAA,EAAe,SACd,IACE,KACQ,CAAC,IAEd,CAACA,GAAA,YAAAA,EAAe,KAAK,CACvB,EAEuB,CAGzB,EAhBsC,YFR/B,IAAMG,GAAYC,EAAA,IAElB,CACL,IAAMC,EAAQC,GAAS,EAIvB,OAFe,GAAAC,QAAM,QAAQ,IAAMF,EAAe,EAAG,CAACA,CAAK,CAAC,CAG9D,EARyB,aLmFlB,SAASG,EACdC,EACuB,CACvB,GAAM,CAAE,UAAAC,CAAU,KAAI,eAAWC,EAAe,EAE1CC,EAAaC,GAAc,EAE3BC,EAASC,GAAU,EAEnBC,EAAW,CACf,aAAcP,GAAQ,OAAOA,GAAS,SAAWA,EAAK,aAAeA,EACrE,wBACEA,GAAQ,OAAOA,GAAS,SAAWA,EAAK,wBAA0BA,EACpE,aACEA,GAAQ,OAAOA,GAAS,SAAWA,EAAK,aAAe,MAC3D,EAEMQ,EAASC,EAAA,CACbC,EACAC,EAAQ,KACgB,CAExB,IAAMC,EAAiBC,GAAaH,EAAcT,EADjCE,IAAe,QACqC,EAErE,GAAIS,EACF,MAAO,CACL,SAAUA,EACV,WAAYA,EAAe,YAAcA,EAAe,IAC1D,EAGF,GAAID,EAAO,CACT,IAAMG,EAA0B,CAC9B,KAAMJ,EACN,WAAYA,CACd,EAEMK,EAAaD,EAAS,YAAcA,EAAS,KAEnD,MAAO,CACL,SAAAA,EACA,WAAAC,CACF,EAIJ,EA7Be,UAoCTC,EAAoBC,GAAqB,EAEzC,CAAE,UAAAC,CAAU,EAAIC,GAAiB,EAEjCC,EAAeF,EAAyC,EAE9D,GAAIf,IAAe,SAAU,CAC3B,IAAMkB,EAAqBd,EAAS,wBAChCA,EAAS,wBACTa,EAAa,SAEXE,EAAiBD,EACnBL,EAAkBK,CAAkB,EACpC,OACEE,GAAWhB,GAAA,YAAAA,EAAU,eAAgBa,EAAa,GAClDI,EAAeJ,EAAa,OAC5BK,GAAqBlB,GAAA,YAAAA,EAAU,gBAAgBe,GAAA,YAAAA,EAAgB,MAC/DI,GAAmBJ,GAAA,YAAAA,EAAgB,cAAcA,GAAA,YAAAA,EAAgB,MAEvE,MAAO,CACL,UAAArB,EACA,SAAUqB,EACV,aAAcG,EACd,GAAIF,EACJ,OAAQC,EACR,OAAAhB,EACA,WAAYkB,CACd,EAKF,IAAIZ,EAEEC,EACJ,OAAOf,GAAS,SAAWA,EAAOO,GAAA,YAAAA,EAAU,wBAC9C,GAAIQ,EAAY,CACd,IAAMY,EAAkBd,GAAaE,EAAYd,CAAS,EACtD0B,EACFb,EAAWa,EAEXb,EAAW,CACT,KAAMC,CACR,OAEOV,GAAA,MAAAA,EAAQ,WACjBS,EAAWT,EAAO,UAGpB,MAAO,CACL,UAAAJ,EACA,SAAAa,EACA,aAAcA,GAAA,YAAAA,EAAU,KACxB,GAAIT,EAAO,GACX,OAAQA,EAAO,OACf,OAAAG,EACA,YAAYM,GAAA,YAAAA,EAAU,cAAcA,GAAA,YAAAA,EAAU,KAChD,CACF,CA/GgBL,EAAAV,EAAA,eQtFhB,IAAA6B,GAAwC,iBAajC,IAAMC,GAAuBC,EAAA,IAAsC,CACxE,GAAM,CAAE,UAAAC,CAAU,KAAI,eAAWC,EAAe,EAahD,SAX0B,gBACvBC,GAAkB,CACjB,IAAMC,EAASC,GAAaF,EAAOF,EAAW,EAAI,EAClD,OAAIG,GAGG,CAAE,KAAMD,EAAO,MAAOA,CAAM,CACrC,EACA,CAACF,CAAS,CACZ,CAGF,EAfoC,wBX2C7B,IAAMK,GAA0BC,EAAA,CAAC,CACtC,SAAUC,EACV,OAAAC,EACA,QAAAC,EACA,MAAAC,EACA,QAAAC,EAAU,GACV,SAAUC,EACV,YAAAC,EACA,iBAAkBC,EAClB,KAAAC,CACF,IAA0C,CAlE1C,IAAAC,EAmEE,GAAM,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAAYZ,CAAgB,EAEvD,CAAE,aAAAa,CAAa,KAAI,eAAWC,EAAW,EACzC,CACJ,SAAUC,EACV,YAAaC,CACf,KAAI,eAA2BC,EAAa,EAEtCC,EAAWb,GAAoBU,EAE/BI,EAAaC,GAAc,EAE3BC,EACJd,IACAC,GAAA,YAAAA,EAAM,qBACNC,EAAAC,GAAA,YAAAA,EAAU,OAAV,YAAAD,EAAgB,qBAElB,cAAU,IAAM,CACd,IAAIa,EAEEC,EAAWxB,EAACyB,GAAqB,CACjCN,IAAa,QACfC,EAAW,CACT,SAAUR,EACV,iBAAAU,EACA,YAAa,CAAC,aAAa,EAC3B,oBAAqB,CACnB,KAAM,SACN,YAAa,QACf,EACA,oBAAqB,CAAE,cAAe,EAAM,CAC9C,CAAC,EAGHf,GAAA,MAAAA,EAAckB,GACdR,GAAA,MAAAA,EAA6BQ,EAC/B,EAhBiB,YAkBjB,OAAIN,GAAYA,IAAa,OAASd,IACpCkB,EAAeT,GAAA,YAAAA,EAAc,UAAU,CACrC,QAAAX,EACA,OAAQ,CACN,SAAUQ,GAAA,YAAAA,EAAU,KACpB,GAAGT,CACL,EACA,MAAAE,EACA,SAAAoB,EACA,iBAAAF,EACA,KAAM,CACJ,GAAGb,EACH,iBAAAa,CACF,CACF,IAGK,IAAM,CACPC,IACFT,GAAA,MAAAA,EAAc,YAAYS,GAE9B,CACF,EAAG,CAAClB,CAAO,CAAC,CACd,EAxEuC,2BYxDvC,IAAAqB,GAA2B,iBAOpB,IAAMC,GAAcC,EACzBC,GAC8B,CAC9B,GAAM,CAAE,SAAUC,CAAoB,KACpC,eAA2BC,EAAa,EAE1C,OAAOF,GAAYC,CACrB,EAP2B,eCP3B,IAAAE,GAAsC,iBAiE/B,IAAMC,GAAkBC,EAAA,CAAC,CAC9B,OAAAC,EACA,QAAAC,EACA,MAAAC,EAAQ,CAAC,GAAG,EACZ,QAAAC,EAAU,GACV,YAAAC,EACA,iBAAAC,EAAmB,UACnB,KAAAC,CACF,IAAkC,CAChC,GAAM,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,KAE/C,cAAU,IAAM,CACd,IAAIC,EAEJ,OAAIN,IACFM,EAAeF,GAAA,YAAAA,EAAc,UAAU,CACrC,QAAAN,EACA,OAAAD,EACA,MAAAE,EACA,SAAUE,EACV,iBAAAC,EACA,KAAM,CACJ,GAAGC,EACH,iBAAAD,CACF,CACF,IAGK,IAAM,CACPI,IACFF,GAAA,MAAAA,EAAc,YAAYE,GAE9B,CACF,EAAG,CAACN,CAAO,CAAC,CACd,EAlC+B,mBCjE/B,IAAAO,GAA2B,iBAKpB,IAAMC,GAAyDC,EAAA,IAAM,CAC1E,GAAM,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EAE/C,OAAOD,GAAA,YAAAA,EAAc,OACvB,EAJsE,cCLtE,IAAAE,GAA2B,iBCA3B,IAAAC,GAIO,oBAEPC,GAAoB,6BASb,IAAMC,MAAuB,kBAAqC,CACvE,cAAe,CAAC,EAChB,qBAAsB,IAAM,EAC9B,CAAC,EAEKC,GAAiC,CAAC,EAE3BC,GAAuBC,EAAA,CAACC,EAAyBC,IAAgB,CAC5E,OAAQA,EAAO,KAAM,CACnB,UAQE,MAAO,CACL,GAReD,EAAM,OAAQE,GACtB,KACL,GAAAC,SAAQD,EAAiB,GAAID,EAAO,QAAQ,EAAE,GAC9CC,EAAiB,WAAaD,EAAO,QAAQ,SAEhD,EAIC,CACE,GAAGA,EAAO,QACV,UAAW,EACb,CACF,EAEF,aACE,OAAOD,EAAM,OACVE,GACC,KACE,GAAAC,SAAQD,EAAiB,GAAID,EAAO,QAAQ,EAAE,GAC9CC,EAAiB,WAAaD,EAAO,QAAQ,SAEnD,EACF,mCACE,OAAOD,EAAM,IAAKE,MAEd,GAAAC,SAAQD,EAAiB,GAAID,EAAO,QAAQ,EAAE,GAC9CC,EAAiB,WAAaD,EAAO,QAAQ,SAEtC,CACL,GAAGC,EACH,QAASD,EAAO,QAAQ,QAAU,GACpC,EAEKC,CACR,EACH,QACE,OAAOF,CACX,CACF,EA1CoC,wBA4CvBI,GAA4DL,EAAA,CAAC,CACxE,SAAAM,CACF,IAAM,CACJ,GAAM,CAACC,EAAeC,CAAoB,KAAI,eAC5CT,GACAD,EACF,EAEMW,EAAmB,CAAE,cAAAF,EAAe,qBAAAC,CAAqB,EAE/D,OACE,GAAAE,QAAA,cAACb,GAAqB,SAArB,CAA8B,MAAOY,GACnCH,EACA,OAAO,OAAW,IACfC,EAAc,IAAKI,GACjB,GAAAD,QAAA,cAACE,GAAA,CACC,IAAK,GAAGD,EAAa,MAAMA,EAAa,iBACxC,aAAcA,EAChB,CACD,EACD,IACN,CAEJ,EAvByE,gCDxDlE,IAAME,GAAmDC,EAAA,IAAM,CACpE,GAAM,CAAE,cAAAC,EAAe,qBAAAC,CAAqB,KAC1C,eAAWC,EAAoB,EAEjC,MAAO,CAAE,cAAAF,EAAe,qBAAAC,CAAqB,CAC/C,EALgE,yBEVhE,IAAAE,GAA2B,iBCA3B,IAAAC,GAA6D,oBAOtD,IAAMC,MAAsB,kBAAoC,CAAC,CAAC,EAE5DC,GAETC,EAAA,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,SAAAC,CAAS,IAEzB,GAAAC,QAAA,cAACN,GAAoB,SAApB,CAA6B,MAAO,CAAE,KAAAG,EAAM,MAAAC,CAAM,GAChDC,CACH,EAJA,+BDNG,IAAME,GAAkBC,EAAA,IAA4B,CACzD,GAAM,CAAE,KAAAC,EAAM,MAAAC,CAAM,KAAI,eAAWC,EAAmB,EAEtD,MAAO,CAAE,KAAAF,EAAM,MAAAC,CAAM,CACvB,EAJ+B,mBEL/B,IAAAE,GAA4B,iBAMrB,IAAMC,GAAwBC,EAAA,IAAiC,CACpE,GAAM,CAAE,KAAAC,CAAK,EAAIC,GAAgB,EAkBjC,SAhB2B,gBACzB,CACEC,EACAC,IACG,CACCD,IAAiB,KACfA,EACFF,GAAA,MAAAA,EAAOE,GACEC,IACTH,GAAA,MAAAA,EAAOG,IAGb,EACA,CAAC,CACH,CAGF,EApBqC,yBCNrC,IAAAC,GAAwC,iBCAxC,IAAAC,GAA8C,oBAOvC,IAAMC,GAAc,GAAAC,QAAM,cAA4B,CAAC,CAAC,EAElDC,GAAiEC,EAAA,CAAC,CAC7E,SAAAC,EACA,aAAAC,CACF,IAEI,GAAAJ,QAAA,cAACD,GAAY,SAAZ,CACC,MAAO,CACL,aAAAK,CACF,GAECD,CACH,EAX0E,uBDCvE,IAAME,GAAeC,EAAA,IAAM,CAChC,GAAM,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EAE/C,SAAO,gBAAaC,GAAiBF,GAAA,YAAAA,EAAc,aAAaE,GAAO,CAAC,CAAC,CAC3E,EAJ4B,gBEV5B,IAAAC,GAAoC,iBAU7B,IAAMC,EAAeC,EAAA,IAAM,CAChC,GAAM,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EA2B/C,SAzBW,YAAQ,IAAM,CAQvB,SAASC,EACPC,EACAC,EACAC,EACA,CACA,OACEL,GAAA,YAAAA,EAAc,UAAUG,EAAKC,EAASC,KACtCA,IACC,OAAOD,GAAY,UAAY,OAAOC,EAAmB,IACtDD,EACAD,EAER,CAZS,OAAAJ,EAAAG,EAAA,aAcFA,CACT,EAAG,CAACF,CAAY,CAAC,CAGnB,EA7B4B,gBCV5B,IAAAM,GAAwC,iBAYjC,IAAMC,GAAiCC,EAAA,IAAM,CAClD,GAAM,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EAE/C,SAAO,gBAAY,IAAMD,GAAA,YAAAA,EAAc,YAAa,CAAC,CAAC,CACxD,EAJ8C,gBCCvC,IAAME,GAAiBC,EAAA,IAAM,CAClC,IAAMC,EAAYC,EAAa,EACzBC,EAAeC,GAAa,EAC5BC,EAAYC,GAAa,EAE/B,MAAO,CACL,UAAAL,EACA,aAAAE,EACA,UAAAE,CACF,CACF,EAV8B,kBCb9B,IAAAE,GAAyB,iBAEzBC,GAAsB,wBACtBC,GAAqB,wBAuHd,IAAMC,GAAYC,EAAA,CAGvB,CACA,aAAAC,EACA,SAAUC,EACV,OAAAC,EACA,QAAAC,EACA,QAAAC,EACA,aAAAC,EACA,SAAAC,EAAW,GACX,QAAAC,EAAUR,EAACS,GAASA,EAAV,WACV,cAAAC,EACA,cAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,QAAAC,EACA,SAAAC,CACF,EAA6C,CAAC,IAA2B,CACvE,GAAM,CAACC,EAAWC,CAAY,KAAI,aAAS,EAAK,EAE1CC,EAAeC,GAAgB,EAC/BC,EAAUC,GAAQ,EAClB,CAAE,SAAAC,EAAU,UAAAC,EAAW,WAAAC,CAAW,EAAIC,EAC1CC,EAAkBzB,EAAmBD,CAAY,CACnD,EAGM2B,EAAW,GAFOC,GAAoB,EAG1CJ,EACA,QACF,KAAK,IAAI,KAAK,EAAE,eAAe,IAEzB,CAAE,QAAAK,CAAQ,EAAIX,EAClBY,GAAiBN,EAAYX,EAAkBU,CAAS,CAC1D,EAEMQ,EAAeX,EAAQ,CAC3B,SAAAE,EACA,KAAMI,EAAkBf,EAAMC,CAAQ,CACxC,CAAC,EAmHD,MAAO,CACL,UAAAI,EACA,cAnHoBjB,EAAA,SAAY,CAChCkB,EAAa,EAAI,EAEjB,IAAIe,EAAwB,CAAC,EAEzBC,EAAU,EACVC,EAAgB,GACpB,KAAOA,GACL,GAAI,CACF,GAAM,CAAE,KAAAC,EAAM,MAAAC,CAAM,EAAI,MAAMP,EAAe,CAC3C,UAAUP,GAAA,YAAAA,EAAU,OAAQ,GAC5B,QAAAlB,EACA,KAAMsB,EAAkBvB,EAASD,CAAM,EACvC,QAASwB,EAAkBvB,EAASD,CAAM,EAC1C,WAAY,CACV,QAAA+B,EACA,SAAA3B,EACA,KAAM,QACR,EACA,KAAMyB,EACN,SAAUA,CACZ,CAAC,EAEDE,IAEAD,EAAQ,KAAK,GAAGG,CAAI,EAEhB9B,GAAgB2B,EAAQ,QAAU3B,IACpC2B,EAAUA,EAAQ,MAAM,EAAG3B,CAAY,EACvC6B,EAAgB,IAGdE,IAAUJ,EAAQ,SACpBE,EAAgB,GAEpB,OAASG,EAAP,CACApB,EAAa,EAAK,EAClBiB,EAAgB,GAEhBpB,GAAA,MAAAA,EAAUuB,GAEV,MACF,CAGF,IAAMC,EACJ,OAAO5B,EAAkB,KAAeA,IAAkB,QAE5D,GAAA6B,SACED,GACE,OAAO7B,EAAkB,KACzBA,IAAkB,KACpB,2BAA2Be;AAAA;AAAA,6FAC7B,EAEA,IAAMgB,EAAyB,CAC7B,SAAAb,EACA,iBAAkB,GAClB,OAAQ,GACR,MAAO,sBACP,aAAc,IACd,GAAGlB,CACL,KAEA,GAAA8B,UACE9B,GAAA,YAAAA,EAAe,oBAAqB,OACpC,2BAA2Be;AAAA;AAAA;AAAA;AAAA,8EAC7B,EAEKc,EAUH5B,EAAgB,CAEd,OAAQ,GACR,GAAGA,CACL,EAbAA,EAAgB,CAEd,QAAS8B,EAAQ,iBAAmB,OAAYA,EAAQ,QACxD,UAAWA,EAAQ,eACnB,OAAQA,EAAQ,YAAcA,EAAQ,iBACtC,UAAWA,EAAQ,aACnB,OAAQ,EACV,EASF,IAAIC,EAAM,GAAAC,QAAU,QAAQV,EAAQ,IAAIzB,CAAc,EAAGG,CAAa,EAMtE,GALI8B,EAAQ,YACVC,EAAM,GAAGD,EAAQ;AAAA;AAAA,EAAcC,KAI7B,OAAO,OAAW,KAAeA,EAAI,OAAS,IAAM1B,GAAY,IAAO,CACzE,IAAM4B,EAAgBH,EAAQ,YAAc,OAAS,OAC/CI,EAAW,QACfJ,EAAQ,YAAc,QAAU,sBAE5BK,EAAmB,IAAIL,EAAQ,UAAY,YAAY,QAC3D,KACA,GACF,IAAIG,IAEJG,GACED,EACA,GAAGL,GAAA,MAAAA,EAAS,OAAS,SAAW,KAAKC,IACrCG,CACF,EAGF,OAAA3B,EAAa,EAAK,EACXwB,CACT,EA/GsB,gBAoHtB,CACF,EAhKyB,aC1HzB,IAAAM,GAAkB,oBAClBC,GAAqB,wBA4Dd,IAAMC,GAAUC,EAAA,CAQrBC,EAOI,CAAC,IAQF,CApFL,IAAAC,EAAAC,EAAAC,GAqFE,IAAMC,EAAUC,GAAQ,EAClBC,EAAaC,GAAc,EAC3B,CAAE,SAAUC,CAAgB,EAAIC,GAAiB,EACjD,CAAE,aAAcC,CAAoB,EAAIC,GAAgB,EAExD,CAAE,YAAAC,CAAY,EAAIC,GAAmB,EACrCC,EAA2BC,GAA8B,EAEzDC,EAAaC,EAAkBjB,EAAM,KAAMA,EAAM,QAAQ,EACzDkB,EAAelB,EAAM,cAAgBU,EAErC,CACJ,GAAAS,EACA,MAAAC,EACA,SAAAC,EACA,WAAAC,EACA,WAAYC,CACd,EAAIC,GAAkB,CACpB,SAAUxB,EAAM,SAChB,GAAIA,EAAM,GACV,OAAQA,EAAM,MAChB,CAAC,EAEK,CAACyB,EAAWC,CAAY,EAAI,GAAAC,QAAM,SAAS,EAAK,EAEhDC,EAASL,IAAW,OACpBM,EAAUN,IAAW,QACrBO,EAAWP,IAAW,SAEtBQ,EAAe3B,EAAQ,CAC3B,SAAAiB,EACA,KAAML,CACR,CAAC,EAEKgB,GAAgBJ,GAAUC,IAAY,EAAQ7B,EAAM,SACpDiC,EAAc,OAAOjC,EAAM,GAAO,IAClCkC,IAAkBjC,EAAAD,EAAM,eAAN,YAAAC,EAAoB,WAAY,MAOxD,GAAAkC,SACEH,GAAgB,CAACC,GAAe,CAACC,EACjCE,GAAiBb,EAAQD,EAAYH,CAAE,CACzC,EAKA,IAAMkB,EAAiBC,GAAa,CAClC,kBAAmBtC,EAAM,SACzB,OAAAuB,EACA,gBAAiBf,CACnB,CAAC,EAKK+B,EAA0CxC,EAAA,CAC9CwC,GAAWX,EAAS,OAAS,OAC7BY,EAAarB,EACbsB,EAAc,CAAC,IACZ,CACH3B,EAAyB,CACvB,SAAUyB,GACV,SAAAlB,EACA,GAAImB,EACJ,KAAM,CAAE,GAAGxB,EAAY,GAAGyB,CAAY,CACxC,CAAC,CACH,EAXgD,YAa1CC,EAAcC,GAAoC,CACtD,SAAUrB,EACV,GAAAH,EACA,aAAc,CAEZ,QAAS,CAACW,GAAYX,IAAO,OAC7B,GAAGnB,EAAM,YACX,EACA,SAAUA,EAAM,SAChB,YAAaA,EAAM,YACnB,WAAYA,EAAM,WAClB,KAAM,CAAE,GAAG+B,EAAc,GAAG/B,EAAM,SAAU,EAC5C,iBAAkBA,EAAM,iBACxB,gBAAiB,CAAE,QAAS,EAAM,CACpC,CAAC,EAEK4C,EAAiBC,GAAiD,CACtE,gBAAiB7C,EAAM,sBACvB,gBAAiB,CAAE,QAAS,EAAM,CACpC,CAAC,EAEK8C,EAAiBC,GAAiD,CACtE,gBAAiB/C,EAAM,sBACvB,gBAAiB,CAAE,QAAS,EAAM,CACpC,CAAC,EAEKgD,EAAiBpB,EAASkB,EAAiBF,EAE3CK,EADoBD,EAAe,WACAN,EAAY,WAE/C,CAAE,YAAAQ,CAAY,EAAIC,GAAmB,CACzC,GAAGnD,EAAM,gBACT,UAAWiD,CACb,CAAC,EAED,GAAAtB,QAAM,UAAU,IAGP,IAAM,CApMjB,IAAA1B,IAsMQA,GAAAD,EAAM,WAAN,MAAAC,GAAgB,qBAChBwB,GACAH,GACA,OAAOH,EAAO,KAEdb,EAAW,CACT,GAAAa,EACA,YAAanB,EAAM,aAAe,CAAC,OAAQ,OAAQ,QAAQ,EAC3D,iBAAkBA,EAAM,iBACxB,SAAUsB,CACZ,CAAC,CAEL,EACC,EAACpB,EAAAF,EAAM,WAAN,YAAAE,EAAgB,oBAAqBuB,CAAS,CAAC,EAEnD,IAAM2B,EAAWrD,EAAA,MACfsD,GACA,CAAE,WAAAC,EAAa,EAAM,EAA8B,CAAC,IACjD,CACH,IAAMC,EAAgBrC,IAAiB,cAGvCN,EAAY,EAAK,EAGjB,IAAM4C,EAAoBzD,EAACoB,GAAiBoB,EAASF,EAAgBlB,CAAE,EAA7C,qBA+E1B,OA7E0B,IAAI,QAE5B,CAACsC,EAASC,IAAW,CAErB,GAAI,CAACrC,EAAU,OAAOqC,EAAOC,EAAoB,EAKjD,GAAI9B,GAAW,CAACV,EAAI,OAAOuC,EAAOE,EAAc,EAEhD,GAAI,CAACP,GAAQ,OAAOK,EAAOG,EAAkB,EAE7C,GAAIP,GAAc,CAAC1B,EAAQ,OAAO8B,EAAOI,EAAsB,EAE3D,CAACP,GAAiB,CAACD,IAKrBS,GAAe,IAAMP,EAAkB,CAAC,EAExCC,EAAQ,GAGV,IAAMO,GAEuD,CAC3D,OAAAX,GACA,SAAU/B,GAAcD,EAAS,KACjC,KAAM,CAAE,GAAGU,EAAc,GAAG/B,EAAM,YAAa,EAC/C,SAAU,CAAE,GAAG+B,EAAc,GAAG/B,EAAM,YAAa,EACnD,iBAAkBA,EAAM,iBACxB,YAAasD,EAAa,CAAC,EAAItD,EAAM,YACrC,oBAAqBsD,EAAa,GAAQtD,EAAM,oBAChD,kBAAmBsD,EAAa,GAAQtD,EAAM,kBAE9C,GAAI4B,EACA,CACE,GAAIT,GAAM,GACV,aAAAD,EACA,gBAAiBlB,EAAM,gBACvB,oBAAqBA,EAAM,mBAC7B,EACA,CAAC,CACP,EAEM,CAAE,YAAAiE,CAAY,EAAIrC,EAASkB,EAAiBF,EAElDqB,EAAYD,GAAkB,CAG5B,UAAWhE,EAAM,kBACb,CAACkE,EAAMC,EAAGC,KAAY,CAtRlC,IAAAnE,IAuRcA,GAAAD,EAAM,oBAAN,MAAAC,GAAA,KAAAD,EAA0BkE,EAAMb,GAAQe,GAASd,EACnD,EACA,OACJ,QAAStD,EAAM,gBACX,CAACqE,EAAuBF,EAAGC,KAAY,CA3RnD,IAAAnE,IA4RcA,GAAAD,EAAM,kBAAN,MAAAC,GAAA,KAAAD,EAAwBqE,EAAOhB,GAAQe,GAASd,EAClD,EACA,MACN,CAAC,EAEE,KAAMY,GAAS,CACVX,GAAiB,CAACD,GACpBS,GAAe,IAAG,CAnS9B,IAAA9D,EAmSiC,OAAAuD,GAAkBvD,EAAAiE,GAAA,YAAAA,EAAM,OAAN,YAAAjE,EAAY,EAAE,EAAC,EAEpDqD,GACF5B,EAAa,EAAI,EAEnB+B,EAAQS,CAAI,CACd,CAAC,EAEA,MAAMR,CAAM,CACjB,CAAC,CAGH,EA1FiB,YA4FXY,EAAmBC,GACtBlB,IAAuBD,EAASC,GAAQ,CAAE,WAAY,EAAK,CAAC,IAC7DlD,GAAAH,EAAM,WAAN,YAAAG,GAAgB,WAAY,IAC5B,uBACF,EAEMqE,EAAW,CACf,YAAAtB,CACF,EAEMuB,EAAgB,CACpB,OAAQ3B,EAAe,OACvB,KAAMA,EAAe,KACrB,MAAOA,EAAe,KACxB,EAEA,MAAO,CACL,SAAAM,EACA,iBAAAkB,EACA,YAAArB,EACA,eAAAD,EACA,SAAUA,EACV,YAAAN,EACA,MAAOA,EACP,cAAA+B,EACA,GAAAtD,EACA,MAAAC,EACA,SAAAmB,EACA,SAAAiC,CACF,CACF,EAlRuB,WAoRjBb,GAAuB,IAAI,MAC/B,qEACF,EAEMC,GAAiB,IAAI,MACzB,0EACF,EAEMC,GAAqB,IAAI,MAC7B,qDACF,EAEMC,GAAyB,IAAI,MACjC,sDACF,EAEM1B,GAAmBrC,EAAA,CAACwB,EAAiBD,EAAqBH,IAC9D,uBAAuBI,kBAAuBD,WAAoBH;AAAA;AAAA;AAAA;AAAA,sDAD3C,oBCjWzB,IAAAuD,GAA4B,iBAerB,IAAMC,GACXC,EAAA,IAAM,CACJ,GAAM,CAAE,KAAAC,EAAM,KAAAC,EAAM,KAAAC,EAAM,OAAAC,CAAO,EAAIC,GAAc,EAkCnD,SAhCiC,gBAC/B,CAAC,CACC,SAAAC,EACA,SAAAC,EACA,GAAAC,EACA,KAAAC,EAAO,CAAC,CACV,IAKM,CACJ,GAAIH,GAAYC,EACd,OAAMA,EAAS,MAAQD,IAAa,QAAUE,EACrCP,EAAKM,EAAUC,EAAI,OAAWC,CAAI,EAGrCF,EAAS,MAAQD,IAAa,QAAUE,EACrCN,EAAKK,EAAUC,EAAI,OAAWC,CAAI,EAGrCF,EAAS,QAAUD,IAAa,SAC7BF,EAAOG,EAAU,OAAWE,CAAI,EAGlCN,EAAKI,EAAU,OAAQE,CAAI,CAGtC,EACA,CAAC,CACH,CAGF,EApCA,iCCfF,IAAAC,GAAkC,oBAE3B,IAAMC,GAAUC,EAAA,IAAM,CAC3B,IAAMC,KAAgB,eAAWC,EAAa,EAS9C,OAPgB,GAAAC,QAAM,QACpB,KAAMF,GAAA,YAAAA,EAAe,QAAS,IAAM,IAAG,IACvC,CAACA,GAAA,YAAAA,EAAe,IAAI,CACtB,EAEqB,CAGvB,EAXuB,WCHvB,IAAAG,GAA+C,oBCA/C,IAAAC,GAAkB,oBA0BX,IAAMC,GAAeC,EAAA,IAAmB,CAC7C,IAAMC,EAAaC,GAAc,EAC3B,CAAE,SAAUC,EAAmB,UAAAC,CAAU,EAAIC,EAAY,EACzDC,EAASC,GAAU,EAoCzB,OAlCW,GAAAC,QAAM,YACf,CAAC,CAAE,SAAAC,EAAU,OAAAC,EAAQ,KAAAC,CAAK,IAA2C,CAhCzE,IAAAC,EAiCM,IAAMC,EAAmBJ,GAAYN,EAErC,GAAI,CAACU,EACH,OASF,IAAMC,GAAcF,EANCG,GACnBF,EACAT,EACAH,IAAe,QACjB,EAEiC,KAC9Be,GAASA,EAAK,SAAWN,CAC5B,IAFoB,YAAAE,EAEjB,MAEH,OAAKE,EAIYG,GACfH,EACAD,GAAA,YAAAA,EAAkB,KAClBP,EACAK,CACF,EARE,MAWJ,EACA,CAACP,EAAWD,EAAmBG,CAAM,CACvC,CAGF,EAxC4B,gBDarB,IAAMY,GAAQC,EAAA,IAAM,CACzB,IAAMC,KAAgB,eAAWC,EAAa,EACxC,CAAE,OAAQC,CAAe,EAAIC,EAAY,EACzCC,EAAYC,GAAa,EAOzBC,EALQ,GAAAC,QAAM,QAClB,KAAMP,GAAA,YAAAA,EAAe,MAAO,IAAM,IAAG,IACrC,CAACA,GAAA,YAAAA,EAAe,EAAE,CACpB,EAE2B,EA6B3B,SA3BW,gBACRQ,GAAgD,CAC/C,GAAI,OAAOA,EAAO,IAAO,SACvB,OAAOF,EAAa,CAAE,GAAGE,EAAQ,GAAIA,EAAO,EAAG,CAAC,EAKlD,GAAM,CAAE,SAAAC,CAAS,EAAIP,EAAeM,EAAO,GAAG,QAAQ,EACtDE,GAAqBF,EAAO,GAAIC,CAAQ,EACxC,IAAME,EAAQP,EAAU,CACtB,SAAAK,EACA,OAAQD,EAAO,GAAG,OAClB,KAAM,CACJ,GAAIA,EAAO,GAAG,GACd,GAAGA,EAAO,GAAG,IACf,CACF,CAAC,EAED,OAAOF,EAAa,CAClB,GAAGE,EACH,GAAIG,CACN,CAAC,CACH,EACA,CAACT,EAAgBI,CAAY,CAC/B,CAGF,EAxCqB,SA8CRI,GAAuBX,EAAA,CAACa,EAAcH,IAA4B,CAC7E,GAAI,EAACG,GAAA,MAAAA,EAAI,SAAU,EAACA,GAAA,MAAAA,EAAI,UACtB,MAAM,IAAI,MAAM,8CAA8C,EAGhE,GAAI,CAAC,OAAQ,OAAQ,OAAO,EAAE,SAASA,GAAA,YAAAA,EAAI,MAAM,GAAK,CAACA,EAAG,GACxD,MAAM,IAAI,MACR,qBAAqBA,EAAG,oDAAoDA,EAAG,WACjF,EAIF,GAAI,CADcH,EAASG,EAAG,MAAM,EAElC,MAAM,IAAI,MACR,qBAAqBA,EAAG,yCAAyCA,EAAG,WACtE,CAEJ,EAjBoC,wBE9D7B,IAAMC,GAAgBC,EAAA,IAAM,CACjC,GAAM,CAAE,UAAAC,CAAU,EAAIC,EAAY,EAC5BC,EAAaC,GAAc,EAC3B,CAAE,WAAAC,CAAW,EAAIC,GAAiB,EAClCC,EAAUF,EAAW,EACrBG,EAASC,GAAU,EACnBC,EAAKC,GAAM,EACXC,EAAOC,GAAQ,EAEfC,EAAYd,EAAA,CAACe,EAAaC,EAAoB,SAAW,CACzDb,IAAe,SACjBI,EAAQS,CAAI,EAAED,CAAG,EAEjBL,EAAG,CAAE,GAAIK,EAAK,KAAAC,CAAK,CAAC,CAExB,EANkB,aAQZC,EAAYjB,EAAA,CAChBkB,EACAC,EAAsB,CAAC,IACpB,CA3CP,IAAAC,EA4CI,GAAIjB,IAAe,SAAU,CAC3B,IAAMkB,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,EAAW,EAAI,GAAK,CACzC,KAAMiB,EACN,MAAOA,CACT,EACAA,EAEAK,EAAoBC,GACxBH,EACApB,EACA,EACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,QAAQ,EAEnC,OAAKF,EAIEG,GACLH,EAAkB,MAClBF,GAAA,YAAAA,EAAc,KACdb,EACAW,CACF,EARS,GAUX,IAAME,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,CAAS,GAAK,CAAE,KAAMiB,CAAS,EACtDA,EAEAK,GAAoBH,EAAAI,GACxBH,EACApB,CACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,QAAQ,IAHT,YAAAL,EAGY,MAEtC,OAAKG,EAIEb,EAAG,CACR,GAAIgB,GAAaH,EAAmBF,GAAA,YAAAA,EAAc,KAAMb,EAAQW,CAAI,EACpE,KAAM,OACN,MAAOA,EAAK,KACd,CAAC,EAPQ,EAQX,EAjDkB,aAmDZQ,EAAU3B,EAAA,CACdkB,EACAU,EACAT,EAAsB,CAAC,IACpB,CA/FP,IAAAC,EAgGI,IAAMS,EAAY,mBAAmBD,CAAE,EACvC,GAAIzB,IAAe,SAAU,CAC3B,IAAMkB,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,EAAW,EAAI,GAAK,CACzC,KAAMiB,EACN,MAAOA,CACT,EACAA,EAEAY,EAAkBN,GACtBH,EACApB,EACA,EACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,MAAM,EAEjC,OAAKK,EAIEJ,GAAaI,EAAgB,MAAOT,GAAA,YAAAA,EAAc,KAAMb,EAAQ,CACrE,GAAGW,EACH,GAAIU,CACN,CAAC,EANQ,GAQX,IAAMR,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,CAAS,GAAK,CAAE,KAAMiB,CAAS,EACtDA,EAEAY,GAAkBV,EAAAI,GACtBH,EACApB,CACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,MAAM,IAHT,YAAAL,EAGY,MAEpC,OAAKU,EAIEpB,EAAG,CACR,GAAIgB,GAAaI,EAAiBT,GAAA,YAAAA,EAAc,KAAMb,EAAQ,CAC5D,GAAGW,EACH,GAAIU,CACN,CAAC,EACD,KAAM,OACN,MAAOV,EAAK,KACd,CAAC,EAVQ,EAWX,EApDgB,WAsDVY,EAAW/B,EAAA,CACfkB,EACAU,EACAT,EAAsB,CAAC,IACpB,CArJP,IAAAC,EAsJI,IAAMS,EAAY,mBAAmBD,CAAE,EAEvC,GAAIzB,IAAe,SAAU,CAC3B,IAAMkB,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,EAAW,EAAI,GAAK,CACzC,KAAMiB,EACN,MAAOA,CACT,EACAA,EAEAc,EAAmBR,GACvBH,EACApB,EACA,EACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,OAAO,EAElC,OAAKO,EAIEN,GAAaM,EAAiB,MAAOX,GAAA,YAAAA,EAAc,KAAMb,EAAQ,CACtE,GAAGW,EACH,GAAIU,CACN,CAAC,EANQ,GAQX,IAAMR,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,CAAS,GAAK,CAAE,KAAMiB,CAAS,EACtDA,EAEAc,GAAmBZ,EAAAI,GACvBH,EACApB,CACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,OAAO,IAHT,YAAAL,EAGY,MAErC,OAAKY,EAIEtB,EAAG,CACR,GAAIgB,GAAaM,EAAkBX,GAAA,YAAAA,EAAc,KAAMb,EAAQ,CAC7D,GAAGW,EACH,GAAIU,CACN,CAAC,EACD,KAAM,OACN,MAAOV,EAAK,KACd,CAAC,EAVQ,EAWX,EArDiB,YAuDXc,EAAUjC,EAAA,CACdkB,EACAU,EACAT,EAAsB,CAAC,IACpB,CA5MP,IAAAC,EA6MI,IAAMS,EAAY,mBAAmBD,CAAE,EACvC,GAAIzB,IAAe,SAAU,CAC3B,IAAMkB,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,EAAW,EAAI,GAAK,CACzC,KAAMiB,EACN,MAAOA,CACT,EACAA,EAEAgB,EAAkBV,GACtBH,EACApB,EACA,EACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,MAAM,EAEjC,OAAKS,EAIER,GAAaQ,EAAgB,MAAOb,GAAA,YAAAA,EAAc,KAAMb,EAAQ,CACrE,GAAGW,EACH,GAAIU,CACN,CAAC,EANQ,GAQX,IAAMR,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,CAAS,GAAK,CAAE,KAAMiB,CAAS,EACtDA,EAEAgB,GAAkBd,EAAAI,GACtBH,EACApB,CACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,MAAM,IAHT,YAAAL,EAGY,MAEpC,OAAKc,EAIExB,EAAG,CACR,GAAIgB,GAAaQ,EAAiBb,GAAA,YAAAA,EAAc,KAAMb,EAAQ,CAC5D,GAAGW,EACH,GAAIU,CACN,CAAC,EACD,KAAM,OACN,MAAOV,EAAK,KACd,CAAC,EAVQ,EAWX,EApDgB,WAsDVgB,EAAUnC,EAAA,CACdkB,EACAC,EAAsB,CAAC,IACpB,CAjQP,IAAAC,EAkQI,GAAIjB,IAAe,SAAU,CAC3B,IAAMkB,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,EAAW,EAAI,GAAK,CACzC,KAAMiB,EACN,MAAOA,CACT,EACAA,EAEAkB,EAAkBZ,GACtBH,EACApB,EACA,EACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,MAAM,EAEjC,OAAKW,EAIEV,GACLU,EAAgB,MAChBf,GAAA,YAAAA,EAAc,KACdb,EACAW,CACF,EARS,GAUX,IAAME,EACJ,OAAOH,GAAa,SAChBI,GAAaJ,EAAUjB,CAAS,GAAK,CAAE,KAAMiB,CAAS,EACtDA,EAEAkB,GAAkBhB,EAAAI,GACtBH,EACApB,CACF,EAAE,KAAMwB,GAAMA,EAAE,SAAW,MAAM,IAHT,YAAAL,EAGY,MAEpC,OAAKgB,EAIE1B,EAAG,CACR,GAAIgB,GAAaU,EAAiBf,GAAA,YAAAA,EAAc,KAAMb,EAAQW,CAAI,EAClE,KAAM,OACN,MAAOA,EAAK,KACd,CAAC,EAPQ,EAQX,EAjDgB,WA+HhB,MAAO,CACL,OA7EanB,EAAA,CACbkB,EACAF,EAAoB,OACpBG,EAAsB,CAAC,IACpB,CACHL,EAAUG,EAAUC,EAAUC,CAAI,EAAGH,CAAI,CAC3C,EANe,UA8Eb,UAAAC,EACA,KAvEWjB,EAAA,CACXkB,EACAU,EACAZ,EAAoB,OACpBG,EAAsB,CAAC,IACpB,CACHL,EAAUa,EAAQT,EAAUU,EAAIT,CAAI,EAAGH,CAAI,CAC7C,EAPa,QAwEX,QAAAW,EACA,MAhEY3B,EAAA,CACZkB,EACAU,EACAZ,EAAoB,OACpBG,EAAsB,CAAC,IACpB,CACHL,EAAUiB,EAASb,EAAUU,EAAIT,CAAI,EAAGH,CAAI,CAC9C,EAPc,SAiEZ,SAAAe,EACA,KAzDW/B,EAAA,CACXkB,EACAU,EACAZ,EAAoB,OACpBG,EAAsB,CAAC,IACpB,CACHL,EAAUmB,EAAQf,EAAUU,EAAIT,CAAI,EAAGH,CAAI,CAC7C,EAPa,QA0DX,QAAAiB,EACA,KAlDWjC,EAAA,CACXkB,EACAF,EAAoB,OACpBG,EAAsB,CAAC,IACpB,CACHL,EAAUqB,EAAQjB,EAAUC,CAAI,EAAGH,CAAI,CACzC,EANa,QAmDX,QAAAmB,EACA,KAzCWnC,EAAA,CAACqC,KAAiBC,IAAoB,CAC7CnC,IAAe,SACjBI,EAAQ,KAAK8B,EAAM,GAAGC,CAAI,EAE1B5B,EAAG,CAAE,GAAI2B,EAAM,KAAM,MAAO,CAAC,CAEjC,EANa,QA0CX,QA/BcrC,EAAA,CAACqC,KAAiBC,IAAoB,CAChDnC,IAAe,SACjBI,EAAQ,QAAQ8B,EAAM,GAAGC,CAAI,EAE7B5B,EAAG,CAAE,GAAI2B,EAAM,KAAM,SAAU,CAAC,CAEpC,EANgB,WAgCd,OArBarC,EAAA,IAAM,CACfG,IAAe,SACjBI,EAAQ,OAAO,EAEfK,EAAK,CAET,EANe,SAsBf,CACF,EArX6B,iBCvB7B,IAAA2B,GAAqB,wBA0Bd,IAAMC,GAAUC,EAAA,CAIrB,CACA,SAAUC,EACV,GAAAC,EACA,KAAAC,EACA,SAAAC,EACA,aAAAC,EACA,gBAAAC,EACA,GAAGC,CACL,EAA+C,CAAC,IAG3C,CACH,GAAM,CACJ,SAAAC,EACA,WAAAC,EACA,GAAIC,EACJ,MAAOC,CACT,EAAIC,GAAkB,CACpB,GAAAV,EACA,SAAUD,CACZ,CAAC,EAIKY,EAFUC,GAAQ,EAEK,CAC3B,SAAAN,EACA,KAAMO,EAAkBZ,EAAMC,CAAQ,CACxC,CAAC,KAED,GAAAY,SACE,EAAQf,GAAqB,CAACS,EAC9BO,GAAiBR,EAAYC,CAAM,CACrC,EAEA,IAAMQ,EAAcC,GAAoC,CACtD,SAAUV,EACV,GAAIC,GAAU,GACd,aAAc,CACZ,QAASA,IAAW,OACpB,GAAGL,CACL,EACA,KAAMQ,EACN,SAAUA,EACV,gBAAAP,EACA,GAAGC,CACL,CAAC,EAED,MAAO,CACL,YAAAW,EACA,MAAOA,EACP,OAAAR,EACA,UAAAC,EACA,SAAUO,EAAY,QACxB,CACF,EA1DuB,WA4DjBD,GAAmBjB,EAAA,CAACS,EAAqBP,IAC7C,yBAAyBO,WAAoBP;AAAA;AAAA;AAAA;AAAA,2DADtB,oBCtFzB,IAAAkB,GAAoC,iBAEpCC,GAAkB,2BAClBC,GAAsB,wBAoIf,IAAMC,GAAYC,EAAA,CAKvB,CACA,aAAAC,EACA,SAAUC,EACV,QAAAC,EAAUH,EAACI,GAASA,EAAV,WACV,eAAAC,EACA,UAAAC,EAAY,OAAO,iBACnB,SAAAC,EACA,KAAAC,EACA,SAAAC,EACA,WAAAC,EACA,iBAAAC,CACF,EAA6C,CAAC,IAIzC,CACH,GAAM,CAACC,EAAiBC,CAAkB,KAAI,aAAiB,CAAC,EAC1D,CAACC,EAAaC,CAAc,KAAI,aAAiB,CAAC,EAClD,CAACC,EAAWC,CAAY,KAAI,aAAS,EAAK,EAE1C,CAAE,SAAAC,EAAU,WAAAC,CAAW,EAAIC,EAC/BlB,GAAqBD,CACvB,EAEMoB,EAAUC,GAAQ,EAElBC,EAAaC,GAAyC,EACtDC,EAASC,GAAqC,EAE9CC,EAAeN,EAAQ,CAC3B,SAAAH,EACA,KAAMU,EAAkBpB,EAAMC,CAAQ,CACxC,CAAC,EAEGoB,EAIAvB,IAAc,EAChBuB,EAAiBJ,EAEjBI,EAAiBN,EAGnB,IAAMO,EAAgB9B,EAAA,IAAM,CAC1Be,EAAe,CAAC,EAChBF,EAAmB,CAAC,EACpBI,EAAa,EAAK,CACpB,EAJsB,iBAMhBc,EAAe/B,EACnBgC,GACG,CACH,IAAMC,EAAS,CACb,UAAWD,EAAc,OACtB5B,GAASA,EAAK,OAAS,SAC1B,EACA,QAAS4B,EAAc,OACpB5B,GAASA,EAAK,OAAS,OAC1B,CACF,EAEAG,GAAA,MAAAA,EAAW0B,GACXhB,EAAa,EAAK,CACpB,EAdqB,mBAgBrB,cAAU,IAAM,CACdP,GAAA,MAAAA,EAAa,CAAE,YAAAI,EAAa,gBAAAF,CAAgB,EAC9C,EAAG,CAACE,EAAaF,CAAe,CAAC,EAEjC,IAAMsB,EAAoDlC,EAAA,CAAC,CAAE,KAAAmC,CAAK,KAChEL,EAAc,EACP,IAAI,QAAiDM,GAAY,CACtEnB,EAAa,EAAI,EACjB,GAAAoB,QAAU,MAAMF,EAAa,CAC3B,SAAU,MAAO,CAAE,KAAAG,CAAK,IAA6B,CACnD,IAAMC,EAASC,GAAgBF,EAAMnC,CAAO,EAI5C,GAFAY,EAAewB,EAAO,MAAM,EAExBjC,IAAc,EAAG,CAEnB,IAAMmC,EAAWF,EAAO,IAAKG,GAChB1C,EAAA,UAWF,CAAE,SAVQ,MAAMyB,EAAO,YAAY,CACxC,SAAUN,GAAc,GACxB,OAAQuB,EACR,oBAAqB,GACrB,kBAAmB,GACnB,iBAAA/B,EACA,KAAMgB,EACN,SAAUA,CACZ,CAAC,EAEkB,MAAAe,CAAM,GAXhB,KAcZ,EAEKV,EAAgB,MAAMW,GAC1BF,EACA,CAAC,CAAE,SAAAG,EAAU,MAAAF,CAAM,KACjB7B,EAAoBgC,GACXA,EAAgB,CACxB,EAEM,CACL,SAAU,CAACD,EAAS,IAAI,EACxB,KAAM,UACN,QAAS,CAACF,CAAK,CACjB,GAEF,CAACI,EAAkBC,KACV,CACL,SAAU,CAACD,CAAK,EAChB,KAAM,QACN,QAAS,CAACP,EAAOQ,CAAK,CAAC,CACzB,EAEJ,EAEAX,EAAQJ,CAAa,MAChB,CAEL,IAAMgB,KAAS,GAAAC,SAAMV,EAAQjC,CAAS,EAEhC4C,EAAaF,EAAO,IAAKG,GAClBnD,EAAA,UAWF,CACL,SAXe,MAAMuB,EAAW,YAAY,CAC5C,SAAUJ,GAAc,GACxB,OAAQgC,EACR,oBAAqB,GACrB,kBAAmB,GACnB,iBAAAxC,EACA,KAAMgB,EACN,SAAUA,CACZ,CAAC,EAIC,MAAOwB,EACP,mBAAoBA,EAAc,MACpC,GAfS,KAmBZ,EAEKnB,EAAgB,MAAMW,GAC1BO,EACA,CAAC,CAAE,SAAAN,EAAU,mBAAAQ,EAAoB,MAAAV,CAAM,KACrC7B,EAAoBgC,GACXA,EAAgBO,CACxB,EAEM,CACL,SAAUR,EAAS,KACnB,KAAM,UACN,QAASF,CACX,GAEF,CAACI,EAAkBC,KACV,CACL,SAAU,CAACD,CAAK,EAChB,KAAM,QACN,QAASE,EAAOD,CAAK,CACvB,EAEJ,EAEAX,EAAQJ,CAAa,EAEzB,EAEA,GAAG3B,CACL,CAAC,CACH,CAAC,EAAE,KAAM2B,IACPD,EAAaC,CAAa,EACnBA,EACR,GA7GuD,gBAgH1D,MAAO,CACL,WAAY,CACV,KAAM,OACN,OAAQ,OACR,SAAWqB,GAA+C,CACpDA,EAAM,OAAO,OAASA,EAAM,OAAO,MAAM,OAAS,GACpDnB,EAAa,CAAE,KAAMmB,EAAM,OAAO,MAAM,CAAC,CAAE,CAAC,CAEhD,CACF,EACA,eAAAxB,EACA,UAAAb,EACA,aAAAkB,CACF,CACF,EAzMyB,aCvIzB,IAAAoB,GAAsC,iBAe/B,IAAMC,GAAWC,EAAA,CAAC,CACvB,eAAAC,EAAiB,EACnB,EAAmB,CAAC,IAA0B,CAC5C,GAAM,CAACC,EAASC,CAAU,KAAI,aAASF,CAAc,EAE/CG,KAAO,gBAAY,IAAMD,EAAW,EAAI,EAAG,CAACD,CAAO,CAAC,EACpDG,KAAQ,gBAAY,IAAMF,EAAW,EAAK,EAAG,CAACD,CAAO,CAAC,EAE5D,MAAO,CACL,QAAAA,EACA,KAAAE,EACA,MAAAC,CACF,CACF,EAbwB,YCGjB,IAAMC,GAAYC,EAAA,CAAC,CACxB,SAAAC,EACA,OAAAC,EACA,KAAAC,EACA,OAAAC,CACF,IACoBC,GAAa,EAEd,CAAE,SAAAJ,EAAU,OAAAC,EAAQ,KAAAC,EAAM,OAAAC,CAAO,CAAC,EAR5B,aClBzB,IAAAE,GAAwD,oBAIxD,IAAAC,GAAqB,wBAmBrB,IAAMC,GAAgBC,EAAA,CACpBC,EACAC,IACG,CACH,IAAMC,KAAgB,eAAWC,EAAa,EACxCC,EAAkBF,GAAA,YAAAA,EAAe,KAEjCG,EAAaC,GAAM,EAErBC,EAAa,GAcjB,MAbI,OAAQP,IACLE,GAAA,MAAAA,EAAe,OAClB,GAAAM,SACE,GACA,uLACF,EAEFD,EAAaF,EAAW,CAAE,GAAGL,EAAM,GAAI,KAAM,MAAO,CAAC,GAEnD,OAAQA,IACVO,EAAaP,EAAM,IAGjBI,EAEA,GAAAK,QAAA,cAACL,EAAA,CACC,IAAKH,EACJ,GAAGD,EACJ,GAAIO,EAEJ,GAAI,OACN,EAIF,GAAAE,QAAA,cAAC,KACC,IAAKR,EACL,KAAMM,EACL,GAAGP,EAEJ,GAAI,OACJ,GAAI,OACN,CAEJ,EA5CsB,iBA8CTU,MAAO,eAAWZ,EAAa,ECnErC,IAAMa,GAAUC,EAAA,IACdC,GADc,WCFvB,IAAAC,GAA2B,iBCA3B,IAAAC,GAA8C,oBAIvC,IAAMC,GAAwC,CACnD,WAAY,IAAM,GAClB,YAAa,IAAM,GACnB,UAAW,KAAO,CAAC,GACnB,OAAQ,IAAM,KACd,KAAM,IAAM,IACd,EAEaC,GACX,GAAAC,QAAM,cAAoCF,EAAe,EAE9CG,GAETC,EAAA,CAAC,CACH,SAAAC,EACA,WAAAC,EACA,YAAAC,EACA,UAAAC,EACA,OAAAC,EACA,KAAAC,EACA,OAAAC,CACF,IAEI,GAAAT,QAAA,cAACD,GAAoB,SAApB,CACC,MAAO,CACL,WAAYK,GAAcN,GAAgB,WAC1C,YAAaO,GAAeP,GAAgB,YAC5C,UAAWQ,GAAaR,GAAgB,UACxC,OAAQS,GAAUT,GAAgB,OAClC,KAAMU,GAAQV,GAAgB,KAC9B,OAAQW,GAAUX,GAAgB,MACpC,GAECK,CACH,EArBA,+BDbG,IAAMO,GAAmBC,EAAA,IAAM,CACpC,IAAMC,KAAsB,eAAWC,EAAmB,EAEpD,CAAE,WAAAC,EAAY,YAAAC,EAAa,UAAAC,EAAW,OAAAC,EAAQ,KAAAC,EAAM,OAAAC,CAAO,EAC/DP,GAAuBQ,GAEzB,MAAO,CACL,WAAAN,EACA,YAAAC,EACA,UAAAC,EACA,OAAAC,EACA,KAAAC,EACA,OAAAC,CACF,CACF,EAdgC,oBEJhC,IAAAE,GAA2B,iBAE3BC,GAAwB,wCACxBC,GAIO,iCCPP,IAAAC,GAA8C,oBAUvC,IAAMC,GACX,GAAAC,QAAM,cAA+C,CACnD,QAAS,CACP,QAAS,CAAE,oBAAqB,GAAM,mBAAoB,EAAM,CAClE,CACF,CAAC,EAEUC,GAETC,EAAA,CAAC,CAAE,IAAAC,EAAK,SAAAC,EAAU,QAAAC,CAAQ,IAE1B,GAAAL,QAAA,cAACD,GAAqB,SAArB,CACC,MAAO,CACL,IAAAI,EACA,QAASE,EACL,CACE,GAAGA,EACH,QAAS,CACP,oBAAqB,GACrB,mBAAoB,GACpB,GAAGA,EAAQ,OACb,CACF,EACA,CACE,QAAS,CACP,oBAAqB,GACrB,mBAAoB,EACtB,EACA,aAAc,MAChB,CACN,GAECD,CACH,EAxBA,gCCdG,IAAME,GAAmBC,EAC9BC,GAIe,CACf,GAAI,CAACA,EACH,OAGF,GAAM,CACJ,KAAAC,EACA,KAAAC,EACA,KAAAC,EACA,OAAAC,EACA,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,KAAAC,EACA,QAAAC,EACA,GAAGC,CACL,EAAIV,EAEE,CAAE,KAAMW,EAAW,GAAGC,CAAS,EAAIJ,GAAQ,CAAC,EAC5C,CAAE,KAAMK,EAAc,GAAGC,CAAY,EAAIL,GAAW,CAAC,EAE3D,MAAO,CACL,GAAGC,EACH,GAAIF,EAAO,CAAE,KAAMI,CAAS,EAAI,CAAC,EACjC,GAAIH,EAAU,CAAE,QAASK,CAAY,EAAI,CAAC,CAC5C,CACF,EA/BgC,oBF2BzB,IAAMC,GAASC,EAAA,CAAC,CACrB,OAAAC,EACA,SAAAC,EACA,OAAAC,EACA,aAAcC,CAChB,IAAkD,CAChD,GAAM,CAAE,IAAAC,EAAK,QAASC,CAAc,KAAI,eAAWC,EAAoB,EACjE,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErC,CAAE,aAAcC,CAAmB,EAAIL,GAAiB,CAAC,EAEzDM,EAAqB,CACzB,GAAGD,EACH,GAAGP,CACL,EAMM,CAAE,SAAUS,EAAW,GAAGC,CAAW,EAAIX,GAAU,CAAC,EAEpDY,EAAoBC,GAAiBH,CAAS,EAE9CI,KAAgB,aAAwB,CAC5C,SAAUT,EAAK,EACZ,OAAO,EACP,SAASN,CAAQ,EACjB,OAAOD,CAAM,EACb,OAAO,CACN,OAAQ,CAAE,GAAGa,EAAY,SAAUC,CAAkB,EACrD,QAASH,GAAA,YAAAA,EAAoB,OAC/B,CAAC,EACA,IAAIH,CAAgB,EAEvB,QAAS,KACPJ,GAAA,YAAAA,EAAM,CACJ,OAAAJ,EACA,SAAAC,EACA,OAAQ,CAAE,GAAGY,EAAY,SAAUC,CAAkB,CACvD,KAAM,QAAQ,QAAQ,CAAE,IAAK,EAAK,CAAC,EACrC,QAAS,OAAOV,EAAQ,IACxB,GAAGO,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAoB,KACvB,MAAG,YAAQ,SAAUH,EAAkBP,EAAU,CAC/C,qBACA,qBACF,CAAC,CACH,EACA,MAAO,EACT,CAAC,EAED,OAAO,OAAOG,EAAQ,IACjB,CAAE,KAAM,CAAE,IAAK,EAAK,CAAE,EACvBY,CACN,EAxDsB,UGhCtB,IAAAC,GAAkB,oBAOX,IAAMC,GAAqBC,EAAA,IAA6B,CAC7D,GAAM,CAAE,IAAKC,CAAe,EAAI,GAAAC,QAAM,WAAWC,EAAoB,EA6BrE,MAAO,CAAE,IA3BG,GAAAD,QAAM,QAAQ,IACnBD,EAKHD,EAAA,MAAO,CAAE,OAAAI,EAAQ,GAAGC,CAAK,IAAM,CAC7B,IAAMC,EAAoBF,GAAA,MAAAA,EAAQ,SAC9BG,GAAiBH,EAAO,QAAQ,EAChC,OAEJ,OAAOH,EAAe,CACpB,GAAGI,EACH,GAAID,EACA,CACE,OAAQ,CACN,GAAGA,EACH,SAAUE,CACZ,CACF,EACA,CAAC,CACP,CAAC,CACH,EAhBA,4BAJA,OAuBD,CAACL,CAAc,CAAC,CAEN,CACf,EA/BkC,sBCPlC,IAAAO,GAAkE,iBAMlEC,GAAqB,8BACrBC,GAAgB,yBAChBC,GAAmB,4BAgMZ,IAAMC,GAAYC,EAMvBC,GACgD,CAChD,GAAM,CAACC,EAAQC,CAAS,KAAI,aAAuB,CAAC,CAAC,EAC/C,CAACC,EAASC,CAAU,KAAI,aAAoB,CAAC,CAAC,EAC9C,CAACC,EAAiBC,CAAkB,KAAI,aAAoB,CAAC,CAAC,EAE9D,CACJ,SAAUC,EACV,KAAAC,EACA,QAAAC,EACA,QAAAC,EAAU,CAAC,EACX,YAAAC,EAAc,QACd,YAAAC,EAAc,KACd,YAAAC,EAAc,OAAOF,GAAgB,SAAWA,EAAc,QAC9D,SAAUG,EAAgB,IAC1B,oBAAAC,EACA,kBAAAC,EACA,yBAA0BC,EAC1B,aAAAC,EACA,UAAAC,EACA,WAAAC,EACA,cAAAC,EAAgB,GAChB,SAAAC,EACA,aAAAC,EAAe,CAAC,EAChB,qBAAAC,EAAuB,WACvB,YAAAC,EACA,SAAUC,EACV,WAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,EAAI/B,EAEEgC,KAAiB,gBACpBC,GACK,OAAOtB,GAAgB,YAClB,GAAAuB,SAAID,EAAMtB,CAAW,EAGvBA,EAAYsB,CAAI,EAEzB,CAACtB,CAAW,CACd,EAEMwB,KAAiB,gBACpBF,GACK,OAAOrB,GAAgB,YAClB,GAAAsB,SAAID,EAAMrB,CAAW,EAGvBA,EAAYqB,CAAI,EAEzB,CAACrB,CAAW,CACd,EAEM,CAAE,SAAAwB,EAAU,WAAAC,CAAW,EAAIC,EAAY/B,CAAiB,EAIxDgC,EAFUC,GAAQ,EAEK,CAC3B,SAAAJ,EACA,KAAMK,EAAkBb,EAAMC,CAAQ,CACxC,CAAC,EAEKa,GAAgB,MAAM,QAAQnB,CAAY,EAC5CA,EACA,CAACA,CAAY,EAEXoB,MAA6B,gBAChCC,GAAiC,CAChCtC,EACEsC,EAAK,KAAK,IACPX,IACE,CACC,MAAOD,EAAeC,CAAI,EAC1B,MAAOE,EAAeF,CAAI,CAC5B,EACJ,CACF,CACF,EACA,CAACtB,EAAaC,CAAW,CAC3B,EAEMiC,EACJ5B,GAAsCC,EAElC4B,EAA0BC,GAAqC,CACnE,SAAUV,EACV,IAAKK,GACL,aAAc,CACZ,GAAGG,EACH,QACEH,GAAc,OAAS,KAAMG,GAAA,YAAAA,EAA0B,UAAW,IACpE,UAAYD,GAAS,CA5S3B,IAAAI,EA6SQL,GAA2BC,CAAI,GAC/BI,EAAAH,GAAA,YAAAA,EAA0B,YAA1B,MAAAG,EAAA,KAAAH,EAAsCD,EACxC,CACF,EACA,gBAAiB,CAAE,QAAS,EAAM,EAClC,KAAML,EACN,SAAUA,EACV,SAAU,MACV,iBAAAT,CACF,CAAC,EAEKmB,KAAwB,gBAC3BL,GAAiC,CAChCxC,EACEwC,EAAK,KAAK,IACPX,IACE,CACC,MAAOD,EAAeC,CAAI,EAC1B,MAAOE,EAAeF,CAAI,CAC5B,EACJ,CACF,CACF,EACA,CAACtB,EAAaC,CAAW,CAC3B,EAEMsC,EAAcC,GAAqC,CACvD,SAAUd,EACV,QAASI,EAAkBhC,EAASD,CAAI,EACxC,QAASE,EAAQ,OAAOT,CAAM,EAC9B,WAAY,CACV,QAASmB,GAAA,YAAAA,EAAY,QACrB,UAAUA,GAAA,YAAAA,EAAY,WAAYD,EAClC,KAAMC,GAAA,YAAAA,EAAY,IACpB,EACA,cAAAC,EACA,aAAc,CACZ,GAAGH,EACH,UAAY0B,GAAS,CAnV3B,IAAAI,EAoVQC,EAAsBL,CAAI,GAC1BI,EAAA9B,GAAA,YAAAA,EAAc,YAAd,MAAA8B,EAAA,KAAA9B,EAA0B0B,EAC5B,CACF,EACA,gBAAiB,CAAE,QAAS,EAAM,EAClC,oBAAA7B,EACA,kBAAAC,EACA,KAAMuB,EACN,SAAUA,EACV,SAAAjB,EACA,WAAAK,EACA,YAAAF,EACA,iBAAAK,CACF,CAAC,EAEK,CAAE,YAAAsB,CAAY,EAAIC,GAAmB,CACzC,GAAGtB,EACH,UAAWmB,EAAY,YAAcJ,EAAwB,UAC/D,CAAC,EAEKQ,KAAkB,YACtB,OACE,GAAAC,SACE/B,IAAyB,WACrB,CAAC,GAAGrB,EAAS,GAAGE,CAAe,EAC/B,CAAC,GAAGA,EAAiB,GAAGF,CAAO,EACnC,OACF,EACF,CAACA,EAASE,CAAe,CAC3B,EAMMmD,MAAsB,WAAO9B,CAAgB,EAE7C+B,KAAW,YAAQ,OAChB,GAAAC,SAAUC,GAAkB,CACjC,GAAIH,GAAoB,QAAS,CAC/BtD,EAAUsD,GAAoB,QAAQG,CAAK,CAAC,EAC5C,OAGF,GAAI,CAACA,EAAO,CACVzD,EAAU,CAAC,CAAC,EACZ,OAGFA,EAAU,CACR,CACE,MAAOW,EACP,SAAU,WACV,MAAA8C,CACF,CACF,CAAC,CACH,EAAG7C,CAAa,EACf,CAACD,EAAaC,CAAa,CAAC,EAE/B,uBAAU,IAAM,CACd0C,GAAoB,QAAU9B,CAChC,EAAG,CAACA,CAAgB,CAAC,EAEd,CACL,YAAAwB,EACA,wBAAAJ,EACA,MAAOI,EACP,kBAAmBJ,EACnB,QAASQ,EACT,SAAAG,EACA,SAAU,CAAE,YAAAL,CAAY,CAC1B,CACF,EApNyB,aCxMzB,IAAAQ,GAAwD,oBAMxDC,GAA2B,oCAC3BC,GAAoB,6BACpBC,GAAe,iBACfC,GAAqB,wBAwOrB,IAAMC,GAAuC,CAAC,EACxCC,GAAqC,CAAC,EAErC,SAASC,GAId,CACA,eAAAC,EACA,gBAAAC,EACA,cAAAC,EAAgB,GAChB,WAAAC,EACA,cAAAC,EACA,gBAAAC,EAAkBP,GAClB,yBAAAQ,EACA,cAAAC,EACA,gBAAAC,EAAkBX,GAClB,QAASY,EACT,QAASC,EACT,iBAAkBC,EAClB,SAAUC,EACV,oBAAAC,EACA,kBAAAC,EACA,aAAAC,EACA,SAAUC,EACV,YAAAC,EACA,WAAAC,EACA,KAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,gBAAAC,CACF,EAAgD,CAAC,EAG/C,CAnRF,IAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAoRE,GAAM,CAAE,iBAAkBC,CAAwB,EAAIC,GAAoB,EAEpEC,EAAmBnB,GAAwBiB,EAE3CG,EAAWC,GAAYhB,CAAgB,EAEvCiB,EAAaC,GAAc,EAC3B,CAAE,YAAAC,CAAY,EAAIC,GAAiB,EACnC,CAAE,OAAAC,EAAQ,SAAAC,CAAS,EAAIH,EAAY,EACnCI,EAAUC,GAAQ,EAClBC,EAAeC,GAAU,EAEzBC,IACHlC,GAAA,YAAAA,EAAiB,OAAQ,YAAc,SACpCmC,IACHlC,GAAA,YAAAA,EAAiB,OAAQ,YAAc,SACpCmC,EAAsB3C,IAAkB,GAAQ,MAAQ,SACxD4C,IACH3C,GAAA,YAAAA,EAAY,OAAQ0C,KAAyB,MAC1CE,EAAmBC,EACvB7C,GAAA,YAAAA,EAAY,QACZH,CACF,EACMiD,EAAoBD,EACxB7C,GAAA,YAAAA,EAAY,SACZF,CACF,EACMiD,GAAgBF,EAAkB7B,EAAMC,CAAQ,EAKhD,CAAE,cAAA+B,GAAe,eAAAC,EAAgB,aAAAC,EAAc,cAAAC,CAAc,EACjEC,GAAiBlB,GAAU,GAAG,EAE1BmB,EAA0BR,EAC9BvC,GAAA,YAAAA,EAAiB,QACjBF,CACF,EACMkD,EACJT,EAAkBvC,GAAA,YAAAA,EAAiB,UAAWD,CAAe,GAC7DX,GAEI6D,EAA0BV,EAC9BtC,GAAA,YAAAA,EAAiB,QACjBN,CACF,EACMuD,GACJX,EAAkBtC,GAAA,YAAAA,EAAiB,UAAWL,CAAe,GAC7DP,GAEI8D,EACJZ,EACEvC,GAAA,YAAAA,EAAiB,gBACjBH,CACF,GAAK,QAEHuD,EACAC,EACAC,GACAC,GAEAlC,GACF+B,IACEtC,GAAAkB,GAAA,YAAAA,EAAc,SAAd,YAAAlB,GAAsB,UAAW4B,IAAiBJ,GAAoB,EACxEe,IACEtC,GAAAiB,GAAA,YAAAA,EAAc,SAAd,YAAAjB,GAAsB,WACtB4B,GACAH,GACA,GACFc,KACEtC,GAAAgB,GAAA,YAAAA,EAAc,SAAd,YAAAhB,GAAsB,WACrB4B,EAAa,OAASA,EAAeK,GACxCM,KACEtC,GAAAe,GAAA,YAAAA,EAAc,SAAd,YAAAf,GAAsB,WACrB4B,EAAc,OAASA,EAAgBE,KAE1CK,EAAiBd,GAAoB,EACrCe,EAAkBb,GAAqB,GACvCc,GAAgBL,EAChBM,GAAgBR,GAGlB,GAAM,CAAE,QAAAS,EAAQ,EAAIC,GAAc,EAE5BC,GAAKC,GAAM,EAEX,CAAE,SAAAC,GAAU,WAAAC,EAAW,EAAIC,EAAY3D,CAAgB,EAEvD4D,GAAejC,EAAQ,CAC3B,SAAA8B,GACA,KAAMnB,EACR,CAAC,EAED,GAAAuB,QAAM,UAAU,IAAM,IACpB,GAAAC,SACE,OAAOJ,GAAe,IACtB,sCACF,CACF,EAAG,CAACA,EAAU,CAAC,EAEf,GAAM,CAACK,GAASC,EAAU,KAAI,aAC5BC,GAAkBlB,GAA2BI,IAAiB,CAAC,CAAC,CAClE,EACM,CAACe,GAASC,EAAU,KAAI,aAC5BC,GAAkBvB,EAA2BO,IAAiB,CAAC,CAAC,CAClE,EACM,CAACiB,GAASC,EAAU,KAAI,aAAiBrB,CAAc,EACvD,CAACsB,GAAUC,EAAW,KAAI,aAAiBtB,CAAe,EAE1DuB,GAAwBC,EAAA,IAAc,CAC1C,GAAIrD,IAAe,MAAO,CAExB,GAAM,CAAE,QAAA0C,GAAS,QAAAG,GAAS,SAAAK,GAAU,QAAAF,GAAS,GAAGM,EAAK,GACnD9C,GAAA,YAAAA,EAAc,SAAU,CAAC,EAE3B,OAAO8C,GAIT,GAAM,CAAE,OAAAC,GAAQ,QAAAV,GAAS,SAAAK,GAAU,QAAAF,GAAS,GAAGM,EAAK,EAAI,GAAAE,QAAG,MAAMpD,EAAQ,CACvE,kBAAmB,EACrB,CAAC,EAED,OAAOkD,EACT,EAf8B,yBAiBxBG,GAAgCJ,EAAA,CAAC,CACrC,WAAY,CAAE,QAAAL,GAAS,SAAAE,EAAS,EAChC,OAAAK,GACA,QAAAV,EACF,IAA8B,CAC5B,GAAI7C,IAAe,MACjB,OACEkC,GAAG,CACD,KAAM,OACN,QAAS,CACP,SAAU,GACV,UAAW,EACb,EACA,MAAO,CACL,GAAIrB,EAAsB,CAAE,QAAAmC,GAAS,SAAAE,EAAS,EAAI,CAAC,EACnD,QAASK,GACT,QAAAV,GACA,GAAGO,GAAsB,CAC3B,CACF,CAAC,GAAK,GAGV,IAAMM,GAAqB,GAAAF,QAAG,MAAMpD,GAAA,YAAAA,EAAQ,UAAU,EAAE,EAElDuD,GAAkBC,GAAqB,CAC3C,WAAY,CACV,SAAAV,GACA,QAAAF,EACF,EACA,QAASN,IAAWa,GACpB,QAAAV,GACA,GAAGa,EACL,CAAC,EAED,MAAO,GAAGrD,GAAY,MAAMsD,IAAmB,IACjD,EAnCsC,oCAqCtC,cAAU,IAAM,CACVvD,IAAW,KACb6C,GAAWrB,CAAc,EACzBuB,GAAYtB,CAAe,EAC3Bc,GACEC,GAAkBlB,GAA2BI,IAAiB,CAAC,CAAC,CAClE,EACAgB,GACEC,GAAkBvB,EAA2BO,IAAiB,CAAC,CAAC,CAClE,EAEJ,EAAG,CAAC3B,CAAM,CAAC,KAEX,cAAU,IAAM,CACd,GAAIP,EAAkB,CAEpB,IAAMgE,GAAcT,GAAsB,EAE1C,GAAIpD,IAAe,MACjBkC,GAAG,CACD,KAAM,UACN,QAAS,CACP,UAAW,EACb,EACA,MAAO,CACL,GAAIrB,EAAsB,CAAE,SAAAqC,GAAU,QAAAF,EAAQ,EAAI,CAAC,EACnD,WAAS,GAAAc,SACPpB,GACAhB,GACA,GAAAqC,OACF,EACA,WAAS,GAAAD,SACPjB,GACArB,EACA,GAAAuC,OACF,CAEF,CACF,CAAC,MACI,CACL,IAAMJ,GAAkBC,GAAqB,CAC3C,GAAI/C,EACA,CACE,WAAY,CACV,SAAAqC,GACA,QAAAF,EACF,CACF,EACA,CAAC,EACL,WAAS,GAAAc,SAAepB,GAAShB,GAA2B,GAAAqC,OAAO,EACnE,WAAS,GAAAD,SAAejB,GAASrB,EAA2B,GAAAuC,OAAO,EACnE,GAAGF,EACL,CAAC,EACD,OAAO7B,IAAA,YAAAA,GAAU,GAAG3B,KAAYsD,KAAmB,OAAW,CAC5D,QAAS,EACX,IAGN,EAAG,CAAC9D,EAAkBmD,GAASE,GAAUR,GAASG,EAAO,CAAC,EAE1D,IAAMmB,GAAcC,GAAqC,CACvD,SAAU5B,GACV,cAAApE,EACA,WAAY,CAAE,QAAA+E,GAAS,SAAAE,GAAU,KAAMhF,GAAA,YAAAA,EAAY,IAAK,EACxD,QAASwC,EACLwD,GAAa1C,EAA2BqB,EAAO,EAC/C,OACJ,QAASlC,EACLwD,GAAazC,GAA2BgB,EAAO,EAC/C,OACJ,aAAA5D,EACA,gBAAAO,EACA,oBAAAT,EACA,kBAAAC,EACA,KAAM0D,GACN,SAAUA,GACV,SAAAzC,EACA,WAAAb,EACA,YAAAD,EACA,iBAAAI,CACF,CAAC,EAEKgF,MAAoB,gBACvBC,IAA6B,CAC5BvB,GAAYwB,IACVJ,GAAa1C,EAA2B6C,GAAYC,EAAW,CACjE,CACF,EACA,CAAC9C,CAAyB,CAC5B,EAEM+C,MAAsB,gBACzBF,IAA6B,CAC5BvB,GAAWoB,GAAa1C,EAA2B6C,EAAU,CAAC,CAChE,EACA,CAAC7C,CAAyB,CAC5B,EAEMgD,MAAuB,gBAC1BC,IAAwD,CACvD3B,GAAY4B,IACVR,GAAa1C,EAA2BiD,GAAOC,EAAI,CAAC,CACtD,CACF,EACA,CAAClD,CAAyB,CAC5B,EAEMmD,MACJ,gBACE,CACEC,GACAC,GAA8BlD,IAC3B,CACC,OAAOiD,IAAoB,WAC7BJ,GAAqBI,EAAe,EAEhCC,KAAa,UACfN,GAAoBK,EAAe,EAEnCR,GAAkBQ,EAAe,CAGvC,EACA,CAACJ,GAAsBD,GAAqBH,EAAiB,CAC/D,EAEIU,MAAmB,gBACtBC,IAA0B,CACzBpC,GAAW,IAAMwB,GAAazC,GAA2BqD,EAAS,CAAC,CACrE,EACA,CAACrD,EAAyB,CAC5B,EAEA,MAAO,CACL,iBAAkBsC,GAClB,WAAYA,GACZ,QAAAtB,GACA,WAAYoC,GACZ,OAAQpC,GACR,UAAWoC,GACX,QAAAjC,GACA,WAAY8B,GACZ,QAAA3B,GACA,WAAAC,GACA,SAAAC,GACA,YAAAC,GACA,UAAWD,GACP,KAAK,QAAMxD,GAAAsE,GAAY,OAAZ,YAAAtE,GAAkB,QAAS,GAAKwD,EAAQ,EACnD,EACJ,8BAAAO,GACA,SAAUO,GAAY,QACxB,CACF,CA5VgBX,EAAAvF,GAAA,YCpPhB,IAAAkH,GAA2B,iBAE3BC,GAAwB,wCACxBC,GAKO,iCCRP,IAAAC,GAA8C,oBAIvC,IAAMC,GAAkB,GAAAC,QAAM,cAAgC,CAAC,CAAC,EAE1DC,GAETC,EAAA,CAAC,CAAE,OAAAC,EAAQ,IAAAC,EAAK,OAAAC,EAAQ,SAAAC,CAAS,IAEjC,GAAAN,QAAA,cAACD,GAAgB,SAAhB,CAAyB,MAAO,CAAE,OAAAI,EAAQ,IAAAC,EAAK,OAAAC,CAAO,GACpDC,CACH,EAJA,2BDuDG,IAAMC,GAASC,EAAA,CAGpB,CACA,mBAAAC,EACA,sBAAAC,CACF,EAAmD,CAAC,IAG/C,CACH,IAAMC,KAAc,mBAAe,EAC7BC,KAAkB,eAAWC,EAAe,EAC5C,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,EAAeC,GAAsB,EAErC,CAAE,UAAAC,CAAU,KAAI,eAAWC,EAAe,EAC1C,CACJ,KAAMC,EACN,QAAAC,EACA,UAAAC,CACF,EAAIC,GAAe,CACjB,+BAAgC,GAAQP,GAAA,MAAAA,EAAc,UACtD,aAAc,CACZ,QAAS,CAAC,EAACL,GAAA,MAAAA,EAAiB,OAC9B,CACF,CAAC,EAEKa,KAAM,gBACV,MAAOC,GAAW,CA5FtB,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA6FM,IAAMC,EAAWC,GAAaP,EAAO,SAAUP,CAAS,EAClDe,EAAiBC,GACrBR,EAAAK,GAAA,YAAAA,EAAU,OAAV,YAAAL,EAAgB,OAChBC,EAAAI,GAAA,YAAAA,EAAU,UAAV,YAAAJ,EAAmB,OACnBE,GAAAD,EAAAG,GAAA,YAAAA,EAAU,UAAV,YAAAH,EAAmB,WAAnB,YAAAC,EAA6B,WAC/B,EAEA,GAAII,GACE,CAACE,GAAcF,EAAgBR,EAAO,MAAM,EAC9C,OAIJ,IAAIW,EACJ,OAAId,IAAeX,GAAA,MAAAA,EAAiB,UAClCyB,EAAa,MAAMf,EAAQ,GAGtB,OAAMS,EAAAnB,EAAgB,SAAhB,YAAAmB,EAAA,KAAAnB,EAAyB,CACpC,GAAGc,EACH,OAAQL,IAAgBgB,GAAA,YAAAA,EAAY,KACtC,GACF,EACA,CACE,YAAavB,EAAK,EAAE,MAAM,EAAE,OAAO,KAAK,EAAE,IAAI,EAC9C,GAAGL,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAoB,KACvB,MAAG,YAAQ,SAAUM,CAAgB,CACvC,CACF,CACF,EAEMuB,KAAS,gBAMb,MAAOZ,GAAW,CApItB,IAAAC,EAqIM,OAAO,OAAMA,EAAAf,EAAgB,SAAhB,YAAAe,EAAA,KAAAf,EAAyBc,GACxC,EACA,CACE,UAAYa,GAAS,CACfA,GAAA,MAAAA,EAAM,UACR5B,EAAY,kBACVG,EAAK,EACF,MAAM,EACN,UAASyB,GAAA,YAAAA,EAAM,WAAY,EAAE,EAC7B,OAAO,MAAM,EACb,IAAIxB,CAAgB,CACzB,CAEJ,EACA,YAAaD,EAAK,EAAE,MAAM,EAAE,OAAO,QAAQ,EAAE,IAAI,EACjD,GAAGJ,EACH,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAuB,KAC1B,MAAG,YAAQ,SAAUK,CAAgB,CACvC,CACF,CACF,EAEA,MAAO,CAAE,IAAAU,EAAK,OAAAa,CAAO,CACvB,EA9FsB,UE/DtB,IAAAE,GAA2B,iBAE3BC,GAAwB,wCACxBC,GAIO,iCA0BA,IAAMC,GAAaC,EAAA,CAIxB,CACA,SAAAC,EACA,OAAAC,EACA,KAAAC,EACA,OAAAC,EACA,SAAAC,EACA,aAAAC,CACF,IAAuE,CACrE,GAAM,CAAE,IAAAC,CAAI,KAAI,eAAWC,EAAe,EACpC,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EA0B3C,SAxBsB,aAAsC,CAC1D,SAAUF,EAAK,EACZ,MAAM,EACN,SAASR,CAAQ,EACjB,OAAO,MAAM,EACb,OAAOE,CAAI,EACX,IAAIO,CAAgB,EACvB,QAAS,KACPH,GAAA,YAAAA,EAAM,CACJ,SAAAN,EACA,OAAAC,EACA,OAAAE,EACA,KAAAD,EACA,SAAAE,CACF,KAAM,QAAQ,QAAQ,CAAC,CAAC,EAC1B,QAAS,OAAOE,EAAQ,IACxB,GAAGD,EACH,MAAO,GACP,KAAM,CACJ,GAAGA,GAAA,YAAAA,EAAc,KACjB,MAAG,YAAQ,aAAcI,EAAkBT,CAAQ,CACrD,CACF,CAAC,CAGH,EAxC0B,cCjC1B,IAAAW,GAAkC,iBAElCC,GAAqB,wBA8Bd,IAAMC,GAAgBC,EAAA,CAAC,CAC5B,KAAMC,EAAgB,CAAC,CACzB,EAAwB,CAAC,IAA+B,CACtD,IAAMC,EAAaC,GAAc,EAC3B,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EACzCC,EAASC,GAAU,EACnBC,EAAYC,EAAa,EACzB,CAAE,UAAAC,EAAW,SAAAC,EAAU,OAAAC,CAAO,EAAIC,EAAY,EAC9C,CACJ,QAAS,CAAE,iBAAAC,CAAiB,CAC9B,EAAIC,GAAiB,EAEfC,EAAiC,CAAC,EAExC,GAAI,EAACL,GAAA,MAAAA,EAAU,MACb,MAAO,CAAE,YAAAK,CAAY,EAGvB,IAAMC,EAAgBjB,EAACkB,GAAuC,CAlDhE,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAmDI,IAAMC,EACJ,OAAOP,GAAe,SAClBQ,GAAaR,EAAYR,EAAWR,IAAe,QAAQ,GAAK,CAC9D,KAAMgB,CACR,EACAA,EAEN,GAAIO,EAAgB,CAClB,IAAME,EAAkBC,GACtBT,EAAAM,GAAA,YAAAA,EAAgB,OAAhB,YAAAN,EAAsB,OACtBM,GAAA,YAAAA,EAAgB,UAClB,EACIE,GACFV,EAAcU,CAAe,EAE/B,IAAME,EAAuBC,GAC3BL,EACAf,EACAR,IAAe,QACjB,EAAE,KAAM6B,GAAMA,EAAE,SAAW,MAAM,EAE3BC,GAAUZ,EAAAS,GAAA,YAAAA,EAAsB,WAAtB,MAAAT,EAAgC,KAC5CS,GAAA,YAAAA,EAAsB,MACtB,OAEEI,EAAOD,EACT9B,IAAe,SACb8B,EACAE,GAAaF,EAASP,GAAA,YAAAA,EAAgB,KAAMnB,EAAQL,CAAa,EACnE,OAEJe,EAAY,KAAK,CACf,MACEY,GACEP,EAAAI,EAAe,OAAf,YAAAJ,EAAqB,OACrBC,EAAAG,EAAe,UAAf,YAAAH,EAAwB,KAC1B,GACAd,EACE,GAAGiB,EAAe,QAAQA,EAAe,OACzCX,EAAiB,SAASW,EAAe,IAAI,CAC/C,EACF,KAAMQ,EACN,KAAML,GACJL,EAAAE,EAAe,OAAf,YAAAF,EAAqB,MACrBC,EAAAC,EAAe,UAAf,YAAAD,EAAwB,KACxBC,EAAe,IACjB,CACF,CAAC,EAEL,EAlDsB,iBAsDtB,GAFAR,EAAcN,CAAQ,EAElBC,GAAUA,IAAW,OAAQ,CAC/B,IAAMuB,EAAM,WAAWvB,IACjBwB,EAAc5B,EAAU2B,CAAG,EAC7B,OAAO/B,EAAiB,KAAegC,IAAgBD,MACzD,GAAAE,SACE,GACA,8DAA8DzB,kCAAuCA;AAAA,uGACvG,EACAI,EAAY,KAAK,CACf,MAAOR,EACL,WAAWI,IACXE,EAAiB,SAASF,CAAM,CAClC,CACF,CAAC,GAEDI,EAAY,KAAK,CACf,MAAOR,EAAU2B,EAAKrB,EAAiB,SAASF,CAAM,CAAC,CACzD,CAAC,EAIL,MAAO,CACL,YAAAI,CACF,CACF,EAhG6B,iBChC7B,IAAAsB,GAAkB,oBCMX,IAAMC,GAAoBC,EAAA,CAC/BC,EACAC,EACAC,EAAS,KACN,CACH,IAAMC,EAA2B,CAAC,EAE9BC,EAAwBC,GAAkBL,EAAUC,CAAS,EACjE,KAAOG,GACLD,EAAQ,KAAKC,CAAqB,EAClCA,EAAwBC,GAAkBD,EAAuBH,CAAS,EAE5E,OAAAE,EAAQ,QAAQ,EAUT,IARK,CAAC,GAAGA,EAASH,CAAQ,EAC9B,IAAKM,GACJC,IACGL,EAASI,EAAE,MAAQ,SAAcA,EAAE,YAAcA,EAAE,IACtD,CACF,EACC,KAAK,GAAG,EAEI,QAAQ,MAAO,EAAE,GAClC,EAvBiC,qBCQ1B,IAAME,GAAaC,EAAA,CACxBC,EACAC,EAAS,KACU,CACnB,IAAMC,EAAa,CACjB,KAAM,CACJ,KAAM,UACR,EACA,SAAU,CAAC,CACb,EAEAF,EAAU,QAASG,GAAa,CAC9B,IAAMC,EAA2B,CAAC,EAE9BC,EAAgBC,GAAkBH,EAAUH,CAAS,EACzD,KAAOK,GACLD,EAAQ,KAAKC,CAAa,EAC1BA,EAAgBC,GAAkBD,EAAeL,CAAS,EAE5DI,EAAQ,QAAQ,EAEhB,IAAIG,EAAcL,EAElBE,EAAQ,QAASI,GAAW,CAC1B,IAAMC,GACHR,EAASO,EAAO,MAAQ,SAAcA,EAAO,YAAcA,EAAO,KAEhED,EAAY,SAASE,CAAG,IAC3BF,EAAY,SAASE,CAAG,EAAI,CAC1B,KAAMD,EACN,SAAU,CAAC,CACb,GAEFD,EAAcA,EAAY,SAASE,CAAG,CACxC,CAAC,EAED,IAAMA,GACHR,EAASE,EAAS,MAAQ,SAC3BA,EAAS,YACTA,EAAS,KAENI,EAAY,SAASE,CAAG,IAC3BF,EAAY,SAASE,CAAG,EAAI,CAC1B,KAAMN,EACN,SAAU,CAAC,CACb,EAEJ,CAAC,EAED,IAAMO,EAAUX,EAACY,GAA+B,CAC9C,IAAMC,EAAwB,CAAC,EAE/B,cAAO,KAAKD,EAAK,QAAQ,EAAE,QAASF,GAAQ,CAC1C,IAAMI,EAAUC,GACdH,EAAK,SAASF,CAAG,EAAE,KACnBT,EACAC,CACF,EACMc,EAAqB,CACzB,GAAGJ,EAAK,SAASF,CAAG,EAAE,KACtB,IAAKI,EACL,SAAUH,EAAQC,EAAK,SAASF,CAAG,CAAC,CACtC,EACAG,EAAM,KAAKG,CAAI,CACjB,CAAC,EAEMH,CACT,EAlBgB,WAoBhB,OAAOF,EAAQR,CAAI,CACrB,EAtE0B,cFoB1B,IAAMc,GAAeC,EAACC,GACbA,EACJ,MAAM,GAAG,EAAE,CAAC,EACZ,MAAM,GAAG,EAAE,CAAC,EACZ,QAAQ,YAAa,IAAI,EAJT,gBAeRC,GAAUF,EAAA,CACrB,CAAE,KAAAG,EAAM,uBAAAC,EAAyB,EAAK,EAAkB,CACtD,uBAAwB,EAC1B,IACsB,CACtB,IAAMC,EAAYC,EAAa,EAEzBC,EAAYC,GAAa,EACzBC,EAAaC,GAAc,EAC3B,CAAE,SAAAC,EAAU,UAAAC,CAAU,EAAIC,EAAY,EACtC,CAAE,SAAAZ,CAAS,EAAIa,GAAU,EACzB,CAAE,YAAAC,CAAY,EAAIC,GAAiB,EACnC,CAAE,SAAUC,CAAW,EAAIF,EAAY,EACvCG,EAAkBC,GAAoB,EAStCC,EAAa,MANjBX,IAAe,SACXV,GAAakB,CAAU,EACvBhB,EACEF,GAAaE,CAAQ,EACrB,SAEiC,IAAI,QAAQ,MAAO,EAAE,IAExDoB,EAAcV,EAChBW,GAAkBX,EAAUC,EAAWH,IAAe,QAAQ,EAC9DW,GAAc,GAEZG,EAAkB,GAAAC,QAAM,QAAQ,IAAM,CAC1C,GAAI,CAACb,EAAU,MAAO,CAAC,EACvB,IAAIc,EAASC,GAAkBf,EAAUC,CAAS,EAC5Ce,EAAO,CAACL,GAAkBX,EAAUC,CAAS,CAAC,EACpD,KAAOa,GACLE,EAAK,KAAKL,GAAkBG,EAAQb,CAAS,CAAC,EAC9Ca,EAASC,GAAkBD,EAAQb,CAAS,EAE9C,OAAOe,CACT,EAAG,CAAC,CAAC,EAECC,EAAc,GAAAJ,QAAM,YACvBK,GAAiD,CAzFtD,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA6FM,GAHIC,GAAkBN,EAAAD,GAAA,YAAAA,EAAM,OAAN,YAAAC,EAAY,MAAMC,EAAAF,GAAA,YAAAA,EAAM,UAAN,YAAAE,EAAe,IAAI,GAGvD,EAACF,GAAA,MAAAA,EAAM,OAAQA,EAAK,SAAS,SAAW,EAAG,OAE/C,IAAMQ,EAAWR,EAAK,KAClBtB,EAAU,CACR,SAAUsB,EACV,OAAQ,OACR,OAAQpB,IAAe,SACvB,KAAAN,CACF,CAAC,EACD,OAEJ,GACE,EAAAC,GACAiC,GACAA,EAAS,MAAM,uBAAuB,GAIxC,MAAO,CACL,GAAGR,EACH,MAAOQ,EACP,KAAMD,GAAkBJ,EAAAH,EAAK,OAAL,YAAAG,EAAW,MAAMC,EAAAJ,EAAK,UAAL,YAAAI,EAAc,KAAMJ,EAAK,IAAI,EACtE,MACEO,GAAkBF,EAAAL,GAAA,YAAAA,EAAM,OAAN,YAAAK,EAAY,OAAOC,EAAAN,GAAA,YAAAA,EAAM,UAAN,YAAAM,EAAe,KAAK,GACzD9B,EACE,GAAGwB,EAAK,QAAQA,EAAK,OACrBX,EAAgBW,EAAK,KAAM,QAAQ,CACrC,CACJ,CACF,EACA,CAACpB,EAAYN,EAAMI,EAAWF,EAAWD,CAAsB,CACjE,EAEMkC,EAAY,GAAAd,QAAM,QAAQ,IAAM,CACpC,IAAMe,EAAgBC,GAAW5B,EAAWH,IAAe,QAAQ,EAG7DgC,EAAUzC,EAAC0C,GACRA,EAAM,QAASb,GAAS,CAC7B,IAAMc,EAAgBF,EAAQZ,EAAK,QAAQ,EACrCe,EAAUhB,EAAY,CAC1B,GAAGC,EACH,SAAUc,CACZ,CAAC,EAED,OAAKC,EAEE,CAACA,CAAO,EAFM,CAAC,CAGxB,CAAC,EAXa,WAchB,OAAOH,EAAQF,CAAa,CAC9B,EAAG,CAAC3B,EAAWH,EAAYmB,CAAW,CAAC,EAEvC,MAAO,CACL,gBAAAL,EACA,YAAAF,EACA,UAAWiB,CACb,CACF,EAvGuB,WGjDvB,IAAAO,GAKO,oBAIA,IAAMC,MAAc,kBAAgC,CAAC,CAAC,EAMhDC,GAAsBC,EAAA,CAAC,CAClC,SAAAC,EACA,MAAAC,CACF,IAAwD,CACtD,IAAMC,EAAeC,GAAe,EAE9BC,KAAc,YAAQ,KACnB,CACL,GAAGF,EACH,GAAGD,CACL,GACC,CAACC,EAAcD,CAAK,CAAC,EAExB,OACE,GAAAI,QAAA,cAACR,GAAY,SAAZ,CAAqB,MAAOO,GAAcJ,CAAS,CAExD,EAhBmC,uBAsBtBG,GAAiBJ,EAAA,IAAM,CAElC,GAAI,IADY,eAAWF,EAAW,EAEpC,MAAM,IAAI,MAAM,0DAA0D,EAG5E,SAAO,eAAWA,EAAW,CAC/B,EAP8B,kBCzBvB,IAAMS,GAAUC,EAAA,IAAM,CAC3B,GAAM,CAAE,OAAAC,CAAO,EAAIC,GAAU,EAEvBC,EAAcC,GAAe,EAkCnC,OAhCkBJ,EAAA,CAAC,CACjB,SAAAK,EACA,KAAMC,CACR,EAGI,CAAC,IAAM,CACT,GAAM,CAAE,KAAAC,CAAK,EAAIC,GAAiBH,CAAQ,GAAK,CAAE,KAAM,CAAC,CAAE,EAGpD,CACJ,QAASI,EACT,QAASC,EACT,QAASC,EACT,SAAUC,EACV,GAAGC,CACL,EAAIZ,GAAU,CAAC,EAETa,EAAkC,CACtC,GAAGP,EACH,GAAGM,EACH,GAAGP,CACL,EAGA,OAAIH,GAAA,MAAAA,EAAa,WACfW,EAAO,SAAcX,EAAY,UAG5BW,CACT,EA9BkB,YAiCpB,EAtCuB,WCXvB,IAAAC,GAAkB,oBAEX,IAAMC,GAAmBC,EAAA,IAAM,CACpC,GAAM,CAAE,QAAAC,CAAQ,EAAI,GAAAC,QAAM,WAAWC,EAAa,EAElD,OAAOF,CACT,EAJgC,oBCHhC,IAAAG,GAAkB,oBCeX,IAAMC,GAAQC,EAACC,GAAiB,CACrC,IAAMC,EAAaC,GAAc,EAC3B,CAAE,UAAAC,CAAU,EAAIC,GAAiB,EAEjCC,EAASC,GAAU,EACnBC,EAAeJ,EAAyC,EAExDK,EAAaP,IAAe,SAAWM,EAAa,GAAKF,EAAO,GAEtE,OAAOL,GAAMQ,CACf,EAVqB,SCAd,IAAMC,GAAYC,EAACC,GAAoB,CAC5C,IAAMC,EAAaC,GAAc,EAC3B,CAAE,UAAAC,CAAU,EAAIC,GAAiB,EAEjCC,EAASC,GAAU,EACnBC,EAAeJ,EAAyC,EAExDK,EACJP,IAAe,SAAWM,EAAa,OAASF,EAAO,OAEzD,OAAOL,GAAUQ,CACnB,EAXyB,aFgClB,SAASC,GAAkBC,EAA+B,CAC/D,GAAM,CAAE,OAAAC,EAAQ,WAAYC,CAAmB,EAAIC,EAAY,EACzDC,GAAkBJ,GAAA,YAAAA,EAAO,WAAYE,EACrC,CAAE,WAAAG,EAAa,OAAW,SAAAC,EAAW,MAAU,EAAIF,EACrDH,EAAOG,EAAiB,EAAI,EAC5B,CAAC,EAECG,EAAiBL,IAAuBG,EACxCG,EAAaC,GAAM,EACnBC,EAASC,GAAUX,GAAA,YAAAA,EAAO,MAAM,EAEhCY,EAAY,GAAAC,QAAM,QAAQ,IACzBN,GAEEP,GAAA,YAAAA,EAAO,KAAMQ,EAFQR,GAAA,YAAAA,EAAO,GAGlC,CAACO,EAAgBP,GAAA,YAAAA,EAAO,GAAIQ,CAAU,CAAC,EAEpC,CAACM,EAAIC,CAAK,EAAI,GAAAF,QAAM,SAA8BD,CAAS,EAEjE,GAAAC,QAAM,QAAQ,IAAME,EAAMH,CAAS,EAAG,CAACA,CAAS,CAAC,EAEjD,IAAMI,EAAa,GAAAH,QAAM,QAAQ,IAC3B,CAACN,GAAkB,EAACP,GAAA,MAAAA,EAAO,QACtB,SAGLU,IAAW,QAAUA,IAAW,QAC3BA,EAGF,SACN,CAACA,EAAQH,EAAgBP,GAAA,YAAAA,EAAO,MAAM,CAAC,EAE1C,MAAO,CACL,GAAAc,EACA,MAAAC,EACA,SAAAT,EACA,OAAAI,EACA,WAAAL,EACA,WAAAW,CACF,CACF,CAzCgBC,EAAAlB,GAAA,qBGpCT,SAASmB,GAAoB,CAClC,KAAAC,CACF,EAAkD,CAChD,IAAMC,EAAYC,EAAa,EACzB,CACJ,iBAAkB,CAAE,SAAAC,CAAS,CAC/B,EAAIC,GAAiB,EAEfC,EAAM,WAAWL,IACjBM,EAAWH,EAASH,CAAI,EAI9B,MAAO,CAAE,MAFKC,EAAUI,EAAKC,CAAQ,CAEtB,CACjB,CAdgBC,EAAAR,GAAA,uBCXhB,IAAAS,GAAkB,oBCAlB,IAAAC,GAAkB,oBA4BX,IAAMC,GAAqBC,EAChCC,GAC0B,CA9B5B,IAAAC,EAAAC,EAAAC,EA+BE,IAAMC,EAAYC,EAAa,EACzBC,EAAuB,GAAAC,QAAM,WAAWC,EAAoB,EAE5DC,IACJR,EAAAD,EAAM,gBAAN,YAAAC,EAAqB,UACrBK,EAAqB,QAAQ,QAAQ,oBAEjCI,IACJR,EAAAF,EAAM,gBAAN,YAAAE,EAAqB,qBACrBI,EAAqB,QAAQ,QAAQ,mBAEjC,CAAE,KAAMK,CAAU,EAAIC,GAAO,CACjC,UAAUT,EAAAH,EAAM,WAAN,YAAAG,EAAgB,KAC1B,OAAQH,EAAM,SAAW,QAAU,SAAWA,EAAM,OACpD,OAAQ,CAAE,GAAIA,EAAM,GAAI,SAAUA,EAAM,QAAS,EACjD,aAAc,CACZ,QAASS,CACX,CACF,CAAC,EAEKI,EAAQ,GAAAN,QAAM,QAAQ,IACtBI,GAAA,MAAAA,EAAW,IAAY,GACvBA,GAAA,MAAAA,EAAW,OAAeA,EAAU,OAEjCP,EACL,yBACA,qCACF,EACC,CAACO,GAAA,YAAAA,EAAW,IAAKA,GAAA,YAAAA,EAAW,OAAQP,CAAS,CAAC,EAE3CU,EAASL,GAAwBC,GAAsB,EAACC,GAAA,MAAAA,EAAW,KAEnEI,GAAWJ,GAAA,YAAAA,EAAW,OAAQ,GAEpC,MAAO,CACL,MAAAE,EACA,OAAAC,EACA,SAAAC,EACA,UAAAJ,CACF,CACF,EA3CkC,sBDc3B,SAASK,GACdC,EACwB,CA5C1B,IAAAC,EA6CE,IAAMC,EAAaC,GAAc,EAC3BC,EAAaC,GAAc,EAC3BC,EAAOC,GAAQ,EACf,CAAE,KAAMC,CAAW,EAAIC,GAAiB,EACxCC,EAAYC,EAAa,EACzBC,EAAsBC,GAAoB,EAC1C,CACJ,iBAAkB,CAAE,SAAAC,CAAS,CAC/B,EAAIC,GAAiB,EAEf,CAAE,GAAAC,EAAI,SAAAC,EAAU,WAAAC,CAAW,EAAIC,GAAkB,CACrD,SAAUnB,EAAM,SAChB,GAAIA,EAAM,SAAW,SAAW,OAAYA,EAAM,EACpD,CAAC,EAEK,CAAE,UAAAoB,EAAW,MAAAC,EAAO,OAAAC,EAAQ,SAAAC,CAAS,EAAIC,GAAmB,CAChE,OAAQxB,EAAM,OACd,cAAeA,EAAM,cACrB,GAAAgB,EACA,SAAAC,CACF,CAAC,EAEKQ,EAAgBrB,IAAe,SAAWI,EAAaF,EAEvDoB,EAAK,GAAAC,QAAM,QAAQ,IAAM,CAC7B,GAAI,CAACV,EAAU,MAAO,GACtB,OAAQjB,EAAM,OAAQ,CACpB,IAAK,SACL,IAAK,OACH,OAAOE,EAAW,GAAGF,EAAM,WAAW,EAAEiB,EAAUjB,EAAM,IAAI,EAC9D,QACE,OAAKgB,EACEd,EAAW,GAAGF,EAAM,WAAW,EAAEiB,EAAUD,EAAIhB,EAAM,IAAI,EADhD,EAEpB,CACF,EAAG,CAACiB,EAAUD,EAAIhB,EAAM,KAAME,EAAW,GAAGF,EAAM,WAAW,CAAC,CAAC,EAEzD4B,EACJ5B,EAAM,SAAW,OACbU,EACE,GAAGQ,GAAclB,EAAM,uBACvBY,IACEX,EAAAgB,GAAA,YAAAA,EAAU,OAAV,YAAAhB,EAAgB,SACdgB,GAAA,YAAAA,EAAU,QACVC,GACAlB,EAAM,SACR,QACF,CACF,EACAU,EAAU,WAAWV,EAAM,SAAUc,EAASd,EAAM,MAAM,CAAC,EAEjE,MAAO,CACL,GAAA0B,EACA,MAAAE,EACA,MAAAP,EACA,SAAAE,EACA,OAAAD,EACA,UAAAF,EACA,cAAAK,CACF,CACF,CA9DgBI,EAAA9B,GAAA,uBEJT,SAAS+B,GAAgBC,EAA8C,CAC5E,IAAMC,EAAYC,EAAa,EACzB,CAAE,OAAAC,EAAQ,UAAAC,EAAW,UAAAC,CAAU,EAAIC,GAAU,EAC7C,CAAE,YAAAC,CAAY,EAAIC,GAAmB,EACrC,CAAE,aAAAC,CAAa,EAAIC,GAAgBV,EAAM,YAAY,EAErD,CAAE,GAAAW,EAAI,SAAAC,EAAU,WAAAC,CAAW,EAAIC,GAAkB,CACrD,SAAUd,EAAM,SAChB,GAAIA,EAAM,EACZ,CAAC,EAEK,CAAE,MAAAe,EAAO,SAAAC,EAAU,OAAAC,EAAQ,UAAAC,CAAU,EAAIC,GAAmB,CAChE,OAAQ,SACR,cAAenB,EAAM,cACrB,GAAAW,EACA,SAAAC,CACF,CAAC,EAEKQ,EAAQnB,EAAU,iBAAkB,QAAQ,EAE5CoB,EAAiBpB,EAAU,iBAAkB,QAAQ,EAErDqB,EAAerB,EAAU,kBAAmB,eAAe,EAE3DsB,EAActB,EAAU,iBAAkB,QAAQ,EAElDuB,EAAUb,KAAON,GAAA,YAAAA,EAAW,KAAMD,EAwBxC,MAAO,CACL,MAAAgB,EACA,MAAAL,EACA,OAAAE,EACA,SAAAD,EACA,UAAAE,EACA,QAAAM,EACA,eAAAH,EACA,YAAAE,EACA,aAAAD,EACA,UAhCgBG,EAAA,IAAM,CAClBd,GAAME,IACRN,EAAY,EAAK,EACjBJ,EACE,CACE,GAAAQ,EACA,SAAUE,EACV,aAAAJ,EACA,oBAAqBT,EAAM,oBAC3B,kBAAmBA,EAAM,kBACzB,KAAMA,EAAM,KACZ,SAAUA,EAAM,KAChB,iBAAkBA,EAAM,iBACxB,YAAaA,EAAM,WACrB,EACA,CACE,UAAWA,EAAM,SACnB,CACF,EAEJ,EApBkB,YAiClB,CACF,CA9DgByB,EAAA1B,GAAA,mBCtChB,IAAA2B,GAA+B,iCAwBxB,SAASC,GACdC,EACqB,CACrB,IAAMC,EAAYC,EAAa,EACzB,CAAE,KAAAC,EAAM,iBAAAC,CAAiB,EAAIC,EAAQ,EAErCC,KAAc,mBAAe,EAC7BC,EAAcC,GAAc,EAE5B,CAAE,WAAAC,EAAY,GAAAC,CAAG,EAAIC,GAAkB,CAC3C,SAAUX,EAAM,SAChB,GAAIA,EAAM,EACZ,CAAC,EAEK,CAAE,UAAAY,CAAU,EAAIC,EAAY,EAE5BC,EAAU,CAAC,CAACR,EAAY,WAAW,CACvC,SAAUH,EAAK,EACZ,KAAKY,GAAiBN,EAAYT,EAAM,iBAAkBY,CAAS,CAAC,EACpE,SAASH,CAAU,EACnB,OAAO,KAAK,EACZ,IAAIL,CAAgB,CACzB,CAAC,EAEKY,EAAUC,EAAA,IAAM,CACpBV,EAAY,CACV,GAAAG,EACA,YAAa,CAAC,QAAQ,EACtB,iBAAkBV,EAAM,iBACxB,SAAUS,CACZ,CAAC,CACH,EAPgB,WASVS,EAAQjB,EAAU,kBAAmB,SAAS,EAEpD,MAAO,CACL,QAAAe,EACA,MAAAE,EACA,QAAAJ,CACF,CACF,CAxCgBG,EAAAlB,GAAA,oBCdT,IAAMoB,GAAgBC,EAC3BC,GACGC,GAAoB,CAAE,GAAGD,EAAO,OAAQ,MAAO,CAAC,EAFxB,iBAIhBE,GAAgBH,EAC3BC,GACGC,GAAoB,CAAE,GAAGD,EAAO,OAAQ,MAAO,CAAC,EAFxB,iBAIhBG,GAAiBJ,EAC5BC,GACGC,GAAoB,CAAE,GAAGD,EAAO,OAAQ,OAAQ,CAAC,EAFxB,kBAIjBI,GAAkBL,EAC7BC,GACGC,GAAoB,CAAE,GAAGD,EAAO,OAAQ,QAAS,CAAC,EAFxB,mBAIlBK,GAAgBN,EAC3BC,GACGC,GAAoB,CAAE,GAAGD,EAAO,OAAQ,MAAO,CAAC,EAFxB,iBAIhBM,GAAgBP,EAAA,IAAMQ,GAAoB,CAAE,KAAM,MAAO,CAAC,EAA1C,iBAEhBC,GAAkBT,EAAA,IAAMQ,GAAoB,CAAE,KAAM,QAAS,CAAC,EAA5C,mBAElBE,GAAkBV,EAAA,IAAMQ,GAAoB,CAAE,KAAM,QAAS,CAAC,EAA5C,mBtJlBxB,IAAMG,GAA2BC,EAAA,IAAM,CAC5C,GAAM,CAACC,EAAcC,CAAe,KAAI,aAAiB,EACnDC,EAAYC,EAAa,EACzB,CAAE,KAAAC,CAAK,EAAIC,GAAc,EACzBC,EAAKC,GAAM,EACXC,EAAaC,GAAc,EAE3B,CAAE,SAAAC,EAAU,OAAAC,CAAO,EAAIC,EAAY,EAEzC,uBAAU,IAAM,CACVF,GAAYC,GACdV,EACEC,EACE,mBACA,CACE,OAAQS,EACR,SAAUD,EAAS,IACrB,EACA,sCAAsCC,oBAAyBD,EAAS,iBAC1E,CACF,CAEJ,EAAG,CAACA,EAAUC,CAAM,CAAC,EAGnB,GAAAE,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,UACEX,EACC,kBACA,OACA,6CACF,CACF,EACCF,GAAgB,GAAAa,QAAA,cAAC,SAAGb,CAAa,EAClC,GAAAa,QAAA,cAAC,UACC,QAAS,IAAM,CACTL,IAAe,SACjBJ,EAAK,GAAG,EAERE,EAAG,CAAE,GAAI,GAAI,CAAC,CAElB,GAECJ,EAAU,uBAAwB,OAAW,WAAW,CAC3D,CACF,CAEJ,EA/CwC,kBuJhBxC,IAAAY,GAAgC,oBAezB,IAAMC,GAAsBC,EAAA,IAAM,CACvC,GAAM,CAACC,EAAUC,CAAW,KAAI,aAAS,EAAE,EACrC,CAACC,EAAUC,CAAW,KAAI,aAAS,EAAE,EAErCC,EAAYC,EAAa,EAEzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAM,EAAIC,GAAqB,CAC7C,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EAED,OACE,GAAAI,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,UAAIN,EAAU,oBAAqB,sBAAsB,CAAE,EAC5D,GAAAM,QAAA,cAAC,QACC,SAAWC,GAAM,CACfA,EAAE,eAAe,EACjBH,EAAM,CAAE,SAAAR,EAAU,SAAAE,CAAS,CAAC,CAC9B,GAEA,GAAAQ,QAAA,cAAC,aACC,GAAAA,QAAA,cAAC,aACC,GAAAA,QAAA,cAAC,UACC,GAAAA,QAAA,cAAC,UACEN,EAAU,uBAAwB,OAAW,UAAU,EAAE,GAC5D,EACA,GAAAM,QAAA,cAAC,UACC,GAAAA,QAAA,cAAC,SACC,KAAK,OACL,KAAM,GACN,YAAY,MACZ,WAAY,GACZ,eAAe,MACf,UAAS,GACT,SAAQ,GACR,MAAOV,EACP,SAAWW,GAAMV,EAAYU,EAAE,OAAO,KAAK,EAC7C,CACF,CACF,EACA,GAAAD,QAAA,cAAC,UACC,GAAAA,QAAA,cAAC,UACEN,EAAU,uBAAwB,OAAW,UAAU,EAAE,GAC5D,EACA,GAAAM,QAAA,cAAC,UACC,GAAAA,QAAA,cAAC,SACC,KAAK,WACL,SAAQ,GACR,KAAM,GACN,MAAOR,EACP,SAAWS,GAAMR,EAAYQ,EAAE,OAAO,KAAK,EAC7C,CACF,CACF,CACF,CACF,EACA,GAAAD,QAAA,cAAC,SAAG,EACJ,GAAAA,QAAA,cAAC,SAAM,KAAK,SAAS,MAAM,QAAQ,CACrC,CACF,CAEJ,EA7DmC,aCfnC,IAAAE,GAIO,oBCJP,IAAAC,GAAgC,oBAgBzB,IAAMC,GAAkCC,EAAA,CAAC,CAC9C,UAAAC,EACA,aAAAC,EACA,mBAAAC,EACA,WAAAC,EACA,aAAAC,EACA,aAAAC,EACA,cAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,OACR,SAAAC,EACA,kBAAAC,CACF,IAAM,CACJ,IAAMC,EAAaC,GAAc,EAC3BC,EAAOC,GAAQ,EACf,CAAE,KAAMC,CAAW,EAAIC,GAAiB,EAExCC,EAAaN,IAAe,SAAWI,EAAaF,EAEpD,CAACK,EAAOC,CAAQ,KAAI,aAAS,EAAE,EAC/B,CAACC,EAAUC,CAAW,KAAI,aAAS,EAAE,EACrC,CAACC,EAAUC,CAAW,KAAI,aAAS,EAAK,EAExCC,EAAYC,EAAa,EAEzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,CAAM,EAAIC,GAAyB,CACjD,+BAAgC,GAAQH,GAAA,MAAAA,EAAc,SACxD,CAAC,EAEKI,EAAa/B,EAAA,CAACgC,EAAcC,IACzB,GAAAC,QAAA,cAAChB,EAAA,CAAW,GAAIc,GAAOC,CAAK,EADlB,cAIbE,EAAkBnC,EAAA,IAClBC,EACKA,EAAU,IAAKmC,GACpB,GAAAF,QAAA,cAAC,OACC,IAAKE,EAAS,KACd,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,aAAc,MAChB,GAEA,GAAAF,QAAA,cAAC,UACC,QAAS,IACPL,EAAM,CACJ,GAAGlB,EACH,aAAcyB,EAAS,IACzB,CAAC,EAEH,MAAO,CACL,QAAS,OACT,WAAY,QACd,GAECA,GAAA,YAAAA,EAAU,KACVA,EAAS,OAAS,GAAAF,QAAA,cAAC,aAAOE,EAAS,KAAM,CAC5C,CACF,CACD,EAEI,KA9Be,mBAiClBC,EACJ,GAAAH,QAAA,cAAC,OAAK,GAAG7B,GACP,GAAA6B,QAAA,cAAC,MAAG,MAAO,CAAE,UAAW,QAAS,GAC9BT,EAAU,oBAAqB,yBAAyB,CAC3D,EACCU,EAAgB,EAChB,CAACzB,GACA,GAAAwB,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,SAAG,EACJ,GAAAA,QAAA,cAAC,QACC,SAAWI,GAAM,CACfA,EAAE,eAAe,EACjBT,EAAM,CAAE,GAAGlB,EAAmB,MAAAQ,EAAO,SAAAE,EAAU,SAAAE,CAAS,CAAC,CAC3D,EACC,GAAGf,GAEJ,GAAA0B,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,QAAS,EACX,GAEA,GAAAA,QAAA,cAAC,SAAM,QAAQ,eACZT,EAAU,2BAA4B,OAAO,CAChD,EACA,GAAAS,QAAA,cAAC,SACC,GAAG,cACH,KAAK,QACL,KAAK,OACL,KAAM,GACN,YAAY,MACZ,WAAY,GACZ,eAAe,MACf,SAAQ,GACR,MAAOf,EACP,SAAWmB,GAAMlB,EAASkB,EAAE,OAAO,KAAK,EAC1C,EACA,GAAAJ,QAAA,cAAC,SAAM,QAAQ,kBACZT,EAAU,8BAA+B,UAAU,CACtD,EACA,GAAAS,QAAA,cAAC,SACC,GAAG,iBACH,KAAK,WACL,KAAK,WACL,SAAQ,GACR,KAAM,GACN,MAAOb,EACP,SAAWiB,GAAMhB,EAAYgB,EAAE,OAAO,KAAK,EAC7C,EACClC,GACC,GAAA8B,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,SAAM,QAAQ,qBACZT,EAAU,iCAAkC,aAAa,EAC1D,GAAAS,QAAA,cAAC,SACC,GAAG,oBACH,KAAK,WACL,KAAK,WACL,KAAM,GACN,QAASX,EACT,MAAOA,EAAS,SAAS,EACzB,SAAU,IAAM,CACdC,EAAY,CAACD,CAAQ,CACvB,EACF,CACF,CACF,EAEF,GAAAW,QAAA,cAAC,SAAG,EACH/B,GACC4B,EACE,mBACAN,EACE,qCACA,kBACF,CACF,EACF,GAAAS,QAAA,cAAC,SACC,KAAK,SACL,MAAOT,EAAU,qBAAsB,SAAS,EAClD,EACCvB,GACC,GAAAgC,QAAA,cAAC,YACET,EACC,gCACA,6BACF,EAAG,IACFM,EACC,YACAN,EAAU,uBAAwB,SAAS,CAC7C,CACF,CAEJ,CACF,CACF,EAEDvB,IAAiB,IAASQ,GACzB,GAAAwB,QAAA,cAAC,OAAI,MAAO,CAAE,UAAW,QAAS,GAC/BT,EAAU,gCAAiC,6BAAwB,EAAG,IACtEM,EACC,YACAN,EAAU,uBAAwB,SAAS,CAC7C,CACF,CAEJ,EAGF,OACE,GAAAS,QAAA,cAAC,OAAK,GAAG5B,GACNC,EAAgBA,EAAc8B,EAAS5B,CAAK,EAAI4B,CACnD,CAEJ,EArL+C,aChB/C,IAAAE,GAAgC,oBAqBzB,IAAMC,GAAwCC,EAAA,CAAC,CACpD,UAAAC,EACA,UAAAC,EACA,aAAAC,EACA,aAAAC,EACA,cAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,OACR,SAAAC,EACA,kBAAAC,CACF,IAAM,CACJ,IAAMC,EAAaC,GAAc,EAC3BC,EAAOC,GAAQ,EACf,CAAE,KAAMC,CAAW,EAAIC,GAAiB,EAExCC,EAAaN,IAAe,SAAWI,EAAaF,EAEpD,CAACK,EAAOC,CAAQ,KAAI,aAAS,EAAE,EAC/B,CAACC,EAAUC,CAAW,KAAI,aAAS,EAAE,EAErCC,EAAYC,EAAa,EAEzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,EAAU,UAAAC,CAAU,EAAIC,GAAY,CAClD,+BAAgC,GAAQJ,GAAA,MAAAA,EAAc,SACxD,CAAC,EAEKK,EAAa5B,EAAA,CAAC6B,EAAcC,IACzB,GAAAC,QAAA,cAACf,EAAA,CAAW,GAAIa,GAAOC,CAAK,EADlB,cAIbE,EAAkBhC,EAAA,IAClBC,EACKA,EAAU,IAAKgC,GACpB,GAAAF,QAAA,cAAC,OACC,IAAKE,EAAS,KACd,MAAO,CACL,QAAS,OACT,WAAY,SACZ,eAAgB,SAChB,aAAc,MAChB,GAEA,GAAAF,QAAA,cAAC,UACC,QAAS,IACPN,EAAS,CACP,GAAGhB,EACH,aAAcwB,EAAS,IACzB,CAAC,EAEH,MAAO,CACL,QAAS,OACT,WAAY,QACd,GAECA,GAAA,YAAAA,EAAU,KACVA,EAAS,OAAS,GAAAF,QAAA,cAAC,aAAOE,EAAS,KAAM,CAC5C,CACF,CACD,EAEI,KA9Be,mBAiClBC,EACJ,GAAAH,QAAA,cAAC,OAAK,GAAG3B,GACP,GAAA2B,QAAA,cAAC,MAAG,MAAO,CAAE,UAAW,QAAS,GAC9BV,EAAU,uBAAwB,0BAA0B,CAC/D,EACCW,EAAgB,EAChB,CAACxB,GACA,GAAAuB,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,SAAG,EACJ,GAAAA,QAAA,cAAC,QACC,SAAWI,GAAM,CACfA,EAAE,eAAe,EACjBV,EAAS,CAAE,GAAGhB,EAAmB,MAAAQ,EAAO,SAAAE,CAAS,CAAC,CACpD,EACC,GAAGb,GAEJ,GAAAyB,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,QAAS,EACX,GAEA,GAAAA,QAAA,cAAC,SAAM,QAAQ,eACZV,EAAU,8BAA+B,OAAO,CACnD,EACA,GAAAU,QAAA,cAAC,SACC,GAAG,cACH,KAAK,QACL,KAAK,QACL,KAAM,GACN,YAAY,MACZ,WAAY,GACZ,eAAe,MACf,SAAQ,GACR,MAAOd,EACP,SAAWkB,GAAMjB,EAASiB,EAAE,OAAO,KAAK,EAC1C,EACA,GAAAJ,QAAA,cAAC,SAAM,QAAQ,kBACZV,EAAU,iCAAkC,UAAU,CACzD,EACA,GAAAU,QAAA,cAAC,SACC,GAAG,iBACH,KAAK,WACL,KAAK,WACL,SAAQ,GACR,KAAM,GACN,MAAOZ,EACP,SAAWgB,GAAMf,EAAYe,EAAE,OAAO,KAAK,EAC7C,EACA,GAAAJ,QAAA,cAAC,SACC,KAAK,SACL,MAAOV,EAAU,gCAAiC,SAAS,EAC3D,SAAUK,EACZ,EACCxB,GACC,GAAA6B,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,YACEV,EACC,kCACA,kBACF,EAAG,IACFO,EACC,SACAP,EAAU,qBAAsB,SAAS,CAC3C,CACF,CACF,CAEJ,CACF,CACF,EAEDnB,IAAc,IAASM,GACtB,GAAAuB,QAAA,cAAC,OAAI,MAAO,CAAE,UAAW,QAAS,GAC/BV,EAAU,kCAAmC,kBAAkB,EAAG,IAClEO,EAAW,SAAUP,EAAU,qBAAsB,SAAS,CAAC,CAClE,CAEJ,EAGF,OACE,GAAAU,QAAA,cAAC,OAAK,GAAG5B,GACNE,EAAgBA,EAAc6B,EAAS3B,CAAK,EAAI2B,CACnD,CAEJ,EAvJqD,gBCrBrD,IAAAE,GAAgC,oBAsBzB,IAAMC,GAAoDC,EAAA,CAAC,CAChE,UAAAC,EACA,aAAAC,EACA,aAAAC,EACA,cAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,OACR,kBAAAC,CACF,IAAM,CACJ,IAAMC,EAAYC,EAAa,EACzBC,EAAaC,GAAc,EAC3BC,EAAOC,GAAQ,EACf,CAAE,KAAMC,CAAW,EAAIC,GAAiB,EAExCC,EAAaN,IAAe,SAAWI,EAAaF,EAEpD,CAACK,EAAOC,CAAQ,KAAI,aAAS,EAAE,EAE/B,CAAE,OAAQC,EAAgB,UAAAC,CAAU,EACxCC,GAA2C,EAEvCC,EAAatB,EAAA,CAACuB,EAAcC,IACzB,GAAAC,QAAA,cAACT,EAAA,CAAW,GAAIO,GAAOC,CAAK,EADlB,cAIbE,EACJ,GAAAD,QAAA,cAAC,OAAK,GAAGtB,GACP,GAAAsB,QAAA,cAAC,MAAG,MAAO,CAAE,UAAW,QAAS,GAC9BjB,EAAU,6BAA8B,uBAAuB,CAClE,EACA,GAAAiB,QAAA,cAAC,SAAG,EACJ,GAAAA,QAAA,cAAC,QACC,SAAWE,GAAM,CACfA,EAAE,eAAe,EACjBR,EAAe,CAAE,GAAGZ,EAAmB,MAAAU,CAAM,CAAC,CAChD,EACC,GAAGZ,GAEJ,GAAAoB,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,QAAS,EACX,GAEA,GAAAA,QAAA,cAAC,SAAM,QAAQ,eACZjB,EAAU,oCAAqC,OAAO,CACzD,EACA,GAAAiB,QAAA,cAAC,SACC,GAAG,cACH,KAAK,QACL,KAAK,OACL,YAAY,MACZ,WAAY,GACZ,eAAe,MACf,SAAQ,GACR,MAAOR,EACP,SAAWU,GAAMT,EAASS,EAAE,OAAO,KAAK,EAC1C,EACA,GAAAF,QAAA,cAAC,SACC,KAAK,SACL,SAAUL,EACV,MAAOZ,EACL,sCACA,yBACF,EACF,EACA,GAAAiB,QAAA,cAAC,SAAG,EACHxB,GACC,GAAAwB,QAAA,cAAC,YACEjB,EACC,qCACA,mBACF,EAAG,IACFc,EAAW,SAAUd,EAAU,qBAAsB,SAAS,CAAC,CAClE,CAEJ,CACF,CACF,EAGF,OACE,GAAAiB,QAAA,cAAC,OAAK,GAAGvB,GACNE,EAAgBA,EAAcsB,EAASpB,CAAK,EAAIoB,CACnD,CAEJ,EAvFiE,sBCtBjE,IAAAE,GAAgC,oBAiBzB,IAAMC,GAAoDC,EAAA,CAAC,CAChE,aAAAC,EACA,aAAAC,EACA,cAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,OACR,kBAAAC,CACF,IAAM,CACJ,IAAMC,EAAYC,EAAa,EAEzBC,EAAeC,GAAsB,EACrC,CAAE,OAAQC,EAAgB,UAAAC,CAAU,EACxCC,GAA2C,CACzC,+BAAgC,GAAQJ,GAAA,MAAAA,EAAc,SACxD,CAAC,EAEG,CAACK,EAAaC,CAAc,KAAI,aAAS,EAAE,EAC3C,CAACC,EAAiBC,CAAkB,KAAI,aAAS,EAAE,EAEnDC,EACJ,GAAAC,QAAA,cAAC,OAAK,GAAGjB,GACP,GAAAiB,QAAA,cAAC,MAAG,MAAO,CAAE,UAAW,QAAS,GAC9BZ,EAAU,6BAA8B,iBAAiB,CAC5D,EACA,GAAAY,QAAA,cAAC,SAAG,EACJ,GAAAA,QAAA,cAAC,QACC,SAAWC,GAAM,CACfA,EAAE,eAAe,EACjBT,EAAe,CACb,GAAGL,EACH,SAAUQ,EACV,gBAAAE,CACF,CAAC,CACH,EACC,GAAGZ,GAEJ,GAAAe,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,QAAS,EACX,GAEA,GAAAA,QAAA,cAAC,SAAM,QAAQ,kBACZZ,EAAU,uCAAwC,cAAc,CACnE,EACA,GAAAY,QAAA,cAAC,SACC,GAAG,iBACH,KAAK,WACL,KAAK,WACL,SAAQ,GACR,KAAM,GACN,MAAOL,EACP,SAAWM,GAAML,EAAeK,EAAE,OAAO,KAAK,EAChD,EACA,GAAAD,QAAA,cAAC,SAAM,QAAQ,0BACZZ,EACC,8CACA,sBACF,CACF,EACA,GAAAY,QAAA,cAAC,SACC,GAAG,yBACH,KAAK,kBACL,KAAK,WACL,SAAQ,GACR,KAAM,GACN,MAAOH,EACP,SAAWI,GAAMH,EAAmBG,EAAE,OAAO,KAAK,EACpD,EACA,GAAAD,QAAA,cAAC,SACC,KAAK,SACL,SAAUP,EACV,MAAOL,EAAU,sCAAuC,QAAQ,EAClE,CACF,CACF,CACF,EAGF,OACE,GAAAY,QAAA,cAAC,OAAK,GAAGlB,GACNE,EAAgBA,EAAce,EAASb,CAAK,EAAIa,CACnD,CAEJ,EArFiE,sBJkB1D,IAAMG,GAAgCC,EAACC,GAAU,CACtD,GAAM,CAAE,KAAAC,CAAK,EAAID,EAcjB,OAAO,GAAAE,QAAA,iBAAAA,QAAA,cAbYH,EAAA,IAAM,CACvB,OAAQE,EAAM,CACZ,IAAK,WACH,OAAO,GAAAC,QAAA,cAACC,GAAA,CAAc,GAAGH,EAAO,EAClC,IAAK,iBACH,OAAO,GAAAE,QAAA,cAACE,GAAA,CAAoB,GAAGJ,EAAO,EACxC,IAAK,iBACH,OAAO,GAAAE,QAAA,cAACG,GAAA,CAAoB,GAAGL,EAAO,EACxC,QACE,OAAO,GAAAE,QAAA,cAACI,GAAA,CAAW,GAAGN,EAAO,CACjC,CACF,EAXmB,cAaE,CAAE,CACzB,EAhB6C,YKnC7C,IAAAO,GAAkB,oBAOX,IAAMC,GAAsBC,EAAA,IAE/B,GAAAC,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAAC,UAAG,kBAAgB,EACpB,GAAAA,QAAA,cAAC,SAAE,kCAAgC,EACnC,GAAAA,QAAA,cAAC,SAAE,0DACuD,IACxD,GAAAA,QAAA,cAAC,YAAK,aAAW,EAAO,gBAAa,GAAAA,QAAA,cAAC,YAAM,YAAa,CAC3D,EACA,GAAAA,QAAA,cAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,IAAK,CAAE,GACpC,GAAAA,QAAA,cAAC,KAAE,KAAK,qBAAqB,OAAO,SAAS,IAAI,cAC/C,GAAAA,QAAA,cAAC,cAAO,eAAa,CACvB,EACA,GAAAA,QAAA,cAAC,KAAE,KAAK,8BAA8B,OAAO,SAAS,IAAI,cACxD,GAAAA,QAAA,cAAC,cAAO,UAAQ,CAClB,EACA,GAAAA,QAAA,cAAC,KAAE,KAAK,4BAA4B,OAAO,SAAS,IAAI,cACtD,GAAAA,QAAA,cAAC,cAAO,WAAS,CACnB,CACF,CACF,EApB+B,aCPnC,IAAAC,GAAkB,oBCAlB,IAAAC,GAAgC,oBAWhC,IAAMC,GAAoB,CACxB,CACE,MAAO,gBACP,YACE,sEACF,KAAM,0BACN,QACE,sEACJ,EACA,CACE,MAAO,WACP,YACE,iGACF,KAAM,8BACN,QACE,qEACJ,EACA,CACE,MAAO,YACP,YACE,uGACF,KAAM,+BACN,QACE,6EACJ,EACA,CACE,MAAO,YACP,YAAa,+DACb,KAAM,4BACN,QACE,yEACJ,CACF,EAKaC,GAA8BC,EAAA,IAAM,CAC/C,IAAMC,EAAWC,GAAc,qBAAqB,EAC9CC,EAAWD,GAAc,oBAAoB,EAE7CE,EAAyBJ,EAAA,IACzBG,EACK,WAELF,EACK,WAEF,SAPsB,0BAUzBI,EAAoBL,EAAA,IACpBG,EACK,OAELF,EACK,OAEF,OAPiB,qBAUpBK,EAAuBN,EAAA,IACvBG,EACK,OAELF,EACK,OAEF,OAPoB,wBAU7B,OACE,GAAAM,QAAA,cAAC,OACC,MAAO,CACL,SAAU,QACV,OAAQ,GACR,MAAO,EACP,SAAU,OACV,MAAO,SACP,OAAQ,QACV,GAEA,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,SAAU,SACV,SAAU,WACV,eAAgB,QAChB,iBAAkB,YAClB,WAAYJ,EACR,gTACAF,EACE,gTACA,0SACN,UAAW,OACX,SAAU,OACV,WAAY,QACZ,MAAO,SACT,GAEA,GAAAM,QAAA,cAAC,OACC,MAAO,CACL,OAAQ,EACR,SAAU,WACV,MAAOJ,EAAW,QAAU,QAC5B,OAAQ,QACR,QAAS,MACT,WACE,sFACF,iBAAkB,YAClB,eAAgB,UAChB,IAAK,IACL,KAAM,MACN,UAAW,kBACb,EACF,EACA,GAAAI,QAAA,cAAC,OAAI,MAAO,CAAE,OAAQJ,EAAW,OAAS,MAAO,EAAG,EACpD,GAAAI,QAAA,cAAC,OAAI,MAAO,CAAE,QAAS,OAAQ,eAAgB,QAAS,GACtD,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,iBAAkB,YAClB,eAAgBJ,EAAW,aAAe,cAC1C,gBACE,6EACF,MAAOA,EAAW,IAAM,IACxB,OAAQA,EAAW,GAAK,GAC1B,EACF,CACF,EACA,GAAAI,QAAA,cAAC,OACC,MAAO,CACL,OAAQJ,EAAW,QAAUF,EAAW,QAAU,OAClD,UAAWE,EAAW,QAAqB,OAC7C,EACF,EACA,GAAAI,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,OACL,UAAW,QACb,GAEA,GAAAA,QAAA,cAAC,MACC,MAAO,CACL,SAAUF,EAAkB,EAC5B,WAAY,IACZ,OAAQ,KACV,GACD,iBAED,EACA,GAAAE,QAAA,cAAC,MACC,MAAO,CACL,SAAUD,EAAqB,EAC/B,WAAY,IACZ,OAAQ,KACV,GACD,kCAED,CACF,EACA,GAAAC,QAAA,cAAC,OAAI,MAAO,CAAE,OAAQ,MAAO,EAAG,EAChC,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,oBAAqB,UAAUH,EAAuB,KACtD,eAAgB,SAChB,IAAK,OACL,aAAc,OACd,YAAa,OACb,cAAe,OACf,SAAU,QACV,OAAQ,MACV,GAECN,GAAM,IAAKU,GACV,GAAAD,QAAA,cAACE,GAAA,CAAK,IAAK,gBAAgBD,EAAK,QAAS,KAAMA,EAAM,CACtD,CACH,CACF,CACF,CAEJ,EAjJ2C,qBAuJrCC,GAA4BT,EAAA,CAAC,CAAE,KAAAQ,CAAK,IAAM,CAC9C,GAAM,CAAE,MAAAE,EAAO,YAAAC,EAAa,QAAAC,EAAS,KAAAC,CAAK,EAAIL,EAExC,CAACM,EAASC,CAAU,KAAI,aAAS,EAAK,EAE5C,OACE,GAAAR,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,cAAe,SACf,IAAK,MACP,GAEA,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,WAAY,QACd,GAEA,GAAAA,QAAA,cAAC,KACC,eAAgB,IAAMQ,EAAW,EAAI,EACrC,eAAgB,IAAMA,EAAW,EAAK,EACtC,MAAO,CACL,QAAS,OACT,WAAY,SACZ,MAAO,OACP,eAAgB,MAClB,EACA,KAAMF,GAEN,GAAAN,QAAA,cAAC,OACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,mBAAoB,SACpB,eAAgB,UAChB,iBAAkB,YAClB,gBAAiB,OAAOK,IAC1B,EACF,EACA,GAAAL,QAAA,cAAC,QACC,MAAO,CACL,SAAU,OACV,WAAY,IACZ,WAAY,OACZ,YAAa,MACf,GAECG,CACH,EACA,GAAAH,QAAA,cAAC,OACC,MAAO,CACL,WACE,uDACF,GAAIO,GAAW,CACb,UAAW,kBACX,QAAS,CACX,CACF,EACA,MAAM,KACN,OAAO,IACP,KAAK,OACL,QAAQ,MACR,MAAM,8BAEN,GAAAP,QAAA,cAAC,QACC,EAAE,6IACF,KAAK,OACP,CACF,CACF,CACF,EACA,GAAAA,QAAA,cAAC,QACC,MAAO,CACL,SAAU,OACV,QAAS,GACT,WAAY,MACd,GAECI,CACH,CACF,CAEJ,EAnFkC,QCvMlC,IAAAK,EAAkB,oBAEX,IAAMC,GAAkBC,EAAA,IAE3B,EAAAC,QAAA,cAAC,OACC,MAAO,CACL,SAAU,QACV,OAAQ,GACR,MAAO,EACP,SAAU,OACV,MAAO,SACP,OAAQ,QACV,GAEA,EAAAA,QAAA,cAAC,OACC,MAAO,CACL,MAAO,OACP,OAAQ,OACR,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,QAAS,OACT,WAAY,YACZ,eAAgB,WAClB,GAEA,EAAAA,QAAA,cAAC,OACC,MAAO,CACL,SAAU,QACV,MAAO,OACP,WAAY,UACZ,aAAc,OACd,OAAQ,oBACR,UAAW,6BACb,GAEA,EAAAA,QAAA,cAAC,OACC,MAAO,CACL,QAAS,YACT,aAAc,oBACd,QAAS,OACT,WAAY,SACZ,IAAK,MACL,SAAU,UACZ,GAEA,EAAAA,QAAA,cAACC,GAAA,CACC,MAAO,CACL,SAAU,WACV,KAAM,EACN,IAAK,CACP,EACF,EACA,EAAAD,QAAA,cAAC,OACC,MAAO,CACL,WAAY,OACZ,SAAU,OACV,MAAO,UACP,QAAS,OACT,WAAY,SACZ,IAAK,MACP,GAEA,EAAAA,QAAA,cAACE,GAAA,IAAU,EACX,EAAAF,QAAA,cAAC,QACC,MAAO,CACL,WAAY,GACd,GACD,qBAED,CACF,CACF,EACA,EAAAA,QAAA,cAAC,OACC,MAAO,CACL,QAAS,OACT,MAAO,UACP,WAAY,OACZ,SAAU,OACV,QAAS,OACT,cAAe,SACf,IAAK,MACP,GAEA,EAAAA,QAAA,cAAC,KACC,MAAO,CACL,OAAQ,EACR,QAAS,EACT,WAAY,OACZ,SAAU,MACZ,GAEA,EAAAA,QAAA,cAAC,QACC,MAAO,CACL,QAAS,eACT,WAAY,YACZ,QAAS,QACT,WAAY,OACZ,SAAU,OACV,aAAc,MACd,MAAO,SACT,GAEC,YACH,EAAQ,IAAI,4GAGd,EACA,EAAAA,QAAA,cAAC,WACC,EAAAA,QAAA,cAACG,GAAA,IAAsB,CACzB,CACF,CACF,CACF,CACF,EAhH2B,mBAoHzBA,GAAwBJ,EAAA,IAE1B,EAAAC,QAAA,cAAC,OACC,MAAO,CACL,QAAS,QACT,UAAW,OACX,aAAc,MACd,SAAU,OACV,WAAY,OACZ,gBAAiB,UACjB,MAAO,UACP,QAAS,OACT,OAAQ,IACR,UAAW,QACX,SAAU,MACZ,GAEA,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,QAAM,EAAO,IAAE,IAAI,uBAAqB,IAC1E,IAAI,IAAC,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,MAAI,EAAQ,IACrD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAI,mBAAoB,EAAO,IAAE;AAAA,EAChE;AAAA,EACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,QAAM,EAAQ,IACjD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,SAAO,EAAQ,IAClD,EAAAA,QAAA,cAAC,YACC,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,UAAQ,EAAQ,IACnD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,KAAG,EAAO,IAE7C,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,mBAAoB,EAAG,EAAE,IAAE,GACnD,EACC,IACA;AAAA,EACA,KACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,QAAM,EAAO,KAAG;AAAA,EAClD,OACD,EAAAA,QAAA,cAAC,YACC,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,IAEjC,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,QAAM,EACxC;AAAA,EACA,SACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,UAAW,QAAS,EAAI,GAC3C,MACD,EAAAA,QAAA,cAAC,YAAK,KAAG,CACX,EACC;AAAA,EACA,OAAO,GACV,EACC;AAAA,EACA,SACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,QAAS,EAAI,GACzB,IACA,YACA,GACH,EACC;AAAA,EACA,SACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,IAEjC,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,aAAW,EAAO,KACvD,EACC;AAAA,EACA,SACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,QAAS,EAAI,GACzB,IACA,YACA,GACH,EACC;AAAA,EACA,OACD,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,KAEjC,EAAAA,QAAA,cAAC,QAAK,MAAO,CAAE,MAAO,SAAU,GAAG,QAAM,EAAO,GAElD,CACF,EACC;AAAA,EACA,KAAK,KAAG;AAAA,EACR,GACH,EA9E0B,yBAkFxBC,GAAgBF,EAACK,GACrB,EAAAJ,QAAA,cAAC,OACC,MAAM,6BACN,MAAO,IACP,OAAQ,GACR,QAAQ,aACR,KAAK,OACJ,GAAGI,GAEJ,EAAAJ,QAAA,cAAC,QAAK,KAAK,sCAAsC,EAAE,mBAAmB,EACtE,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,wBACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,wBACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,0BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,yBACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,yBACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,2BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,2BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,2BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,2BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,2BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,4BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,4BACJ,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,sCACL,EAAE,4BACJ,EACA,EAAAA,QAAA,cAAC,YACC,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,EACA,EAAAA,QAAA,cAAC,kBACC,GAAG,gCACH,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,aAClB,cAAc,kBAEd,EAAAA,QAAA,cAAC,QAAK,UAAU,UAAU,YAAa,GAAK,EAC5C,EAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,CACF,CACF,EA1NoB,iBA6NhBE,GAAYH,EAACK,GACjB,EAAAJ,QAAA,cAAC,OACC,MAAM,6BACN,MAAO,GACP,OAAQ,GACR,QAAQ,YACR,KAAK,OACJ,GAAGI,GAEJ,EAAAJ,QAAA,cAAC,QACC,KAAK,UACL,SAAS,UACT,EAAE,sCACF,SAAS,UACX,EACA,EAAAA,QAAA,cAAC,QACC,KAAK,OACL,SAAS,UACT,EAAE,yEACF,SAAS,UACX,CACF,EArBgB,aFhaX,IAAMK,GAAcC,EAAA,IAAM,CAC/B,GAAM,CAAE,cAAAC,CAAc,EAAIC,GAAiB,EAE3C,OACE,GAAAC,QAAA,iBAAAA,QAAA,cACE,GAAAA,QAAA,cAACC,GAAA,IAAkB,EAClB,CAACH,GAAiB,GAAAE,QAAA,cAACE,GAAA,IAAgB,CACtC,CAEJ,EAT2B,eGL3B,IAAAC,GAAkB,oBAElBC,GAAqC,wCACrCC,GAAiD,iCCHjD,IAAAC,GAAkB,oBCAlB,IAAAC,GAA2B,iBAe3B,IAAMC,GAAiB,SAEVC,GAAmBC,EAAA,IAAsB,CAjBtD,IAAAC,EAkBE,IAAMC,EAAOC,GAAyB,EAChCC,KAAkB,eAAWC,EAAe,EAC5C,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EACzCC,KAAgB,eAAWC,EAAmB,EAC9CC,KAAc,eAAWC,EAAW,EACpC,CAAE,aAAAC,CAAa,KAAI,eAAWC,EAAW,EACzCC,KAAsB,eAAWC,EAAmB,EACpDC,KAAuB,eAAWC,EAAoB,EACtD,CAAE,UAAAC,CAAU,EAAIC,EAAY,EAC5BC,EAAgBC,GAAiB,EAEjCC,EACJ,CAAC,CAAClB,EAAgB,QAClB,CAAC,CAACA,EAAgB,KAClB,CAAC,CAACA,EAAgB,OAEdmB,EACJ,CAAC,EAACjB,GAAA,MAAAA,EAAc,UAChB,CAAC,EAACA,GAAA,MAAAA,EAAc,YAChB,CAAC,EAACA,GAAA,MAAAA,EAAc,aAEZkB,EACJ,CAAC,CAAChB,EAAc,YAChB,CAAC,CAACA,EAAc,MAChB,CAAC,CAACA,EAAc,QAChB,CAAC,CAACA,EAAc,aAChB,CAAC,CAACA,EAAc,UAEZiB,EAAO,CAAC,CAACf,EAETgB,EACJ,CAAC,EAACd,GAAA,MAAAA,EAAc,eAChB,CAAC,EAACA,GAAA,MAAAA,EAAc,YAChB,CAAC,EAACA,GAAA,MAAAA,EAAc,WAEZe,EACJ,CAAC,CAACb,EAAoB,OAAS,CAAC,CAACA,EAAoB,KAEjDc,EAAgB,CAAC,CAACZ,EAAqB,IAEvCa,GAAY5B,EAAAmB,GAAA,YAAAA,EAAe,UAAf,YAAAnB,EAAwB,UAE1C,MAAO,CACL,UAAW,CACT,KAAAC,EACA,SAAAoB,EACA,KAAAC,EACA,OAAAC,EACA,KAAAC,EACA,KAAAC,EACA,aAAAC,EACA,cAAAC,CACF,EACA,QAAS9B,GACT,cAAeoB,EAAU,OACzB,UAAAW,CACF,CACF,EA1DgC,oBDXhC,IAAMC,GAASC,EAACC,GAAgD,CAC9D,GAAI,CACF,IAAMC,EAAqB,KAAK,UAAUD,GAAW,CAAC,CAAC,EAEvD,OAAI,OAAO,KAAS,IACX,KAAKC,CAAkB,EAGzB,OAAO,KAAKA,CAAkB,EAAE,SAAS,QAAQ,CAC1D,MAAE,CACA,MACF,CACF,EAZe,UAcTC,GAAeH,EAACI,GAAgB,CACpC,IAAMC,EAAM,IAAI,MAEhBA,EAAI,IAAMD,CACZ,EAJqB,gBAMfE,GAAeN,EAACI,GAAgB,CACpC,MAAMA,CAAG,CACX,EAFqB,gBAIfG,GAAYP,EAACI,GAAgB,CAC7B,OAAO,MAAU,IACnBD,GAAaC,CAAG,EACP,OAAO,MAAU,KAC1BE,GAAaF,CAAG,CAEpB,EANkB,aAQLI,GAA0BR,EAAA,IAAM,CAC3C,IAAMC,EAAUQ,GAAiB,EAC3BC,EAAO,GAAAC,QAAM,OAAO,EAAK,EAE/B,UAAAA,QAAM,UAAU,IAAM,CACpB,GAAID,EAAK,QACP,OAEF,IAAME,EAAUb,GAAOE,CAAO,EAEzBW,IAILL,GAAU,kDAAkDK,GAAS,EACrEF,EAAK,QAAU,GACjB,EAAG,CAAC,CAAC,EAEE,IACT,EAnBuC,aEnChC,IAAMG,GAAwBC,EACnCC,GACG,CAGH,IAAMC,EAAW,CAAC,KAAM,QAAS,OAAQ,MAAM,EAGzCC,EAAa,OAAO,KAAKF,CAAK,EAAE,OACnCG,GAAQ,CAACF,EAAS,SAASE,CAAG,CACjC,EAIA,OAFsBD,EAAW,OAAS,GAGxC,QAAQ,KACN,+EAA+EA,EAAW,KACxF,IACF,mCAAmCD,EAAS,KAC1C,IACF,mEACF,EAEO,IAGF,EACT,EA3BqC,yBCFrC,IAAAG,GAAkB,oBAGX,IAAMC,GAAyBC,EAACC,GAA2B,CAChE,IAAMC,EAAS,GAAAC,QAAM,OAAO,EAAK,EAEjC,GAAAA,QAAM,UAAU,IAAM,CAChBD,EAAO,UAAY,IACjBD,GACWG,GAAsBH,CAAK,IAEtCC,EAAO,QAAU,GAIzB,EAAG,CAACD,CAAK,CAAC,CACZ,EAbsC,0BJkC/B,IAAMI,GAAgCC,EAAA,CAAC,CAC5C,mBAAAC,EACA,aAAAC,EACA,aAAAC,EACA,qBAAAC,EACA,eAAAC,EACA,qBAAAC,EACA,sBAAAC,EACA,iBAAAC,EACA,UAAAC,EACA,cAAAC,EACA,UAAAC,EACA,UAAAC,EACA,SAAAC,EACA,SAAAC,EACA,aAAAC,EACA,aAAAC,EACA,MAAAC,EACA,OAAAC,EACA,MAAAC,EACA,OAAAC,EACA,OAAAC,EACA,cAAAC,EACA,YAAAC,EACA,QAAAC,CACF,IAAM,CACJ,GAAM,CACJ,oBAAAC,EACA,4BAAAC,EACA,uBAAAC,CACF,EAAIC,GAAoB,CACtB,QAAAJ,CACF,CAAC,EAEKK,EAAcC,GAAY,IAAM,CAxExC,IAAAC,EAyEI,OAAIJ,EAAuB,wBAAwB,eAC1CA,EAAuB,aAGzB,IAAI,eAAY,CACrB,GAAGA,EAAuB,aAC1B,eAAgB,CACd,GAAGA,EAAuB,aAAa,eACvC,QAAS,CACP,qBAAsB,GACtB,iBAAkB,GAClB,IAAGI,EAAAJ,EAAuB,aAAa,iBAApC,YAAAI,EAAoD,OACzD,CACF,CACF,CAAC,CACH,EAAG,CAACJ,EAAuB,YAAY,CAAC,KAExC,yBAAqBE,CAAW,EAQhC,IAAMG,EANgC,GAAAC,QAAM,QAAQ,IAC3C,OAAO3B,GAAyB,WACnCA,EACA,IAAMA,EACT,CAACA,CAAoB,CAAC,EAE+C,EAaxE,GARA4B,GAAuB7B,CAAc,EASnCD,GACA,CAACC,IACAI,GAAa,CAAC,GAAG,SAAW,EAE7B,OAAOE,EAAY,GAAAsB,QAAA,cAACtB,EAAA,IAAU,EAAK,GAAAsB,QAAA,cAACtB,GAAA,IAAiB,EAcvD,GAAM,CAAE,gBAAAwB,EAAkB,GAAAF,QAAM,QAAS,EAAK5B,EAE1C,CAAC,EADDD,GAAwB,CAAC,EAI7B,OACE,GAAA6B,QAAA,cAAC,wBAAoB,OAAQJ,GAC3B,GAAAI,QAAA,cAACG,GAAA,CAA6B,GAAGJ,GAC/B,GAAAC,QAAA,cAACI,GAAA,CACE,GAAIpC,GAAsB,CAAC,EAC5B,WAAY,EAAQA,GAEpB,GAAAgC,QAAA,cAACK,GAAA,CACE,GAAIpC,GAAgB,CAAC,EACtB,WAAY,EAAQA,GAEpB,GAAA+B,QAAA,cAACM,GAAA,CAAoB,aAAcpC,GACjC,GAAA8B,QAAA,cAACO,GAAA,CAAoB,aAAczB,GACjC,GAAAkB,QAAA,cAACQ,GAAA,CACC,MACErC,GAAwB,CAACC,EAAiB,SAAW,OAGvD,GAAA4B,QAAA,cAACS,GAAA,CAAsB,OAAQrC,GAC7B,GAAA4B,QAAA,cAACU,GAAA,CAA6B,GAAGvC,GAC/B,GAAA6B,QAAA,cAACW,GAAA,CAAwB,UAAWnC,GAAa,CAAC,GAChD,GAAAwB,QAAA,cAACY,GAAA,CAAoB,aAAc7B,GACjC,GAAAiB,QAAA,cAACa,GAAA,CACE,GAAIvC,GAAyB,CAAC,GAE/B,GAAA0B,QAAA,cAACc,GAAA,CACE,GAAIvC,GAAoB,CAAC,GAE1B,GAAAyB,QAAA,cAACe,GAAA,KACC,GAAAf,QAAA,cAACgB,GAAA,CACC,aACExB,EAAoB,aAEtB,uBACEA,EAAoB,uBAEtB,iBACEA,EAAoB,iBAEtB,MAAOR,EACP,gBACEQ,EAAoB,gBAEtB,SAAUZ,EACV,cAAeH,EACf,UAAWE,EACX,OAAQM,EACR,MAAOC,EACP,OAAQE,EACR,OAAQD,EACR,cAAeE,EACf,aAAc,CAAC,CAACZ,EAChB,SAAUe,EAAoB,SAC9B,YAAaF,EACb,QAASE,GAET,GAAAQ,QAAA,cAACiB,GAAA,KACC,GAAAjB,QAAA,cAACE,EAAA,KACErB,EACA,CAACY,GACA,GAAAO,QAAA,cAACkB,GAAA,IAAU,EAEb,GAAAlB,QAAA,cAACmB,GAAA,IAAmB,CACtB,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAEJ,EAlL6C,UKtC7C,IAAAC,GAA2C,iBAUpC,IAAMC,GAERC,EAAA,CAAC,CAAE,aAAAC,CAAa,IAAM,CACzB,IAAMC,EAAYC,EAAa,EAEzB,CAAE,qBAAAC,CAAqB,EAAIC,GAAsB,EACjD,CAAE,KAAAC,CAAK,EAAIC,GAAgB,EAE3B,CAACC,EAAWC,CAAY,KAAI,aAA6B,EAEzDC,EAAqBV,EAAA,IAAM,CAC/B,GAAIC,EAAa,YAAc,KACzBA,EAAa,UAAY,GAC3BA,EAAa,WAAW,EAErBA,EAAa,UAChBK,GAAA,MAAAA,EAAO,CACL,IAAK,GAAGL,EAAa,MAAMA,EAAa,wBACxC,KAAM,WACN,QAASC,EACP,yBACA,CACE,QAASS,GAAmBV,EAAa,OAAO,CAClD,EACA,YAAYU,GACVV,EAAa,OACf,mBACF,EACA,eAAgBA,EAAa,eAC7B,gBAAiBU,GAAmBV,EAAa,OAAO,CAC1D,GAGEA,EAAa,QAAU,GAAG,CACxBO,GACF,aAAaA,CAAS,EAGxB,IAAMI,EAAe,WAAW,IAAM,CACpCR,EAAqB,CACnB,oCACA,QAAS,CACP,GAAIH,EAAa,GACjB,QAASA,EAAa,QACtB,SAAUA,EAAa,QACzB,CACF,CAAC,CACH,EAAG,GAAI,EAEPQ,EAAaG,CAAY,EAG/B,EA1C2B,sBA4C3B,uBAAU,IAAM,CACdF,EAAmB,CACrB,EAAG,CAACT,CAAY,CAAC,EAEV,IACT,EAzDK,iBCZL,IAAAY,GAAiC,oBAsD1B,IAAMC,GAA8CC,EAAA,CAAC,CAC1D,SAAAC,EACA,OAAQC,EACR,MAAOC,EACP,OAAQC,EACR,MAAOC,EACP,OAAQC,EACR,cAAeC,CACjB,IAAM,CACJ,GAAM,CAAE,OAAAC,EAAQ,OAAAC,EAAQ,OAAAC,EAAQ,MAAAC,EAAO,MAAAC,EAAO,cAAAC,CAAc,EAC1DC,GAAiB,EAInB,OACE,GAAAC,QAAA,cAHqBb,GAAmBM,EAGvC,CACC,MAAOL,GAAkBQ,EACzB,OAAQP,GAAmBM,EAC3B,OAAQJ,GAAmBG,EAC3B,MAAOJ,GAAkBO,EACzB,cAAeL,GAA0BM,GAExCZ,EACD,GAAAc,QAAA,cAACC,GAAA,IAAc,CACjB,CAEJ,EA1B2D,iBA4BrDA,GAA0BhB,EAAA,IAAM,CACpC,GAAM,CAAE,OAAAiB,CAAO,EAAIC,GAAiB,EAE9BC,EAAYC,EAAa,EAEzB,CAAE,SAAAC,EAAU,YAAAC,CAAY,EAAIC,GAAmB,EAE/CC,EAAmBxB,EAACyB,IAIxBA,EAAE,eAAe,EAEjBA,EAAE,YAAcN,EACd,yBACA,2DACF,EAEOM,EAAE,aAXc,oBAczB,uBAAU,KACJJ,GACF,OAAO,iBAAiB,eAAgBG,CAAgB,EAGnD,OAAO,oBAAoB,eAAgBA,CAAgB,GACjE,CAACH,CAAQ,CAAC,EAGX,GAAAN,QAAA,cAACE,EAAA,CACC,KAAMI,EACN,QAASF,EACP,yBACA,2DACF,EACA,YAAaG,EACf,CAEJ,EAvCgC,iBClFhC,IAAAI,GAAkB,oBAmGX,SAASC,GAAc,CAC5B,eAAAC,EAAiB,GACjB,yBAAAC,EAA2B,GAC3B,SAAAC,EACA,SAAUC,EACV,QAASC,EACT,OAAAC,CACF,EAAsE,CA1GtE,IAAAC,EA2GE,IAAMC,EAAqBC,GAAsB,EAC3CC,EAAaC,GAAc,EAE3BC,EAAkB,GAAQJ,GAAA,MAAAA,EAAoB,YAC9CK,EAAe,GAAQL,GAAA,MAAAA,EAAoB,UAC3CM,EAAiBJ,IAAe,SAEhCK,EAASC,GAAU,EACnBC,EAAKC,GAAM,EACX,CAAE,YAAAC,CAAY,EAAIC,GAAiB,EACnCC,EAAiBF,EAAY,EAE7B,CACJ,WAAAG,EACA,UAAAC,EACA,KAAM,CACJ,cAAeC,EACf,WAAYC,CACd,EAAI,CAAC,CACP,EAAIC,GAAmB,CACrB,+BAAgCb,EAChC,OAAAP,CACF,CAAC,EAGKqB,EAAkBf,EACpBC,EACEU,EACAC,EACF,GAGJ,GAAI,CAACZ,EACH,OAAO,GAAAgB,QAAA,iBAAAA,QAAA,cAAGzB,GAAY,IAAK,EAI7B,GAAImB,EACF,OAAO,GAAAM,QAAA,iBAAAA,QAAA,cAAGvB,GAAkB,IAAK,EAInC,GAAIsB,EACF,OAAO,GAAAC,QAAA,iBAAAA,QAAA,cAAGzB,GAAY,IAAK,EAK7B,GAAI,OAAOC,EAAoB,IAC7B,OAAO,GAAAwB,QAAA,iBAAAA,QAAA,cAAGxB,GAAmB,IAAK,EAOpC,IAAMyB,EAAkBhB,EACpB,OAAOZ,GAAmB,SACxBA,EACA,SACF,OAAOA,GAAmB,SACxBA,EACCwB,EAIDK,EAAW,GACfhB,EAAiBO,GAAA,YAAAA,EAAgB,SAAWN,EAAO,WAClD,QAAQ,cAAe,EAAE,EAG5B,GAAIc,EAAiB,CACnB,GAAIf,EAAgB,CAClB,IAAMiB,EAAU7B,EACZ,OAAO,mBAAmB4B,CAAQ,IAClC,GACJ,OAAO,GAAAF,QAAA,cAACI,GAAA,CAAe,GAAI,GAAGH,IAAkBE,IAAW,EAG7D,IAAME,GAAmC1B,EAAAQ,EAAO,SAAP,MAAAR,EAAe,GACpDQ,EAAO,OAAO,GACdE,EAAG,CACD,GAAIa,EACJ,QAAS,CAAE,UAAW,EAAK,EAC3B,KAAM,MACR,CAAC,EAEL,OACE,GAAAF,QAAA,cAACM,GAAA,CACC,OAAQ,CACN,GAAIL,EACJ,MACE3B,IAA6B+B,GAAgB,IAAI,OAAS,EACtD,CACE,GAAIA,CACN,EACA,OACN,KAAM,SACR,EACF,EAIJ,OAAO,IACT,CAhHgBE,EAAAnC,GAAA,iBAkHhB,IAAMkC,GAAWC,EAAA,CAAC,CAAE,OAAAC,CAAO,IAA4B,CACrD,IAAMnB,EAAKC,GAAM,EAEjB,UAAAU,QAAM,UAAU,IAAM,CACpBX,EAAGmB,CAAM,CACX,EAAG,CAACnB,EAAImB,CAAM,CAAC,EAER,IACT,EARiB,YAUXJ,GAAiBG,EAAA,CAAC,CAAE,GAAAE,CAAG,IAAsB,CACjD,GAAM,CAAE,QAAAC,CAAQ,EAAIC,GAAc,EAElC,UAAAX,QAAM,UAAU,IAAM,CACpBU,EAAQD,CAAE,CACZ,EAAG,CAACC,EAASD,CAAE,CAAC,EAET,IACT,EARuB,kBC/NvB,IAAAG,GAA0B,iBAInB,IAAMC,GAA+BC,EAAA,IAAM,CAChD,GAAM,CAAE,YAAAC,CAAY,EAAIC,GAAiB,EAEnC,CAAE,UAAAC,CAAU,EAAIC,GAAqB,EACrCC,EAAWJ,EAAY,EAE7B,uBAAU,IAAM,CACdE,GAAA,MAAAA,IAAc,MAAM,IAAM,GAC5B,EAAG,CAACE,GAAA,YAAAA,EAAU,QAAQ,CAAC,EAEhB,IACT,EAX4C,sBCJ5C,IAAAC,GAAiC,oBA2D1B,IAAMC,GAAsCC,EAAA,CAAC,CAClD,SAAUC,EACV,OAAQC,EACR,OAAQC,EACR,SAAAC,EACA,eAAAC,EACA,SAAAC,EACA,aAAcC,EACd,GAAGC,CACL,IAAM,CACJ,GAAM,CACJ,GAAAC,EACA,SAAAC,EACA,OAAQC,EAAiB,EAC3B,EAAIC,GAAkB,CACpB,SAAUX,EACV,GAAIE,GAAA,YAAAA,EAAgB,EACtB,CAAC,EAEKU,EAASX,GAAkBS,EAE3BG,EAASX,GAAkB,CAC/B,GAAAM,EACA,SAAAC,CACF,EAEM,CAAE,KAAAK,CAAK,EAAIC,GAAO,CACtB,SAAUN,GAAA,YAAAA,EAAU,KACpB,OAAAG,EACA,OAAAC,EACA,aAAcP,CAChB,CAAC,EAaD,SAXA,cAAU,IAAM,CACVF,IAAkBU,GAAA,YAAAA,EAAM,OAAQ,IAClCV,EAAe,CACb,SAAUK,GAAA,YAAAA,EAAU,KACpB,OAAAG,EACA,OAAQE,GAAA,YAAAA,EAAM,OACd,OAAAD,CACF,CAAC,CAEL,EAAG,CAACC,GAAA,YAAAA,EAAM,GAAG,CAAC,EAEVA,GAAA,MAAAA,EAAM,IACJ,GAAAE,QAAM,eAAeX,CAAQ,EACd,GAAAW,QAAM,aAAaX,EAAUE,CAAI,EAI7C,GAAAS,QAAA,iBAAAA,QAAA,cAAGX,CAAS,GAGjBS,GAAA,YAAAA,EAAM,OAAQ,GACT,GAAAE,QAAA,iBAAAA,QAAA,cAAGb,GAAY,IAAK,EAGtB,IACT,EA1DmD,aC3DnD,IAAAc,GAAoE,oBCA7D,IAAMC,GAAW,CACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAOA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAWF,ED1CA,IAAMC,GACJ,4FAMWC,GAAeC,EAAA,CAAC,CAAE,eAAAC,CAAe,QAC5C,cAAU,IAAM,CACd,IAAMC,EAAW,SAAS,cAAc,OAAO,EAC/C,SAAS,KAAK,YAAYA,CAAQ,EAClCC,GAAS,QAASC,GAAM,CAd5B,IAAAC,EAeM,OAAAA,EAAAH,EAAS,QAAT,YAAAG,EAAgB,WAAWD,EAAMF,EAAS,MAAM,SAAS,QAC3D,CACF,EAAG,CAAC,CAAC,EAGH,GAAAI,QAAA,cAAC,OACC,UAAU,6BACV,MAAO,CACL,MAAO,OACP,OAAQ,MACV,GAEA,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,SAAU,WACV,QAAS,OACT,eAAgB,SAChB,WAAY,SACZ,YAAa,QACb,MAAO,OACP,SAAU,QACV,OAAQ,OACR,aAAc,sBACd,GAAGL,CACL,GAEA,GAAAK,QAAA,cAAC,OACC,UAAU,wBACV,MAAO,CACL,SAAU,WACV,KAAM,EACN,IAAK,EACL,MAAO,OACP,OAAQ,OACR,aAAc,qBAChB,GAEA,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,SAAU,WACV,MAAO,QACP,OAAQ,OACR,QAAS,OACT,eAAgB,gBAChB,OAAQ,QACV,GAEA,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,MAAO,oBACP,OAAQ,OACR,SAAU,UACZ,GAEA,GAAAA,QAAA,cAACC,GAAA,CACC,MAAO,CACL,eAAgB,OAChB,SAAU,WACV,IAAK,MACL,MAAO,OACT,EACA,GAAI,IACN,EACA,GAAAD,QAAA,cAACC,GAAA,CACC,MAAO,CACL,eAAgB,KAChB,SAAU,WACV,IAAK,MACL,MAAO,QACP,UAAW,gBACb,EACA,GAAI,IACN,EACA,GAAAD,QAAA,cAACE,GAAA,CACC,MAAO,CACL,SAAU,WACV,MAAO,MACT,EACA,GAAI,IACN,CACF,EAEA,GAAAF,QAAA,cAAC,OACC,MAAO,CACL,MAAO,oBACP,OAAQ,OACR,SAAU,UACZ,GAEA,GAAAA,QAAA,cAACC,GAAA,CACC,MAAO,CACL,eAAgB,KAChB,SAAU,WACV,IAAK,MACL,MAAO,QACP,UAAW,gBACb,EACA,GAAI,IACN,EACA,GAAAD,QAAA,cAACC,GAAA,CACC,MAAO,CACL,eAAgB,OAChB,gBAAiB,OACjB,SAAU,WACV,IAAK,MACL,MAAO,MACT,EACA,GAAI,IACN,EACA,GAAAD,QAAA,cAACE,GAAA,CACC,MAAO,CACL,SAAU,WACV,MAAO,OACT,EACA,GAAI,IACN,CACF,CACF,CACF,EACA,GAAAF,QAAA,cAACG,GAAA,CAAK,KAAMX,GAAM,CACpB,CACF,GA9HwB,gBAkItBW,GAAOT,EAAA,CAAC,CAAE,KAAAF,CAAK,IAEjB,GAAAQ,QAAA,cAAC,KACC,UAAU,UACV,KAAK,sCACL,OAAO,SACP,IAAI,aACJ,MAAO,CACL,SAAU,WACV,OAAQ,OACR,QAAS,SACT,QAAS,OACT,SAAU,SACV,WAAY,SACZ,eAAgB,SAChB,WAAY,SACZ,gBACE,0GACJ,GAEA,GAAAA,QAAA,cAAC,OACC,MAAO,CACL,MAAO,OACP,QAAS,OACT,cAAe,MACf,IAAK,KACP,GAEA,GAAAA,QAAA,cAAC,QACC,MAAO,CACL,QAAS,OACT,cAAe,MACf,eAAgB,SAChB,WAAY,QACd,GACD,cAED,EACA,GAAAA,QAAA,cAAC,QACC,UAAU,OACV,MAAO,CACL,SAAU,OACV,WAAY,MACd,GAECR,CACH,EACA,GAAAQ,QAAA,cAAC,QACC,MAAO,CACL,QAAS,OACT,cAAe,MACf,eAAgB,SAChB,WAAY,QACd,GACD,cAED,CACF,CACF,EA1DS,QA8DPC,GAAYP,EAAA,CAAC,CAAE,MAAAU,EAAO,GAAGC,CAAM,IAEjC,GAAAL,QAAA,cAAC,OACC,MAAM,6BACN,MAAO,GACP,OAAQ,GACR,KAAK,OACL,MAAO,CACL,QAAS,EACT,UAAW,0DACX,GAAGI,CACL,GAEA,GAAAJ,QAAA,cAAC,UAAO,GAAI,GAAI,EAAG,GAAI,KAAM,QAAQK,EAAM,QAAS,YAAa,GAAK,EACtE,GAAAL,QAAA,cAAC,YACC,GAAAA,QAAA,cAAC,kBACC,GAAI,GAAGK,EAAM,OACb,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,0BAClB,cAAc,kBAEd,GAAAL,QAAA,cAAC,QAAK,UAAU,UAAU,EAC1B,GAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,CACF,CACF,EA3Bc,aA+BZE,GAAUR,EAAA,CAAC,CAAE,MAAAU,EAAO,GAAGC,CAAM,IACjC,GAAAL,QAAA,cAAC,OACC,MAAM,6BACN,MAAO,IACP,OAAQ,GACR,KAAK,OACJ,GAAGK,EACJ,MAAO,CACL,QAAS,EACT,UAAW,0DACX,GAAGD,CACL,GAEA,GAAAJ,QAAA,cAAC,UACC,GAAI,GACJ,GAAI,GACJ,EAAG,GACH,KAAM,QAAQK,EAAM,QACpB,YAAa,GACf,EACA,GAAAL,QAAA,cAAC,YACC,GAAAA,QAAA,cAAC,kBACC,GAAI,GAAGK,EAAM,OACb,GAAI,EACJ,GAAI,EACJ,EAAG,EACH,kBAAkB,2BAClB,cAAc,kBAEd,GAAAL,QAAA,cAAC,QAAK,UAAU,UAAU,EAC1B,GAAAA,QAAA,cAAC,QAAK,OAAQ,EAAG,UAAU,UAAU,YAAa,EAAG,CACvD,CACF,CACF,EAjCc,WEzOhB,IAAAM,GAAkB,oBA+BX,IAAMC,GAAsDC,EAAA,CAAC,CAClE,OAAAC,EACA,SAAU,CACR,QAAAC,EACE,GAAAC,QAAA,cAACC,GAAA,CAAQ,eAAe,mBAAmB,eAAe,QAAQ,EAEpE,MAAAC,EACE,GAAAF,QAAA,cAACC,GAAA,CACC,eAAe,iBACf,eAAe,oBACjB,EAEF,QAAAE,EACE,GAAAH,QAAA,cAACC,GAAA,CAAQ,eAAe,mBAAmB,eAAe,YAAY,EAExE,KAAAG,EACE,GAAAJ,QAAA,cAACC,GAAA,CACC,eAAe,gBACf,eAAe,sBACjB,CAEJ,EAAI,CAAC,CACP,IAAM,CACJ,OAAQH,EAAQ,CACd,IAAK,UACH,OAAO,GAAAE,QAAA,iBAAAA,QAAA,cAAGD,CAAQ,EACpB,IAAK,QACH,OAAO,GAAAC,QAAA,iBAAAA,QAAA,cAAGE,CAAM,EAClB,IAAK,UACH,OAAO,GAAAF,QAAA,iBAAAA,QAAA,cAAGG,CAAQ,EACpB,QACE,OAAO,GAAAH,QAAA,iBAAAA,QAAA,cAAGI,CAAK,CACnB,CACF,EAjCmE,qBAmC7DH,GAAUJ,EAAA,CAAC,CACf,eAAAQ,EACA,eAAAC,CACF,IAGM,CACJ,IAAMC,EAAYC,EAAa,EAE/B,OAAO,GAAAR,QAAA,cAAC,YAAMO,EAAUF,EAAgBC,CAAc,CAAE,CAC1D,EAVgB","names":["src_exports","__export","AccessControlContext","ActionTypes","AuthPage","Authenticated","AutoSaveIndicator","CanAccess","ErrorComponent","GitHubBanner","I18nContext","KeyBuilder","LayoutWrapper","Link","LoginPage","MetaContextProvider","ReadyPage","Refine","ResourceContext","RouteChangeHandler","UndoableQueue","WelcomePage","createTreeView","file2Base64","flattenObjectKeys","generateDefaultDocumentTitle","getDefaultFilter","getDefaultSortOrder","getNextPageParam","getPreviousPageParam","handleUseParams","importCSVMapper","keys","legacyResourceTransform","matchResourceFromRoute","parseTableParams","parseTableParamsFromQuery","pickDataProvider","pickNotDeprecated","propertyPathToArray","queryKeys","routeGenerator","setInitialFilters","setInitialSorters","stringifyTableParams","unionFilters","unionSorters","useActiveAuthProvider","useApiUrl","useAuthenticated","useBack","useBreadcrumb","useCan","useCanWithoutCache","useCancelNotification","useCheckError","useCloneButton","useCreate","useCreateButton","useCreateMany","useCustom","useCustomMutation","useDataProvider","useDelete","useDeleteButton","useDeleteMany","useEditButton","useExport","useExportButton","useForgotPassword","useForm","useGetIdentity","useGetLocale","useGetToPath","useGo","useHandleNotification","useImport","useImportButton","useInfiniteList","useInvalidate","useInvalidateAuthStore","useIsAuthenticated","useIsExistAuthentication","useKeys","useLink","useList","useListButton","useLiveMode","useLoadingOvertime","useLog","useLogList","useLogin","useLogout","useMany","useMenu","useMeta","useMetaContext","useModal","useMutationMode","useNavigation","useNotification","useOnError","useOne","useParse","useParsed","usePermissions","usePublish","useRedirectionAfterSubmission","useRefineContext","useRefineOptions","useRefreshButton","useRegister","useResource","useResourceParams","useResourceSubscription","useResourceWithRoute","useRouterContext","useRouterType","useSaveButton","useSelect","useSetLocale","useShow","useShowButton","useSubscription","useSyncWithLocation","useTable","useTitle","useToPath","useTranslate","useTranslation","useUpdate","useUpdateMany","useUpdatePassword","useUserFriendlyName","useWarnAboutChange","userFriendlyResourceName","__toCommonJS","import_react","import_devtools_internal","import_react_query","import_react","LegacyAuthContext","React","LegacyAuthContextProvider","__name","children","isProvided","authOperations","replace","useNavigation","loginFunc","params","_a","error","registerFunc","logoutFunc","checkAuthFunc","AuthBindingsContext","AuthBindingsContextProvider","authBindings","handleLogin","handleRegister","handleLogout","handleCheck","result","handleForgotPassword","handleUpdatePassword","useLegacyAuthContext","useAuthBindingsContext","import_differenceWith","import_unionWith","import_qs","import_warn_once","userFriendlySecond","__name","miliseconds","import_fromPairs","import_zip","importCSVMapper","__name","data","mapData","item","headers","body","entry","fromPairs","zip","index","array","import_pluralize","userFriendlyResourceName","__name","resource","type","humanizeResource","humanizeString","pluralize","handleUseParams","__name","params","arrayFindIndex","array","slice","item","index","sliceItem","sliceIndex","__name","convertToLegacy","segments","newSegments","newParams","arrayFindIndex","__name","BaseKeyBuilder","legacy","ParamsKeyBuilder","paramsValue","DataIdRequiringKeyBuilder","idValue","DataIdsRequiringKeyBuilder","idsValue","el","DataResourceKeyBuilder","actionType","DataKeyBuilder","resourceName","mutationName","AuthKeyBuilder","AccessResourceKeyBuilder","AccessKeyBuilder","AuditActionKeyBuilder","AuditKeyBuilder","KeyBuilder","name","keys","pickNotDeprecated","__name","args","arg","queryKeys","__name","resource","dataProviderName","meta","metaData","providerName","keys","config","pickNotDeprecated","ids","item","id","queryKeysReplacement","preferLegacyKeys","hasPermission","__name","permissions","action","i","isParameter","__name","segment","splitToSegments","__name","path","segment","isSegmentCountsSame","__name","route","resourceRoute","routeSegments","splitToSegments","resourceRouteSegments","removeLeadingTrailingSlashes","__name","route","checkBySegments","__name","route","resourceRoute","stdRoute","removeLeadingTrailingSlashes","stdResourceRoute","isSegmentCountsSame","routeSegments","splitToSegments","segment","index","isParameter","getDefaultActionPath","__name","resourceName","action","parentPrefix","cleanParentPrefix","removeLeadingTrailingSlashes","path","getParentResource","__name","resource","resources","_a","_b","parentName","pickNotDeprecated","getParentPrefixForResource","__name","resource","resources","legacy","parents","parent","getParentResource","_a","v","removeLeadingTrailingSlashes","getActionRoutesFromResource","__name","resource","resources","legacy","actions","actionList","parentPrefix","getParentPrefixForResource","action","_a","_b","item","route","getDefaultActionPath","pickMatchedRoute","__name","routes","_a","sanitizedRoutes","route","splitToSegments","removeLeadingTrailingSlashes","segmentsCount","eligibleRoutes","nonParametrizedRoutes","isParameter","matchResourceFromRoute","__name","route","resources","allFound","resource","getActionRoutesFromResource","actionRoute","checkBySegments","mostEligible","pickMatchedRoute","routeGenerator","__name","item","resourcesFromProps","_a","route","parentPrefix","getParentPrefixForResource","meta","pickNotDeprecated","createTreeView","__name","resources","_a","tree","resourcesRouteObject","resourcesNameObject","parent","child","i","route","pickNotDeprecated","name","humanizeString","__name","text","import_react","import_pluralize","import_react","DefaultLayout","__name","children","React","defaultTitle","React","defaultRefineOptions","humanizeString","pluralize","RefineContext","DefaultLayout","RefineContextProvider","__name","hasDashboard","mutationMode","warnWhenUnsavedChanges","syncWithLocation","undoableTimeout","children","DashboardPage","Title","Layout","Header","Sider","Footer","OffLayoutArea","LoginPage","catchAll","liveMode","onLiveEvent","options","handleRefineOptions","__name","options","disableTelemetry","liveMode","mutationMode","reactQueryClientConfig","reactQueryDevtoolConfig","syncWithLocation","undoableTimeout","warnWhenUnsavedChanges","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","optionsWithDefaults","defaultRefineOptions","disableTelemetryWithDefault","reactQueryWithDefaults","redirectPage","__name","redirectFromProps","action","redirectOptions","sequentialPromises","__name","promises","onEachResolve","onEachReject","results","index","promise","result","error","pickResource","__name","identifier","resources","legacy","resourceByRoute","r","removeLeadingTrailingSlashes","resource","pickDataProvider","__name","resourceName","dataProviderName","resources","resource","pickResource","meta","pickNotDeprecated","handleMultiple","__name","promises","res","getNextPageParam","__name","lastPage","pagination","cursor","current","pageSize","totalPages","getPreviousPageParam","legacyResourceTransform","__name","resources","_resources","resource","_a","_b","routeGenerator","pickRouteParams","__name","route","splitToSegments","removeLeadingTrailingSlashes","s","isParameter","prepareRouteParams","__name","routeParams","meta","acc","key","value","composeRoute","__name","designatedRoute","resourceMeta","parsed","meta","routeParams","pickRouteParams","preparedRouteParams","prepareRouteParams","match","key","fromParams","useActiveAuthProvider","__name","legacyAuthProvider","useLegacyAuthContext","authProvider","useAuthBindingsContext","handlePaginationParams","__name","hasPagination","pagination","configPagination","hasPaginationString","mode","current","pickNotDeprecated","pageSize","import_react","useMediaQuery","__name","query","matches","setMatches","media","listener","safeTranslate","__name","translate","key","defaultMessage","options","translated","fallback","generateDefaultDocumentTitle","translate","resource","action","id","resourceName","_a","actionPrefixMatcher","identifier","resourceNameFallback","userFriendlyResourceName","resourceNameWithFallback","defaultTitle","safeTranslate","suffix","autoGeneratedTitle","__name","import_react","useMutationMode","__name","preferredMutationMode","preferredUndoableTimeout","mutationMode","undoableTimeout","RefineContext","import_react","import_react","UnsavedWarnContext","React","UnsavedWarnContextProvider","__name","children","warnWhen","setWarnWhen","useWarnAboutChange","__name","warnWhenUnsavedChanges","RefineContext","warnWhen","setWarnWhen","UnsavedWarnContext","import_react","useSyncWithLocation","__name","syncWithLocation","RefineContext","import_react","useTitle","__name","Title","RefineContext","import_react","useRefineContext","__name","Footer","Header","Layout","OffLayoutArea","Sider","Title","hasDashboard","mutationMode","syncWithLocation","undoableTimeout","warnWhenUnsavedChanges","DashboardPage","LoginPage","catchAll","options","__initialized","RefineContext","useUserFriendlyName","__name","textTransformers","useRefineContext","name","type","humanizeName","isNested","__name","obj","isArray","flattenObjectKeys","prefix","acc","key","currentPrefix","item","index","propertyPathToArray","__name","propertyPath","item","downloadInBrowser","__name","filename","content","type","blob","link","blobUrl","deferExecution","__name","fn","import_debounce","asyncDebounce","__name","func","wait","cancelReason","callbacks","cancelPrevious","cb","_a","debouncedFunc","debounce","args","resolve","reject","runner","prepareQueryContext","__name","context","queryContext","parseTableParams","__name","url","current","pageSize","sorter","sorters","filters","qs","pickNotDeprecated","parseTableParamsFromQuery","params","stringifyTableParams","options","pagination","rest","compareFilters","left","right","compareSorters","unionFilters","permanentFilter","newFilters","prevFilters","f","warnOnce","unionWith","crudFilter","unionSorters","permanentSorter","newSorters","crudSorter","setInitialFilters","defaultFilter","differenceWith","setInitialSorters","defaultSorter","getDefaultSortOrder","columnName","sortItem","item","getDefaultFilter","operatorType","filter","operator","field","file2Base64","__name","file","resolve","reject","reader","resultHandler","error","useKeys","__name","useNewQueryKeys","useRefineContext","keys","usePermissions","v3LegacyAuthProviderCompatible","options","params","legacyGetPermission","useLegacyAuthContext","getPermissions","useAuthBindingsContext","keys","preferLegacyKeys","useKeys","queryResponse","legacyQueryResponse","__name","import_devtools_internal","import_react_query","useGetIdentity","v3LegacyAuthProviderCompatible","queryOptions","legacyGetUserIdentity","useLegacyAuthContext","getIdentity","useAuthBindingsContext","keys","preferLegacyKeys","useKeys","queryResponse","legacyQueryResponse","__name","import_devtools_internal","import_react_query","import_react_query","useInvalidateAuthStore","__name","queryClient","keys","preferLegacyKeys","useKeys","action","useLogout","v3LegacyAuthProviderCompatible","mutationOptions","invalidateAuthStore","useInvalidateAuthStore","routerType","useRouterType","go","useGo","push","useNavigation","open","close","useNotification","legacyLogoutFromContext","useLegacyAuthContext","logoutFromContext","useAuthBindingsContext","keys","preferLegacyKeys","useKeys","mutation","data","variables","success","error","redirectTo","successNotification","redirectPath","redirect","buildSuccessNotification","buildNotification","v3LegacyAuthProviderCompatibleMutation","__name","import_react","import_devtools_internal","import_react_query","import_qs","useLogin","v3LegacyAuthProviderCompatible","mutationOptions","invalidateAuthStore","useInvalidateAuthStore","routerType","useRouterType","go","useGo","replace","useNavigation","parsed","useParsed","useLocation","useRouterContext","search","close","open","useNotification","legacyLoginFromContext","useLegacyAuthContext","loginFromContext","useAuthBindingsContext","keys","preferLegacyKeys","useKeys","to","React","_a","qs","mutation","success","redirectTo","error","successNotification","buildSuccessNotification","buildNotification","v3LegacyAuthProviderCompatibleMutation","redirectPathFromAuth","__name","import_devtools_internal","import_react_query","useRegister","v3LegacyAuthProviderCompatible","mutationOptions","invalidateAuthStore","useInvalidateAuthStore","routerType","useRouterType","go","useGo","replace","useNavigation","legacyRegisterFromContext","useLegacyAuthContext","registerFromContext","useAuthBindingsContext","close","open","useNotification","keys","preferLegacyKeys","useKeys","mutation","success","redirectTo","error","successNotification","buildSuccessNotification","buildNotification","v3LegacyAuthProviderCompatibleMutation","redirectPathFromAuth","__name","import_devtools_internal","import_react_query","useForgotPassword","v3LegacyAuthProviderCompatible","mutationOptions","routerType","useRouterType","go","useGo","replace","useNavigation","v3LegacyAuthProviderCompatibleForgotPasswordFromContext","useLegacyAuthContext","forgotPasswordFromContext","useAuthBindingsContext","close","open","useNotification","keys","preferLegacyKeys","useKeys","mutation","success","redirectTo","error","successNotification","buildSuccessNotification","buildNotification","v3LegacyAuthProviderCompatibleMutation","redirectPathFromAuth","__name","import_react","import_devtools_internal","import_react_query","import_qs","useUpdatePassword","v3LegacyAuthProviderCompatible","mutationOptions","routerType","useRouterType","go","useGo","replace","useNavigation","legacyUpdatePasswordFromContext","useLegacyAuthContext","updatePasswordFromContext","useAuthBindingsContext","close","open","useNotification","keys","preferLegacyKeys","useKeys","parsed","useParsed","useLocation","useRouterContext","search","params","React","qs","mutation","variables","success","redirectTo","error","successNotification","buildSuccessNotification","buildNotification","v3LegacyAuthProviderCompatibleMutation","redirectPathFromAuth","__name","import_devtools_internal","import_react_query","useIsAuthenticated","v3LegacyAuthProviderCompatible","params","checkAuth","useLegacyAuthContext","check","useAuthBindingsContext","keys","preferLegacyKeys","useKeys","queryResponse","legacyQueryResponse","__name","useAuthenticated","import_devtools_internal","import_react_query","useOnError","v3LegacyAuthProviderCompatible","routerType","useRouterType","go","useGo","replace","useNavigation","legacyCheckErrorFromContext","useLegacyAuthContext","onErrorFromContext","useAuthBindingsContext","keys","preferLegacyKeys","useKeys","legacyLogout","useLogout","logout","mutation","shouldLogout","redirectTo","v3LegacyAuthProviderCompatibleMutation","redirectPath","__name","useCheckError","useIsExistAuthentication","__name","legacyIsProvided","useLegacyAuthContext","isProvided","useAuthBindingsContext","import_devtools_internal","import_react_query","import_react","useLoadingOvertime","__name","enabledProp","isLoading","intervalProp","onIntervalProp","elapsedTime","setElapsedTime","options","useRefineContext","overtime","interval","onInterval","enabled","intervalFn","prevElapsedTime","useList","__name","resourceFromProp","config","filters","hasPagination","pagination","sorters","queryOptions","successNotification","errorNotification","meta","metaData","liveMode","onLiveEvent","liveParams","dataProviderName","overtimeOptions","resources","resource","identifier","useResource","dataProvider","useDataProvider","translate","useTranslate","authProvider","useActiveAuthProvider","checkError","useOnError","handleNotification","useHandleNotification","getMeta","useMeta","keys","preferLegacyKeys","useKeys","pickedDataProvider","pickDataProvider","preferredMeta","pickNotDeprecated","prefferedFilters","prefferedSorters","prefferedHasPagination","prefferedPagination","handlePaginationParams","isServerPagination","combinedMeta","notificationValues","isEnabled","getList","useResourceSubscription","queryResponse","context","prepareQueryContext","rawData","_a","data","current","mode","pageSize","notificationConfig","err","elapsedTime","useLoadingOvertime","import_devtools_internal","import_react_query","useOne","__name","resourceFromProp","id","queryOptions","successNotification","errorNotification","meta","metaData","liveMode","onLiveEvent","liveParams","dataProviderName","overtimeOptions","resources","resource","identifier","useResource","dataProvider","useDataProvider","translate","useTranslate","authProvider","useActiveAuthProvider","checkError","useOnError","handleNotification","useHandleNotification","getMeta","useMeta","keys","preferLegacyKeys","useKeys","preferredMeta","pickNotDeprecated","pickedDataProvider","pickDataProvider","getOne","combinedMeta","useResourceSubscription","queryResponse","context","prepareQueryContext","data","_a","notificationConfig","err","elapsedTime","useLoadingOvertime","import_devtools_internal","import_react_query","import_warn_once","useMany","__name","resourceFromProp","ids","queryOptions","successNotification","errorNotification","meta","metaData","liveMode","onLiveEvent","liveParams","dataProviderName","overtimeOptions","resources","resource","identifier","useResource","dataProvider","useDataProvider","translate","useTranslate","authProvider","useActiveAuthProvider","checkError","useOnError","handleNotification","useHandleNotification","getMeta","useMeta","keys","preferLegacyKeys","useKeys","preferredMeta","pickNotDeprecated","pickedDataProvider","pickDataProvider","isEnabled","getMany","getOne","combinedMeta","hasIds","hasResource","manuallyEnabled","warnOnce","idsWarningMessage","resourceWarningMessage","useResourceSubscription","queryResponse","context","prepareQueryContext","handleMultiple","id","data","_a","notificationConfig","err","elapsedTime","useLoadingOvertime","import_devtools_internal","import_react_query","ActionTypes","useUpdate","__name","idFromProps","resourceFromProps","valuesFromProps","dataProviderNameFromProps","successNotificationFromProps","errorNotificationFromProps","metaFromProps","metaDataFromProps","mutationModeFromProps","undoableTimeoutFromProps","onCancelFromProps","optimisticUpdateMapFromProps","invalidatesFromProps","mutationOptions","overtimeOptions","resources","select","useResource","queryClient","dataProvider","useDataProvider","mutationModeContext","undoableTimeoutContext","useMutationMode","translate","useTranslate","authProvider","useActiveAuthProvider","checkError","useOnError","publish","usePublish","log","useLog","notificationDispatch","useCancelNotification","handleNotification","useHandleNotification","invalidateStore","useInvalidate","getMeta","useMeta","textTransformers","useRefineContext","keys","preferLegacyKeys","useKeys","mutationResult","id","values","resourceName","mutationMode","undoableTimeout","onCancel","meta","metaData","dataProviderName","missingIdError","missingValuesError","missingResourceError","resource","identifier","combinedMeta","pickNotDeprecated","mutationModePropOrContext","undoableTimeoutPropOrContext","pickDataProvider","resolve","reject","doMutation","result","err","cancelMutation","optimisticUpdateMap","_","__","preferredMeta","queryKey","queryKeysReplacement","resourceKeys","previousQueries","previous","data","record","_a","error","variables","context","invalidates","_b","successNotification","dataProviderNameFromProp","resourceSingular","notificationConfig","previousData","queryData","acc","item","_fields","_operation","_variables","rest","errorNotification","query","mutate","mutateAsync","mutation","elapsedTime","useLoadingOvertime","options","import_devtools_internal","import_react_query","useCreate","__name","resourceFromProps","valuesFromProps","dataProviderNameFromProps","successNotificationFromProps","errorNotificationFromProps","invalidatesFromProps","metaFromProps","metaDataFromProps","mutationOptions","overtimeOptions","authProvider","useActiveAuthProvider","checkError","useOnError","dataProvider","useDataProvider","invalidateStore","useInvalidate","resources","select","useResource","translate","useTranslate","publish","usePublish","log","useLog","handleNotification","useHandleNotification","getMeta","useMeta","textTransformers","useRefineContext","keys","preferLegacyKeys","useKeys","mutationResult","resourceName","values","meta","metaData","dataProviderName","missingValuesError","missingResourceError","resource","identifier","combinedMeta","pickNotDeprecated","pickDataProvider","data","variables","context","_a","_b","_c","successNotificationFromProp","dataProviderNameFromProp","invalidates","resourceSingular","notificationConfig","_fields","_operation","_variables","rest","err","errorNotificationFromProp","mutate","mutateAsync","mutation","elapsedTime","useLoadingOvertime","options","import_devtools_internal","import_react_query","useDelete","__name","mutationOptions","overtimeOptions","authProvider","useActiveAuthProvider","checkError","useOnError","dataProvider","useDataProvider","resources","select","useResource","queryClient","mutationModeContext","undoableTimeoutContext","useMutationMode","notificationDispatch","useCancelNotification","translate","useTranslate","publish","usePublish","log","useLog","handleNotification","useHandleNotification","invalidateStore","useInvalidate","getMeta","useMeta","textTransformers","useRefineContext","keys","preferLegacyKeys","useKeys","mutation","id","mutationMode","undoableTimeout","resourceName","onCancel","meta","metaData","dataProviderName","values","resource","identifier","combinedMeta","pickNotDeprecated","mutationModePropOrContext","undoableTimeoutPropOrContext","pickDataProvider","resolve","reject","doMutation","result","err","cancelMutation","_","__","preferredMeta","queryKey","queryKeysReplacement","resourceKeys","previousQueries","previous","record","_a","data","_data","_error","invalidates","successNotification","dataProviderNameFromProp","context","resourceSingular","notificationConfig","_fields","_operation","_variables","rest","errorNotification","query","elapsedTime","useLoadingOvertime","import_devtools_internal","import_react_query","useCreateMany","__name","resourceFromProps","valuesFromProps","dataProviderNameFromProps","successNotificationFromProps","errorNotificationFromProps","metaFromProps","metaDataFromProps","invalidatesFromProps","mutationOptions","overtimeOptions","dataProvider","useDataProvider","resources","select","useResource","translate","useTranslate","publish","usePublish","handleNotification","useHandleNotification","invalidateStore","useInvalidate","log","useLog","getMeta","useMeta","textTransformers","useRefineContext","keys","preferLegacyKeys","useKeys","mutationResult","resourceName","values","meta","metaData","dataProviderName","missingValuesError","missingResourceError","resource","identifier","combinedMeta","pickNotDeprecated","selectedDataProvider","pickDataProvider","handleMultiple","val","response","variables","context","_a","successNotification","dataProviderNameFromProp","invalidates","resourcePlural","notificationConfig","ids","item","_fields","_operation","_variables","rest","err","errorNotification","mutate","mutateAsync","mutation","elapsedTime","useLoadingOvertime","options","import_devtools_internal","import_react_query","useUpdateMany","__name","idsFromProps","resourceFromProps","valuesFromProps","dataProviderNameFromProps","successNotificationFromProps","errorNotificationFromProps","metaFromProps","metaDataFromProps","mutationModeFromProps","undoableTimeoutFromProps","onCancelFromProps","optimisticUpdateMapFromProps","invalidatesFromProps","mutationOptions","overtimeOptions","resources","select","useResource","queryClient","dataProvider","useDataProvider","translate","useTranslate","mutationModeContext","undoableTimeoutContext","useMutationMode","authProvider","useActiveAuthProvider","checkError","useOnError","notificationDispatch","useCancelNotification","publish","usePublish","handleNotification","useHandleNotification","invalidateStore","useInvalidate","log","useLog","getMeta","useMeta","textTransformers","useRefineContext","keys","preferLegacyKeys","useKeys","mutationResult","ids","values","resourceName","onCancel","mutationMode","undoableTimeout","meta","metaData","dataProviderName","missingIdError","missingValuesError","missingResourceError","resource","identifier","combinedMeta","pickNotDeprecated","mutationModePropOrContext","undoableTimeoutPropOrContext","selectedDataProvider","pickDataProvider","mutationFn","handleMultiple","id","resolve","reject","doMutation","result","err","cancelMutation","optimisticUpdateMap","_","__","preferredMeta","queryKey","queryKeysReplacement","resourceKeys","previousQueries","previous","data","record","error","variables","context","_a","invalidates","dataProviderNameFromProp","successNotification","resourceSingular","notificationConfig","previousData","queryData","acc","item","_fields","_operation","_variables","rest","errorNotification","query","mutate","mutateAsync","mutation","elapsedTime","useLoadingOvertime","options","import_devtools_internal","import_react_query","useDeleteMany","__name","mutationOptions","overtimeOptions","authProvider","useActiveAuthProvider","checkError","useOnError","mutationModeContext","undoableTimeoutContext","useMutationMode","dataProvider","useDataProvider","notificationDispatch","useCancelNotification","translate","useTranslate","publish","usePublish","handleNotification","useHandleNotification","invalidateStore","useInvalidate","log","useLog","resources","select","useResource","queryClient","getMeta","useMeta","textTransformers","useRefineContext","keys","preferLegacyKeys","useKeys","mutation","resourceName","ids","mutationMode","undoableTimeout","onCancel","meta","metaData","dataProviderName","values","resource","identifier","combinedMeta","pickNotDeprecated","mutationModePropOrContext","undoableTimeoutPropOrContext","selectedDataProvider","pickDataProvider","mutationFn","handleMultiple","id","resolve","reject","doMutation","result","err","cancelMutation","_","__","preferredMeta","queryKey","queryKeysReplacement","resourceKeys","previousQueries","previous","item","data","record","_data","_error","invalidates","dataProviderNameFromProp","successNotification","context","notificationConfig","_fields","_operation","_variables","rest","errorNotification","query","resourceSingular","elapsedTime","useLoadingOvertime","useApiUrl","__name","dataProviderName","_a","dataProvider","useDataProvider","resource","useResource","getApiUrl","pickNotDeprecated","import_devtools_internal","import_react_query","useCustom","__name","url","method","config","queryOptions","successNotification","errorNotification","meta","metaData","dataProviderName","overtimeOptions","dataProvider","useDataProvider","authProvider","useActiveAuthProvider","checkError","useOnError","translate","useTranslate","handleNotification","useHandleNotification","getMeta","useMeta","keys","preferLegacyKeys","useKeys","preferredMeta","pickNotDeprecated","custom","combinedMeta","queryResponse","context","prepareQueryContext","data","_a","notificationConfig","err","elapsedTime","useLoadingOvertime","import_devtools_internal","import_react_query","useCustomMutation","__name","mutationOptions","overtimeOptions","authProvider","useActiveAuthProvider","checkError","useOnError","handleNotification","useHandleNotification","dataProvider","useDataProvider","translate","useTranslate","getMeta","useMeta","keys","preferLegacyKeys","useKeys","mutation","url","method","values","meta","metaData","dataProviderName","config","combinedMeta","pickNotDeprecated","custom","data","successNotificationFromProp","notificationConfig","err","errorNotificationFromProp","elapsedTime","useLoadingOvertime","import_react","import_react","defaultDataProvider","DataContext","React","DataContextProvider","__name","children","dataProvider","providerValue","useDataProvider","__name","context","DataContext","dataProviderName","dataProvider","import_devtools_internal","import_react_query","useInfiniteList","__name","resourceFromProp","config","filters","hasPagination","pagination","sorters","queryOptions","successNotification","errorNotification","meta","metaData","liveMode","onLiveEvent","liveParams","dataProviderName","overtimeOptions","resources","resource","identifier","useResource","dataProvider","useDataProvider","translate","useTranslate","authProvider","useActiveAuthProvider","checkError","useOnError","handleNotification","useHandleNotification","getMeta","useMeta","keys","preferLegacyKeys","useKeys","pickedDataProvider","pickDataProvider","preferredMeta","pickNotDeprecated","prefferedFilters","prefferedSorters","prefferedHasPagination","prefferedPagination","handlePaginationParams","isServerPagination","notificationValues","isEnabled","combinedMeta","getList","useResourceSubscription","queryResponse","context","paginationProperties","prepareQueryContext","data","total","rest","lastPage","getNextPageParam","getPreviousPageParam","_a","notificationConfig","err","elapsedTime","useLoadingOvertime","import_react","import_react","LiveContext","React","LiveContextProvider","__name","liveProvider","children","import_react","import_react_query","useInvalidate","__name","resources","useResource","queryClient","keys","preferLegacyKeys","useKeys","resource","dataProviderName","invalidates","id","invalidationFilters","invalidationOptions","dp","pickDataProvider","queryKey","key","import_react","import_react","import_react","import_react","import_isEqual","useMemoized","__name","value","ref","isEqual","useDeepMemo","__name","fn","dependencies","memoizedDependencies","useMemoized","ResourceContext","React","ResourceContextProvider","__name","providedResources","children","resources","useDeepMemo","legacyResourceTransform","import_react","RouterPickerContext","React","RouterPickerProvider","useRouterType","__name","import_react","import_react","defaultRouterProvider","RouterContext","RouterContextProvider","__name","children","router","React","import_react","useParse","__name","routerContext","RouterContext","React","useParsed","__name","parse","useParse","React","useResource","args","resources","ResourceContext","routerType","useRouterType","params","useParsed","oldProps","select","__name","resourceName","force","pickedResource","pickResource","resource","identifier","resourceWithRoute","useResourceWithRoute","useParams","useRouterContext","legacyParams","resourceKeyToCheck","legacyResource","legacyId","legacyAction","legacyResourceName","legacyIdentifier","pickedFromProps","import_react","useResourceWithRoute","__name","resources","ResourceContext","route","picked","pickResource","useResourceSubscription","__name","resourceFromProp","params","channel","types","enabled","liveModeFromProp","onLiveEvent","dataProviderNameFromProps","meta","_a","resource","identifier","useResource","liveProvider","LiveContext","liveModeFromContext","onLiveEventContextCallback","RefineContext","liveMode","invalidate","useInvalidate","dataProviderName","subscription","callback","event","import_react","useLiveMode","__name","liveMode","liveModeFromContext","RefineContext","import_react","useSubscription","__name","params","channel","types","enabled","onLiveEvent","dataProviderName","meta","liveProvider","LiveContext","subscription","import_react","usePublish","__name","liveProvider","LiveContext","import_react","import_react","import_isEqual","UndoableQueueContext","initialState","undoableQueueReducer","__name","state","action","notificationItem","isEqual","UndoableQueueContextProvider","children","notifications","notificationDispatch","notificationData","React","notification","UndoableQueue","useCancelNotification","__name","notifications","notificationDispatch","UndoableQueueContext","import_react","import_react","NotificationContext","NotificationContextProvider","__name","open","close","children","React","useNotification","__name","open","close","NotificationContext","import_react","useHandleNotification","__name","open","useNotification","notification","fallbackNotification","import_react","import_react","I18nContext","React","I18nContextProvider","__name","children","i18nProvider","useSetLocale","__name","i18nProvider","I18nContext","lang","import_react","useTranslate","__name","i18nProvider","I18nContext","translate","key","options","defaultMessage","import_react","useGetLocale","__name","i18nProvider","I18nContext","useTranslation","__name","translate","useTranslate","changeLocale","useSetLocale","getLocale","useGetLocale","import_react","import_papaparse","import_warn_once","useExport","__name","resourceName","resourceFromProps","sorter","sorters","filters","maxItemCount","pageSize","mapData","item","exportOptions","unparseConfig","meta","metaData","dataProviderName","onError","download","isLoading","setIsLoading","dataProvider","useDataProvider","getMeta","useMeta","resource","resources","identifier","useResource","pickNotDeprecated","filename","useUserFriendlyName","getList","pickDataProvider","combinedMeta","rawData","current","preparingData","data","total","error","hasUnparseConfig","warnOnce","options","csv","papaparse","fileExtension","fileType","downloadFilename","downloadInBrowser","import_react","import_warn_once","useForm","__name","props","_a","_b","_c","getMeta","useMeta","invalidate","useInvalidate","defaultRedirect","useRefineOptions","defaultMutationMode","useMutationMode","setWarnWhen","useWarnAboutChange","handleSubmitWithRedirect","useRedirectionAfterSubmission","pickedMeta","pickNotDeprecated","mutationMode","id","setId","resource","identifier","action","useResourceParams","autosaved","setAutosaved","React","isEdit","isClone","isCreate","combinedMeta","isIdRequired","isIdDefined","isQueryDisabled","warnOnce","idWarningMessage","redirectAction","redirectPage","redirect","redirectId","routeParams","queryResult","useOne","createMutation","useCreate","updateMutation","useUpdate","mutationResult","formLoading","elapsedTime","useLoadingOvertime","onFinish","values","isAutosave","isPessimistic","onSuccessRedirect","resolve","reject","missingResourceError","missingIdError","missingValuesError","autosaveOnNonEditError","deferExecution","variables","mutateAsync","data","_","context","error","onFinishAutoSave","asyncDebounce","overtime","autoSaveProps","import_react","useRedirectionAfterSubmission","__name","show","edit","list","create","useNavigation","redirect","resource","id","meta","import_react","useBack","__name","routerContext","RouterContext","React","import_react","import_react","useGetToPath","__name","routerType","useRouterType","resourceFromRoute","resources","useResource","parsed","useParsed","React","resource","action","meta","_a","selectedResource","actionRoute","getActionRoutesFromResource","item","composeRoute","useGo","__name","routerContext","RouterContext","resourceSelect","useResource","getToPath","useGetToPath","goFromRouter","React","config","resource","handleResourceErrors","newTo","to","useNavigation","__name","resources","useResource","routerType","useRouterType","useHistory","useRouterContext","history","parsed","useParsed","go","useGo","back","useBack","handleUrl","url","type","createUrl","resource","meta","_a","resourceItem","pickResource","createActionRoute","getActionRoutesFromResource","r","composeRoute","editUrl","id","encodedId","editActionRoute","cloneUrl","cloneActionRoute","showUrl","showActionRoute","listUrl","listActionRoute","path","rest","import_warn_once","useShow","__name","resourceFromProp","id","meta","metaData","queryOptions","overtimeOptions","useOneProps","resource","identifier","showId","setShowId","useResourceParams","combinedMeta","useMeta","pickNotDeprecated","warnOnce","idWarningMessage","queryResult","useOne","import_react","import_chunk","import_papaparse","useImport","__name","resourceName","resourceFromProps","mapData","item","paparseOptions","batchSize","onFinish","meta","metaData","onProgress","dataProviderName","processedAmount","setProcessedAmount","totalAmount","setTotalAmount","isLoading","setIsLoading","resource","identifier","useResource","getMeta","useMeta","createMany","useCreateMany","create","useCreate","combinedMeta","pickNotDeprecated","mutationResult","handleCleanup","handleFinish","createdValues","result","handleChange","file","resolve","papaparse","data","values","importCSVMapper","valueFns","value","sequentialPromises","response","currentAmount","error","index","chunks","chunk","chunkedFns","chunkedValues","currentBatchLength","event","import_react","useModal","__name","defaultVisible","visible","setVisible","show","close","useToPath","__name","resource","action","meta","legacy","useGetToPath","import_react","import_warn_once","LinkComponent","__name","props","ref","routerContext","RouterContext","LinkFromContext","goFunction","useGo","resolvedTo","warnOnce","React","Link","useLink","__name","Link","import_react","import_react","defaultProvider","LegacyRouterContext","React","LegacyRouterContextProvider","__name","children","useHistory","useLocation","useParams","Prompt","Link","routes","useRouterContext","__name","routerContextValues","LegacyRouterContext","useHistory","useLocation","useParams","Prompt","Link","routes","defaultProvider","import_react","import_devtools_internal","import_react_query","import_react","AccessControlContext","React","AccessControlContextProvider","__name","can","children","options","sanitizeResource","__name","resource","icon","list","edit","create","show","clone","children","meta","options","restResource","_metaIcon","restMeta","_optionsIcon","restOptions","useCan","__name","action","resource","params","hookQueryOptions","can","globalOptions","AccessControlContext","keys","preferLegacyKeys","useKeys","globalQueryOptions","mergedQueryOptions","_resource","paramsRest","sanitizedResource","sanitizeResource","queryResponse","import_react","useCanWithoutCache","__name","canFromContext","React","AccessControlContext","params","rest","sanitizedResource","sanitizeResource","import_react","import_debounce","import_get","import_uniqBy","useSelect","__name","props","search","setSearch","options","setOptions","selectedOptions","setSelectedOptions","resourceFromProps","sort","sorters","filters","optionLabel","optionValue","searchField","debounceValue","successNotification","errorNotification","defaultValueQueryOptionsFromProps","queryOptions","fetchSize","pagination","hasPagination","liveMode","defaultValue","selectedOptionsOrder","onLiveEvent","onSearchFromProp","liveParams","meta","metaData","dataProviderName","overtimeOptions","getOptionLabel","item","get","getOptionValue","resource","identifier","useResource","combinedMeta","useMeta","pickNotDeprecated","defaultValues","defaultValueQueryOnSuccess","data","defaultValueQueryOptions","defaultValueQueryResult","useMany","_a","defaultQueryOnSuccess","queryResult","useList","elapsedTime","useLoadingOvertime","combinedOptions","uniqBy","onSearchFromPropRef","onSearch","debounce","value","import_react","import_differenceWith","import_isEqual","import_qs","import_warn_once","defaultPermanentFilter","defaultPermanentSorter","useTable","initialCurrent","initialPageSize","hasPagination","pagination","initialSorter","permanentSorter","defaultSetFilterBehavior","initialFilter","permanentFilter","filtersFromProp","sortersFromProp","syncWithLocationProp","resourceFromProp","successNotification","errorNotification","queryOptions","liveModeFromProp","onLiveEvent","liveParams","meta","metaData","dataProviderName","overtimeOptions","_a","_b","_c","_d","_e","syncWithLocationContext","useSyncWithLocation","syncWithLocation","liveMode","useLiveMode","routerType","useRouterType","useLocation","useRouterContext","search","pathname","getMeta","useMeta","parsedParams","useParsed","isServerSideFilteringEnabled","isServerSideSortingEnabled","hasPaginationString","isPaginationEnabled","prefferedCurrent","pickNotDeprecated","prefferedPageSize","preferredMeta","parsedCurrent","parsedPageSize","parsedSorter","parsedFilters","parseTableParams","preferredInitialFilters","preferredPermanentFilters","preferredInitialSorters","preferredPermanentSorters","prefferedFilterBehavior","defaultCurrent","defaultPageSize","defaultSorter","defaultFilter","replace","useNavigation","go","useGo","resource","identifier","useResource","combinedMeta","React","warnOnce","sorters","setSorters","setInitialSorters","filters","setFilters","setInitialFilters","current","setCurrent","pageSize","setPageSize","getCurrentQueryParams","__name","rest","sorter","qs","createLinkForSyncWithLocation","currentQueryParams","stringifyParams","stringifyTableParams","queryParams","differenceWith","isEqual","queryResult","useList","unionFilters","unionSorters","setFiltersAsMerge","newFilters","prevFilters","setFiltersAsReplace","setFiltersWithSetter","setter","prev","setFiltersFn","setterOrFilters","behavior","setSortWithUnion","newSorter","import_react","import_devtools_internal","import_react_query","import_react","AuditLogContext","React","AuditLogContextProvider","__name","create","get","update","children","useLog","__name","logMutationOptions","renameMutationOptions","queryClient","auditLogContext","AuditLogContext","keys","preferLegacyKeys","useKeys","authProvider","useActiveAuthProvider","resources","ResourceContext","identityData","refetch","isLoading","useGetIdentity","log","params","_a","_b","_c","_d","_e","resource","pickResource","logPermissions","pickNotDeprecated","hasPermission","authorData","rename","data","import_react","import_devtools_internal","import_react_query","useLogList","__name","resource","action","meta","author","metaData","queryOptions","get","AuditLogContext","keys","preferLegacyKeys","useKeys","import_react","import_warn_once","useBreadcrumb","__name","metaFromProps","routerType","useRouterType","i18nProvider","I18nContext","parsed","useParsed","translate","useTranslate","resources","resource","action","useResource","textTransformers","useRefineContext","breadcrumbs","addBreadcrumb","parentName","_a","_b","_c","_d","_e","_f","parentResource","pickResource","grandParentName","pickNotDeprecated","listActionOfResource","getActionRoutesFromResource","r","hrefRaw","href","composeRoute","key","actionLabel","warnOnce","import_react","createResourceKey","__name","resource","resources","legacy","parents","currentParentResource","getParentResource","r","removeLeadingTrailingSlashes","createTree","__name","resources","legacy","root","resource","parents","currentParent","getParentResource","currentTree","parent","key","flatten","tree","items","itemKey","createResourceKey","item","getCleanPath","__name","pathname","useMenu","meta","hideOnMissingParameter","translate","useTranslate","getToPath","useGetToPath","routerType","useRouterType","resource","resources","useResource","useParsed","useLocation","useRouterContext","legacyPath","getFriendlyName","useUserFriendlyName","cleanRoute","selectedKey","createResourceKey","defaultOpenKeys","React","parent","getParentResource","keys","prepareItem","item","_a","_b","_c","_d","_e","_f","pickNotDeprecated","composed","treeItems","treeMenuItems","createTree","prepare","items","preparedNodes","newItem","import_react","MetaContext","MetaContextProvider","__name","children","value","currentValue","useMetaContext","metaContext","React","useMeta","__name","params","useParsed","metaContext","useMetaContext","resource","metaFromProp","meta","sanitizeResource","_filters","_sorters","_current","_pageSize","additionalParams","result","import_react","useRefineOptions","__name","options","React","RefineContext","import_react","useId","__name","id","routerType","useRouterType","useParams","useRouterContext","parsed","useParsed","legacyParams","inferredId","useAction","__name","action","routerType","useRouterType","useParams","useRouterContext","parsed","useParsed","legacyParams","inferredAction","useResourceParams","props","select","inferredIdentifier","useResource","resourceToCheck","identifier","resource","isSameResource","inferredId","useId","action","useAction","defaultId","React","id","setId","formAction","__name","useActionableButton","type","translate","useTranslate","humanize","useRefineOptions","key","fallback","__name","import_react","import_react","useButtonCanAccess","__name","props","_a","_b","_c","translate","useTranslate","accessControlContext","React","AccessControlContext","accessControlEnabled","hideIfUnauthorized","canAccess","useCan","title","hidden","disabled","useNavigationButton","props","_a","navigation","useNavigation","routerType","useRouterType","Link","useLink","LegacyLink","useRouterContext","translate","useTranslate","getUserFriendlyName","useUserFriendlyName","humanize","useRefineOptions","id","resource","identifier","useResourceParams","canAccess","title","hidden","disabled","useButtonCanAccess","LinkComponent","to","React","label","__name","useDeleteButton","props","translate","useTranslate","mutate","isLoading","variables","useDelete","setWarnWhen","useWarnAboutChange","mutationMode","useMutationMode","id","resource","identifier","useResourceParams","title","disabled","hidden","canAccess","useButtonCanAccess","label","confirmOkLabel","confirmTitle","cancelLabel","loading","__name","import_react_query","useRefreshButton","props","translate","useTranslate","keys","preferLegacyKeys","useKeys","queryClient","invalidates","useInvalidate","identifier","id","useResourceParams","resources","useResource","loading","pickDataProvider","onClick","__name","label","useShowButton","__name","props","useNavigationButton","useEditButton","useCloneButton","useCreateButton","useListButton","useSaveButton","useActionableButton","useExportButton","useImportButton","ErrorComponent","__name","errorMessage","setErrorMessage","translate","useTranslate","push","useNavigation","go","useGo","routerType","useRouterType","resource","action","useResource","React","import_react","LoginPage","__name","username","setUsername","password","setPassword","translate","useTranslate","authProvider","useActiveAuthProvider","login","useLogin","React","e","import_react","import_react","LoginPage","__name","providers","registerLink","forgotPasswordLink","rememberMe","contentProps","wrapperProps","renderContent","formProps","title","hideForm","mutationVariables","routerType","useRouterType","Link","useLink","LegacyLink","useRouterContext","ActiveLink","email","setEmail","password","setPassword","remember","setRemember","translate","useTranslate","authProvider","useActiveAuthProvider","login","useLogin","renderLink","link","text","React","renderProviders","provider","content","e","import_react","RegisterPage","__name","providers","loginLink","wrapperProps","contentProps","renderContent","formProps","title","hideForm","mutationVariables","routerType","useRouterType","Link","useLink","LegacyLink","useRouterContext","ActiveLink","email","setEmail","password","setPassword","translate","useTranslate","authProvider","useActiveAuthProvider","register","isLoading","useRegister","renderLink","link","text","React","renderProviders","provider","content","e","import_react","ForgotPasswordPage","__name","loginLink","wrapperProps","contentProps","renderContent","formProps","title","mutationVariables","translate","useTranslate","routerType","useRouterType","Link","useLink","LegacyLink","useRouterContext","ActiveLink","email","setEmail","forgotPassword","isLoading","useForgotPassword","renderLink","link","text","React","content","e","import_react","UpdatePasswordPage","__name","wrapperProps","contentProps","renderContent","formProps","title","mutationVariables","translate","useTranslate","authProvider","useActiveAuthProvider","updatePassword","isLoading","useUpdatePassword","newPassword","setNewPassword","confirmPassword","setConfirmPassword","content","React","e","AuthPage","__name","props","type","React","RegisterPage","ForgotPasswordPage","UpdatePasswordPage","LoginPage","import_react","ReadyPage","__name","React","import_react","import_react","cards","ConfigSuccessPage","__name","isTablet","useMediaQuery","isMobile","getGridTemplateColumns","getHeaderFontSize","getSubHeaderFontSize","React","card","Card","title","description","iconUrl","link","isHover","setIsHover","import_react","ConfigErrorPage","__name","React","ErrorGradient","ErrorIcon","ExampleImplementation","props","WelcomePage","__name","__initialized","useRefineContext","React","ConfigSuccessPage","ConfigErrorPage","import_react","import_devtools_internal","import_react_query","import_react","import_react","REFINE_VERSION","useTelemetryData","__name","_a","auth","useIsExistAuthentication","auditLogContext","AuditLogContext","liveProvider","LiveContext","routerContext","LegacyRouterContext","dataContext","DataContext","i18nProvider","I18nContext","notificationContext","NotificationContext","accessControlContext","AccessControlContext","resources","useResource","refineOptions","useRefineContext","auditLog","live","router","data","i18n","notification","accessControl","projectId","encode","__name","payload","stringifiedPayload","throughImage","src","img","throughFetch","transport","Telemetry","useTelemetryData","sent","React","encoded","checkRouterPropMisuse","__name","value","bindings","otherProps","key","import_react","useRouterMisuseWarning","__name","value","warned","React","checkRouterPropMisuse","Refine","__name","legacyAuthProvider","authProvider","dataProvider","legacyRouterProvider","routerProvider","notificationProvider","accessControlProvider","auditLogProvider","resources","DashboardPage","ReadyPage","LoginPage","catchAll","children","liveProvider","i18nProvider","Title","Layout","Sider","Header","Footer","OffLayoutArea","onLiveEvent","options","optionsWithDefaults","disableTelemetryWithDefault","reactQueryWithDefaults","handleRefineOptions","queryClient","useDeepMemo","_a","notificationProviderContextValues","React","useRouterMisuseWarning","RouterComponent","NotificationContextProvider","LegacyAuthContextProvider","AuthBindingsContextProvider","DataContextProvider","LiveContextProvider","RouterPickerProvider","RouterContextProvider","LegacyRouterContextProvider","ResourceContextProvider","I18nContextProvider","AccessControlContextProvider","AuditLogContextProvider","UndoableQueueContextProvider","RefineContextProvider","UnsavedWarnContextProvider","Telemetry","RouteChangeHandler","import_react","UndoableQueue","__name","notification","translate","useTranslate","notificationDispatch","useCancelNotification","open","useNotification","timeoutId","setTimeoutId","cancelNotification","userFriendlySecond","newTimeoutId","import_react","LayoutWrapper","__name","children","LayoutFromProps","SiderFromProps","HeaderFromProps","TitleFromProps","FooterFromProps","OffLayoutAreaFromProps","Layout","Footer","Header","Sider","Title","OffLayoutArea","useRefineContext","React","UnsavedPrompt","Prompt","useRouterContext","translate","useTranslate","warnWhen","setWarnWhen","useWarnAboutChange","warnWhenListener","e","import_react","Authenticated","redirectOnFail","appendCurrentPathToQuery","children","fallbackContent","loadingContent","params","_a","activeAuthProvider","useActiveAuthProvider","routerType","useRouterType","hasAuthProvider","isLegacyAuth","isLegacyRouter","parsed","useParsed","go","useGo","useLocation","useRouterContext","legacyLocation","isFetching","isSuccess","isAuthenticatedStatus","authenticatedRedirect","useIsAuthenticated","isAuthenticated","React","appliedRedirect","pathname","toQuery","RedirectLegacy","queryToValue","Redirect","__name","config","to","replace","useNavigation","import_react","RouteChangeHandler","__name","useLocation","useRouterContext","checkAuth","useLegacyAuthContext","location","import_react","CanAccess","__name","resourceFromProp","actionFromProp","paramsFromProp","fallback","onUnauthorized","children","componentQueryOptions","rest","id","resource","fallbackAction","useResourceParams","action","params","data","useCan","React","import_react","CSSRules","text","GitHubBanner","__name","containerStyle","styleTag","CSSRules","rule","_a","React","GlowSmall","GlowBig","Text","style","props","import_react","AutoSaveIndicator","__name","status","success","React","Message","error","loading","idle","translationKey","defaultMessage","translate","useTranslate"]}